Compare commits

...

14 Commits

Author SHA1 Message Date
Swapnil Bendal
b141743190 Merge remote-tracking branch 'origin/main' into Sprint-10 2025-01-22 13:16:43 +05:30
Swapnil Bendal
f9d0b3ce6c Merge remote-tracking branch 'origin/dev' into Sprint-10 2025-01-22 13:16:30 +05:30
Swapnil Bendal
965263a3f2 Merge remote-tracking branch 'origin/sprint10/reversal' into Sprint-10 2025-01-21 16:47:09 +05:30
YasinShaikh123
04a5d1280f approve history maker [ Search ] 2025-01-21 16:44:01 +05:30
YasinShaikh123
d40eadb35e [ Approve Historty maker search ] 2025-01-21 16:42:57 +05:30
YasinShaikh123
f4a2fd2889 [ update amount reseversl ] 2025-01-21 16:25:38 +05:30
Swapnil Bendal
96f813f632 Merge branch 'sprint10/reversal' into Sprint-10 2025-01-21 15:31:16 +05:30
YasinShaikh123
8587b91a33 change Reversal heading 2025-01-21 15:15:48 +05:30
YasinShaikh123
49b06e81a6 [ Add ISDcode ] 2025-01-21 12:42:02 +05:30
Swapnil Bendal
79ec8d92ae Implement debounced search functionality in ApproveHistory component and update API query structure 2025-01-20 20:38:52 +05:30
35d3e07224 Merge pull request 'dev' (#31) from dev into main
Reviewed-on: #31
2025-01-10 13:34:54 +00:00
Swapnil Bendal
651c775c2a Merge remote-tracking branch 'origin/main' into dev 2025-01-10 19:02:33 +05:30
6c2a38becb Merge pull request 'bug-fix/9.0.3' (#30) from bug-fix/9.0.3 into main
Reviewed-on: #30
2024-12-24 12:47:20 +00:00
bddf7381a6 Merge pull request '[fixed] - pending action' (#29) from dev into main
Reviewed-on: #29
2024-12-24 11:07:30 +00:00
5 changed files with 114 additions and 49 deletions

View File

@@ -309,14 +309,14 @@ const DashboardLayout = ({ isOnline }) => {
return ( return (
<span className="d-flex align-items-end gap-2"> <span className="d-flex align-items-end gap-2">
<HiOutlineBanknotes className="h4 m-0 fw-normal" /> <HiOutlineBanknotes className="h4 m-0 fw-normal" />
Fawateer Deposit Reversal Transaction / Fawateer Deposit
</span> </span>
); );
case path.startsWith("/account-deletion-request"): case path.startsWith("/account-deletion-request"):
return ( return (
<span className="d-flex align-items-end gap-2"> <span className="d-flex align-items-end gap-2">
<RiAccountBoxLine className="h4 m-0 fw-normal" /> <RiAccountBoxLine className="h4 m-0 fw-normal" />
Account Deletion Request Reversal Transaction / Account Deletion Request
</span> </span>
); );

View File

@@ -117,6 +117,7 @@ const BankDepositRequest = () => {
"Last Name", "Last Name",
"Country", "Country",
"Phone Number", "Phone Number",
"Deposit Amount",
"Action", "Action",
]; ];
@@ -212,16 +213,30 @@ const BankDepositRequest = () => {
</Box> </Box>
), ),
Country: ( Country: (
<Box w={"80px"} isTruncated={true}> <Box isTruncated={true}>
<Text as={"span"} color={"teal.900"}> <Text as={"span"} color={"teal.900"}>
{item?.countryName} {item?.countryName}
</Text> </Text>
</Box> </Box>
), ),
"Phone Number": ( "Phone Number": (
<Box w={"80px"} isTruncated={true}> <Box isTruncated={true}>
<Text as={"span"} color={"teal.900"}> <Text as={"span"} color={"teal.900"}>
{item?.mobileNumber} {item?.ISDCode} {item?.mobileNumber}
{/* {item?.ISDcode + " " + item?.mobileNumber} */}
</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> </Text>
</Box> </Box>
), ),

View File

@@ -37,6 +37,7 @@ const ApproveHistory = () => {
const [actionId, setActionId] = useState(false); const [actionId, setActionId] = useState(false);
const [mouseEntered, setMouseEntered] = useState(false); const [mouseEntered, setMouseEntered] = useState(false);
const [mouseEnteredId, setMouseEnteredId] = useState(""); const [mouseEnteredId, setMouseEnteredId] = useState("");
const [debouncedSearchTerm, setDebouncedSearchTerm] = useState("");
const [pageSize, setPageSize] = useState(TABLE_PAGINATION?.size); const [pageSize, setPageSize] = useState(TABLE_PAGINATION?.size);
const [currentPage, setCurrentPage] = useState(TABLE_PAGINATION?.page); const [currentPage, setCurrentPage] = useState(TABLE_PAGINATION?.page);
@@ -60,12 +61,31 @@ const ApproveHistory = () => {
onClose: onRejectClose, onClose: onRejectClose,
} = useDisclosure(); } = useDisclosure();
// Debounce the search term to avoid making a request on every keystroke
useEffect(() => {
const handler = setTimeout(() => {
setDebouncedSearchTerm(searchTerm);
}, 500); // Adjust delay as needed
return () => {
clearTimeout(handler);
};
}, [searchTerm]);
const { const {
data, data,
isLoading: drawalRequestLoading, isLoading: drawalRequestLoading,
error, error,
refetch, refetch,
} = useGetApproveHistoryQuery(); } = useGetApproveHistoryQuery(
{
page: debouncedSearchTerm ? undefined : currentPage, // Omit pagination for search
size: debouncedSearchTerm ? undefined : pageSize, // Omit pagination for search
searchTerm: debouncedSearchTerm,
},
{
skip: debouncedSearchTerm === "" && searchTerm !== "", // Skip if search is empty and it's not the initial request
}
);
console.log(data?.data?.rows); console.log(data?.data?.rows);
@@ -84,6 +104,15 @@ const ApproveHistory = () => {
return () => clearTimeout(timer); return () => clearTimeout(timer);
}, []); }, []);
useEffect(() => {
const handler = setTimeout(() => {
setDebouncedSearchTerm(searchTerm);
}, 500); // Adjust delay as needed
return () => {
clearTimeout(handler);
};
}, [searchTerm]);
// ====================================================[Table Filter]================================================================ // ====================================================[Table Filter]================================================================
const filteredData = data?.data?.rows?.filter((item) => { const filteredData = data?.data?.rows?.filter((item) => {
// Filter by name (case insensitive) // Filter by name (case insensitive)
@@ -117,7 +146,7 @@ const ApproveHistory = () => {
"Status", "Status",
]; ];
const extractedArray = filteredData?.map((item, idx) => ({ const extractedArray = data?.data?.rows?.map((item, idx) => ({
// id: item?.id, // id: item?.id,
"Sr.no": ( "Sr.no": (
<Text <Text
@@ -172,11 +201,7 @@ const ApproveHistory = () => {
</Box> </Box>
), ),
"Deposit Date": ( "Deposit Date": (
<Box <Box w={"100px"} isTruncated={true} display={"flex"}>
w={"100px"}
isTruncated={true}
display={"flex"}
>
<Text as={"span"} color={"teal.900"}> <Text as={"span"} color={"teal.900"}>
{formatDate(item?.transaction_date)} {formatDate(item?.transaction_date)}
</Text> </Text>
@@ -202,28 +227,27 @@ const ApproveHistory = () => {
fontWeight={"500"} fontWeight={"500"}
className="d-flex align-items-center web-text-small" className="d-flex align-items-center web-text-small"
> >
{item?.spportFile_path&&<Badge {item?.spportFile_path && (
px={2} <Badge
py={0.5} px={2}
textTransform={"inherit"} py={0.5}
fontWeight={500} textTransform={"inherit"}
colorScheme={"forestGreen"} fontWeight={500}
> colorScheme={"forestGreen"}
<Link
href={import.meta.env.VITE_IMAGE_URL + item?.spportFile_path}
isExternal
display={"flex"}
alignItems={"center"}
> >
<Box me={"1px"} <Link
as="span" href={import.meta.env.VITE_IMAGE_URL + item?.spportFile_path}
cursor={"pointer"} isExternal
display={"flex"}
alignItems={"center"}
> >
View <Box me={"1px"} as="span" cursor={"pointer"}>
</Box> View
<ExternalLinkIcon /> </Box>
</Link> <ExternalLinkIcon />
</Badge>} </Link>
</Badge>
)}
</Text> </Text>
), ),
Status: ( Status: (
@@ -236,12 +260,12 @@ const ApproveHistory = () => {
rounded={4} rounded={4}
colorScheme={ colorScheme={
item?.transactionStatus === "Approved" item?.transactionStatus === "Approved"
? "green" ? "green"
: item?.transactionStatus === "Pending" : item?.transactionStatus === "Pending"
? "yellow" ? "yellow"
: item?.transactionStatus === "Reject" : item?.transactionStatus === "Reject"
? "red" ? "red"
: "gray" // default border color if status doesn't match any condition : "gray" // default border color if status doesn't match any condition
} }
> >
{item.transactionStatus} {item.transactionStatus}

View File

@@ -130,6 +130,7 @@ const ReversalFawateerDeposit = () => {
"First Name", "First Name",
"Last Name", "Last Name",
"Phone Number", "Phone Number",
"Deposit Amount (BHD)",
"Action", "Action",
]; ];
@@ -188,7 +189,21 @@ const ReversalFawateerDeposit = () => {
"Phone Number": ( "Phone Number": (
<Box w={"100px"} isTruncated={true}> <Box w={"100px"} isTruncated={true}>
<Text as={"span"} color={"teal.900"}> <Text as={"span"} color={"teal.900"}>
{item?.principal?.mobileNumber} {/* {item?.principal?.ISDcode} {item?.principal?.mobileNumber} */}
{item?.principal?.ISDcode + " " + item?.principal?.mobileNumber}
</Text>
</Box>
),
"Deposit Amount (BHD)": (
<Box isTruncated={true}>
<Text as={"span"} color={"teal.900"} textAlign={"right"}>
{parseFloat(item?.transaction_details?.investorAmount || 0).toLocaleString(undefined, {
minimumFractionDigits: 2,
maximumFractionDigits: 2,
})}
<Badge ms={1} colorScheme="green">
{item?.currencyCode}
</Badge>
</Text> </Text>
</Box> </Box>
), ),

View File

@@ -9,7 +9,7 @@ import { baseQuery } from "./token.serivce";
export const fawateerRequest = createApi({ export const fawateerRequest = createApi({
reducerPath: "fawateerRequest", reducerPath: "fawateerRequest",
baseQuery: baseQuery, baseQuery: baseQuery,
tagTypes: ["getFawateerRequest" ,"getApproveHistory","getApproveComment","getRejectComment","getFawateerMakerRequest"], tagTypes: ["getFawateerRequest", "getApproveHistory", "getApproveComment", "getRejectComment", "getFawateerMakerRequest"],
endpoints: (builder) => ({ endpoints: (builder) => ({
@@ -37,7 +37,7 @@ export const fawateerRequest = createApi({
}), }),
getFawateerForMakerRequest: builder.query({ getFawateerForMakerRequest: builder.query({
query: ({ page, size, searchTerm }) => { query: ({ page, size, searchTerm }) => {
@@ -50,8 +50,19 @@ export const fawateerRequest = createApi({
providesTags: ["getFawateerMakerRequest"], providesTags: ["getFawateerMakerRequest"],
}), }),
// getApproveHistory: builder.query({
// query: () => `/fawateer/admin/getAll`,
// providesTags: ["getApproveHistory"],
// }),
getApproveHistory: builder.query({ getApproveHistory: builder.query({
query: () => `/fawateer/admin/getAll`, query: ({ page, size, searchTerm }) => {
let baseURL = `/fawateer/admin/getAll?search=${searchTerm || ""}`;
if (page !== undefined && size !== undefined) {
baseURL += `&page=${page}&size=${size}`; // Only add pagination if both are defined
}
return baseURL;
},
providesTags: ["getApproveHistory"], providesTags: ["getApproveHistory"],
}), }),
@@ -72,16 +83,16 @@ export const fawateerRequest = createApi({
}), }),
invalidatesTags: ["getFawateerRequest"], invalidatesTags: ["getFawateerRequest"],
}), }),
}), }),
}); });
// Export hooks for usage in functional components // Export hooks for usage in functional components
export const { export const {
useGetFawateerRequestQuery, useGetFawateerRequestQuery,
useGetApproveHistoryQuery, useGetApproveHistoryQuery,
useApproveCommentMutation, useApproveCommentMutation,
useRejectCommentMutation, useRejectCommentMutation,
useGetFawateerForMakerRequestQuery, useGetFawateerForMakerRequestQuery,
useGetFawateerInvestorsQuery useGetFawateerInvestorsQuery
} = fawateerRequest; } = fawateerRequest;