"use client" import { useState, useEffect } from "react" import { Card } from "@/components/ui/card" import { Separator } from "@/components/ui/separator" import CartItemCard from "./ui/CartItemCard" import OrderSummary from "./ui/OrderSummary" import { useCart, useCreateOrder, useRegions, useAddresses, usePaymentTypes } from "@/lib/hooks" import { useTranslations } from "next-intl" import { useRouter } from "next/navigation" import type { DeliveryType, PaymentTypeOption } from "./ui/types" export default function CartPage() { const [isClient, setIsClient] = useState(false) const [paymentType, setPaymentType] = useState(null) const [deliveryType, setDeliveryType] = useState("SELECTED_DELIVERY") const [selectedRegion, setSelectedRegion] = useState(null) const [selectedAddress, setSelectedAddress] = useState("") const [note, setNote] = useState("") const router = useRouter() const t = useTranslations() const { data: cart, isLoading, isError } = useCart() const { data: regions = [] } = useRegions() const { data: addresses = [] } = useAddresses() const { data: paymentTypes = [] } = usePaymentTypes() const { mutate: createOrder, isPending: isCreatingOrder } = useCreateOrder() useEffect(() => { setIsClient(true) }, []) const handleDeliveryTypeChange = (type: DeliveryType) => { setDeliveryType(type) setSelectedAddress("") } const handleCompleteOrder = () => { if (!selectedRegion || !selectedAddress || !paymentType) { console.warn("[v0] Missing required fields for order") return } const selectedRegionObj = regions.find((r) => r.code === selectedRegion) createOrder( { customer_address: selectedAddress, shipping_method: deliveryType === "PICK_UP" ? "pickup" : "standart", payment_type_id: paymentType.id, region: selectedRegion, note: note || undefined, }, { onSuccess: () => { // Navigate to orders page after successful order creation router.push(`/orders`) }, }, ) } if (!isClient) return null if (isLoading) { return (

{t("loading")}

) } if (isError || !cart?.items || cart.items.length === 0) { return (

{t("emptyCart") || "Your cart is empty"}

) } const translations = { cart: t("cart"), ordersIn: t("order_available_in_shops"), pricePerUnit: t("unit_price"), additionalPrice: t("extra_price"), discount: t("discount"), totalPrice: t("total_price"), paymentType: t("payment_type"), cash: t("cash"), card: t("card"), deliveryType: t("delivery_type"), delivery: t("delivery"), pickup: t("pickup"), selectRegion: t("choose_region"), selectAddress: t("choose_address"), note: t("note"), placeOrder: t("order"), emptyCart: t("cart_empty"), map: t("address"), } const itemsBySeller = cart.items.reduce( (acc, item) => { const sellerId = item.seller.id if (!acc[sellerId]) { acc[sellerId] = { seller: item.seller, items: [] } } acc[sellerId].items.push(item) return acc }, {} as Record, ) return (

{translations.cart}

{/* Cart Items Section */}
{/* Sellers */} {Object.entries(itemsBySeller).map(([sellerId, { seller, items }]) => (

{seller.name}

{items.map((item) => ( ))}
{Object.entries(itemsBySeller).length > 1 && }
))}
{/* Order Summary Sidebar */} {}} onCompleteOrder={handleCompleteOrder} isLoading={isCreatingOrder} />
) }