From aff088c7b720ce5e4d9877929a11a47212665115 Mon Sep 17 00:00:00 2001 From: YasinShaikh123 <123150391+YasinShaikh123@users.noreply.github.com> Date: Thu, 10 Oct 2024 15:47:15 +0530 Subject: [PATCH] FawateerApprove modal --- src/Contexts/GlobalStateProvider.jsx | 122 ++++++- src/Pages/Fawateer/FawateerRequest.jsx | 1 - .../ApproveHistory/ApproveHistory.jsx | 340 ++++++++++++++++++ .../ApproveHistory/ConfirmHistory.jsx | 95 +++++ .../ApproveHistory/RejectHistory.jsx | 100 ++++++ .../ApproveRequest/ApproveRequest.jsx | 340 ++++++++++++++++++ .../ApproveRequest/RequestApprove.jsx | 242 +++++++++++++ .../ApproveRequest/RequestReject.jsx | 163 +++++++++ src/Routes/Routes.js | 13 +- src/Services/fawateer.request.service.js | 30 ++ src/Store/Store.js | 3 + 11 files changed, 1436 insertions(+), 13 deletions(-) create mode 100644 src/Pages/FawateerChecker/ApproveHistory/ApproveHistory.jsx create mode 100644 src/Pages/FawateerChecker/ApproveHistory/ConfirmHistory.jsx create mode 100644 src/Pages/FawateerChecker/ApproveHistory/RejectHistory.jsx create mode 100644 src/Pages/FawateerChecker/ApproveRequest/ApproveRequest.jsx create mode 100644 src/Pages/FawateerChecker/ApproveRequest/RequestApprove.jsx create mode 100644 src/Pages/FawateerChecker/ApproveRequest/RequestReject.jsx create mode 100644 src/Services/fawateer.request.service.js diff --git a/src/Contexts/GlobalStateProvider.jsx b/src/Contexts/GlobalStateProvider.jsx index d9db0d1..b3cce1a 100644 --- a/src/Contexts/GlobalStateProvider.jsx +++ b/src/Contexts/GlobalStateProvider.jsx @@ -1441,6 +1441,121 @@ const GlobalStateProvider = ({ children }) => { }, ]); + const [fawateerRequest, setFawateerRequest] = useState([ + { + id: 8, + principal_xid: 2, + transaction_date: "2024-10-07", + transaction_amount: "2000.00", + transactionStatus: "Approved", + makerComment: "This is a sample comment for the transactio", + checkerComment: "This is a sample comment for the transaction", + spportFile_path: "public\\spportFile_path\\screenshot_2024_02_15_152810.png", + clientReference_id: "BH00000001", + firstName: "jayesh", + lastName: "jain ", + mobileNumber: "+919819906537", + emailAddress: "jayeshkjain6@gmail.com", + maker: { + firstName: "Faisal", + lastName: "Aljalahma", + emailAddress: "admin@tanami.com", + ISDcode: "+973", + mobileNumber: "3633133" + } + }, + { + id: 8, + principal_xid: 2, + transaction_date: "2024-10-07", + transaction_amount: "2000.00", + transactionStatus: "Approved", + makerComment: "This is a sample comment for the transactio", + checkerComment: "This is a sample comment for the transaction", + spportFile_path: "public\\spportFile_path\\screenshot_2024_02_15_152810.png", + clientReference_id: "BH00000001", + firstName: "jayesh", + lastName: "jain ", + mobileNumber: "+919819906537", + emailAddress: "jayeshkjain6@gmail.com", + maker: { + firstName: "Faisal", + lastName: "Aljalahma", + emailAddress: "admin@tanami.com", + ISDcode: "+973", + mobileNumber: "3633133" + } + }, + { + id: 8, + principal_xid: 2, + transaction_date: "2024-10-07", + transaction_amount: "2000.00", + transactionStatus: "Approved", + makerComment: "This is a sample comment for the transactio", + checkerComment: "This is a sample comment for the transaction", + spportFile_path: "public\\spportFile_path\\screenshot_2024_02_15_152810.png", + clientReference_id: "BH00000001", + firstName: "jayesh", + lastName: "jain ", + mobileNumber: "+919819906537", + emailAddress: "jayeshkjain6@gmail.com", + maker: { + firstName: "Faisal", + lastName: "Aljalahma", + emailAddress: "admin@tanami.com", + ISDcode: "+973", + mobileNumber: "3633133" + } + }, + { + id: 8, + principal_xid: 2, + transaction_date: "2024-10-07", + transaction_amount: "2000.00", + transactionStatus: "Approved", + makerComment: "This is a sample comment for the transactio", + checkerComment: "This is a sample comment for the transaction", + spportFile_path: "public\\spportFile_path\\screenshot_2024_02_15_152810.png", + clientReference_id: "BH00000001", + firstName: "jayesh", + lastName: "jain ", + mobileNumber: "+919819906537", + emailAddress: "jayeshkjain6@gmail.com", + maker: { + firstName: "Faisal", + lastName: "Aljalahma", + emailAddress: "admin@tanami.com", + ISDcode: "+973", + mobileNumber: "3633133" + } + }, + ]); + + const [approveHistory, setApproveHistory] = useState([ + { + "id": 1, + "principal_xid": 2, + "transaction_date": "2024-10-07", + "transaction_amount": "2000.00", + "transactionStatus": "Pending", + "makerComment": null, + "checkerComment": null, + "spportFile_path": null, + "clientReference_id": "BH00000001", + "firstName": "jayesh", + "lastName": "jain", + "mobileNumber": "+919819906537", + "emailAddress": "jayeshkjain6@gmail.com", + "maker": { + "firstName": "Faisal", + "lastName": "Aljalahma", + "emailAddress": "admin@tanami.com", + "ISDcode": "+973", + "mobileNumber": "3633133" + } + }, + ]); const [InvestorWallet, setInvestorWallet] = useState(null); @@ -1519,15 +1634,16 @@ const GlobalStateProvider = ({ children }) => { setAcademicDocuments, iOArtifactsTwo, setIOArtifactsTwo, - InvestorWallet, setInvestorWallet, - isIOloading, setIOloading, - users, setUsers, + fawateerRequest, + setFawateerRequest, + approveHistory, + setApproveHistory }} > {children} diff --git a/src/Pages/Fawateer/FawateerRequest.jsx b/src/Pages/Fawateer/FawateerRequest.jsx index 24d4858..b21df91 100644 --- a/src/Pages/Fawateer/FawateerRequest.jsx +++ b/src/Pages/Fawateer/FawateerRequest.jsx @@ -107,7 +107,6 @@ const FawateerRequest = () => { // ====================================================[Table Setup]================================================================ const tableHeadRow = [ "Sr No", - "Client ID", "First Name", "Last Name", diff --git a/src/Pages/FawateerChecker/ApproveHistory/ApproveHistory.jsx b/src/Pages/FawateerChecker/ApproveHistory/ApproveHistory.jsx new file mode 100644 index 0000000..026b5e2 --- /dev/null +++ b/src/Pages/FawateerChecker/ApproveHistory/ApproveHistory.jsx @@ -0,0 +1,340 @@ +import { + Avatar, + Badge, + Box, + Button, + HStack, + Input, + Text, + Tooltip, + useDisclosure, + useToast, + } from "@chakra-ui/react"; + import React, { useContext, useEffect, useState } from "react"; + import { CheckIcon, CloseIcon } from "@chakra-ui/icons"; +import Pagination from "../../../Components/Pagination"; +import GlobalStateContext from "../../../Contexts/GlobalStateContext"; +import CustomAlertDialog from "../../../Components/CustomAlertDialog"; +import DrawalRequestReject from "../../WithDrawal/DrawalRequest/DrawalRequestReject"; +import NormalTable from "../../../Components/DataTable/NormalTable"; +import DrawalRequestApprove from "../../WithDrawal/DrawalRequest/DrawalRequestApprove"; +import { generateSerialNumber } from "../../../Constants/Constants"; +import { useGetFawateerRequestQuery } from "../../../Services/fawateer.request.service"; +import { TABLE_PAGINATION } from "../../../Constants/Paginations"; +import { OPACITY_ON_LOAD } from "../../../Layout/animations"; + + const ApproveHistory = () => { + const toast = useToast(); + const { slideFromRight, approveHistory, setApproveHistory } = + 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 [pageSize, setPageSize] = useState(TABLE_PAGINATION?.size); + const [currentPage, setCurrentPage] = useState(TABLE_PAGINATION?.page); + + const formatDate = (date) => { + return new Date(date).toLocaleDateString('en-GB', { + day: '2-digit', + month: '2-digit', + year: 'numeric', + }); + }; + + const { + isOpen: isConfirmOpen, + onOpen: onConfirmOpen, + onClose: onConfirmClose, + } = useDisclosure(); + const { + isOpen: isRejectOpen, + onOpen: onRejectOpen, + onClose: onRejectClose, + } = useDisclosure(); + + const { + data, + isLoading: drawalRequestLoading, + error, + refetch + } = useGetFawateerRequestQuery(); + + console.log(data?.data?.rows); + + + + + // Use useEffect to refetch data when the component mounts + useEffect(() => { + refetch(); + }, [refetch]); + + useEffect(() => { + + // Simulate loading + const timer = setTimeout(() => { + setIsLoading(false); + }, 1500); + + // Cleanup the timer on component unmount + return () => clearTimeout(timer); + }, []); + + // ====================================================[Table Filter]================================================================ + const filteredData = approveHistory?.filter((item) => { + // Filter by name (case insensitive) + const name = item.firstName; + const searchLower = searchTerm.toLowerCase(); + const nameMatches = name.toLowerCase().includes(searchLower); + + // Filter by status + // const status = item.status; + // const statusLower = status ? "active" : "inactive"; + + // const statusMatches = + // statusFilter === "all" || + // (statusFilter === "active" && status === true) || + // (statusFilter === "inactive" && status === false); + + return nameMatches; + + + }); + + // ====================================================[Table Setup]================================================================ + const tableHeadRow = [ + "Sr.no", + "Client ID", + "First Name", + "Last Name", + "E-mail ID", + "Phone Number", + "Transaction Date", + "Transaction Amount", + "Action", + ]; + + + + const extractedArray = filteredData?.map((item, idx) => ({ + // id: item?.id, + "Sr.no": ( + + {generateSerialNumber(idx,currentPage, pageSize )} + + ), + "Client ID": ( + + {item.clientReference_id} + + ), + "First Name": ( + + + {item.firstName} + + + ), + "Last Name": ( + + + {item.lastName} + + + ), + "E-mail ID": ( + + + {item.emailAddress} + + + ), + "Phone Number": ( + + + {item.mobileNumber} + + + ), + "Transaction Date": ( + + + {item.transaction_date} + + + ), + "Transaction Amount": ( + + + {/* {item.investorAmount} */} + {parseFloat(item?.transaction_amount || 0).toLocaleString(undefined, { + minimumFractionDigits: 2, + maximumFractionDigits: 2, + })} + {/* {item?.transaction_amount} */} + + + ), + Action: ( + + + + + + + + + ), + })); + + const handleDelete = () => { + const updatedSponsors = sponser.filter( + (sponsor) => sponsor.id !== actionId + ); + + setTimeout(() => { + setSponser(updatedSponsors); + setDeleteAlert(false); + setIsLoading(false); + }, 100); + setIsLoading(true); + }; + + return ( + + + + setSearchTerm(e.target.value)} + /> + + + + + + + + setDeleteAlert(false)} + isOpen={deleteAlert} + message={"Are you sure you want to delete sponers?"} + alertHandler={handleDelete} + isLoading={isLoading} + /> + + + + ); + }; + + export default ApproveHistory; + \ No newline at end of file diff --git a/src/Pages/FawateerChecker/ApproveHistory/ConfirmHistory.jsx b/src/Pages/FawateerChecker/ApproveHistory/ConfirmHistory.jsx new file mode 100644 index 0000000..88509f8 --- /dev/null +++ b/src/Pages/FawateerChecker/ApproveHistory/ConfirmHistory.jsx @@ -0,0 +1,95 @@ +import { + Box, + Button, + FormControl, + FormLabel, + Input, + Modal, + ModalBody, + ModalCloseButton, + ModalContent, + ModalFooter, + ModalHeader, + ModalOverlay, + Text, + useDisclosure, + } from "@chakra-ui/react"; + import React from "react"; + import * as yup from "yup"; + import { yupResolver } from "@hookform/resolvers/yup"; + import { useForm } from "react-hook-form"; + + export const conformModalSchema = yup.object().shape({ + fees: yup.string().required("File name is required"), + totalAmount: yup.string().required("File name is required"), + }); + + const ConfirmHistory = ({ isOpen, onClose, firstField }) => { + const { + register, + handleSubmit, + formState: { errors }, + } = useForm({ + resolver: yupResolver(conformModalSchema), + }); + + const onSubmit = (data) => { + console.log(data); + setFile(data.document[0]); + + const newDocument = { + ...data, + document: data.document[0].name, // Store the document name + status: true, + id: uuidv4(), + createdAt: new Date().toISOString(), + Type: getFileIcon(file.type), + }; + + setCreate((prevCreate) => [...prevCreate, newDocument]); + onClose(); + }; + + const handleFileChange = (event) => { + const selectedFile = event.target.files[0]; + setFile(selectedFile); + }; + + return ( + + + + Confirm + + + + + Withdrawal Amount + + + + + + + + + + + ); + }; + + export default ConfirmHistory; + \ No newline at end of file diff --git a/src/Pages/FawateerChecker/ApproveHistory/RejectHistory.jsx b/src/Pages/FawateerChecker/ApproveHistory/RejectHistory.jsx new file mode 100644 index 0000000..e407a7f --- /dev/null +++ b/src/Pages/FawateerChecker/ApproveHistory/RejectHistory.jsx @@ -0,0 +1,100 @@ +import { + Box, + Button, + FormControl, + FormLabel, + Input, + Modal, + ModalBody, + ModalCloseButton, + ModalContent, + ModalFooter, + ModalHeader, + ModalOverlay, + Text, + Textarea, + useDisclosure, + } from "@chakra-ui/react"; + import React from "react"; + import * as yup from "yup"; + import { yupResolver } from "@hookform/resolvers/yup"; + import { useForm } from "react-hook-form"; + + export const conformModalSchema = yup.object().shape({ + comment: yup.string().required("Comment is required"), + }); + + const RejectHistory = ({ isOpen, onClose, firstField }) => { + const { + register, + handleSubmit, + formState: { errors }, + } = useForm({ + resolver: yupResolver(conformModalSchema), + }); + + const onSubmit = (data) => { + console.log(data); + setFile(data.document[0]); + + const newDocument = { + ...data, + document: data.document[0].name, // Store the document name + comment: true, + id: uuidv4(), + Type: getFileIcon(file.type), + }; + + setCreate((prevCreate) => [...prevCreate, newDocument]); + onClose(); + }; + + const handleFileChange = (event) => { + const selectedFile = event.target.files[0]; + setFile(selectedFile); + }; + + return ( + + + + Reject + + + + + Comment +