import { useEffect, useState } from "react"; import Header from "../../components/Header"; import Layout from "../../components/Layout"; import Link from "../../components/Link"; import { createOrUpdateItemCart, deleteItemCart, getCart, getItemCart } from "../../helpers/cart"; import ChevronLeftIcon from "../../icons/chevron-left.svg"; import MinusIcon from "../../icons/minus.svg"; import PlusIcon from "../../icons/plus.svg"; import { LazyLoadImage } from "react-lazy-load-image-component"; import 'react-lazy-load-image-component/src/effects/blur.css'; import apiOdoo from "../../helpers/apiOdoo"; import currencyFormat from "../../helpers/currencyFormat"; export default function Cart() { const [products, setProducts] = useState([]); const getProducts = async () => { let cart = getCart(); let productIds = Object.keys(cart); if (productIds.length > 0) { productIds = productIds.join(','); let dataProducts = await apiOdoo('GET', `/api/v1/product_variant/${productIds}`); dataProducts = dataProducts.map((product) => ({ ...product, quantity: cart[product.id].quantity })); setProducts(dataProducts); } } useEffect(() => { getProducts(); }, []); const updateCart = (productId, quantity) => { let productIndexToUpdate = products.findIndex((product) => product.id == productId); if (quantity != '') createOrUpdateItemCart(productId, quantity); setProducts((products) => { products[productIndexToUpdate].quantity = quantity; return [...products]; }); }; const blurQuantity = (productId, quantity) => { quantity = quantity == ('' || 0) ? 1 : parseInt(quantity); updateCart(productId, quantity); }; const updateQuantity = (productId, quantity) => { quantity = quantity == '' ? '' : parseInt(quantity); updateCart(productId, quantity); }; const plusQuantity = (productId) => { let productIndexToUpdate = products.findIndex((product) => product.id == productId); let quantity = products[productIndexToUpdate].quantity + 1; updateCart(productId, quantity); } const minusQuantity = (productId) => { let productIndexToUpdate = products.findIndex((product) => product.id == productId); let quantity = products[productIndexToUpdate].quantity - 1; if (quantity <= 0) { deleteItemCart(productId); setProducts((products) => { products.splice(productIndexToUpdate, 1); return [...products]; }); } else { updateCart(productId, quantity); } } return ( <>
{/* jsx-start: Progress Bar */}
1

Keranjang

2

Pembayaran

3

Selesai

{/* [End] Progress Bar */}
{/* [Start] Title */}

Keranjang Saya

{/* [End] Title */} {/* [Start] Product List */}
{products.map((product, index) => (
{product.parent.name}

{product.code ? product.code : '-'}

{currencyFormat(product.price.price_discount)}

{product.price.discount_percentage > 0 ? ( <> {product.price.discount_percentage}%

{currencyFormat(product.price.price)}

) : ''}

{currencyFormat(product.quantity * product.price.price_discount)}

blurQuantity(product.id, e.target.value)} onChange={(e) => updateQuantity(product.id, e.target.value)} value={product.quantity} />
))}
{/* [End] Product List */}
); }