"use client"; import NavBarDownCart from "@comp/Carts/component/NavBarDownCart/page"; import Navbar from "@comp/Navbar/page"; import PersianNumber from "plugins/PersianNumber"; import { useContext, useEffect, useState } from "react"; import AppContext from "@ctx/AppContext"; import ap from "@img/ap.png"; import zarin from "@img/zarin.png"; import Image from "next/image"; import { useRouter } from "next/navigation"; import Chapar from "plugins/Chapar"; import BottomSheetDiscount from "plugins/bottomSheet/BottomSheetDiscount"; import { toast } from "react-toastify"; const CheckoutData = () => { const CTX = useContext(AppContext); const [shippingData, setShippingData] = useState([]); const [shippingId, setShippingID] = useState(null); const [addressData, setAddressData] = useState([]); const [addressId, setAddressId] = useState(null); const [permissionGoPay, setPermissionGoPay] = useState(false); const router = useRouter(); const checkOutData = CTX.state.checkOutData; const body = { addressId: addressData[addressId]?.id, orderId: checkOutData?.id, shippingId: shippingData[shippingId]?.id, }; const GetShippingData = async () => { try { const data = await Chapar.get( `${process.env.NEXT_PUBLIC_API_URL}/warehouse/shipping?page=0` ); setShippingData(data); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); } }; const handleShippingID = async (index) => { if (addressId !== null) { setShippingID(index); try { const data = await Chapar.post( `${process.env.NEXT_PUBLIC_API_URL}/order/bag/shipping/${checkOutData?.id}`, JSON.stringify({ addressId: addressData[addressId]?.id, orderId: checkOutData?.id, shippingId: shippingData[index]?.id, }), { headers: { Authorization: localStorage.getItem("token"), }, } ); CTX.setCheckOutData(data); setPermissionGoPay(true); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); } } else { toast.error(`ابتدا آدرس را انتحاب کنید`, { position: "bottom-right", closeOnClick: true, }); } }; const handleGoPayment = async () => { const token = localStorage.getItem("token").slice(7); try { const data = await Chapar.post( `${process.env.NEXT_PUBLIC_API_URL}/order/bag/payment/${checkOutData?.id}?paymentMethod=1&access_token=${token}` // { // headers: { // Authorization: token, // }, // } ); router.push(data?.paymentUrl); } catch ({ error, status }) { toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); } }; const deleteDiscount = async () => { try { // Send a POST request to the API endpoint to apply discount const data = await Chapar.post( `${process.env.NEXT_PUBLIC_API_URL}/order/bag/discount/${checkOutData?.id}` ); CTX.setCheckOutData(data); } catch ({ error, status }) { // If there's an error, display an error message using toast toast.error(`${error?.response?.data?.message}`, { position: "bottom-right", closeOnClick: true, }); } }; const filteredShippingData = shippingData?.filter((item) => { if (item.name === "ارسال رایگان" && checkOutData.totalPrice <= 5000000) { return false; } return true; }); useEffect(() => { if (shippingData.length <= 0) { GetShippingData(); } CTX.fetchAddressUser(); }, [checkOutData]); useEffect(() => { setAddressData(CTX.state.addressData); }, [CTX.state.addressData]); useEffect(() => { if (CTX.state.checkOutData.length <= 0) { router.push("/cart"); } setPermissionGoPay(false); }, []); console.log("checkOutData", checkOutData); return ( <>

آدرس ها

{/*
CTX.setBottomSheetAddressOpen(true)} >

افزودن آدرس جدید

*/}
{addressData?.length > 0 ? ( <> {addressData.map((e, index) => (
setAddressId(index)} className={`flex rtl justify-between cursor-pointer mx-2 relative ${ addressId == index ? "border-2 !border-green-600 rounded-lg bg-green-50" : "" }`} >

{" "} {e.address}{" "}

))} ) : (
CTX.setBottomSheetAddressOpen(true)} > افزودن آدرس +{" "}
)}

زمان و نحوه ارسال

سریع ترین زمان ارسال

{filteredShippingData?.map((e, index) => (
handleShippingID(index)} className={`flex rtl justify-between cursor-pointer mx-2 ${ shippingId == index ? "border-2 !border-green-600 rounded-lg bg-green-50" : "" }`} >

{e.name}{" "}

{e.name == "ارسال رایگان" ? (

ارسال با پست پیشتاز

) : (

هزینه ارسال هزار تومان

)}
))}

روش پرداخت

زرین پال

پرداخت آنلاین

زرین پال

آپ

پرداخت آنلاین (به زودی)

آسان پرداخت

{ if (checkOutData?.discountCode == "") { CTX.setBottomSheetDiscountOpen(true); } }} >
{checkOutData?.discountCode == "" ? ( ) : ( )}

{checkOutData?.discountCode == "" ? "افزودن کد تخفیف" : "تخفیف ثبت شد"}

{checkOutData?.discountCode == "" ? "کد تخفیف خود را وارد کنید" : `تخفیف با کد ${checkOutData?.discountCode} ثبت شده است`}

{checkOutData?.discountCode == "" ? (
+
) : (
deleteDiscount()} >
)}

حساب نهایی

{/*

مشاهده اقلام

*/}

قیمت

{" "} تومان

تخفیف محصول

{" "} تومان

هزینه بسته بندی

{" "} تومان

هزینه ارسال

{" "} تومان

قابل پرداخت

{" "} تومان
handleGoPayment()} permissionGoPay={permissionGoPay} />
); }; export default CheckoutData;