"use client"; import { createPayment } from "@/actions/payment"; import DeviceCard from "@/components/device-card"; import NumberInput from "@/components/number-input"; import { Button } from "@/components/ui/button"; import { deviceCartAtom, numberOfMonths } from "@/lib/atoms"; import { authClient } from "@/lib/auth-client"; import type { PaymentType } from "@/lib/types"; import type { BillFormula } from "@prisma/client"; import { useAtom, useAtomValue, useSetAtom } from "jotai"; import { CircleDollarSign, Loader2 } from "lucide-react"; import { usePathname } from "next/navigation"; import { useEffect, useState } from "react"; export default function DevicesForPayment({ billFormula, }: { billFormula?: BillFormula; }) { const baseAmount = billFormula?.baseAmount || 100; const discountPercentage = billFormula?.discountPercentage || 75; const session = authClient.useSession(); const pathname = usePathname(); const devices = useAtomValue(deviceCartAtom); const setDeviceCart = useSetAtom(deviceCartAtom); const [months, setMonths] = useAtom(numberOfMonths); const [message, setMessage] = useState(""); const [disabled, setDisabled] = useState(false); const [total, setTotal] = useState(0); useEffect(() => { if (months === 7) { setMessage("You will get 1 month free."); } else if (months === 12) { setMessage("You will get 2 months free."); } else { setMessage(""); } setTotal(baseAmount + ((devices.length + 1) - 1) * discountPercentage); }, [months, devices.length, baseAmount, discountPercentage]); if (pathname === "/payment") { return null; } const data: PaymentType = { numberOfMonths: months, userId: session?.data?.user.id ?? "", deviceIds: devices.map((device) => device.id), amount: Number.parseFloat(total.toFixed(2)), paid: false, }; return (
{devices.map((device) => ( ))}
setMonths(value)} maxAllowed={12} isDisabled={devices.length === 0} /> {message && ( {message} )}
) }