"use client"; import { formatDateMonthYear, t } from "@/utils"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import { useSelector } from "react-redux"; import { useEffect, useState } from "react"; import { CurrentLanguageData } from "@/redux/reducer/languageSlice"; import NoData from "@/components/EmptyStates/NoData"; import { Badge } from "@/components/ui/badge"; import TransactionSkeleton from "@/components/Skeletons/TransactionSkeleton"; import { paymentTransactionApi } from "@/utils/api"; import { toast } from "sonner"; import Pagination from "@/components/Common/Pagination"; import UploadReceiptModal from "./UploadReceiptModal"; const Transactions = () => { const CurrentLanguage = useSelector(CurrentLanguageData); const [transactions, setTransactions] = useState([]); const [isLoading, setIsLoading] = useState(false); const [currentPage, setCurrentPage] = useState(1); const [totalPages, setTotalPages] = useState(null); const [transactionId, setTransactionId] = useState(""); const [IsUploadRecipt, setIsUploadRecipt] = useState(false); const handleUploadReceipt = (id) => { setTransactionId(id); setIsUploadRecipt(true); }; const fetchTransactions = async () => { try { setIsLoading(true); const res = await paymentTransactionApi.transaction({ page: currentPage, }); setTotalPages(res.data.data.last_page); setCurrentPage(res.data.data.current_page); if (res?.data?.error === false) { setTransactions(res?.data?.data?.data); } else { toast.error(res?.data?.message); } } catch (error) { console.log(error); } finally { setIsLoading(false); } }; const handlePageChange = (page) => { setCurrentPage(page); }; useEffect(() => { fetchTransactions(); }, [currentPage]); const getStatusBadge = (status) => { switch (status) { case "succeed": return {t("completed")}; case "pending": return {t("pending")}; case "failed": return {t("failed")}; case "under review": return {t("underReview")}; default: return {status}; } }; return ( <> {isLoading ? ( ) : transactions.length > 0 ? ( <>
{t("id")} {t("paymentMethod")} {t("transactionId")} {t("date")} {t("price")} {t("status")} {transactions.map((transaction) => ( {transaction?.id} {transaction?.payment_gateway} {transaction?.order_id} {formatDateMonthYear(transaction?.created_at)} {transaction?.amount} {transaction?.payment_status === "pending" && transaction?.payment_gateway === "BankTransfer" ? ( ) : ( getStatusBadge(transaction?.payment_status) )} ))}
) : ( )} ); }; export default Transactions;