[ update reversal service ]

This commit is contained in:
YasinShaikh123
2025-01-17 13:13:57 +05:30
parent f9b1f820c2
commit 31d237b675
18 changed files with 472 additions and 391 deletions

View File

@@ -24,7 +24,7 @@ import {
Button,
Image,
Text,
Tooltip
Tooltip,
} from "@chakra-ui/react";
import Cookies from "js-cookie"; // Import the Cookies library
import { GrManual } from "react-icons/gr";
@@ -32,6 +32,7 @@ import { HiOutlineChartSquareBar } from "react-icons/hi";
import { LuContact } from "react-icons/lu";
import { MdNotificationsNone, MdOutlineAddChart } from "react-icons/md";
import {
RiAccountBoxLine,
RiBankLine,
RiExchangeBoxLine,
RiFileUserLine,
@@ -41,7 +42,7 @@ import {
TbLayoutDashboard,
TbListDetails,
TbReportMoney,
TbTransactionDollar
TbTransactionDollar,
} from "react-icons/tb";
import { VscSymbolClass } from "react-icons/vsc";
import {
@@ -64,6 +65,7 @@ import { nav } from "../Routes/Nav";
import { RouteLink } from "../Routes/Routes";
import { useProfileQuery } from "../Services/io.service";
import { useLogoutMutation } from "../Services/token.serivce";
import { HiOutlineBanknotes } from "react-icons/hi2";
const DashboardLayout = ({ isOnline }) => {
const navigate = useNavigate();
@@ -141,19 +143,20 @@ const DashboardLayout = ({ isOnline }) => {
case "/":
return "👋🏻 Hi, Admin";
case path.startsWith("/"):
return (
<span className="d-flex align-items-end gap-2">
<TbLayoutDashboard className="h4 m-0" />Dashboard
</span>
);
// case path.startsWith("/"):
// return (z
// <span className="d-flex align-items-end gap-2">
// <TbLayoutDashboard className="h4 m-0" />Dashboard
// </span>
// );
case path.startsWith("/investment-opportunities"):
return (
<span className="d-flex align-items-end gap-2">
<TbLayoutDashboard className="h4 m-0" />dashboard / Open Opportunities
</span>
);
return (
<span className="d-flex align-items-end gap-2">
<TbLayoutDashboard className="h4 m-0" />
dashboard / Open Opportunities
</span>
);
case path.startsWith("/sponser"):
return (
<span className="d-flex align-items-end gap-2">
@@ -294,6 +297,29 @@ const DashboardLayout = ({ isOnline }) => {
Deletion request
</span>
);
case path.startsWith("/bank-deposit-request"):
return (
<span className="d-flex align-items-end gap-2">
<RiBankLine className="h4 m-0 fw-normal" />
Bank Deposit Request
</span>
);
case path.startsWith("/reversal-fawateer-deposit"):
return (
<span className="d-flex align-items-end gap-2">
<HiOutlineBanknotes className="h4 m-0 fw-normal" />
Fawateer Deposit
</span>
);
case path.startsWith("/account-deletion-request"):
return (
<span className="d-flex align-items-end gap-2">
<RiAccountBoxLine className="h4 m-0 fw-normal" />
Account Deletion Request
</span>
);
case path.startsWith("/bank-investor"):
return (
<span className="d-flex align-items-end gap-2">
@@ -312,7 +338,7 @@ const DashboardLayout = ({ isOnline }) => {
return (
<span className="d-flex align-items-end gap-2">
<MdNotificationsNone className="h4 m-0 fw-normal" />
Push Notification
Push Notification
</span>
);
case path.startsWith("/contact"):
@@ -364,7 +390,7 @@ const DashboardLayout = ({ isOnline }) => {
Deletion request
</span>
);
case path.startsWith("/subadmin"):
case path.startsWith("/subadmin"):
return (
<span className="d-flex align-items-end gap-2">
<RiMoneyDollarBoxLine className="h4 m-0 fw-normal" />
@@ -530,12 +556,170 @@ const DashboardLayout = ({ isOnline }) => {
index={openIndex}
onChange={handleAccordionChange}
>
{filteredNav.map(({ title, type, Icon, submenu, path }, index) => {
if (type === "accordion") {
return (
<AccordionItem key={index} border={"none"}>
{filteredNav.map(
({ title, type, Icon, submenu, path }, index) => {
if (type === "accordion") {
return (
<AccordionItem key={index} border={"none"}>
<Tooltip
isDisabled={isDrawerOpen || openDrawerClick}
hasArrow
bg={"#fff"}
fontSize={"xs"}
label={title}
placement="top-start"
color={"blue.800"}
>
<AccordionButton
style={{ height: "auto" }}
className={`${
isDrawerOpen || openDrawerClick
? "p-2 web-text-medium ps-3 justify-content-between"
: "p-2 ps-1 web-text-xlarge justify-content-center"
} rounded-1 link d-flex align-items-center gap-2 w-100 mb-1`}
>
<Box
as="span"
display={"flex"}
gap={2}
alignItems={"center"}
>
{/* {Icon && title === "Admin" ? <Image w={15} src={shield} /> : <Icon className={`web-text-large`} />} */}
{Icon && (
<Icon
fontSize={title === "Admin" ? "18px" : "15px"}
/>
)}
<Text
as={"span"}
display={
isDrawerOpen || openDrawerClick
? "flex"
: "none"
}
alignItems="center"
overflow="hidden"
textAlign={"left"}
>
{title}
</Text>
</Box>
<AccordionIcon />
</AccordionButton>
</Tooltip>
<AccordionPanel
p={0}
pb={1}
display={"flex"}
flexDirection={"column"}
gap={1}
>
{submenu?.map(
(
{
title: subMenuTitle,
path: link,
icon: SubIcon,
},
i
) => (
<Tooltip
isDisabled={isDrawerOpen || openDrawerClick}
hasArrow
bg={"#fff"}
fontSize={"xs"}
label={subMenuTitle}
placement="right"
color={"blue.800"}
>
<Box
key={i}
style={{
height: "auto",
position: "relative",
}}
className={`${
isDrawerOpen || openDrawerClick
? " web-text-medium ps-4"
: " web-text-xlarge justify-content-center"
} d-flex align-items-center p-0`}
>
<Box
backgroundColor={"gray.300"}
style={{
position: "absolute",
top: 0,
width: 2,
left: 22,
height:
i === submenu?.length - 1
? "55%"
: "120%",
borderRadius: "0 0 10px 10px",
}}
/>
<Box
backgroundColor={"gray.300"}
style={{
position: "absolute",
width: 10,
left: 22,
height: 2,
}}
/>
<NavLink
className={`${
isDrawerOpen || openDrawerClick
? "p-2 ps-1 ms-2 web-text-medium "
: "p-2 ps-0 ms-0 zindex-3 ms-4 web-text-xlarge justify-content-center"
} rounded-1 link d-flex align-items-center gap-2 w-100 `}
to={link}
>
{SubIcon && (
<SubIcon
className="web-text-large ms-2"
style={{ zIndex: 111 }}
/>
)}
<Text
as={"span"}
display={
isDrawerOpen || openDrawerClick
? "flex"
: "none"
}
alignItems="center"
overflow="hidden"
>
{subMenuTitle === "Aprover Request"
? data?.data?.role === "Maker"
? "Create Request"
: "Aprover Request"
: subMenuTitle}
</Text>
</NavLink>
</Box>
</Tooltip>
)
)}
</AccordionPanel>
</AccordionItem>
);
} else if (type === "title") {
return (
<Text
as={"span"}
key={index}
className="web-text-xxsmall fw-600 text-secondary fw-bold"
>
{title}
</Text>
);
} else if (type === "single") {
return (
<Tooltip
isDisabled={isDrawerOpen || openDrawerClick}
hasArrow
bg={"#fff"}
fontSize={"xs"}
@@ -543,184 +727,35 @@ const DashboardLayout = ({ isOnline }) => {
placement="top-start"
color={"blue.800"}
>
<AccordionButton
style={{ height: "auto" }}
<NavLink
key={index}
style={{ height: "auto", position: "relative" }}
className={`${
isDrawerOpen || openDrawerClick
? "p-2 web-text-medium ps-3 justify-content-between"
: "p-2 ps-1 web-text-xlarge justify-content-center"
} rounded-1 link d-flex align-items-center gap-2 w-100 mb-1`}
? "p-2 web-text-medium"
: "p-2 ps-0 web-text-xlarge justify-content-start"
} rounded-1 link d-flex align-items-center gap-2 w-100 mb-2`}
to={path}
>
<Box
as="span"
display={"flex"}
gap={2}
alignItems={"center"}
{Icon && <Icon className="web-text-large ms-2" />}
<Text
as={"span"}
display={
isDrawerOpen || openDrawerClick ? "flex" : "none"
}
alignItems="center"
overflow="hidden"
>
{/* {Icon && title === "Admin" ? <Image w={15} src={shield} /> : <Icon className={`web-text-large`} />} */}
{Icon && (
<Icon
fontSize={title === "Admin" ? "18px" : "15px"}
/>
)}
<Text
as={"span"}
display={
isDrawerOpen || openDrawerClick
? "flex"
: "none"
}
alignItems="center"
overflow="hidden"
textAlign={"left"}
>
{title}
</Text>
</Box>
<AccordionIcon />
</AccordionButton>
{title}
</Text>
</NavLink>
</Tooltip>
<AccordionPanel
p={0}
pb={1}
display={"flex"}
flexDirection={"column"}
gap={1}
>
{submenu?.map(
(
{ title: subMenuTitle, path: link, icon: SubIcon },
i
) => (
<Tooltip
isDisabled={isDrawerOpen || openDrawerClick}
hasArrow
bg={"#fff"}
fontSize={"xs"}
label={subMenuTitle}
placement="right"
color={"blue.800"}
>
<Box
key={i}
style={{ height: "auto", position: "relative" }}
className={`${
isDrawerOpen || openDrawerClick
? " web-text-medium ps-4"
: " web-text-xlarge justify-content-center"
} d-flex align-items-center p-0`}
>
<Box
backgroundColor={"gray.300"}
style={{
position: "absolute",
top: 0,
width: 2,
left: 22,
height:
i === submenu?.length - 1
? "55%"
: "120%",
borderRadius: "0 0 10px 10px",
}}
/>
<Box
backgroundColor={"gray.300"}
style={{
position: "absolute",
width: 10,
left: 22,
height: 2,
}}
/>
<NavLink
className={`${
isDrawerOpen || openDrawerClick
? "p-2 ps-1 ms-2 web-text-medium "
: "p-2 ps-0 ms-0 zindex-3 ms-4 web-text-xlarge justify-content-center"
} rounded-1 link d-flex align-items-center gap-2 w-100 `}
to={link}
>
{SubIcon && (
<SubIcon
className="web-text-large ms-2"
style={{ zIndex: 111 }}
/>
)}
<Text
as={"span"}
display={
isDrawerOpen || openDrawerClick
? "flex"
: "none"
}
alignItems="center"
overflow="hidden"
>
{subMenuTitle === "Aprover Request"
? data?.data?.role === "Maker"
? "Create Request"
: "Aprover Request"
: subMenuTitle}
</Text>
</NavLink>
</Box>
</Tooltip>
)
)}
</AccordionPanel>
</AccordionItem>
);
} else if (type === "title") {
return (
<Text
as={"span"}
key={index}
className="web-text-xxsmall fw-600 text-secondary fw-bold"
>
{title}
</Text>
);
} else if (type === "single") {
return (
<Tooltip
hasArrow
bg={"#fff"}
fontSize={"xs"}
label={title}
placement="top-start"
color={"blue.800"}
>
<NavLink
key={index}
style={{ height: "auto", position: "relative" }}
className={`${
isDrawerOpen || openDrawerClick
? "p-2 web-text-medium"
: "p-2 ps-0 web-text-xlarge justify-content-start"
} rounded-1 link d-flex align-items-center gap-2 w-100`}
to={path}
>
{Icon && <Icon className="web-text-large ms-2" />}
<Text
as={"span"}
display={
isDrawerOpen || openDrawerClick ? "flex" : "none"
}
alignItems="center"
overflow="hidden"
>
{title}
</Text>
</NavLink>
</Tooltip>
);
} else {
return null;
);
} else {
return null;
}
}
})}
)}
</Accordion>
</Box>

View File

@@ -27,6 +27,7 @@ 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";
const formatDate = (date) => {
return new Date(date).toLocaleDateString("en-GB", {
@@ -78,7 +79,7 @@ const BankDepositRequest = () => {
error,
refetch,
isLoading: depositHistoryLoading,
} = useGetDepositHistoryQuery(
} = useGetBankDepositMasterQuery(
{
page: debouncedSearchTerm ? undefined : currentPage, // Omit pagination for search
size: debouncedSearchTerm ? undefined : pageSize, // Omit pagination for search
@@ -103,10 +104,6 @@ const BankDepositRequest = () => {
"Last Name",
"Country",
"Phone Number",
"Deposit Amount",
"Deposit Date",
"Status",
"Supporting's",
"Action",
];
@@ -163,6 +160,18 @@ const BankDepositRequest = () => {
{generateSerialNumber(idx, currentPage, pageSize)}
</Text>
),
"Request Date": (
<Text
w={"60px"}
justifyContent={slideFromRight ? "right" : "left"}
as={"span"}
color={"teal.900"}
fontWeight={"500"}
className="d-flex align-items-center web-text-small"
>
{formatDate(item?.createdAt)}
</Text>
),
"Client ID": (
<Text
w={"60px"}
@@ -203,81 +212,6 @@ const BankDepositRequest = () => {
</Text>
</Box>
),
"Deposit Amount": (
<Box isTruncated={true} display={"flex"} justifyContent={"end"}>
<Text as={"span"} color={"teal.900"} textAlign={"right"}>
{parseFloat(item?.investorAmount || 0).toLocaleString(undefined, {
minimumFractionDigits: 2,
maximumFractionDigits: 2,
})}
<Badge ms={1} colorScheme="green">
{item?.currencyCode}
</Badge>
</Text>
</Box>
),
"Deposit Date": (
<Text
w={"60px"}
justifyContent={slideFromRight ? "right" : "left"}
as={"span"}
color={"teal.900"}
fontWeight={"500"}
className="d-flex align-items-center web-text-small"
>
{formatDate(item?.createdAt)}
</Text>
),
Status: (
<Box w={"70px"} isTruncated={true} cursor={"pointer"}>
<Text
as={"span"}
color={
item.transactionStatus === "Approved" ? "green.500" : "red.500"
}
fontWeight={700}
>
{item.transactionStatus}
</Text>
</Box>
),
"Supporting's":
item.transactionStatus === "Approved" ? (
<Text
w={"60px"}
justifyContent={slideFromRight ? "right" : "left"}
as={"span"}
color={"teal.900"}
fontWeight={"500"}
className="d-flex align-items-center web-text-small"
>
{/* {item?.supporting_FileName} */}
<Badge
px={2}
py={0.5}
display={"flex"}
alignItems={"center"}
textTransform={"inherit"}
fontWeight={500}
colorScheme={"forestGreen"}
>
<Link
href={import.meta.env.VITE_IMAGE_URL + item?.supporting_FileName}
isExternal
>
<Box as="span" cursor={"pointer"}>
View
</Box>
<ExternalLinkIcon />
</Link>
{/* <Link to="www.google.com" isExternal>
<Box as="span">View</Box> <ExternalLinkIcon />
</Link> */}
</Badge>
</Text>
) : (
""
),
Action: (
<Box display={"flex"} justifyContent={"center"} gap={2}>
<Tooltip

View File

@@ -20,6 +20,7 @@ import React, { useState } from "react";
import * as yup from "yup";
import { yupResolver } from "@hookform/resolvers/yup";
import { useForm } from "react-hook-form";
import ReactQuill from "react-quill";
export const conformModalSchema = yup.object().shape({
fees: yup.string().required("File name is required"),
@@ -59,6 +60,18 @@ const ConfirmModal = ({ isOpen, onClose, firstField }) => {
setFile(selectedFile);
};
const modules = {
toolbar: [
// [{ header: "1" }, { header: "2" },
// // { font: [] }
// ],
// [{ size: [] }],
["bold", "italic", "underline", "strike", "blockquote"],
[{ list: "ordered" }, { list: "bullet" }],
["clean"],
],
};
return (
<Modal isOpen={isOpen} onClose={onClose} initialFocusRef={firstField}>
<ModalOverlay />
@@ -104,18 +117,17 @@ const ConfirmModal = ({ isOpen, onClose, firstField }) => {
size="sm"
/>
</FormControl>
<FormControl mb={4}>
<FormControl mb={12}>
<FormLabel fontSize="sm" mb={1}>Message</FormLabel>
<Textarea rows={5}
focusBorderColor='green.400'
name="fileName"
{...register("fileName")}
fontSize="sm"
type="textarea"
size="md"
placeholder={"Enter your comments...."}
rounded={'md'}
resize={'none'}
<ReactQuill
theme="snow"
style={{
height: 150,
}}
// value={value}
// onChange={setValue}
modules={modules}
placeholder="Start typing here..."
/>
</FormControl>
</Box>}

View File

@@ -110,7 +110,7 @@ const DepositRequestReject = ({ isOpen, onClose, firstField ,id}) => {
<ModalHeader fontSize={"md"}>Investor Comment</ModalHeader>
<ModalCloseButton />
{isLoading ? (
<FullscreenLoaders height={"50vh"} />
<FullscreenLoaders height={"50vh"} />
) : (
<Box as="form" onSubmit={handleSubmit(onSubmit)}>
<ModalBody>

View File

@@ -109,6 +109,7 @@ const DepositHistory = () => {
"Deposit Date",
"Status",
"Supporting's",
"Reversal"
];
const handleUpdateStatus = debounce((id) => {
@@ -283,6 +284,20 @@ const DepositHistory = () => {
) : (
""
),
"Reversal": (
<Box isTruncated={true} display={"flex"}>
<Badge
fontWeight={"500"}
textTransform={"none"}
color={item?.reversal === false ? "red" : "#FFBB00"}
px={2}
py={0.5}
variant={"ghost"}
>
{item?.reversal === true ? "Initiate Reversal" : "Under Process"}
</Badge>
</Box>
),
}));
const handleDelete = () => {

View File

@@ -277,7 +277,7 @@ const EmailNotification = () => {
<FormControl minH={400} isRequired mb={3} p={1}>
<FormLabel fontSize={"sm"}>Create Custom body</FormLabel>
<ReactQuill
<ReactQuill
theme="snow"
style={{
height: 300,

View File

@@ -135,6 +135,7 @@ import {
"Deposit Amount (BHD)",
"Support Image",
"Status",
"Reversal",
];
const extractedArray = data?.data?.rows?.map((item, idx) => ({
@@ -269,6 +270,20 @@ import {
</Badge>
</Box>
),
"Reversal": (
<Box isTruncated={true} display={"flex"}>
<Badge
fontWeight={"500"}
textTransform={"none"}
color={item?.reversal === false ? "red" : "#FFBB00"}
px={2}
py={0.5}
variant={"ghost"}
>
{item?.reversal === true ? "Initiate Reversal" : "Under Process"}
</Badge>
</Box>
),
}));
const handleDelete = () => {

View File

@@ -20,6 +20,7 @@ import React, { useState } from "react";
import * as yup from "yup";
import { yupResolver } from "@hookform/resolvers/yup";
import { useForm } from "react-hook-form";
import ReactQuill from "react-quill";
export const conformModalSchema = yup.object().shape({
fees: yup.string().required("File name is required"),
@@ -59,6 +60,18 @@ const ConfirmModal = ({ isOpen, onClose, firstField }) => {
setFile(selectedFile);
};
const modules = {
toolbar: [
// [{ header: "1" }, { header: "2" },
// // { font: [] }
// ],
// [{ size: [] }],
["bold", "italic", "underline", "strike", "blockquote"],
[{ list: "ordered" }, { list: "bullet" }],
["clean"],
],
};
return (
<Modal isOpen={isOpen} onClose={onClose} initialFocusRef={firstField}>
<ModalOverlay />
@@ -104,18 +117,17 @@ const ConfirmModal = ({ isOpen, onClose, firstField }) => {
size="sm"
/>
</FormControl>
<FormControl mb={4}>
<FormControl mb={12}>
<FormLabel fontSize="sm" mb={1}>Message</FormLabel>
<Textarea rows={5}
focusBorderColor='green.400'
name="fileName"
{...register("fileName")}
fontSize="sm"
type="textarea"
size="md"
placeholder={"Enter your comments...."}
rounded={'md'}
resize={'none'}
<ReactQuill
theme="snow"
style={{
height: 150,
}}
// value={value}
// onChange={setValue}
modules={modules}
placeholder="Start typing here..."
/>
</FormControl>
</Box>}

View File

@@ -22,6 +22,7 @@ import {
import { TABLE_PAGINATION } from "../../Constants/Paginations";
import ConfirmModal from "./ConfirmModal";
import RejectModal from "./RejectModal";
import { useGetAccountDeletionMasterQuery } from "../../Services/reversal.account.deletion.service";
// import { formatDate } from "../../Components/Functions/UTCConvertor";
const ReversalAccountDeletion = () => {
@@ -67,7 +68,7 @@ import RejectModal from "./RejectModal";
data: deleteHistory,
isLoading,
refetch
} = useGetDeleteHistoryQuery({
} = useGetAccountDeletionMasterQuery({
page: debouncedSearchTerm ? undefined : currentPage, // Omit pagination for search
size: debouncedSearchTerm ? undefined : pageSize, // Omit pagination for search
search: debouncedSearchTerm,
@@ -93,12 +94,12 @@ import RejectModal from "./RejectModal";
// ====================================================[Table Setup]================================================================
const tableHeadRow = [
"Sr No.",
"Request On",
"Request Date",
"Client ID",
"First Name",
"Last Name",
"Country",
"Phone Number",
"Country",
"Action"
];
@@ -115,7 +116,7 @@ import RejectModal from "./RejectModal";
{index + 1}.
</Text>
),
"Request On": (
"Request Date": (
<Text
justifyContent={slideFromRight ? "right" : "left"}
as={"span"}
@@ -160,17 +161,6 @@ import RejectModal from "./RejectModal";
{item.lastName}
</Text>
),
"Country": (
<Text
justifyContent={slideFromRight ? "right" : "left"}
as={"span"}
color={"gray.600"}
className="d-flex align-items-center web-text-small"
fontWeight={'500'}
>
{item.country}
</Text>
),
"Phone Number": (
<Text
justifyContent={slideFromRight ? "right" : "left"}
@@ -182,6 +172,17 @@ import RejectModal from "./RejectModal";
{item.phoneNumber}
</Text>
),
"Country": (
<Text
justifyContent={slideFromRight ? "right" : "left"}
as={"span"}
color={"gray.600"}
className="d-flex align-items-center web-text-small"
fontWeight={'500'}
>
{item.country}
</Text>
),
"Action": (
<Box display={"flex"} justifyContent={"center"} gap={2}>
<Tooltip

View File

@@ -20,6 +20,7 @@ import React, { useState } from "react";
import * as yup from "yup";
import { yupResolver } from "@hookform/resolvers/yup";
import { useForm } from "react-hook-form";
import ReactQuill from "react-quill";
export const conformModalSchema = yup.object().shape({
fees: yup.string().required("File name is required"),
@@ -57,7 +58,19 @@ const ConfirmModal = ({ isOpen, onClose, firstField }) => {
const handleFileChange = (event) => {
const selectedFile = event.target.files[0];
setFile(selectedFile);
};
};
const modules = {
toolbar: [
// [{ header: "1" }, { header: "2" },
// // { font: [] }
// ],
// [{ size: [] }],
["bold", "italic", "underline", "strike", "blockquote"],
[{ list: "ordered" }, { list: "bullet" }],
["clean"],
],
};
return (
<Modal isOpen={isOpen} onClose={onClose} initialFocusRef={firstField}>
@@ -104,18 +117,17 @@ const ConfirmModal = ({ isOpen, onClose, firstField }) => {
size="sm"
/>
</FormControl>
<FormControl mb={4}>
<FormControl mb={12}>
<FormLabel fontSize="sm" mb={1}>Message</FormLabel>
<Textarea rows={5}
focusBorderColor='green.400'
name="fileName"
{...register("fileName")}
fontSize="sm"
type="textarea"
size="md"
placeholder={"Enter your comments...."}
rounded={'md'}
resize={'none'}
<ReactQuill
theme="snow"
style={{
height: 150,
}}
// value={value}
// onChange={setValue}
modules={modules}
placeholder="Start typing here..."
/>
</FormControl>
</Box>}

View File

@@ -25,6 +25,7 @@ import { OPACITY_ON_LOAD } from "../../Layout/animations";
import { useGetFawateerForMakerRequestQuery } from "../../Services/fawateer.request.service";
import ConfirmModal from "./ConfirmModal";
import RejectModal from "./RejectModal";
import { useGetFawateerDepositMasterQuery } from "../../Services/reversal.fawateer.deposit.service";
const ReversalFawateerDeposit = () => {
const toast = useToast();
@@ -65,7 +66,7 @@ import RejectModal from "./RejectModal";
isLoading: drawalRequestLoading,
error,
refetch
} = useGetFawateerForMakerRequestQuery(
} = useGetFawateerDepositMasterQuery(
{
page: debouncedSearchTerm ? undefined : currentPage, // Omit pagination for search
size: debouncedSearchTerm ? undefined : pageSize, // Omit pagination for search
@@ -124,14 +125,12 @@ import RejectModal from "./RejectModal";
// ====================================================[Table Setup]================================================================
const tableHeadRow = [
"Sr.no",
"Request Date",
"Client ID",
"First Name",
"Last Name",
"E-mail ID",
"Phone Number",
"Deposit Date",
"Deposit Amount (BHD)",
"Support Image",
"Country",
"Action",
];
@@ -150,6 +149,18 @@ import RejectModal from "./RejectModal";
{generateSerialNumber(idx, currentPage, pageSize)}
</Text>
),
"Request Date": (
<Text
w={"60px"}
justifyContent={slideFromRight ? "right" : "left"}
as={"span"}
color={"teal.900"}
fontWeight={"500"}
className="d-flex align-items-center web-text-small"
>
{formatDate(item?.createdAt)}
</Text>
),
"Client ID": (
<Text
w={"60px"}
@@ -176,10 +187,10 @@ import RejectModal from "./RejectModal";
</Text>
</Box>
),
"E-mail ID": (
<Box isTruncated={true}>
"Country": (
<Box w={"50px"} isTruncated={true}>
<Text as={"span"} color={"teal.900"}>
{item.emailAddress}
{item.lastName}
</Text>
</Box>
),
@@ -190,61 +201,6 @@ import RejectModal from "./RejectModal";
</Text>
</Box>
),
"Deposit Date": (
<Box
w={"100px"}
isTruncated={true}
display={"flex"}
>
<Text as={"span"} color={"teal.900"}>
{formatDate(item?.transaction_date)}
</Text>
</Box>
),
"Deposit Amount (BHD)": (
<Box w={"130px"} isTruncated={true} display={"flex"}>
<Text as={"span"} color={"teal.900"}>
{/* {item.investorAmount} */}
{parseFloat(item?.transaction_amount || 0).toLocaleString(undefined, {
minimumFractionDigits: 2,
maximumFractionDigits: 2,
})}
{/* <Badge ms={1} colorScheme="green">{item?.transaction_amount}</Badge> */}
</Text>
</Box>
),
"Support Image": (
<Text
color={"green.500"}
justifyContent={slideFromRight ? "right" : "left"}
as={"span"}
fontWeight={"500"}
className="d-flex align-items-center web-text-small"
>
{item?.spportFile_path&&<Badge
px={2}
py={0.5}
textTransform={"inherit"}
fontWeight={500}
colorScheme={"forestGreen"}
>
<Link
href={import.meta.env.VITE_IMAGE_URL + item?.spportFile_path}
isExternal
display={"flex"}
alignItems={"center"}
>
<Box me={"1px"}
as="span"
cursor={"pointer"}
>
View
</Box>
<ExternalLinkIcon />
</Link>
</Badge>}
</Text>
),
Action: (
<Box display={"flex"} justifyContent={"center"} gap={2}>
<Tooltip

View File

@@ -7,6 +7,7 @@ import {
TbReportMoney,
} from "react-icons/tb";
import {
RiAccountBoxLine,
RiBankLine,
RiFileUserLine,
RiMoneyDollarBoxLine,
@@ -205,14 +206,14 @@ export const nav = [
{
title: "Fawateer Deposit",
type: "single",
path: "/fawateer-deposit",
Icon: TbLayoutDashboard,
path: "/reversal-fawateer-deposit",
Icon: HiOutlineBanknotes,
},
{
title: "Account Deletion Request",
type: "single",
path: "/account-deletion-request",
Icon: TbLayoutDashboard,
Icon: RiAccountBoxLine,
},

View File

@@ -137,7 +137,7 @@ export const RouteLink = [
// ===============[ REVERSAL TRANSACTION ]===============
{ path: "/bank-deposit-request", Component: BankDepositRequest },
{ path: "/fawateer-deposit", Component: ReversalFawateerDeposit },
{ path: "/reversal-fawateer-deposit", Component: ReversalFawateerDeposit },
{ path: "/account-deletion-request", Component: ReversalAccountDeletion },

View File

@@ -0,0 +1,35 @@
// Need to use the React-specific entry point to import createApi
import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react";
import { baseQuery } from "./token.serivce";
// Define a service using a base URL and expected endpoints
export const bankDepositRequestMaster = createApi({
reducerPath: "BankDeposit",
baseQuery: baseQuery,
tagTypes: ["getBankDeposit"],
endpoints: (builder) => ({
// ======[Get All]=====
getBankDepositMaster: builder.query({
query: () => `/reversal-transactions/bank-transfer/getAll`,
providesTags: ["getBankDeposit"],
}),
depositReject: builder.mutation({
query: ({ id, data }) => ({
url: `/deposit/admin/rejected/${id}`,
method: "PATCH",
body: data,
}),
invalidatesTags: ["getDepositRequest", "getDepositHistory"],
}),
}),
});
export const {
useGetBankDepositMasterQuery,
useDepositRejectMutation,
} = bankDepositRequestMaster;

View File

@@ -88,7 +88,7 @@ export const depositRequest = createApi({
// Export hooks for usage in functional components
export const {
useGetDepositRequestQuery,
useGetDepositRequestByIdQuery,
useGetDepositRequestByIdQuery,
useUpdateDepositRequestMutation,
useDepositRejectMutation,
useGetDepositHistoryQuery,

View File

@@ -0,0 +1,22 @@
// Need to use the React-specific entry point to import createApi
import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react";
import { baseQuery } from "./token.serivce";
// Define a service using a base URL and expected endpoints
export const reversalAccountDeletionMaster = createApi({
reducerPath: "accountDeletion",
baseQuery: baseQuery,
tagTypes: ["getAccountDeletion"],
endpoints: (builder) => ({
// ======[Get All]=====
getAccountDeletionMaster: builder.query({
query: () => `/reversal-transactions/account-deletion/getAll`,
providesTags: ["getAccountDeletion"],
}),
}),
});
export const {
useGetAccountDeletionMasterQuery,
} = reversalAccountDeletionMaster;

View File

@@ -0,0 +1,22 @@
// Need to use the React-specific entry point to import createApi
import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react";
import { baseQuery } from "./token.serivce";
// Define a service using a base URL and expected endpoints
export const reversalFawateerDepositMaster = createApi({
reducerPath: "FawateerDeposit",
baseQuery: baseQuery,
tagTypes: ["getFawateerDeposit"],
endpoints: (builder) => ({
// ======[Get All]=====
getFawateerDepositMaster: builder.query({
query: () => `/reversal-transactions/bank-transfer/getAll`,
providesTags: ["getFawateerDeposit"],
}),
}),
});
export const {
useGetFawateerDepositMasterQuery,
} = reversalFawateerDepositMaster;

View File

@@ -21,6 +21,9 @@ import { sabAdminMaster } from "../Services/subadmin.service";
import { changePasswordMake } from "../Services/change.password.service";
import { forgetPasswordMake } from "../Services/forget.password.service";
import { dashboardMaster } from "../Services/dashboard.service";
import { bankDepositRequestMaster } from "../Services/bankdeposit.request.service";
import { reversalFawateerDepositMaster } from "../Services/reversal.fawateer.deposit.service";
import { reversalAccountDeletionMaster } from "../Services/reversal.account.deletion.service";
export const store = configureStore({
reducer: {
@@ -43,6 +46,9 @@ export const store = configureStore({
[changePasswordMake.reducerPath]: changePasswordMake.reducer,
[forgetPasswordMake.reducerPath]: forgetPasswordMake.reducer,
[dashboardMaster.reducerPath]: dashboardMaster.reducer,
[bankDepositRequestMaster.reducerPath]: bankDepositRequestMaster.reducer,
[reversalFawateerDepositMaster.reducerPath]: reversalFawateerDepositMaster.reducer,
[reversalAccountDeletionMaster.reducerPath]: reversalAccountDeletionMaster.reducer,
// Add other reducers as needed
},
@@ -71,6 +77,9 @@ export const store = configureStore({
changePasswordMake.middleware,
forgetPasswordMake.middleware,
dashboardMaster.middleware,
bankDepositRequestMaster.middleware,
reversalFawateerDepositMaster.middleware,
reversalAccountDeletionMaster.middleware,
),
});