diff --git a/src/Components/Popups/RejectReversalPopups.jsx b/src/Components/Popups/RejectReversalPopups.jsx
new file mode 100644
index 0000000..8fc8bf8
--- /dev/null
+++ b/src/Components/Popups/RejectReversalPopups.jsx
@@ -0,0 +1,124 @@
+import {
+ Box,
+ Button,
+ FormControl,
+ FormLabel,
+ Modal,
+ ModalBody,
+ ModalCloseButton,
+ ModalContent,
+ ModalFooter,
+ ModalHeader,
+ ModalOverlay,
+ Text,
+ Textarea,
+} from "@chakra-ui/react";
+import React from "react";
+import PropTypes from "prop-types";
+
+import * as yup from "yup";
+import { yupResolver } from "@hookform/resolvers/yup";
+import { useForm } from "react-hook-form";
+
+export const conformModalSchema = yup.object().shape({
+ comments: yup
+ .string()
+ .min(2, "Minimum length should be 150 characters.")
+ .max(150, "Maximum length should be 150 characters.")
+ .matches(/^[^\d]+$/, "Sponsor Name cannot contain numbers")
+ .required("Comment is required"),
+});
+
+const RejectReversalPopups = ({
+ isOpen,
+ onClose,
+ handelApproved,
+ isLoading,
+}) => {
+ const {
+ watch,
+ register,
+ reset,
+ handleSubmit,
+ formState: { errors },
+ } = useForm({
+ resolver: yupResolver(conformModalSchema),
+ mode: "all",
+ });
+
+ return (
+
+
+
+ Reject
+
+ {
+ handelApproved(data);
+ reset();
+ onClose();
+ })}
+ >
+
+
+ Comment
+
+ {errors.comments ? (
+
+ {errors.comments.message}
+
+ ) : (
+
+ Maximum length should be 150 characters. You have entered{" "}
+ {watch()?.comments?.length || 0} characters.
+
+ )}
+
+
+
+
+
+
+
+
+
+ );
+};
+
+RejectReversalPopups.propTypes = {
+ isOpen: PropTypes.bool.isRequired,
+ onClose: PropTypes.func.isRequired,
+ handelApproved: PropTypes.func.isRequired,
+ isLoading: PropTypes.func.isRequired,
+};
+
+export default RejectReversalPopups;
diff --git a/src/Pages/Admin/Investor/UnbanInvestor/ReasonBanModal.jsx b/src/Pages/Admin/Investor/UnbanInvestor/ReasonBanModal.jsx
index 3e7d9d2..6acb4a1 100644
--- a/src/Pages/Admin/Investor/UnbanInvestor/ReasonBanModal.jsx
+++ b/src/Pages/Admin/Investor/UnbanInvestor/ReasonBanModal.jsx
@@ -34,7 +34,7 @@ import { useUpdateBanMutation, useUpdateUnbanMutation } from "../../../../Servic
const toast = useToast()
const {
- register,
+ register,
reset,
handleSubmit,
formState: { errors },
diff --git a/src/Pages/BankDepositRequest/BankDepositRequest.jsx b/src/Pages/BankDepositRequest/BankDepositRequest.jsx
index 00524f4..8cd0986 100644
--- a/src/Pages/BankDepositRequest/BankDepositRequest.jsx
+++ b/src/Pages/BankDepositRequest/BankDepositRequest.jsx
@@ -10,6 +10,7 @@ import {
useToast,
useDisclosure,
Link,
+ useBoolean,
} from "@chakra-ui/react";
import React, { useContext, useEffect, useState } from "react";
import { useNavigate } from "react-router-dom";
@@ -27,7 +28,11 @@ import { useGetDepositHistoryQuery } from "../../Services/deposit.request.servic
import Pagination from "../../Components/Pagination";
import ConfirmModal from "./ConfirmModal";
import RejectModal from "./RejectModal";
-import { useGetBankDepositMasterQuery } from "../../Services/bankdeposit.request.service";
+import {
+ useGetBankDepositMasterQuery,
+ useRejectbankDepositRequestMutation,
+} from "../../Services/bankdeposit.request.service";
+import RejectReversalPopups from "../../Components/Popups/RejectReversalPopups";
const formatDate = (date) => {
return new Date(date).toLocaleDateString("en-GB", {
@@ -64,6 +69,9 @@ const BankDepositRequest = () => {
const [searchTerm, setSearchTerm] = useState("");
const [debouncedSearchTerm, setDebouncedSearchTerm] = useState("");
+ const [rejectbankDepositRequest] = useRejectbankDepositRequestMutation();
+ const [isReversalLoading, setIsReversalLoading] = useBoolean();
+
// Debounce the search term to avoid making a request on every keystroke
useEffect(() => {
const handler = setTimeout(() => {
@@ -283,10 +291,53 @@ const BankDepositRequest = () => {
setIsLoading(true);
};
+ const handleApproved = async (data) => {
+ setIsReversalLoading.on(); // Start loading
+ try {
+ const { error, data: responseData } = await rejectbankDepositRequest({
+ id: actionId,
+ data,
+ });
+
+ if (error) {
+ throw error; // Explicitly handle the error
+ }
+
+ // Success: Perform necessary actions
+ refetch();
+ toast({
+ render: () => (
+
+ ),
+ });
+ onRejectClose();
+ } catch (error) {
+ // Handle errors
+ toast({
+ render: () => (
+
+ ),
+ });
+ console.error("Error:", error);
+ } finally {
+ setIsReversalLoading.off(); // Ensure loading is toggled off
+ }
+ };
+
return (
-
+
{
+const RejectModal = ({ isOpen, onClose, firstField ,id}) => {
+ const [isBtnLoading , setIsBtnLoading] = useState(false)
+
+ const toast = useToast()
+
const {
- register,
+ register,
+ reset,
handleSubmit,
formState: { errors },
} = useForm({
resolver: yupResolver(conformModalSchema),
});
- const onSubmit = (data) => {
- setFile(data.document[0]);
+ const [ rejectbankDepositRequest ] = useRejectbankDepositRequestMutation()
- const newDocument = {
- ...data,
- document: data.document[0].name, // Store the document name
- comment: true,
- id: uuidv4(),
- Type: getFileIcon(file.type),
- };
+ const onSubmit = async(data) => {
+ console.log(id);
+ setIsBtnLoading(true)
+ try {
+ const res = await rejectbankDepositRequest({ id ,data})
+ console.log(res);
+
+ if (res?.error) {
+ toast({
+ render: () => (
+
+ ),
+ });
+ heandleOnClose()
+
+ }else if(res?.data) {
+ toast({
+ render: () => (
+
+ ),
+ });
+ heandleOnClose()
+ }
+
+ } catch (error) {
+ console.log(error);
+
+ }
- setCreate((prevCreate) => [...prevCreate, newDocument]);
- onClose();
- };
-
- const handleFileChange = (event) => {
- const selectedFile = event.target.files[0];
- setFile(selectedFile);
};
+
+ const heandleOnClose = () =>{
+ reset()
+ onClose()
+ setIsBtnLoading(false)
+ }
+
return (
-
+
Reject
@@ -63,29 +89,44 @@ const RejectModal = ({ isOpen, onClose, firstField }) => {
Comment
-
- {errors.comment && (
+ {errors.comments && (
- {errors.comment.message}
+ {errors.comments.message}
)}
-
diff --git a/src/Pages/Deposit/DepositRequest/DepositRequestReject.jsx b/src/Pages/Deposit/DepositRequest/DepositRequestReject.jsx
index 8aead10..8a8ea29 100644
--- a/src/Pages/Deposit/DepositRequest/DepositRequestReject.jsx
+++ b/src/Pages/Deposit/DepositRequest/DepositRequestReject.jsx
@@ -110,7 +110,7 @@ const DepositRequestReject = ({ isOpen, onClose, firstField ,id}) => {
Investor Comment
{isLoading ? (
-
+
) : (
diff --git a/src/Pages/ReversalFawateerDeposit/ReversalFawateerDeposit.jsx b/src/Pages/ReversalFawateerDeposit/ReversalFawateerDeposit.jsx
index bf1376e..43bfc99 100644
--- a/src/Pages/ReversalFawateerDeposit/ReversalFawateerDeposit.jsx
+++ b/src/Pages/ReversalFawateerDeposit/ReversalFawateerDeposit.jsx
@@ -61,7 +61,7 @@ import { useGetFawateerDepositMasterQuery } from "../../Services/reversal.fawate
onClose: onRejectClose,
} = useDisclosure();
- const {
+ const {
data,
isLoading: drawalRequestLoading,
error,
@@ -77,7 +77,7 @@ import { useGetFawateerDepositMasterQuery } from "../../Services/reversal.fawate
}
);
- console.log(data);
+ console.log("ffffffffffffffffffffff",data?.data?.rows);
useEffect(() => {
const handler = setTimeout(() => {
@@ -104,9 +104,9 @@ import { useGetFawateerDepositMasterQuery } from "../../Services/reversal.fawate
}, []);
// ====================================================[Table Filter]================================================================
- const filteredData = data?.data?.rows?.filter((item) => {
+ const filteredData =data?.data?.rows?.filter((item) => {
// Filter by name (case insensitive)
- const name = item.firstName;
+ const name = item.principal?.firstName;
const searchLower = searchTerm.toLowerCase();
const nameMatches = name.toLowerCase().includes(searchLower);
@@ -130,7 +130,6 @@ import { useGetFawateerDepositMasterQuery } from "../../Services/reversal.fawate
"First Name",
"Last Name",
"Phone Number",
- "Country",
"Action",
];
@@ -158,7 +157,7 @@ import { useGetFawateerDepositMasterQuery } from "../../Services/reversal.fawate
fontWeight={"500"}
className="d-flex align-items-center web-text-small"
>
- {formatDate(item?.createdAt)}
+ {formatDate(item?.transaction_details?.isReversalDate)}
),
"Client ID": (
@@ -170,34 +169,27 @@ import { useGetFawateerDepositMasterQuery } from "../../Services/reversal.fawate
fontWeight={"500"}
className="d-flex align-items-center web-text-small"
>
- {item.clientReference_id}
+ {item?.principal?.investor_details?.clientReference_id}
),
"First Name": (
- {item.firstName}
+ {item?.principal?.firstName}
),
"Last Name": (
-
+
- {item.lastName}
-
-
- ),
- "Country": (
-
-
- {item.lastName}
+ {item?.principal?.lastName}
),
"Phone Number": (
- {item.mobileNumber}
+ {item?.principal?.mobileNumber}
),
diff --git a/src/Services/reversal.fawateer.deposit.service.js b/src/Services/reversal.fawateer.deposit.service.js
index 252ba66..0d74222 100644
--- a/src/Services/reversal.fawateer.deposit.service.js
+++ b/src/Services/reversal.fawateer.deposit.service.js
@@ -6,12 +6,12 @@ import { baseQuery } from "./token.serivce";
export const reversalFawateerDepositMaster = createApi({
reducerPath: "FawateerDeposit",
baseQuery: baseQuery,
- tagTypes: ["getFawateerDeposit", 'getDepositHistory'],
+ tagTypes: ["getFawateerDeposit", "getDepositHistory"],
endpoints: (builder) => ({
// ======[Get All]=====
getFawateerDepositMaster: builder.query({
- query: () => `/reversal-transactions/bank-transfer/getAll`,
+ query: () => `/reversal-transactions/fawateer/getAll`,
providesTags: ["getFawateerDeposit"],
}),
@@ -35,13 +35,13 @@ export const reversalFawateerDepositMaster = createApi({
rejectFawateerRequest: builder.mutation({
query: ({ id, data }) => ({
- url: `/reversal-transactions/bank-transfer/reject/${id}`,
+ url: `/reversal-transactions/fawateer/reject/${id}`,
method: "PATCH",
body: data,
}),
invalidatesTags: ["getFawateerDeposit", "getDepositHistory"],
}),
- })
+ }),
});
export const {