diff --git a/public/media/file-templates/batch-sample.xlsx b/public/media/file-templates/batch-sample.xlsx new file mode 100644 index 0000000..25b7318 Binary files /dev/null and b/public/media/file-templates/batch-sample.xlsx differ diff --git a/src/auth/pages/jwt/Login.tsx b/src/auth/pages/jwt/Login.tsx index f8c0a64..f15ae46 100644 --- a/src/auth/pages/jwt/Login.tsx +++ b/src/auth/pages/jwt/Login.tsx @@ -150,7 +150,7 @@ const Login = () => { /> Remember me - { className="text-2sm link shrink-0" > Forgot Password? - + */} + + + diff --git a/src/pages/members/feedback-member/blocks/EditDialog.tsx b/src/pages/members/feedback-member/blocks/EditDialog.tsx index b12a0c0..c99d396 100644 --- a/src/pages/members/feedback-member/blocks/EditDialog.tsx +++ b/src/pages/members/feedback-member/blocks/EditDialog.tsx @@ -1,5 +1,5 @@ import { useState, useEffect } from 'react'; -import { Dialog, DialogContent } from '@/components/ui/dialog'; +import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '@/components/ui/dialog'; import { Select, SelectContent, @@ -59,16 +59,12 @@ const EditDialog = () => { if (response?.status) { toast.success('Feedback reviewed successfully'); - // Close the edit dialog handleEditDialog(false, null); - // First close the detail dialog to reset its state handleDetailDialog(false, null); - // Refresh the main data grid first refreshData(); - // Wait a tiny bit then reopen the detail with refreshed data setTimeout(() => { handleDetailDialog(true, selectedFeedback); }, 300); @@ -97,7 +93,6 @@ const EditDialog = () => { } const data = response.data; - // console.log('Fetched data:', data); setReviewNotes(data.review_notes || ''); @@ -112,7 +107,11 @@ const EditDialog = () => { return ( handleEditDialog(open, null)}> - + + + + +
diff --git a/src/pages/members/manage-members/blocks/DetailMember.tsx b/src/pages/members/manage-members/blocks/DetailMember.tsx index d7e963c..ffb4efc 100644 --- a/src/pages/members/manage-members/blocks/DetailMember.tsx +++ b/src/pages/members/manage-members/blocks/DetailMember.tsx @@ -65,7 +65,7 @@ const DetailMember = ({ showAddDialog, setShowAddDialog, handleSubmit, initialDa const handleChange = async (e: any) => { const { name, value } = e.target; if (name === "file_selfie" || name === "photouser" || name === 'file_document_id' || name === "file_document_id_selfie" || - name === "file_commercial_license" || name === 'photomerchant') { // FOR FILE ONLY + name === "file_commercial_license") { // FOR FILE ONLY setFormData({ ...formData, [name]: e.target.files[0] }); } else if(name === "nationality") { setFormData({ ...formData, [name]: value }); @@ -258,7 +258,6 @@ const DetailMember = ({ showAddDialog, setShowAddDialog, handleSubmit, initialDa {(formData.id || dialogType === "create") ? generateInput(formData, handleChange, 'Merchant Address', 'merchantaddress', 'text', false, viewOnly): ''} {(formData.id || dialogType === "create") ? generateInput(formData, handleChange, 'Longitude Merchant', 'longitudemerchant', 'text', false, viewOnly): ''} {(formData.id || dialogType === "create") ? generateInput(formData, handleChange, 'Latitude Merchant', 'latitudemerchant', 'text', false, viewOnly): ''} - {(formData.id || dialogType === "create") ? generateImage(formData, handleChange, 'Photo Merchant', 'photomerchant', previewImg, setPreviewImg): ''} {(formData.id || dialogType === "create") ? generateImage(formData, handleChange, 'File Selfie', 'file_selfie', previewImg, setPreviewImg): ''} {(formData.id || dialogType === "create") ? generateImage(formData, handleChange, 'File Document', 'file_document_id', previewImg, setPreviewImg): ''} {(formData.id || dialogType === "create") ? generateImage(formData, handleChange, 'File Document & Selfie', 'file_document_id_selfie', previewImg, setPreviewImg): ''} diff --git a/src/pages/transaction/approval-transaction/blocks/DetailApprovalTransaction.tsx b/src/pages/transaction/approval-transaction/blocks/DetailApprovalTransaction.tsx index 4b5d549..eb72ba9 100644 --- a/src/pages/transaction/approval-transaction/blocks/DetailApprovalTransaction.tsx +++ b/src/pages/transaction/approval-transaction/blocks/DetailApprovalTransaction.tsx @@ -10,8 +10,10 @@ import { DialogHeader, DialogTitle } from '@/components/ui/dialog'; +import { Button } from '@/components/ui/button'; const API_URL = apiConfig.transaction; +const API_URL_CURRENT_BALANCE = apiConfig.service_wallet; const DetailApprovalTransaction = () => { const { GetData } = useCallApi(); @@ -51,6 +53,60 @@ const DetailApprovalTransaction = () => { } }, [showDetailDialog]); + const [currentBalance, setCurrentBalance] = useState(null); + const [currentBalanceTransfer, setCurrentBalanceTransfer] = useState(null); + useEffect(() => { + setCurrentBalance(null); + }, [transactionDetails]); + + useEffect(() => { + setCurrentBalanceTransfer(null); + }, [transactionDetails]); + + const getCurrentBallanceWallet = async (customerId: string) => { + try { + const responsecurrentbalance = await GetData( + `${API_URL_CURRENT_BALANCE}/dashboard/balance/account/${customerId}`, + {} + ); + + const match = responsecurrentbalance?.data?.find( + (item: any) => item.id_wallet === transactionDetails?.origin_wallet?.id + ); + + if (match) { + // console.log('Matched Wallet:', match); // Optional debug + return match.amount; + } + } catch (error) { + console.error('Error fetching current balance', error); + } + + return null; + }; + + const getCurrentBallanceWalletTransfer = async (customerIdtransfer: string) => { + try { + const response = await GetData( + `${API_URL_CURRENT_BALANCE}/dashboard/balance/account/${customerIdtransfer}`, + {} + ); + + const match = response?.data?.find( + (item: any) => item.id_wallet === transactionDetails?.transfer?.destination_wallet?.id + ); + + if (match) { + // console.log('Matched Wallet:', match); + return match.amount; + } + } catch (error) { + console.error('Error fetching current balance', error); + } + + return null; + }; + return ( @@ -146,14 +202,20 @@ const DetailApprovalTransaction = () => {

Amount

-

{new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(transactionDetails?.purchase?.amount) ?? new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(transactionDetails?.transfer.amount)}

+

+ {(transactionDetails?.purchase?.amount ?? transactionDetails?.transfer?.amount) != null + ? new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format( + transactionDetails.purchase?.amount ?? transactionDetails.transfer?.amount + ) + : "-"} +

+

Fee

- {transactionDetails?.kind === 'P' - ? transactionDetails?.purchase.fee_amount.toLocaleString('en-US', { style: 'currency', currency: 'USD' }) - : transactionDetails?.transfer.fee_amount.toLocaleString('en-US', { style: 'currency', currency: 'USD' })} + {(transactionDetails?.transfer?.fee_amount ?? transactionDetails?.purchase?.fee_amount ?? 0) + .toLocaleString('en-US', { style: 'currency', currency: 'USD' })}

@@ -234,19 +296,33 @@ const DetailApprovalTransaction = () => {

Amount

-

{new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(transactionDetails?.purchase.amount)}

+

+ {new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format( + transactionDetails?.purchase?.amount ?? transactionDetails?.transfer?.amount ?? 0 + )} +

Cashback

-

{new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(transactionDetails?.purchase.cashback)}

+

+ {new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format( + transactionDetails?.purchase?.cashback ?? transactionDetails?.transfer?.cashback ?? 0 + )} +

Cashback Point

-

{transactionDetails?.purchase.cashback_point}

+

+ {transactionDetails?.purchase?.cashback_point ?? transactionDetails?.transfer?.cashback_point ?? 0} +

Fee Amount

-

{new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(transactionDetails?.purchase.fee_amount)}

+

+ {new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format( + transactionDetails?.purchase?.fee_amount ?? transactionDetails?.transfer?.fee_amount ?? 0 + )} +

@@ -471,7 +547,27 @@ const DetailApprovalTransaction = () => {

Description

{transactionDetails?.origin_wallet.description}

+
+

Current Balance

+

+ {currentBalance !== null && currentBalance !== undefined + ? new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(currentBalance) + : '-'} +

+
+
)} @@ -482,16 +578,42 @@ const DetailApprovalTransaction = () => { {!transactionDetails?.transfer ? (
No Data available
) : ( -
-
-

Name

-

{transactionDetails.transfer.destination_wallet.name}

+ <> +
+
+

Name

+

{transactionDetails.transfer.destination_wallet.name}

+
+
+

Description

+

{transactionDetails.transfer.destination_wallet.description}

+
+
+

Current Balance

+

+ {currentBalanceTransfer !== null + ? new Intl.NumberFormat('en-US', { + style: 'currency', + currency: 'USD', + }).format(currentBalanceTransfer) + : '-'} +

+
-
-

Description

-

{transactionDetails.transfer.destination_wallet.description}

-
-
+ + )}
)} @@ -540,8 +662,8 @@ const DetailApprovalTransaction = () => { }) : ''} {log.request_body} - {log.response_body} - {log.request_endpoint} + {log.response_body} + {log.request_endpoint} )) ) : ( diff --git a/src/pages/transaction/approval-transaction/blocks/ListToolbar.tsx b/src/pages/transaction/approval-transaction/blocks/ListToolbar.tsx index 2bf79e0..e5f74f2 100644 --- a/src/pages/transaction/approval-transaction/blocks/ListToolbar.tsx +++ b/src/pages/transaction/approval-transaction/blocks/ListToolbar.tsx @@ -40,9 +40,9 @@ const ListToolbar = () => { // useEffect to set the default date values useEffect(() => { const today = new Date(); - const firstDayOfMonth = new Date(today.getFullYear(), today.getMonth(), 1); + // const firstDayOfMonth = new Date(today.getFullYear(), today.getMonth(), 1); settrxDate({ - from: formatDate(firstDayOfMonth), + from: formatDate(today), to: formatDate(today), }); }, []); @@ -121,7 +121,7 @@ const ListToolbar = () => { setSearchValue(event.target.value)} /> @@ -136,13 +136,13 @@ const ListToolbar = () => { className="h-7.5" onClick={() => { const today = new Date(); - const firstDayOfMonth = new Date(today.getFullYear(), today.getMonth(), 1); + // const firstDayOfMonth = new Date(today.getFullYear(), today.getMonth(), 1); // Resetting all filters setSearchValue(''); setStatusApproval(''); settrxDate({ - from: formatDate(firstDayOfMonth), + from: formatDate(today), to: formatDate(today), }); diff --git a/src/pages/transaction/approval-transaction/hooks/ApprovalTransactionContext.tsx b/src/pages/transaction/approval-transaction/hooks/ApprovalTransactionContext.tsx index 163055a..f1cfb9f 100644 --- a/src/pages/transaction/approval-transaction/hooks/ApprovalTransactionContext.tsx +++ b/src/pages/transaction/approval-transaction/hooks/ApprovalTransactionContext.tsx @@ -270,16 +270,19 @@ const ApprovalTransactionProvider = ({ children }: { children: React.ReactNode } }); } - // Constructing filter object with dynamic properties const formattedFilter: any = { "Transactions.transaction_date": { from: `${startdate} 00:00:00`, - to: `${enddate} 23:59:59`, - }, + to: `${enddate} 23:59:59` + } }; - + if (transactioncode) { - formattedFilter["Transactions.code"] = { like: `%${transactioncode}%` }; + formattedFilter["$or"] = [ + { "Transactions.code": { like: `%${transactioncode}%` } }, + { "Transactions.msisdn": { like: `${transactioncode}` } }, + { "origin_customer.fullname": { like: `${transactioncode}` } } + ]; } // Handle approval status filter diff --git a/src/pages/transaction/history-transaction/blocks/DetailTransaction.tsx b/src/pages/transaction/history-transaction/blocks/DetailTransaction.tsx index de6a873..976ec28 100644 --- a/src/pages/transaction/history-transaction/blocks/DetailTransaction.tsx +++ b/src/pages/transaction/history-transaction/blocks/DetailTransaction.tsx @@ -13,11 +13,15 @@ import { DialogTitle } from '@/components/ui/dialog'; import { useDataGrid } from '@/components'; +import { Button } from '@/components/ui/button'; const API_URL = apiConfig.transaction; +const API_URL_CURRENT_BALANCE = apiConfig.service_wallet; + const DetailTransaction = () => { const { GetData } = useCallApi(); + // const { reload } = useDataGrid(); const { showDetailDialog, @@ -67,6 +71,61 @@ const DetailTransaction = () => { } }, [showDetailDialog]); + const [currentBalance, setCurrentBalance] = useState(null); + const [currentBalanceTransfer, setCurrentBalanceTransfer] = useState(null); + + useEffect(() => { + setCurrentBalance(null); + }, [transactionDetails]); + + useEffect(() => { + setCurrentBalanceTransfer(null); + }, [transactionDetails]); + + const getCurrentBallanceWallet = async (customerId: string) => { + try { + const responsecurrentbalance = await GetData( + `${API_URL_CURRENT_BALANCE}/dashboard/balance/account/${customerId}`, + {} + ); + + const match = responsecurrentbalance?.data?.find( + (item: any) => item.id_wallet === transactionDetails?.origin_wallet?.id + ); + + if (match) { + // console.log('Matched Wallet:', match); // Optional debug + return match.amount; + } + } catch (error) { + console.error('Error fetching current balance', error); + } + + return null; + }; + + + const getCurrentBallanceWalletTransfer = async (customerIdtransfer: string) => { + try { + const response = await GetData( + `${API_URL_CURRENT_BALANCE}/dashboard/balance/account/${customerIdtransfer}`, + {} + ); + + const match = response?.data?.find( + (item: any) => item.id_wallet === transactionDetails?.transfer?.destination_wallet?.id + ); + + if (match) { + // console.log('Matched Wallet:', match); + return match.amount; + } + } catch (error) { + console.error('Error fetching current balance', error); + } + + return null; + }; return ( @@ -162,14 +221,20 @@ const DetailTransaction = () => {

Amount

-

{new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(transactionDetails?.purchase?.amount) ?? new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(transactionDetails?.transfer.amount)}

+

+ {(transactionDetails?.purchase?.amount ?? transactionDetails?.transfer?.amount) != null + ? new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format( + transactionDetails.purchase?.amount ?? transactionDetails.transfer?.amount + ) + : "-"} +

+

Fee

- {transactionDetails?.kind === 'P' - ? transactionDetails?.purchase.fee_amount.toLocaleString('en-US', { style: 'currency', currency: 'USD' }) - : transactionDetails?.transfer.fee_amount.toLocaleString('en-US', { style: 'currency', currency: 'USD' })} + {(transactionDetails?.transfer?.fee_amount ?? transactionDetails?.purchase?.fee_amount ?? 0) + .toLocaleString('en-US', { style: 'currency', currency: 'USD' })}

@@ -231,16 +296,6 @@ const DetailTransaction = () => {
-

- Origin Wallet - - Wallet - -

-
- -
-

Purchase @@ -250,69 +305,91 @@ const DetailTransaction = () => {

Amount

-

{new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(transactionDetails?.purchase.amount)}

+

+ {new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format( + transactionDetails?.purchase?.amount ?? transactionDetails?.transfer?.amount ?? 0 + )} +

Cashback

-

{new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(transactionDetails?.purchase.cashback)}

+

+ {new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format( + transactionDetails?.purchase?.cashback ?? transactionDetails?.transfer?.cashback ?? 0 + )} +

Cashback Point

-

{transactionDetails?.purchase.cashback_point}

+

+ {transactionDetails?.purchase?.cashback_point ?? transactionDetails?.transfer?.cashback_point ?? 0} +

Fee Amount

-

{new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(transactionDetails?.purchase.fee_amount)}

-
-
- - )} - {activeTab === 'detail' && transactionDetails?.kind === 'P' && ( -
-

- Product Information - - Product Info - -

-
-
-

Product Name

-

{transactionDetails?.purchase.product.name}

-
-
-

Price Cash

- {new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(transactionDetails?.purchase.product.price_cash)} -
-
-

Price Point

-

{transactionDetails?.purchase.product.price_point}

-
-
-

Product Type

-

{transactionDetails?.purchase.product.type}

-
-
-

Provider Name

-

{transactionDetails?.purchase.product.provider.description}

-
-
-

Provider Type

- {(() => { - let providertype; - if (transactionDetails?.purchase.product.provider.type === 'h2h') { - providertype = 'HOST TO HOST'; - } else if (transactionDetails?.purchase.product.provider.type === 'agent') { - providertype = 'AGENT'; - } - return providertype; - })()} + {new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format( + transactionDetails?.purchase?.fee_amount ?? transactionDetails?.transfer?.fee_amount ?? 0 + )}

)} + {/* {activeTab === 'detail' && transactionDetails?.kind === 'P' && ( */} +
+

+ Product Information + + Product Info + +

+
+
+

Product Name

+

+ {transactionDetails?.purchase?.product?.name ?? "-"} +

+
+
+

Price Cash

+

+ {transactionDetails?.purchase?.product?.price_cash != null + ? new Intl.NumberFormat("en-US", { style: "currency", currency: "USD" }).format(transactionDetails.purchase.product.price_cash) + : "-"} +

+
+
+

Price Point

+

+ {transactionDetails?.purchase?.product?.price_point ?? "-"} +

+
+
+

Product Type

+

+ {transactionDetails?.purchase?.product?.type ?? "-"} +

+
+
+

Provider Name

+

+ {transactionDetails?.purchase?.product?.provider?.description ?? "-"} +

+
+
+

Provider Type

+

+ {transactionDetails?.purchase?.product?.provider?.type === "h2h" + ? "HOST TO HOST" + : transactionDetails?.purchase?.product?.provider?.type === "agent" + ? "AGENT" + : "-"} +

+
+
+
+ {/* )} */} {activeTab === 'detail' && transactionDetails?.kind != 'P' && transactionDetails?.transfer != null && (
@@ -348,7 +425,7 @@ const DetailTransaction = () => {

Fee

- {transactionDetails?.transfer.fee_amount.toLocaleString('en-US', { style: 'currency', currency: 'USD' })} + {(transactionDetails?.transfer?.fee_amount ?? transactionDetails?.purchase?.fee_amount ?? 0).toLocaleString('en-US', { style: 'currency', currency: 'USD' })}

@@ -482,7 +559,27 @@ const DetailTransaction = () => {

Description

{transactionDetails?.origin_wallet.description}

+
+

Current Balance

+

+ {currentBalance !== null && currentBalance !== undefined + ? new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(currentBalance) + : '-'} +

+
+ )} @@ -493,16 +590,43 @@ const DetailTransaction = () => { {!transactionDetails?.transfer ? (
No Data available
) : ( -
-
-

Name

-

{transactionDetails.transfer.destination_wallet.name}

+ <> +
+
+

Name

+

{transactionDetails.transfer.destination_wallet.name}

+
+
+

Description

+

{transactionDetails.transfer.destination_wallet.description}

+
+
+

Current Balance

+

+ {currentBalanceTransfer !== null + ? new Intl.NumberFormat('en-US', { + style: 'currency', + currency: 'USD', + }).format(currentBalanceTransfer) + : '-'} +

+
-
-

Description

-

{transactionDetails.transfer.destination_wallet.description}

-
-
+ + + )}
)} diff --git a/src/pages/transaction/history-transaction/blocks/ListToolbar.tsx b/src/pages/transaction/history-transaction/blocks/ListToolbar.tsx index f50e3ce..a37670b 100644 --- a/src/pages/transaction/history-transaction/blocks/ListToolbar.tsx +++ b/src/pages/transaction/history-transaction/blocks/ListToolbar.tsx @@ -61,9 +61,9 @@ const ListToolbar = () => { useEffect(() => { const today = new Date(); - const firstDayOfMonth = new Date(today.getFullYear(), today.getMonth(), 1); + // const firstDayOfMonth = new Date(today.getFullYear(), today.getMonth(), 1); settrxDate({ - from: formatDate(firstDayOfMonth), + from: formatDate(today), to: formatDate(today), }); }, []); @@ -152,7 +152,7 @@ const ListToolbar = () => { setSearchValue(event.target.value)} /> @@ -167,14 +167,14 @@ const ListToolbar = () => { onClick={() => { // Preserve trxDate values (from, to) and reset others const today = new Date(); - const firstDayOfMonth = new Date(today.getFullYear(), today.getMonth(), 1); + // const firstDayOfMonth = new Date(today.getFullYear(), today.getMonth(), 1); // Only reset filters excluding from and to setSearchValue(''); // setStatusValue(''); setTypeValue(''); settrxDate({ - from: formatDate(firstDayOfMonth), + from: formatDate(today), to: formatDate(today), }); diff --git a/src/pages/transaction/history-transaction/hooks/TransactionContext.tsx b/src/pages/transaction/history-transaction/hooks/TransactionContext.tsx index 76f018c..f0063e2 100644 --- a/src/pages/transaction/history-transaction/hooks/TransactionContext.tsx +++ b/src/pages/transaction/history-transaction/hooks/TransactionContext.tsx @@ -265,18 +265,19 @@ const TransactionProvider = ({ children }: { children: React.ReactNode }) => { }); } - // Build filter object dynamically const formattedFilter: any = { "Transactions.transaction_date": { from: `${startdate} 00:00:00`, to: `${enddate} 23:59:59` } }; - + if (transactioncode) { - formattedFilter["Transactions.code"] = { - like: `%${transactioncode}%` - }; + formattedFilter["$or"] = [ + { "Transactions.code": { like: `%${transactioncode}%` } }, + { "Transactions.msisdn": { like: `${transactioncode}` } }, + { "origin_customer.fullname": { like: `${transactioncode}` } } + ]; } // if (transactionstatus) { @@ -286,7 +287,7 @@ const TransactionProvider = ({ children }: { children: React.ReactNode }) => { if (type) { formattedFilter["Transactions.kind"] = type; } - + const response = await GetData(`${API_URL}/transaction/history`, { limit, page: page + 1, diff --git a/src/pages/transfer/transferfee/blocks/ListToolBar.tsx b/src/pages/transfer/transferfee/blocks/ListToolBar.tsx index 9acdc39..c0a52c5 100644 --- a/src/pages/transfer/transferfee/blocks/ListToolBar.tsx +++ b/src/pages/transfer/transferfee/blocks/ListToolBar.tsx @@ -11,7 +11,7 @@
- */}
+
-
- +
- {/* Filter bar */} -
- {renderSelect( - 'Select Status Transaction Type', - statusTypes, - setStatusTypes, - types, - typeLabelMap - )} - {renderSelect( - 'Select Status Approval', - approval, - setApproval, - ['Y', 'N'], - approvalLabelMap - )} - {/* {renderSelect('Select Origin Wallet', walletOrigins, setWalletOrigin, origins)} - {renderSelect( - 'Select Destination Wallet', - walletDestinations, - setWalletDestination, - destinations - )} */} - - {/* {renderSelect('Origin', walletOrigins, setWalletOrigin, origins)} - {renderSelect('Destination', walletDestinations, setWalletDestination, destinations)} */} -
); }; -export default ListToolbar; +export default ListToolbar; \ No newline at end of file diff --git a/src/pages/transfer/transfertype/hooks/ManageTransferTypeContext.tsx b/src/pages/transfer/transfertype/hooks/ManageTransferTypeContext.tsx index 8ae1aed..55fa2a6 100644 --- a/src/pages/transfer/transfertype/hooks/ManageTransferTypeContext.tsx +++ b/src/pages/transfer/transfertype/hooks/ManageTransferTypeContext.tsx @@ -212,7 +212,7 @@ const ManageTransferTypeContextProvider = ({ children }: { children: React.React header: ({ column }) => ( ), - enableSorting: true, + enableSorting: false, enableHiding: false, meta: { headerClassName: 'w-[250px]' } }, @@ -241,7 +241,7 @@ const ManageTransferTypeContextProvider = ({ children }: { children: React.React header: ({ column }) => ( ), - enableSorting: true, + enableSorting: false, enableHiding: false, meta: { headerClassName: 'w-[250px]' } }, diff --git a/src/pages/wallet/wallet-history/blocks/ListToolbar.tsx b/src/pages/wallet/wallet-history/blocks/ListToolbar.tsx index 683e9ae..b5775c1 100644 --- a/src/pages/wallet/wallet-history/blocks/ListToolbar.tsx +++ b/src/pages/wallet/wallet-history/blocks/ListToolbar.tsx @@ -19,6 +19,13 @@ interface WalletProps { name: string; } +const getOneMonthsAgo = () => { + const today = new Date(); + return new Date(today.getFullYear(), today.getMonth() - 1, today.getDate()); +}; + +const formatDate = (date: Date): string => date.toISOString().split('T')[0]; + const ListToolbar = () => { const { table, reload } = useDataGrid(); const { GetData } = useCallApi(); @@ -32,12 +39,10 @@ const ListToolbar = () => { ); const [wallets, setWallets] = useState([]); - const formatDate = (date: Date): string => date.toISOString().split('T')[0]; - useEffect(() => { const today = new Date(); - const firstDayOfMonth = new Date(today.getFullYear(), today.getMonth(), 1); - setDateRange({ from: formatDate(firstDayOfMonth), to: formatDate(today) }); + const threeMonthsAgo = getOneMonthsAgo(); + setDateRange({ from: formatDate(threeMonthsAgo), to: formatDate(today) }); }, []); useEffect(() => { @@ -45,7 +50,6 @@ const ListToolbar = () => { table.getColumn('msisdn')?.setFilterValue(searchValue); table.setPageIndex(0); }, 200); - return () => clearTimeout(timer); }, [searchValue, table]); @@ -89,35 +93,50 @@ const ListToolbar = () => { }, []); const handleClearAllFilters = () => { + const today = new Date(); + const oneMonthAgo = getOneMonthsAgo(); + const resetDateRange = { + from: formatDate(oneMonthAgo), + to: formatDate(today) + }; + setSearchValue(''); setWalletId(''); + setDateRange(resetDateRange); + + table.getColumn('msisdn')?.setFilterValue(''); + table.getColumn('id_wallet')?.setFilterValue(''); + table.getColumn('CreatedAt')?.setFilterValue(resetDateRange); + + setTimeout(() => { + table.setPageIndex(0); + reload(); + }, 0); + }; + + const handleRefresh = () => { const today = new Date(); - const firstDayOfMonth = new Date(today.getFullYear(), today.getMonth(), 1); - setDateRange({ - from: formatDate(firstDayOfMonth), + const threeMonthsAgo = getOneMonthsAgo(); + const resetDateRange = { + from: formatDate(threeMonthsAgo), to: formatDate(today) - }); + }; - table.getAllColumns().forEach((column) => { - if (column.id !== 'CreatedAt') { - column.setFilterValue(undefined); - } - }); + setSearchValue(''); + setWalletId(''); + setDateRange(resetDateRange); + table.setColumnFilters([{ id: 'CreatedAt', value: resetDateRange }]); table.setPageIndex(0); - - table.getColumn('CreatedAt')?.setFilterValue({ - from: formatDate(firstDayOfMonth), - to: formatDate(today) - }); + reload(); }; return (
-
+
-
- @@ -194,4 +204,4 @@ const ListToolbar = () => { ); }; -export default ListToolbar; +export default ListToolbar; \ No newline at end of file