diff --git a/src/pages/payment-record.tsx b/src/pages/payment-record.tsx index c6d914ef..1c924bfc 100644 --- a/src/pages/payment-record.tsx +++ b/src/pages/payment-record.tsx @@ -12,7 +12,7 @@ import {createColumnHelper, flexRender, getCoreRowModel, useReactTable} from "@t import {CURRENCIES} from "@/resources/paypal"; import {BsTrash} from "react-icons/bs"; import axios from "axios"; -import {useEffect, useState} from "react"; +import {useEffect, useState, useMemo} from "react"; import {AgentUser, CorporateUser, User} from "@/interfaces/user"; import UserCard from "@/components/UserCard"; import Modal from "@/components/Modal"; @@ -236,6 +236,18 @@ const PaymentCreator = ({onClose, reload, showComission = false}: {onClose: () = ); }; +const IS_PAID_OPTIONS = [ +{ + value: null, + label: 'All', +}, { + value: false, + label: 'Unpaid', +}, { + value: true, + label: 'Paid', +}, +]; export default function PaymentRecord() { const [selectedCorporateUser, setSelectedCorporateUser] = useState(); const [selectedAgentUser, setSelectedAgentUser] = useState(); @@ -248,13 +260,22 @@ export default function PaymentRecord() { const {user} = useUser({redirectTo: "/login"}); const {users, reload: reloadUsers} = useUsers(); - const {payments, reload: reloadPayment} = usePayments(); - + const {payments: originalPayments, reload: reloadPayment} = usePayments(); + const [startDate, setStartDate] = useState(moment("01/01/2023").toDate()); + const [endDate, setEndDate] = useState(moment().endOf('day').toDate()); + const [paid, setPaid] = useState(IS_PAID_OPTIONS[0].value); const reload = () => { reloadUsers(); reloadPayment(); }; + const payments = useMemo(() => { + return originalPayments.filter((p: Payment) => { + const date = moment(p.date); + return date.isAfter(startDate) && date.isBefore(endDate); + }); + }, [originalPayments, startDate, endDate]); + useEffect(() => { setDisplayPayments( filters @@ -286,6 +307,13 @@ export default function PaymentRecord() { ]); }, [corporate]); + useEffect(() => { + setFilters((prev) => [ + ...prev.filter((x) => x.id !== "paid"), + ...(typeof paid !== 'boolean' ? [] : [{id: "paid", filter: (p: Payment) => p.isPaid === paid}]), + ]) + }, [paid]); + const updatePayment = (payment: Payment, key: string, value: any) => { axios .patch(`api/payments/${payment.id}`, {...payment, [key]: value}) @@ -677,6 +705,62 @@ export default function PaymentRecord() { }} /> +
+ +