You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

преди 3 години
преди 3 години
преди 3 години
преди 3 години
преди 3 години
преди 3 години
преди 3 години
преди 3 години
преди 3 години
преди 3 години
преди 3 години
преди 3 години
преди 3 години
преди 3 години
преди 3 години
преди 3 години
преди 3 години
преди 3 години
преди 3 години
преди 3 години
преди 3 години
преди 3 години
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. import { Typography } from '@mui/material';
  2. import { Box } from '@mui/system';
  3. import { useSession } from 'next-auth/react';
  4. import { useRouter } from 'next/router';
  5. import { setCookie } from 'nookies';
  6. import { useEffect, useState } from 'react';
  7. import { useStore } from '../../store/cart-context';
  8. import { useCheckoutDataUpdate } from '../../store/checkout-context';
  9. import DataCard from '../cards/data-card/DataCard';
  10. import ShippingDetailsForm from '../forms/shipping-details/ShippingDetailsForm';
  11. import StepTitle from '../layout/steps-title/StepTitle';
  12. const CheckoutContent = () => {
  13. const { cartStorage } = useStore();
  14. const { addCheckoutValue } = useCheckoutDataUpdate();
  15. const [cartData, setCartData] = useState([]);
  16. const { data: session } = useSession();
  17. const router = useRouter();
  18. useEffect(() => {
  19. setCartData(cartStorage);
  20. }, [cartStorage]);
  21. const submitHandler = (formValues) => {
  22. addCheckoutValue(
  23. cartData,
  24. { ...formValues, email: session.user.email },
  25. session.user._id
  26. );
  27. setCookie(null, 'shipping-session', 'active', {
  28. maxAge: 3600,
  29. expires: new Date(Date.now() + 3600),
  30. path: '/',
  31. });
  32. router.push('/shipping');
  33. };
  34. const mapProductsToDom = () => {
  35. return cartData?.map((entry, i) => (
  36. <DataCard
  37. key={i}
  38. data={entry.product}
  39. quantity={entry.quantity}
  40. ></DataCard>
  41. ));
  42. };
  43. return (
  44. <Box sx={{ py: 10, height: '100%', width: '100%' }}>
  45. <StepTitle
  46. title="Items in Your Cart"
  47. breadcrumbsArray={['Cart', 'Checkout']}
  48. />
  49. <Box sx={{ ml: { xs: 2, md: 12 }, my: 2 }}>
  50. <Typography sx={{ fontSize: 20 }}>
  51. The following fields will be used as the shipping details for your
  52. order
  53. </Typography>
  54. </Box>
  55. <Box
  56. sx={{
  57. display: 'flex',
  58. flexDirection: { xs: 'column', lg: 'row' },
  59. mr: { xs: 2, md: 12 },
  60. ml: { xs: 2, md: 12 },
  61. }}
  62. >
  63. <Box flexGrow={1}>
  64. <ShippingDetailsForm
  65. backBtn={true}
  66. isCheckout={true}
  67. submitHandler={submitHandler}
  68. ></ShippingDetailsForm>
  69. </Box>
  70. <Box
  71. sx={{
  72. ml: { lg: 2 },
  73. mt: { xs: 5, md: 5, lg: 2 },
  74. display: 'flex',
  75. flexDirection: { xs: 'column', sm: 'row', lg: 'column' },
  76. justifyContent: { sm: 'space-between', md: 'flex-start' },
  77. flexWrap: 'wrap',
  78. }}
  79. >
  80. {mapProductsToDom()}
  81. </Box>
  82. </Box>
  83. </Box>
  84. );
  85. };
  86. export default CheckoutContent;