import { useCallback, useEffect, useMemo, useState } from 'react' import { getCartApi } from '../api/CartApi' import currencyFormat from '@/core/utils/currencyFormat' import Image from '@/core/components/elements/Image/Image' import { createSlug } from '@/core/utils/slug' import useAuth from '@/core/hooks/useAuth' import { useRouter } from 'next/router' import odooApi from '@/core/api/odooApi' import { useProductCartContext } from '@/contexts/ProductCartContext' import whatsappUrl from '@/core/utils/whatsappUrl' const { ShoppingCartIcon, PhotoIcon } = require('@heroicons/react/24/outline') const { default: Link } = require('next/link') const Cardheader = (cartCount) => { const router = useRouter() const [subTotal, setSubTotal] = useState(null) const [buttonLoading, SetButtonTerapkan] = useState(false) const itemLoading = [1, 2, 3] const auth = useAuth() const [countCart, setCountCart] = useState(null) const { productCart, setRefreshCart, setProductCart, refreshCart, isLoading, setIsloading } = useProductCartContext() const [isHovered, setIsHovered] = useState(false) const products = useMemo(() => { return productCart?.products || [] }, [productCart]) const handleMouseEnter = () => { setIsHovered(true) getCart() } const handleMouseLeave = () => { setIsHovered(false) } const getCart = () => { if (!productCart && auth) { refreshCartf() } } const refreshCartf = useCallback(async () => { setIsloading(true) let cart = await getCartApi() setProductCart(cart) setCountCart(cart.productTotal) setIsloading(false) }, [setProductCart, setIsloading]) useEffect(() => { if (!products) return let calculateTotalPriceBeforeTax = 0 let calculateTotalTaxAmount = 0 let calculateTotalDiscountAmount = 0 for (const product of products) { if (product.quantity == '') continue let priceBeforeTax = product.price.price / 1.11 calculateTotalPriceBeforeTax += priceBeforeTax * product.quantity calculateTotalTaxAmount += (product.price.price - priceBeforeTax) * product.quantity calculateTotalDiscountAmount += (product.price.price - product.price.priceDiscount) * product.quantity } let subTotal = calculateTotalPriceBeforeTax - calculateTotalDiscountAmount + calculateTotalTaxAmount setSubTotal(subTotal) }, [products]) useEffect(() => { if (refreshCart) { refreshCartf() } setRefreshCart(false) }, [refreshCart, refreshCartf, setRefreshCart]) useEffect(() => { setCountCart(cartCount.cartCount) }, [cartCount]) const handleCheckout = async () => { SetButtonTerapkan(true) let checkoutAll = await odooApi('POST', `/api/v1/user/${auth.id}/cart/select-all`) router.push('/shop/checkout') } return (
0 && 'mr-2'}`}> {countCart > 0 && ( {countCart} )}
Keranjang
Belanja
Keranjang Belanja
Lihat Semua

{!auth && (

Silahkan{' '} Login {' '} Untuk Melihat Daftar Keranjang Belanja Anda

)} {isLoading && itemLoading.map((item) => (
))} {auth && products.length === 0 && !isLoading && (

Tidak Ada Produk di Keranjang Belanja Anda

)} {auth && products.length > 0 && !isLoading && ( <>
    {products && products?.map((product, index) => ( <>
  • {product?.name}
    {' '}

    {product.parent.name}

    {product?.price?.discountPercentage > 0 && (
    {product?.price?.discountPercentage}%
    {currencyFormat(product?.price?.price)}
    )}
    {product?.price?.priceDiscount > 0 ? ( currencyFormat(product?.price?.priceDiscount) ) : ( Call For Price )}
  • ))}

)}
{auth && products.length > 0 && !isLoading && ( <>
Subtotal Sebelum PPN : {currencyFormat(subTotal)}
)}
) } export default Cardheader