import { Badge, Box, HStack, Icon, Image, Menu, MenuButton, MenuItem, MenuList, Text, useDisclosure, useToast, } from "@chakra-ui/react"; import { useContext, useRef } from "react"; import { GrGallery } from "react-icons/gr"; import { HiDotsVertical } from "react-icons/hi"; import { useParams } from "react-router-dom"; import Loader01 from "../../../Components/Loaders/Loader01"; import ToastBox from "../../../Components/ToastBox"; import { decryptString, encryptString, isMaker, } from "../../../Constants/Constants"; import GlobalStateContext from "../../../Contexts/GlobalStateContext"; import { useUpdateTransactionMutation } from "../../../Services/io.service"; import AmountInvested from "./HeaderModal/AmountInvested"; import Cancle from "./HeaderModal/Cancle"; import DistributionInvestor from "./HeaderModal/DistributionInvestor"; import DistributionSponsor from "./HeaderModal/DistributionSponsor"; import Exit from "./HeaderModal/Exit"; import FeesExpenses from "./HeaderModal/FeesExpenses"; import UpdateIONav from "./HeaderModal/UpdateIONav"; import UpdateIOStatus from "./HeaderModal/UpdateIOStatus"; import { useAuthProfileQuery } from "../../../Services/token.serivce"; // import { formatCurrency } from "../../../Components/CurrencyInput"; // import { removeTrailingZeros } from "../../../Constants/Constants"; const ViewIOdataHeader = ({ data, isLoading }) => { const params = useParams(); const toast = useToast(); const id = params?.id; const { isOpen, onOpen, onClose } = useDisclosure(); const btnRef = useRef(); const { IODetails, isIOloading } = useContext(GlobalStateContext); const { data: authProfile } = useAuthProfileQuery(); if (authProfile?.data?.role) { localStorage.setItem("role", encryptString(authProfile.data.role)); } else { console.warn("Role is undefined or null. Skipping localStorage update."); } const { isOpen: isInvestmentOpen, onOpen: onInvestmentOpen, onClose: onInvestmentClose, } = useDisclosure(); const { isOpen: isFeesOpen, onOpen: onFeesOpen, onClose: onFeesClose, } = useDisclosure(); const { isOpen: isDistSponsorOpen, onOpen: onDistSponsorOpen, onClose: onDistSponsorClose, } = useDisclosure(); const { isOpen: isDistInvestorOpen, onOpen: onDistInvestorOpen, onClose: onDistInvestorClose, } = useDisclosure(); const { isOpen: isUpdateNavOpen, onOpen: onUpdateNavOpen, onClose: onUpdateNavClose, } = useDisclosure(); const { isOpen: isUpdateStatusOpen, onOpen: onUpdateStatusOpen, onClose: onUpdateStatusClose, } = useDisclosure(); const { isOpen: isExitOpen, onOpen: onExitOpen, onClose: onExitClose, } = useDisclosure(); const { isOpen: isCancleOpen, onOpen: onCancleOpen, onClose: onCancleClose, } = useDisclosure(); const bg = { bg: "#fff", }; const hover = { textDecoration: "underline", background: "#fff", }; const style = { fontSize: "0.875rem", fontWeight: "400", }; console.log( import.meta.env.VITE_IMAGE_URL + IODetails?.artifactsImage?.[0]?.artifactPathName ); const [updateTransaction] = useUpdateTransactionMutation(); const handleDistributionInvestors = async () => { try { const res = await updateTransaction(id); if (res?.data) { // toast({ // render: () => ( // // ), // }); // setIsLoading(false); onDistInvestorOpen(); } else if (res?.error) { toast({ render: () => ( ), }); // setIsLoading(false); } } catch (error) { console.log(error); } }; const handleExit = async () => { try { const res = await updateTransaction(id); if (res?.data) { // toast({ // render: () => ( // // ), // }); // setIsLoading(false); onExitOpen(); } else if (res?.error) { toast({ render: () => ( ), }); // setIsLoading(false); } } catch (error) { console.log(error); } }; const handleInvestment = async () => { try { const res = await updateTransaction(id); if (res?.data) { // toast({ // render: () => ( // // ), // }); // setIsLoading(false); onInvestmentOpen(); } else if (res?.error) { toast({ render: () => ( ), }); // setIsLoading(false); } } catch (error) { console.log(error); } }; const menu = [ { id: 1, title: "Amount Invested", onClickFunction: handleInvestment, }, // { // id:2, // title:"Fees & Expenses", // onClickFunction:onFeesOpen // }, // { // id:3, // title:"Distribution From Sponsors", // onClickFunction:onDistSponsorOpen // }, { id: 6, title: "Distribution To Investors", onClickFunction: handleDistributionInvestors, }, { id: 5, title: "Update IO NAV", onClickFunction: onUpdateNavOpen, }, { id: 8, title: "Exit", onClickFunction: handleExit, }, { id: 9, title: "Cancel", onClickFunction: onCancleOpen, }, { id: 10, title: "Update IO Status", onClickFunction: onUpdateStatusOpen, }, ]; // console.log(IODetails?.mainTranscation); // Extract titles from apiTransaction const apiTransactionTitles = IODetails?.mainTranscation?.map( (transaction) => transaction.id ); // Filter menu items const filteredMenu = menu?.filter((item) => apiTransactionTitles?.includes(item.id) ); const balanceAmount = IODetails?.goalAmount - IODetails?.totalAmtInvestmentInUSD; return IODetails?.investmentNameEnglish ? ( {/* {IODetails?.ioName}/ */} {IODetails?.artifactsImage?.[0]?.artifactPathName ? ( {IODetails?.ioName} ) : ( )} IO Name :- {IODetails?.investmentNameEnglish ? IODetails?.investmentNameEnglish : "---"} Sponsor Name :- {IODetails?.sponsor?.sponsorName ? IODetails?.sponsor?.sponsorName : "---"} IO ID :- {IODetails?.io_id ? IODetails?.io_id : "---"} Goal Amount :- {/* {IODetails?.ioNAV ? formatCurrency(removeTrailingZeros(IODetails?.ioNAV)) : "00.00"} */} {parseFloat(IODetails?.goalAmount || 0).toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2, })} Amount Raised :- {/* {IODetails?.ioCash ? formatCurrency(removeTrailingZeros(IODetails?.ioCash)) : "00.00"} */} {parseFloat(IODetails?.totalAmtInvestmentInUSD || 0).toLocaleString( undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2, } )} Balance :- {/* {IODetails?.ioMVNAV ? formatCurrency(removeTrailingZeros(IODetails?.ioMVNAV)) : "00.00"} */} {parseFloat(balanceAmount || 0).toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2, })} IO Status :- {IODetails?.ioStatus?.statusAdmin ? IODetails?.ioStatus?.statusAdmin : "---"} IO MV :- {/* {IODetails?.ioNAV ? formatCurrency(removeTrailingZeros(IODetails?.ioNAV)) : "00.00"} */} {parseFloat(IODetails?.ioNAV || 0).toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2, })} IO cash :- {/* {IODetails?.ioCash ? formatCurrency(removeTrailingZeros(IODetails?.ioCash)) : "00.00"} */} {parseFloat(IODetails?.ioCash || 0).toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2, })} IO NAV :- {/* {IODetails?.ioMVNAV ? formatCurrency(removeTrailingZeros(IODetails?.ioMVNAV)) : "00.00"} */} {parseFloat(IODetails?.ioMVNAV || 0).toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2, })} {isMaker() && ( Tansaction {filteredMenu?.map(({ id, title, onClickFunction }) => ( {title} ))} )} {/* Modals */} ) : ( {" "} ); }; export default ViewIOdataHeader;