"use client"; import { Group, Paper, ScrollArea, Table, Text, Title } from "@mantine/core"; import { notifications } from "@mantine/notifications"; import { useRouter } from "next/navigation"; import { useEffect, useState } from "react"; interface accountData { stAccountNo: string; stAccountType: string; stAvailableBalance: string; custname: string; } export default function AccountSummary() { const router = useRouter(); const [authorized, setAuthorized] = useState(null); const [accountData, setAccountData] = useState([]); async function FetchAccountDetails() { try { const token = localStorage.getItem("access_token"); const response = await fetch("/api/customer", { method: "GET", headers: { "Content-Type": "application/json", Authorization: `Bearer ${token}`, }, }); const data = await response.json(); if (response.ok && Array.isArray(data)) { setAccountData(data); sessionStorage.setItem("accountData", JSON.stringify(data)); } } catch { notifications.show({ withBorder: true, color: "red", title: "Please try again later", message: "Unable to Fetch, Please try again later", autoClose: 5000, }); } } useEffect(() => { const token = localStorage.getItem("access_token"); if (!token) { setAuthorized(false); router.push("/login"); } else { setAuthorized(true); } }, []); useEffect(() => { if (authorized) { FetchAccountDetails(); } }, [authorized]); const cellStyle = { border: "1px solid #ccc", padding: "10px", }; // Filter accounts const depositAccounts = accountData.filter( (acc) => !acc.stAccountType.toUpperCase().includes("LN") ); const loanAccounts = accountData.filter((acc) => acc.stAccountType.toUpperCase().includes("LN") ); // Function to render table rows const renderRows = (data: accountData[]) => data.map((acc, index) => ( {acc.stAccountType} router.push(`/accounts/account_details?accNo=${acc.stAccountNo}`)} > {acc.stAccountNo} {parseFloat(acc.stAvailableBalance).toLocaleString("en-IN", { minimumFractionDigits: 2, })} )); // Table component const renderTable = (title: string, rows: JSX.Element[]) => ( {title} {title.includes("Deposit Accounts (INR)") ? () : ()} {rows}
Account Type Account No. Credit Book BalanceDebit Book Balance
); if (authorized) { return ( Account Summary {/* Left table for Deposit Accounts */} {depositAccounts.length > 0 && renderTable("Deposit Accounts (INR)", renderRows(depositAccounts))} {/* Right table for Loan Accounts (only shown if available) */} {loanAccounts.length > 0 && renderTable("Loan Accounts (INR)", renderRows(loanAccounts))} * Book Balance includes uncleared effects. ); } return null; }