diff --git a/src/Components/CurrencyInput.jsx b/src/Components/CurrencyInput.jsx index f2a46b1..b15ef51 100644 --- a/src/Components/CurrencyInput.jsx +++ b/src/Components/CurrencyInput.jsx @@ -20,17 +20,19 @@ export const formatCurrency = (value) => { }; const CurrencyInput = forwardRef(({ value, onChange, ...props }, ref) => { + console.log(props); + const handleChange = (event) => { - let { value } = event.target; + let { value } = event?.target; // Remove non-numeric characters except decimal point - value = value.replace(/[^0-9.]/g, ''); + value = value?.replace(/[^0-9.]/g, ''); // Ensure only one decimal point - const parts = value.split('.'); + const parts = value?.split('.'); if (parts.length > 2) { - value = parts[0] + '.' + parts.slice(1).join(''); + value = parts[0] + '.' + parts?.slice(1)?.join(''); } onChange(value); // Pass the raw value to parent or use it directly diff --git a/src/Components/DataTable/NormalTable.jsx b/src/Components/DataTable/NormalTable.jsx index 54da2e8..0ae24b8 100644 --- a/src/Components/DataTable/NormalTable.jsx +++ b/src/Components/DataTable/NormalTable.jsx @@ -51,6 +51,8 @@ const DataTable = ({ whiteSpace="normal" // Allow text to wrap wordBreak="normal" // Ensure long words break properly overflowWrap="normal" // Break long words if necessary + textTransform={'none'} + > {isLoading ? : heading} {/* {heading} */} diff --git a/src/Layout/DefaultLayout.jsx b/src/Layout/DefaultLayout.jsx index 2995343..a0c05f8 100644 --- a/src/Layout/DefaultLayout.jsx +++ b/src/Layout/DefaultLayout.jsx @@ -136,7 +136,7 @@ const DashboardLayout = ({ isOnline }) => { case path.startsWith("/sponser"): return ( - Sponsorer + Sponsor ); case path.startsWith("/investment-type"): diff --git a/src/Pages/Deposit/DepositRequest/DepositRequest.jsx b/src/Pages/Deposit/DepositRequest/DepositRequest.jsx index eaad429..d428265 100644 --- a/src/Pages/Deposit/DepositRequest/DepositRequest.jsx +++ b/src/Pages/Deposit/DepositRequest/DepositRequest.jsx @@ -70,15 +70,6 @@ const DepositRequest = () => { } = useGetDepositRequestQuery({ page: currentPage, size: pageSize }); - useEffect(() => { - // Simulate loading - const timer = setTimeout(() => { - setIsLoading(false); - }, 1500); - - // Cleanup the timer on component unmount - return () => clearTimeout(timer); - }, []); // ====================================================[Table Setup]================================================================ const tableHeadRow = [ @@ -109,7 +100,7 @@ const DepositRequest = () => { // ====================================================[Table Filter]================================================================ const filteredData = data?.data?.rows.filter((item) => { // Filter by name (case insensitive) - const name = item?.createdAt; + const name = [item.firstName, item.lastName, item.countryName].filter(Boolean).join(' '); const searchLower = searchTerm.toLowerCase(); const nameMatches = name.toLowerCase().includes(searchLower); @@ -148,34 +139,34 @@ const DepositRequest = () => { fontWeight={"500"} className="d-flex align-items-center web-text-small" > - {item?.principal?.investor_details?.clientReference_id} + {item?.clientReference_id} ), "First Name": ( - {item?.principal?.firstName} + {item?.firstName} ), "Last Name": ( - {item?.principal?.lastName} + {item?.lastName} ), Country: ( - {item?.principal?.investor_details?.country?.countryName} + {item?.countryName} ), "Phone Number": ( - {item?.principal?.mobileNumber} + {item?.mobileNumber} ), @@ -311,7 +302,7 @@ const DepositRequest = () => { emptyMessage={`We don't have any Investment type `} tableHeadRow={tableHeadRow} data={extractedArray} - isLoading={isLoading} + isLoading={depositRequestLoading} viewActionId={actionId} setViewActionId={setActionId} // totalPages={10} diff --git a/src/Pages/Deposit/DepositRequest/DepositRequestApprove.jsx b/src/Pages/Deposit/DepositRequest/DepositRequestApprove.jsx index 00c73c6..2df842d 100644 --- a/src/Pages/Deposit/DepositRequest/DepositRequestApprove.jsx +++ b/src/Pages/Deposit/DepositRequest/DepositRequestApprove.jsx @@ -28,7 +28,7 @@ const FILE_TYPES = ["image/jpeg", "image/png", "image/gif"]; export const conformModalSchema = yup.object().shape({ investorAmount: yup.string().required("Investor amount is required"), - comment: yup.string().required("Comment is required"), + comment: yup.string().notRequired(), supporting_FileName: yup.mixed().required("File is required"), // .test("fileType", "Unsupported File Format", (value) => { // return value && FILE_TYPES.includes(value.type); @@ -64,10 +64,6 @@ const DepositRequestApprove = ({ isOpen, onClose, firstField, id, data:requestDa }, [requestData, id]) - - - - const onSubmit = async(data) => { setIsBtnLoading(true) const formData = new FormData(); diff --git a/src/Pages/Deposit/DepositViewHistory/DepositHistory.jsx b/src/Pages/Deposit/DepositViewHistory/DepositHistory.jsx index 058a068..46016d5 100644 --- a/src/Pages/Deposit/DepositViewHistory/DepositHistory.jsx +++ b/src/Pages/Deposit/DepositViewHistory/DepositHistory.jsx @@ -64,15 +64,6 @@ const DepositHistory = () => { } = useGetDepositHistoryQuery({ page: currentPage, size: pageSize }); - useEffect(() => { - // Simulate loading - const timer = setTimeout(() => { - setIsLoading(false); - }, 1500); - - // Cleanup the timer on component unmount - return () => clearTimeout(timer); - }, []); // ====================================================[Table Setup]================================================================ const tableHeadRow = [ @@ -101,15 +92,15 @@ const DepositHistory = () => { }); }, 300); - // ====================================================[Table Filter]================================================================ - const filteredData = data?.data?.rows.filter((item) => { - // Filter by name (case insensitive) - const name = item.createdAt; - const searchLower = searchTerm.toLowerCase(); - const nameMatches = name.toLowerCase().includes(searchLower); +// ====================================================[Table Filter]================================================================ +const filteredData = data?.data?.rows.filter((item) => { + // Combine firstName, lastName, and countryName for filtering + const name = [item.firstName, item.lastName, item.countryName].filter(Boolean).join(' '); + const searchLower = searchTerm.toLowerCase(); + const nameMatches = name.toLowerCase().includes(searchLower); + return nameMatches; +}); - return nameMatches; - }); // const handleView = (id) => { // setActionId(id); @@ -139,34 +130,34 @@ const DepositHistory = () => { fontWeight={"500"} className="d-flex align-items-center web-text-small" > - {item?.principal?.investor_details?.clientReference_id} + {item?.clientReference_id} ), "First Name": ( - {item?.principal?.firstName} + {item?.firstName} ), "Last Name": ( - {item?.principal?.lastName} + {item?.lastName} ), Country: ( - {item?.principal?.investor_details?.country?.countryName} + {item?.countryName} ), "Phone Number": ( - {item?.principal?.mobileNumber} + {item?.mobileNumber} ), @@ -304,7 +295,7 @@ const DepositHistory = () => { tableHeadRow={tableHeadRow} // setData={setExtractedArray} data={extractedArray} - isLoading={isLoading} + isLoading={depositHistoryLoading} viewActionId={actionId} setViewActionId={setActionId} setMouseEnteredId={setMouseEnteredId} diff --git a/src/Pages/IO_Management/CreateIO/CreateIO.jsx b/src/Pages/IO_Management/CreateIO/CreateIO.jsx index 9d0ca4c..942c9ec 100644 --- a/src/Pages/IO_Management/CreateIO/CreateIO.jsx +++ b/src/Pages/IO_Management/CreateIO/CreateIO.jsx @@ -15,6 +15,7 @@ import ViewIOdataHeader from "../ViewIO/ViewIOdataHeader"; import { useParams } from "react-router-dom"; import FullscreenLoaders from "../../../Components/Loaders/FullscreenLoaders"; import { useGetIOprepopulateDataQuery } from "../../../Services/io.service"; +import UnderConstruction from "../../UnderConstruction"; const CreateIO = () => { const id = useParams()?.id; @@ -57,7 +58,8 @@ const CreateIO = () => { }, { label: "Investors", - Content: Investors, + // Content: Investors, + Content: UnderConstruction, isDisabled: id ? false : true, }, { diff --git a/src/Pages/IO_Management/CreateIO/IOArtifactsVideo.jsx b/src/Pages/IO_Management/CreateIO/IOArtifactsVideo.jsx index 52d91d2..5416043 100644 --- a/src/Pages/IO_Management/CreateIO/IOArtifactsVideo.jsx +++ b/src/Pages/IO_Management/CreateIO/IOArtifactsVideo.jsx @@ -27,7 +27,10 @@ import ToastBox from "../../../Components/ToastBox"; const investmentVideoSchema = yup.object().shape({ artifactName: yup.string().required("Artifact name is required"), - artifactStreamingURL: yup.string().required("Artifact streaming URL is required").url("Invalid URL format"), + artifactStreamingURL: yup.string() + .required("Artifact streaming URL is required") + .url("Invalid URL format") + .matches(/\.mp4$/, "URL must end with .mp4"), }); const IOArtifactsAdd = ({ isOpen, onClose, firstField, actionId, setActionId, data }) => { diff --git a/src/Pages/IO_Management/CreateIO/IODetails.jsx b/src/Pages/IO_Management/CreateIO/IODetails.jsx index 7afc83c..e828255 100644 --- a/src/Pages/IO_Management/CreateIO/IODetails.jsx +++ b/src/Pages/IO_Management/CreateIO/IODetails.jsx @@ -286,6 +286,8 @@ const IODetails = ({ enableNextTab, index, data }) => { section: " ", width: "49%", value: IObyID?.data?.holdingPeriod, + maxLength:20, + helperText:`Maximum length should be 20 characters. You have entered ${watch()?.holdingPeriod?.length || 0} characters.` }, { label: "Holding Period (Arabic)", @@ -297,6 +299,8 @@ const IODetails = ({ enableNextTab, index, data }) => { section: " ", width: "49%", value: IObyID?.data?.holdingPeriodArabic, + maxLength:20, + helperText:`Maximum length should be 20 characters. You have entered ${watch()?.holdingPeriodArabic?.length || 0} characters.` }, diff --git a/src/Pages/IO_Management/CreateIO/IONAVDetails.jsx b/src/Pages/IO_Management/CreateIO/IONAVDetails.jsx index 6a9c277..f877143 100644 --- a/src/Pages/IO_Management/CreateIO/IONAVDetails.jsx +++ b/src/Pages/IO_Management/CreateIO/IONAVDetails.jsx @@ -78,7 +78,7 @@ const IONAVDetails = () => { fontWeight={"500"} className="d-flex align-items-center web-text-small" > - {`$ ${item.transactionAmount}`} + {`${item.transactionAmount}`} ), "Last NAV update": ( @@ -89,7 +89,7 @@ const IONAVDetails = () => { fontWeight={"500"} className="d-flex align-items-center web-text-small" > - {item.previousNAVvalue && `$ ${item.previousNAVvalue}`} + {item.previousNAVvalue && `${item.previousNAVvalue}`} ), "Investment Closed": ( @@ -100,7 +100,7 @@ const IONAVDetails = () => { fontWeight={"500"} className="d-flex align-items-center web-text-small" > - {item.initialNAVvalue&&`$ ${item.initialNAVvalue}`} + {item.initialNAVvalue&& `${item.initialNAVvalue}`} ), "Comments": ( diff --git a/src/Pages/IO_Management/KeyMeritsAdd.jsx b/src/Pages/IO_Management/KeyMeritsAdd.jsx index e3102e0..2ce992b 100644 --- a/src/Pages/IO_Management/KeyMeritsAdd.jsx +++ b/src/Pages/IO_Management/KeyMeritsAdd.jsx @@ -80,32 +80,26 @@ const KeyMeritsAdd = ({ isOpen, onClose, firstField, id, icons }) => { setIsLoading(true); try { const res = await createKeyMerits({ data: formData, id }); + console.log(res?.error?.status); + if (res?.data?.statusCode === 201) { toast({ render: () => , }); - setAlert(false); - onClose(); - setIsLoading(false); - reset(); + handleClose() return; } - if (res?.error?.data?.code === 400) { + if (res?.error?.status === 400 || res?.error?.status === 500 ) { toast({ render: () => ( ), }); setIsLoading(false); - onClose(); setAlert(false); - reset(); - setFile(null); - setSelectedImageIcon(null); - setSelectedIcon("Select Icon"); return; - } + } } catch (error) { if (error) { toast({ @@ -118,12 +112,7 @@ const KeyMeritsAdd = ({ isOpen, onClose, firstField, id, icons }) => { }); } setIsLoading(false); - onClose(); - setAlert(false); - reset(); - setFile(null); - setSelectedImageIcon(null); - setSelectedIcon("Select Icon"); + handleClose() } reset(); }; @@ -147,6 +136,7 @@ const KeyMeritsAdd = ({ isOpen, onClose, firstField, id, icons }) => { const handleClose = () => { onClose(); + setIsLoading(false); setAlert(false); reset(); setFile(null); diff --git a/src/Pages/IO_Management/KeyMeritsEdit.jsx b/src/Pages/IO_Management/KeyMeritsEdit.jsx index 557f8dc..473658b 100644 --- a/src/Pages/IO_Management/KeyMeritsEdit.jsx +++ b/src/Pages/IO_Management/KeyMeritsEdit.jsx @@ -59,6 +59,8 @@ const KeyMeritsEdit = ({ const [selectedImageIcon, setSelectedImageIcon] = useState(null); const found = data?.find((item) => item?.id === actionId); + console.log(found); + const { control, @@ -71,6 +73,9 @@ const KeyMeritsEdit = ({ }); // useEffect to reset the form when `found` changes useEffect(() => { + setValue("icon_xid", found?.icon?.id); + setSelectedIcon(found?.icon?.iconName); // Update selected icon name + setSelectedImageIcon(found?.icon?.iconFilePath); if (found) { reset({ meritsHeader: found?.meritsHeader, @@ -91,10 +96,7 @@ const KeyMeritsEdit = ({ toast({ render: () => , }); - setAlert(false); - onClose(); - setIsLoading(false); - reset(); + handleClose() return; } if (res?.error?.data?.code === 400) { @@ -103,10 +105,7 @@ const KeyMeritsEdit = ({ ), }); - setAlert(false); - onClose(); - setIsLoading(false); - reset(); + handleClose() return; } } catch (error) { @@ -121,10 +120,7 @@ const KeyMeritsEdit = ({ ), }); } - setIsLoading(false); - setAlert(false); - onClose(); - reset(); + handleClose() } reset(); }; @@ -140,6 +136,14 @@ const KeyMeritsEdit = ({ setSelectedImageIcon(iconFilePath); }; + const handleClose = () => { + setIsLoading(false); + setAlert(false); + onClose(); + reset(); + + } + return ( <> { + if (isNaN(value)) return ''; + const formatted = parseFloat(value).toFixed(2).toString(); + const [integer, decimal] = formatted.split('.'); + const formattedInteger = integer.replace(/\B(?=(\d{3})+(?!\d))/g, ','); + return decimal ? `${formattedInteger}.${decimal}` : formattedInteger; +}; const AmountInvested = ({ isOpen, onClose }) => { + const params = useParams(); + const toast = useToast(); + const id = params?.id; + const { control, register, handleSubmit, reset, watch, formState: { errors } } = useForm({ + resolver: yupResolver(validationSchema), + }); + const [isLoading, setIsLoading] = useState(false); + const { IODetails } = useContext(GlobalStateContext); + const [amountInvested] = useAmountIvestmentMutation(); + + useEffect(() => { + if (IODetails?.goalAmount) { + const totalAmount = parseFloat(IODetails.goalAmount); + const ioCashUpdate = parseFloat(IODetails.goalAmount) + reset({ + Total_Amount: totalAmount, + IoCash: ioCashUpdate, + }); + } + }, [IODetails, reset]); + + const onSubmit = async (data) => { + console.log(data); + setIsLoading(true); + + try { + const res = await amountInvested({ data, id }); + console.log(res); + if (res?.data?.statusCode === 200) { + toast({ + render: () => , + }); + setIsLoading(false); + onClose(); + } else if (res?.error?.status === 400) { + toast({ + render: () => ( + + ), + }); + setIsLoading(false); + } + } catch (error) { + setIsLoading(false); + } + }; + + const handleAmountChange = (e) => { + const amount = parseFloat(e.target.value) || 0; + const totalAmount = parseFloat(IODetails?.goalAmount) || 0; + const ioCash = (totalAmount - amount).toFixed(2); + + reset({ + amountInvested: parseFloat(amount), + IoCash: parseFloat(ioCash), + Total_Amount: IODetails?.goalAmount + }); + }; + return ( @@ -23,73 +107,92 @@ const AmountInvested = ({ isOpen, onClose }) => { Amount Invested - - - Date - - - +
+ + + Date + + + {errors.transactionDate && {errors.transactionDate.message}} + - - Amount - - + + Amount + + {errors.Total_Amount && {errors.Total_Amount.message}} + - - Amount to invest - - + + Amount to invest + + {errors.amountInvested && {errors.amountInvested.message}} + - - - IO Cash - - - + + + IO Cash + + + {errors.IoCash && {errors.IoCash.message}} + + + + + + +
- - - -
); diff --git a/src/Pages/IO_Management/ViewIO/HeaderModal/UpdateIOStatus.jsx b/src/Pages/IO_Management/ViewIO/HeaderModal/UpdateIOStatus.jsx index 8248b0d..f900abe 100644 --- a/src/Pages/IO_Management/ViewIO/HeaderModal/UpdateIOStatus.jsx +++ b/src/Pages/IO_Management/ViewIO/HeaderModal/UpdateIOStatus.jsx @@ -1,9 +1,9 @@ - import { ChevronDownIcon } from "@chakra-ui/icons"; import React, { useEffect, useState } from "react"; import { Badge, Button, + FormControl, FormLabel, Menu, MenuButton, @@ -16,39 +16,41 @@ import { ModalFooter, ModalHeader, ModalOverlay, + FormErrorMessage } from "@chakra-ui/react"; import { - useGetIOByIdQuery, useGetIOprepopulateDataQuery, useUpdateStatusIoMutation, } from "../../../../Services/io.service"; import { useParams } from "react-router-dom"; -const UpdateIOStatus = ({ isOpen, onClose , status}) => { +const UpdateIOStatus = ({ isOpen, onClose, status }) => { const params = useParams(); const id = params?.id; - const [selectedItem, setSelectedItem] = useState(status?.[0]?.statusAdmin); + const [selectedItem, setSelectedItem] = useState(); const [isLoadingg, setIsLoading] = useState(false); - const { data, error, isLoading } = useGetIOprepopulateDataQuery(); + const [error, setError] = useState(""); const [selectedStatusId, setSelectedStatusId] = useState(status?.[0]?.id); - useEffect(() => { - setSelectedItem(status?.[0]?.statusAdmin) - setSelectedStatusId(status?.[0]?.id) - }, [status]) - - - - + const { data } = useGetIOprepopulateDataQuery(); const [updateStatusIo] = useUpdateStatusIoMutation(); + useEffect(() => { + setSelectedStatusId(status?.[0]?.id); + }, [status]); + const handleMenuItemClick = (item, id) => { setSelectedItem(item); setSelectedStatusId(id); }; const handleSubmit = async () => { - setIsLoading(true) + if (!selectedStatusId) { + setError("Status is required."); + return; + } + setError(""); + setIsLoading(true); try { const res = await updateStatusIo({ data: { @@ -57,109 +59,117 @@ const UpdateIOStatus = ({ isOpen, onClose , status}) => { id, }); console.log(res); - setIsLoading(false) - onClose() - } catch (error) {} + setIsLoading(false); + handleClose(); + } catch (error) { + setIsLoading(false); + } }; + const handleClose = () => { + setSelectedItem("") + onClose() + } + return ( - + Update IO Status Transaction - - Status - - - } - fontSize={"sm"} - fontWeight={500} - w={"100%"} - textAlign={"left"} - > - - {selectedItem ? selectedItem: "No action"} - - - - - {status?.map(({ id, statusAdmin }) => ( - handleMenuItemClick(statusAdmin, id)} - > + + + Status + + + } + fontSize={"sm"} + fontWeight={500} + w={"100%"} + textAlign={"left"} + > + {selectedItem ? ( - {statusAdmin} + rounded={"full"} + pt={1.5} + pb={1.5} + ps={4} + pe={4} + mt={1.5} + mb={1.5} + textTransform={"none"} + colorScheme={ + selectedItem === "Draft" + ? "gray" + : selectedItem === "Processing" + ? "yellow" + : selectedItem === "Open" + ? "blue" + : selectedItem === "Closed" + ? "green" + : selectedItem === "Exited" + ? "red" + : selectedItem === "Canclled" + ? "orange" + : "purple" + } + py={"3px"} px={"8px"} + > + {selectedItem} - - ))} - - + ) : "Select Item"} + + + {status?.length > 0 ? + {status?.map(({ id, statusAdmin }) => ( + handleMenuItemClick(statusAdmin, id)} + > + + {statusAdmin} + + + ))} + :""} + + {error} + - diff --git a/src/Pages/IO_Management/ViewIO/ViewIOdata.jsx b/src/Pages/IO_Management/ViewIO/ViewIOdata.jsx index 4dde58b..035c470 100644 --- a/src/Pages/IO_Management/ViewIO/ViewIOdata.jsx +++ b/src/Pages/IO_Management/ViewIO/ViewIOdata.jsx @@ -35,6 +35,7 @@ import IOArtifacts from "../CreateIO/IOArtifacts"; import IOCashDetails from "../CreateIO/IOCashDetails"; import IONAVDetails from "../CreateIO/IONAVDetails"; import { useGetIOprepopulateDataQuery } from "../../../Services/io.service"; +import UnderConstruction from "../../UnderConstruction"; const ViewIOdata = () => { @@ -51,10 +52,12 @@ const ViewIOdata = () => { { label: "Investment documents", content: }, { label: "Key merits", content: }, { label: "IO artifacts", content: }, - { label: "Investors", content: }, + // { label: "Investors", content: }, + { label: "Investors", content: }, { label: "IO Cash Details", content: }, { label: "IO NAV Details", content: }, - { label: "Distribution to Investors", content: }, + // { label: "Distribution to Investors", content: }, + { label: "Distribution to Investors", content: }, ]; return ( diff --git a/src/Pages/IO_Management/ViewIO/ViewIOdataHeader.jsx b/src/Pages/IO_Management/ViewIO/ViewIOdataHeader.jsx index 7cbced4..a0c3a2d 100644 --- a/src/Pages/IO_Management/ViewIO/ViewIOdataHeader.jsx +++ b/src/Pages/IO_Management/ViewIO/ViewIOdataHeader.jsx @@ -23,6 +23,7 @@ import { Badge, Box, Icon, + HStack, } from "@chakra-ui/react"; import header from "../../../assets/IOheader.png"; import { HiDotsVertical } from "react-icons/hi"; @@ -40,6 +41,7 @@ import Cancle from "./HeaderModal/Cancle"; import { AddIcon } from "@chakra-ui/icons"; import { GrGallery } from "react-icons/gr"; import Loader01 from "../../../Components/Loaders/Loader01"; +import { formatCurrency } from "../../../Components/CurrencyInput"; const ViewIOdataHeader = ({data, isLoading}) => { const params = useParams(); @@ -156,7 +158,9 @@ const filteredMenu = menu?.filter(item => apiTransactionTitles?.includes(item.id -console.log(isLoading); +console.log(IODetails?.ioNAV); +console.log(IODetails?.ioCash); +console.log(IODetails?.ioMVNAV); @@ -166,7 +170,7 @@ console.log(isLoading); {/* {IODetails?.ioName}/ */} {IODetails?.artifactsImage?.[0]?.artifactPathName ? ( @@ -249,6 +253,10 @@ console.log(isLoading); : "---"} + + + + @@ -290,7 +298,7 @@ console.log(isLoading); IO NAV - {IODetails?.currentValuation ? IODetails?.currentValuation : "00.00"} + {IODetails?.ioNAV ? formatCurrency(IODetails?.ioNAV) : "00.00"} @@ -308,10 +316,12 @@ console.log(isLoading); IO MV NAV - {IODetails?.marketValue ? IODetails?.marketValue : "00.00"} + {IODetails?.ioMVNAV ? formatCurrency(IODetails?.ioMVNAV) : "00.00"} + + { // ====================================================[Table Filter]================================================================ const filteredData = investorDetails?.data?.rows?.filter((item) => { // Filter by name (case insensitive) - const name = item.clientReference_id; + const name = [item?.principal?.firstName, item?.principal?.lastName, item?.country?.countryName, item?.principal?.mobileNumber, item?.principal?.emailAddress].filter(Boolean).join(' '); const searchLower = searchTerm.toLowerCase(); const nameMatches = name?.toLowerCase().includes(searchLower); diff --git a/src/Pages/Master/Sponser/AddSponser.jsx b/src/Pages/Master/Sponser/AddSponser.jsx index 3859537..7f706b3 100644 --- a/src/Pages/Master/Sponser/AddSponser.jsx +++ b/src/Pages/Master/Sponser/AddSponser.jsx @@ -54,7 +54,7 @@ const AddSponser = () => { const [isLoadingBtn, setIsLoadingBtn] = useState(false); const [alert, setAlert] = useState(false); const [form, setForm] = useState(); - const [isSwitchOn, setIsSwitchOn] = useState(); + const [isSwitchOn, setIsSwitchOn] = useState(true); const [createSponser] = useCreateSponserMutation(); const [updateSponser] = useUpdateSponserMutation(); @@ -62,9 +62,6 @@ const AddSponser = () => { // Fetch sponsor data only if id exists const {data: sponserByIdData,error,isLoading,} = useGetSponserByIdQuery(id, {skip: !id,}); - console.log(sponserByIdData); - - // ======================== [validators] =========================== const { @@ -124,15 +121,15 @@ const AddSponser = () => { setIsLoadingBtn(false); setAlert(false); navigate("/sponser"); - } else { + } else if(response?.error?.status === 400) { toast({ render: () => ( - + ), }); setIsLoadingBtn(false); - navigate("/sponser"); + setAlert(false) } }); } catch (error) { @@ -179,22 +176,22 @@ const AddSponser = () => { const formFields = [ { - label: "Sponser name (English)", + label: "Sponsor name (English)", placeHolder: " ", name: "sponsorName", type: "text", isRequired: true, - section: "Add Details", + section: "", maxLength:50, helperText:`Maximum length should be 50 characters. You have entered ${watch()?.sponsorName?.length || 0} characters.` }, { - label: "Sponser name (Arabic)", + label: "Sponsor name (Arabic)", name: "sponsorNameArabic", placeHolder: " ", type: "text", isRequired: true, - section: "Add Details", + section: "", arabic: true, right: true, maxLength:55, @@ -206,7 +203,7 @@ const AddSponser = () => { placeHolder: " ", type: "email", // isRequired: true, - section: "Add Details", + section: "", }, ]; @@ -214,22 +211,22 @@ const AddSponser = () => { const formEditFields = [ { - label: "Sponser name", + label: "Sponsor name", placeHolder: " ", name: "sponsorName", type: "text", isRequired: true, - section: "Add Details", + section: "", maxLength:55, helperText:`Maximum length should be 55 characters. You have entered ${watch()?.sponsorName?.length || 0} characters.` }, { - label: "Sponser name (Arabic)", + label: "Sponsor name (Arabic)", name: "sponsorNameArabic", placeHolder: " ", type: "text", isRequired: true, - section: "Add Details", + section: "", arabic: true, maxLength:55, helperText:`Maximum length should be 55 characters. You have entered ${watch()?.sponsorNameArabic?.length || 0} characters.` @@ -240,7 +237,7 @@ const AddSponser = () => { placeHolder: " ", type: "email", // isRequired: true, - section: "Add Details", + section: "", }, ]; diff --git a/src/Pages/Master/Sponser/Sponsers.jsx b/src/Pages/Master/Sponser/Sponsers.jsx index 97fb94d..0f16db1 100644 --- a/src/Pages/Master/Sponser/Sponsers.jsx +++ b/src/Pages/Master/Sponser/Sponsers.jsx @@ -158,9 +158,21 @@ const Sponser = () => { setIsLoading(true); try { const response = await deleteSponser(actionId); - console.log(response); - setIsLoading(false); - setDeleteAlert(false); + console.log(response?.data); + if(response?.error?.data?.code === 400){ + toast({ + render: () => , + }); + setIsLoading(false); + setDeleteAlert(false); + } else if(response?.data?.statusCode === 201 || response?.data?.statusCode === 200){ + toast({ + render: () => , + }); + setIsLoading(false); + setDeleteAlert(false); + + } } catch (error) {} }; diff --git a/src/Pages/UnderConstruction.jsx b/src/Pages/UnderConstruction.jsx index 834dc42..56bf614 100644 --- a/src/Pages/UnderConstruction.jsx +++ b/src/Pages/UnderConstruction.jsx @@ -3,10 +3,10 @@ import React from 'react' // import noInternet from "../assets/Error.svg" import robot from "../assets/under-construction.png" -const UnderConstruction = ({title}) => { +const UnderConstruction = ({title, h}) => { return ( ({ + url: `/io/admin/amount-invested/${id}`, + method: "POST", + body: data, + }), + invalidatesTags: ["getIOById"], + }), + + + + + + + @@ -277,5 +293,11 @@ export const { - useUpdateStatusIoMutation + useUpdateStatusIoMutation, + + + + + + useAmountIvestmentMutation, } = ioService;