From a126d6515d61508652e3603aaa597f5a67fe2dd2 Mon Sep 17 00:00:00 2001 From: YasinShaikh123 <123150391+YasinShaikh123@users.noreply.github.com> Date: Tue, 17 Sep 2024 15:33:27 +0530 Subject: [PATCH] =?UTF-8?q?admin=20pages=20Working=F0=9F=91=B7=E2=80=8D?= =?UTF-8?q?=E2=99=82=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Contexts/GlobalStateProvider.jsx | 22 ++ src/Pages/Admin/BankDetails/BankDetails.jsx | 20 +- .../Admin/BankDetails/EditBankDetails.jsx | 32 +- .../BankInvestor}/BankInvestor.jsx | 149 ++++++--- .../Admin/Investor/BankInvestor/Investor.jsx | 27 ++ .../Investor/BankInvestor/ReasonBanModal.jsx | 141 +++++++++ .../Investor/UnbanInvestor/ReasonBanModal.jsx | 145 +++++++++ .../Investor/UnbanInvestor/UnbanInvestor.jsx | 294 ++++++++++++++++++ .../IO_Management/CreateIO/IODetails.jsx | 12 +- src/Pages/IO_Management/EditViewIO.jsx | 2 +- .../InvestmentType/AddInvestmentType.jsx | 123 ++++---- src/Pages/Master/Sponser/AddSponser.jsx | 119 ++++--- .../DrawalRequest/PendingRequest.jsx | 12 + src/Routes/Routes.js | 14 +- src/Services/ban.investor.service.js | 47 +++ src/Store/Store.js | 3 + 16 files changed, 968 insertions(+), 194 deletions(-) rename src/Pages/Admin/{ => Investor/BankInvestor}/BankInvestor.jsx (62%) create mode 100644 src/Pages/Admin/Investor/BankInvestor/Investor.jsx create mode 100644 src/Pages/Admin/Investor/BankInvestor/ReasonBanModal.jsx create mode 100644 src/Pages/Admin/Investor/UnbanInvestor/ReasonBanModal.jsx create mode 100644 src/Pages/Admin/Investor/UnbanInvestor/UnbanInvestor.jsx create mode 100644 src/Services/ban.investor.service.js diff --git a/src/Contexts/GlobalStateProvider.jsx b/src/Contexts/GlobalStateProvider.jsx index 6d09134..d9db0d1 100644 --- a/src/Contexts/GlobalStateProvider.jsx +++ b/src/Contexts/GlobalStateProvider.jsx @@ -1368,6 +1368,28 @@ const GlobalStateProvider = ({ children }) => { mailId: "john@gmail.com", status: "Incompleted", }, + { + id: 10, + date: "02-Jan-2024", + clientId: "SA00000001", + firstName: "John", + lastName: "David", + country: "Saudi Arabia", + phoneNumber: "8940035906", + mailId: "john@gmail.com", + status: "Incompleted", + }, + { + id: 10, + date: "02-Jan-2024", + clientId: "SA00000001", + firstName: "John", + lastName: "David", + country: "Saudi Arabia", + phoneNumber: "8940035906", + mailId: "john@gmail.com", + status: "Incompleted", + }, ]); const [manageAcademy, setManageAcademy] = useState([ diff --git a/src/Pages/Admin/BankDetails/BankDetails.jsx b/src/Pages/Admin/BankDetails/BankDetails.jsx index f1d55ca..9ec457a 100644 --- a/src/Pages/Admin/BankDetails/BankDetails.jsx +++ b/src/Pages/Admin/BankDetails/BankDetails.jsx @@ -5,14 +5,6 @@ import { Button, HStack, Input, - Menu, - MenuButton, - MenuItem, - MenuList, - Portal, - Select, - Switch, - Tag, Text, Tooltip, useDisclosure, @@ -22,11 +14,7 @@ import React, { useContext, useEffect, useState, useRef } from "react"; import { HiDotsVertical } from "react-icons/hi"; import { Link, Link as RouterLink, useNavigate } from "react-router-dom"; import { - AddIcon, - DeleteIcon, EditIcon, - EmailIcon, - ViewIcon, } from "@chakra-ui/icons"; import { OPACITY_ON_LOAD } from "../../../Layout/animations"; import DataTable from "../../../Components/DataTable/DataTable"; @@ -77,7 +65,7 @@ const BankDetails = () => { // ====================================================[Table Setup]================================================================ const tableHeadRow = [ - // "Sr N/O", + "Sr N/O", "Country name", "Account Name", "Account No", @@ -131,7 +119,7 @@ const BankDetails = () => { "Country name": ( - {item.country_xid} + {/* {item.country_xid} */} ), @@ -161,7 +149,7 @@ const BankDetails = () => { { { const id = params?.id; const [isLoadingBtn, setIsLoadingBtn] = useState(false); + const { InvestorDetails, setInvestorDetails, slideFromRight } = + useContext(GlobalStateContext); const [alert, setAlert] = useState(false); const [form, setForm] = useState({}); const [isSwitchOn, setIsSwitchOn] = useState(false); @@ -45,16 +48,19 @@ const EditBankDetails = () => { }); useEffect(() => { - if (bankDetails) { + setInvestorDetails({ + ...bankDetails?.data, + }); + if (bankDetails?.data) { reset({ - accountNumber: bankDetails.accountNumber, - swiftCode: bankDetails.swiftCode, - bankName: bankDetails.bankName, - bankAddress: bankDetails.bankAddress, - IBANnumber: bankDetails.IBANnumber, + accountNumber: bankDetails?.accountNumber, + swiftCode: bankDetails?.swiftCode, + bankName: bankDetails?.bankName, + bankAddress: bankDetails?.bankAddress, + IBANnumber: bankDetails?.IBANnumber, }); } - }, [bankDetails, reset]); + }, [bankDetails, reset,id]); if (isLoading) { return ; @@ -62,7 +68,6 @@ const EditBankDetails = () => { const handleConfirm = async () => { setIsLoadingBtn(true); - try { const formData = { ...form, @@ -91,6 +96,9 @@ const EditBankDetails = () => { } }; + console.log(bankDetails?.accountNumber); + + const formEditFields = [ { label: "Country Name", @@ -104,9 +112,10 @@ const EditBankDetails = () => { }, { label: "Account Name", + value:bankDetails?.accountNumber, name: "accountName", placeHolder: "Enter account name", - type: "text", + type: "number", isRequired: true, section: "Add Details", maxLength: 255, @@ -116,7 +125,7 @@ const EditBankDetails = () => { label: "Account Number *", name: "accountNumber", placeHolder: "Enter account number", - type: "text", + type: "number", section: "Add Details", width: "32%", }, @@ -130,6 +139,7 @@ const EditBankDetails = () => { }, { label: "SWIFT Code", + value: bankDetails?.data?.swiftCode, name: "swiftCode", placeHolder: "Enter SWIFT code", type: "text", diff --git a/src/Pages/Admin/BankInvestor.jsx b/src/Pages/Admin/Investor/BankInvestor/BankInvestor.jsx similarity index 62% rename from src/Pages/Admin/BankInvestor.jsx rename to src/Pages/Admin/Investor/BankInvestor/BankInvestor.jsx index a00cad3..feec3fb 100644 --- a/src/Pages/Admin/BankInvestor.jsx +++ b/src/Pages/Admin/Investor/BankInvestor/BankInvestor.jsx @@ -2,39 +2,25 @@ import { Avatar, Badge, Box, - Button, HStack, Input, - Menu, - MenuButton, - MenuItem, - MenuList, - Portal, Select, Switch, - Tag, Text, - Tooltip, useDisclosure, useToast, } from "@chakra-ui/react"; -import React, { useContext, useEffect, useState,useRef } from "react"; -import { HiDotsVertical } from "react-icons/hi"; -import { Link, Link as RouterLink,useNavigate } from "react-router-dom"; -import { - AddIcon, - DeleteIcon, - EditIcon, - EmailIcon, - ViewIcon, -} from "@chakra-ui/icons"; -import GlobalStateContext from "../../Contexts/GlobalStateContext"; -import { debounce } from "../Master/Sponser/AddSponser"; -import { OPACITY_ON_LOAD } from "../../Layout/animations"; -import DataTable from "../../Components/DataTable/DataTable"; -import CustomAlertDialog from "../../Components/CustomAlertDialog"; -import Pagination from "../../Components/Pagination"; -import ToastBox from "../../Components/ToastBox"; +import React, { useContext, useEffect, useState, useRef } from "react"; +import { Link, Link as RouterLink, useNavigate } from "react-router-dom"; +import GlobalStateContext from "../../../../Contexts/GlobalStateContext"; +import { debounce } from "../../../Master/Sponser/AddSponser"; +import { OPACITY_ON_LOAD } from "../../../../Layout/animations"; +import DataTable from "../../../../Components/DataTable/DataTable"; +import CustomAlertDialog from "../../../../Components/CustomAlertDialog"; +import Pagination from "../../../../Components/Pagination"; +import ToastBox from "../../../../Components/ToastBox"; +import ReasonBanModal from "./ReasonBanModal"; +import { useGetbanInvestorQuery } from "../../../../Services/ban.investor.service"; const formatDate = (date) => new Date(date).toLocaleDateString(); // Simple date formatter @@ -50,8 +36,28 @@ const BankInvestor = () => { const [actionId, setActionId] = useState(false); const [mouseEntered, setMouseEntered] = useState(false); const [mouseEnteredId, setMouseEnteredId] = useState(""); - const {isOpen: isEditOpen,onOpen: onEditOpen,onClose: onEditClose,} = useDisclosure(); - const btnRef = React.useRef() + const { + isOpen: isOpen, + onOpen: onOpen, + onClose: onClose, + } = useDisclosure(); + + + const formatDate = (date) => { + return new Date(date).toLocaleDateString("en-GB", { + day: "2-digit", + month: "2-digit", + year: "numeric", + }); + }; + + const { + data, + isLoading: unbanLoading, + error, + refetch + } = useGetbanInvestorQuery(); + useEffect(() => { // Simulate loading @@ -66,6 +72,7 @@ const BankInvestor = () => { // ====================================================[Table Setup]================================================================ const tableHeadRow = [ "Sr N/O", + "Date", "Client ID", "First Name", "Last Name", @@ -88,9 +95,9 @@ const BankInvestor = () => { }, 300); // ====================================================[Table Filter]================================================================ - const filteredData = bankInvestor?.filter((item) => { + const filteredData = data?.data?.rows?.filter((item) => { // Filter by name (case insensitive) - const name = item.firstName; + const name = item?.clientReference_id; const searchLower = searchTerm.toLowerCase(); const nameMatches = name?.toLowerCase().includes(searchLower); @@ -118,62 +125,82 @@ const BankInvestor = () => { {item.id} ), + "Date": ( + + + {formatDate(item?.principal?.createdAt)} + + + ), "Client ID": ( - {item.clientId} + {item?.clientReference_id} ), "First Name": ( - {item.firstName} + {item?.principal?.firstName} ), "Last Name": ( - {item.lastName} + {item?.principal?.lastName} ), Country: ( - {item.country} + {item?.country_xid} ), "Phone Number": ( - {item.phoneNumber} + {item?.principal?.mobileNumber} ), "E-mail ID": ( - {item.mailId} + {item?.principal?.emailAddress} ), "KYC Status": ( - - {item.status} + + {item?.KYCStatus} ), Action: ( - handleUpdateStatus(item.id)} - isChecked={item.status} - /> + + + Ban Investor + + ), })); @@ -196,7 +223,7 @@ const BankInvestor = () => { }; return ( - + { spacing="24px" > { onChange={(e) => setSearchTerm(e.target.value)} /> - + + @@ -242,6 +294,11 @@ const BankInvestor = () => { alertHandler={handleDelete} isLoading={isLoading} /> + ); }; diff --git a/src/Pages/Admin/Investor/BankInvestor/Investor.jsx b/src/Pages/Admin/Investor/BankInvestor/Investor.jsx new file mode 100644 index 0000000..96358c0 --- /dev/null +++ b/src/Pages/Admin/Investor/BankInvestor/Investor.jsx @@ -0,0 +1,27 @@ +import { Box, Tab, TabList, TabPanel, TabPanels, Tabs } from "@chakra-ui/react"; +import React from "react"; +import BankInvestor from "./BankInvestor"; +import UnbanInvestor from "../UnbanInvestor/UnbanInvestor"; + +const Investor = () => { + return ( + + + + Unban Investor + Ban Investor + + + + + + + + + + + + ); +}; + +export default Investor; diff --git a/src/Pages/Admin/Investor/BankInvestor/ReasonBanModal.jsx b/src/Pages/Admin/Investor/BankInvestor/ReasonBanModal.jsx new file mode 100644 index 0000000..366d6bd --- /dev/null +++ b/src/Pages/Admin/Investor/BankInvestor/ReasonBanModal.jsx @@ -0,0 +1,141 @@ +import { + Box, + Button, + FormControl, + FormLabel, + Input, + Modal, + ModalBody, + ModalCloseButton, + ModalContent, + ModalFooter, + ModalHeader, + ModalOverlay, + Text, + Textarea, + useDisclosure, + useToast, + } from "@chakra-ui/react"; + import React, { useEffect, useState } from "react"; + import * as yup from "yup"; + import { yupResolver } from "@hookform/resolvers/yup"; + import { useForm } from "react-hook-form"; + import ToastBox from "../../../../Components/ToastBox"; +import { useDepositRejectMutation } from "../../../../Services/drawal.request.service"; + + export const conformModalSchema = yup.object().shape({ + comments: yup.string().required("Comment is required"), + }); + + const ReasonBanModal = ({ isOpen, onClose, firstField ,id}) => { + const [isBtnLoading , setIsBtnLoading] = useState(false) + + const toast = useToast() + + const { + register, + reset, + handleSubmit, + formState: { errors }, + } = useForm({ + resolver: yupResolver(conformModalSchema), + }); + + // const [ depositReject ] = useDepositRejectMutation() + + + const onSubmit = async(data) => { + setIsBtnLoading(true) + try { + const res = await depositReject({ id ,data}) + + if (res?.error) { + toast({ + render: () => ( + + ), + }); + heandleOnClose() + + }else if(res?.data?.statusCode === 200) { + toast({ + render: () => ( + + ), + }); + heandleOnClose() + } + + } catch (error) { + console.log(error); + + } + + }; + + + const heandleOnClose = () =>{ + reset() + onClose() + setIsBtnLoading(false) + } + + return ( + + + + Reason for Ban + + + + + Comment +