import { Avatar, Badge, Box, Button, HStack, Input, Text, Th, Tooltip, Tr, useDisclosure, useToast, } from "@chakra-ui/react"; import React, { useContext, useEffect, useRef, useState } from "react"; import { AddIcon, DeleteIcon, EditIcon, ViewIcon } from "@chakra-ui/icons"; import { LuFileSpreadsheet } from "react-icons/lu"; import { OPACITY_ON_LOAD } from "../../../../Layout/animations"; import NormalTable from "../../../../Components/DataTable/NormalTable"; import GlobalStateContext from "../../../../Contexts/GlobalStateContext"; import CustomAlertDialog from "../../../../Components/CustomAlertDialog"; import * as XLSX from "xlsx"; import ToastBox from "../../../../Components/ToastBox"; import AddCashDetails from "../AddCashDetails"; import { debounce } from "../../../Admin/Contact"; import { useParams } from "react-router-dom"; import { useUpdateIOCaseMutation } from "../../../../Services/io.service"; import AddApproved from "./AddNavDetails"; import AddNavDetails from "./AddNavDetails"; const formatDate = (date) => new Date(date).toLocaleDateString(); const Approved = () => { const params = useParams(); const toast = useToast(); const id = params?.id; const firstField = useRef(); const { isOpen, onOpen, onClose } = useDisclosure(); const { IODetails, iONAVDetail, setIONAVDetail } = useContext(GlobalStateContext); const [searchTerm, setSearchTerm] = useState(""); const [isLoading, setIsLoading] = useState(true); const [deleteAlert, setDeleteAlert] = useState(false); const [actionId, setActionId] = useState(false); const [mouseEntered, setMouseEntered] = useState(false); const [mouseEnteredId, setMouseEnteredId] = useState(""); const [updateIOCase] = useUpdateIOCaseMutation(); useEffect(() => { // Simulate loading const timer = setTimeout(() => { setIsLoading(false); }, 1500); // Cleanup the timer on component unmount return () => clearTimeout(timer); }, []); const formatDate = (date) => { return new Date(date).toLocaleDateString("en-GB", { day: "2-digit", month: "2-digit", year: "numeric", }); }; // Table filter const filteredData = IODetails?.ioNAVStatusHistory?.Approved?.filter( (item) => { // Filter by name (case insensitive) const name = item.transactionAmount; const searchLower = searchTerm?.toLowerCase(); const nameMatches = name?.toLowerCase().includes(searchLower); return nameMatches; } ); const tableHeadRow = [ "Sr No.", "Valuation date", "NAV", "Last Nav Update", "Investment Closed", "Comments", "Updated By", ]; const extractedArray = filteredData?.map((item, index) => ({ id: item?.id, "Sr No.": ( {index + 1}. ), "Valuation date": ( {formatDate(item?.transactionDate)} ), NAV: ( $ {parseFloat(item?.transactionAmount || 0).toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2, })} ), "Last Nav Update": ( {item.previousNAVvalue && `${item.previousNAVvalue}`} ), "Investment Closed": ( {item?.initialNAVvalue && `${item?.initialNAVvalue}`} ), Comments: ( {item?.comments ? item?.comments : "---"} ), "Updated By": ( {/* */} {item?.modifier?.firstName} ), })); const handleAdd = async () => { try { const res = await updateIOCase(id); if (res?.data) { // toast({ // render: () => ( // // ), // }); setIsLoading(false); onOpen(); } else if (res?.error) { toast({ render: () => ( ), }); setIsLoading(false); } } catch (error) {} }; const handleDelete = () => { const updatedSponsors = sponser.filter( (sponsor) => sponsor.id !== actionId ); setTimeout(() => { setCaseDetails(updatedSponsors); setDeleteAlert(false); setIsLoading(false); }, 100); setIsLoading(true); }; const exportToExcelNew = (data, fileName) => { const worksheet = XLSX.utils.json_to_sheet(data); const workbook = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(workbook, worksheet, "Sheet1"); // Export file XLSX.writeFile(workbook, `${fileName}.xlsx`); }; const ioNavExport = IODetails?.ioNAVStatusHistory?.Approved?.map( (item, index) => ({ ID: item?.id, // Keep as integer if it's already a number "Valuation date": formatDate(item?.transactionDate), // Assuming this is a date, no conversion needed NAV: parseFloat(item?.transactionAmount) || 0, // Convert to float "Last Nav Update": parseFloat(item?.previousNAVvalue) || 0, // Convert to float "Investment Closed": parseFloat(item?.initialNAVvalue) || 0, // Convert to float Comments: item?.comments, // Keep as string // "Transaction Type": item?.transactionType, "Updated By": item?.creator?.firstName, // Keep as string // "Update On": formatDate(item?.updatedAt) // Assuming this is a date, no conversion needed }) ); return ( setSearchTerm(e.target.value)} /> {/* {IODetails?.isInvestedAmount ? localStorage?.getItem("role") === "Maker" && ( ) : null} */} setDeleteAlert(false)} isOpen={deleteAlert} message={"Are you sure you want to delete sponers?"} alertHandler={handleDelete} isLoading={isLoading} /> ); }; export default Approved;