import { Grid, Typography } from '@mui/material';
import { Box } from '@mui/system';
import { destroyCookie } from 'nookies';
import { useEffect } from 'react';
import { useStore, useStoreUpdate } from '../../store/cart-context';
import CartCard from '../cards/cart-card/CartCard';
import OrderSummaryCard from '../cards/order-summary-card/OrderSummaryCard';
import StepTitle from '../layout/steps-title/StepTitle';

const CartContent = () => {
  const { cartStorage, totalPrice, totalQuantity } = useStore();
  const { removeCartValue, updateItemQuantity } = useStoreUpdate();

  useEffect(() => {
    destroyCookie(null, 'checkout-session', {
      path: '/',
    });
  }, []);

  const mapProductsToDom = () => {
    if (cartStorage?.length) {
      return cartStorage.map((element, i) => (
        <CartCard
          key={i}
          product={element?.product}
          initialQuantity={element?.quantity}
          remove={removeCartValue}
          updateQuantity={updateItemQuantity}
        ></CartCard>
      ));
    } else {
      return (
        <Typography
          sx={{
            mr: { sm: 10, lg: 1 },
            pl: 12,
            mt: 6,
            height: '100%',
            textAlign: 'center',
            fontSize: 45,
          }}
        >
          Your cart is currently empty
        </Typography>
      );
    }
  };

  return (
    <Grid container spacing={2} sx={{ py: 10, height: '100%', width: '100%' }}>
      <StepTitle title="Items in Your Cart" breadcrumbsArray={['Cart']} />
      <Grid item lg={8} xs={12} sx={{ mt: 2 }}>
        {mapProductsToDom()}
      </Grid>
      <Grid item lg={4} xs={12}>
        <Box sx={{ mr: { xs: 10 }, mt: 2, pl: { xs: 10, lg: 0 } }}>
          <OrderSummaryCard
            data={{ totalPrice: totalPrice, totalQuantity: totalQuantity }}
          ></OrderSummaryCard>
        </Box>
      </Grid>
    </Grid>
  );
};

export default CartContent;
