From 777a326c6498fb345087ef6afc2c98c5363d2336 Mon Sep 17 00:00:00 2001 From: bagusajisaputroo Date: Mon, 12 May 2025 20:59:09 +0700 Subject: [PATCH 01/10] add wallet name on wallet history --- .../wallet-history/blocks/ListToolbar.tsx | 1 + .../hooks/ManageWalletHistoryContext.tsx | 73 +++++++++++++------ 2 files changed, 52 insertions(+), 22 deletions(-) diff --git a/src/pages/wallet/wallet-history/blocks/ListToolbar.tsx b/src/pages/wallet/wallet-history/blocks/ListToolbar.tsx index b5775c1..2cacce6 100644 --- a/src/pages/wallet/wallet-history/blocks/ListToolbar.tsx +++ b/src/pages/wallet/wallet-history/blocks/ListToolbar.tsx @@ -83,6 +83,7 @@ const ListToolbar = () => { order_direction: 'ASC' }); setWallets(response?.data.list || []); + // console.log('Wallets: ', response?.data); } catch (error) { console.error('Error fetching wallets', error); } diff --git a/src/pages/wallet/wallet-history/hooks/ManageWalletHistoryContext.tsx b/src/pages/wallet/wallet-history/hooks/ManageWalletHistoryContext.tsx index c2a99d3..ccc854e 100644 --- a/src/pages/wallet/wallet-history/hooks/ManageWalletHistoryContext.tsx +++ b/src/pages/wallet/wallet-history/hooks/ManageWalletHistoryContext.tsx @@ -6,7 +6,6 @@ import { ColumnDef } from '@tanstack/react-table'; import React, { createContext, useCallback, useMemo, useState } from 'react'; import ListToolbar from '../blocks/ListToolbar'; -// Helper function for number formatting with currency format const formatNumber = (num: number, currencyCode: string = 'USD'): string => { return num.toLocaleString('en-US', { style: 'currency', @@ -79,30 +78,39 @@ const ManageWalletContextProvider = ({ children }: { children: React.ReactNode } const columns = useMemo[]>( () => [ + { + accessorKey: 'id_wallet', + header: ({ column }) => , + enableSorting: false, + enableHiding: false, + meta: { + headerClassName: 'w-[200px]' + } + }, + { + accessorKey: 'name', + header: ({ column }) => , + enableSorting: false, + enableHiding: false, + meta: { + headerClassName: 'w-[200px]', + cellClassName: 'p-[20px]' + } + }, { accessorKey: 'msisdn', header: ({ column }) => , - enableSorting: true, + enableSorting: false, enableHiding: false, meta: { headerClassName: 'w-[550px]', cellClassName: 'p-[20px]' } }, - { - accessorKey: 'id_wallet', - header: ({ column }) => , - enableSorting: false, - enableHiding: true, // Hide this column from view but use it for filtering - meta: { - headerClassName: 'w-[200px]' - } - }, { accessorKey: 'amount', header: ({ column }) => , cell: ({ row }) => { - // Get currency code from the nested data structure if available const currencyCode = row.original.balance_type?.currency?.code || 'USD'; return formatNumber(row.original.amount, currencyCode); }, @@ -127,7 +135,6 @@ const ManageWalletContextProvider = ({ children }: { children: React.ReactNode } accessorKey: 'amount_this_month', header: ({ column }) => , cell: ({ row }) => { - // Get currency code from the nested data structure if available const currencyCode = row.original.balance_type?.currency?.code || 'USD'; return formatNumber(row.original.amount_this_month, currencyCode); }, @@ -213,18 +220,18 @@ const ManageWalletContextProvider = ({ children }: { children: React.ReactNode } const sortField = sorting.length > 0 ? sorting[0].id : 'created_at'; const sortDirection = sorting.length > 0 ? (sorting[0].desc ? 'ASC' : 'DESC') : 'DESC'; - // Initialize filter object let filterParams: any = {}; - // Process filter array if (Array.isArray(filter)) { filter.forEach((f: any) => { - // Handle MSISDN search + if (f.id === 'name' && f.value) { + filterParams.name = { like: `%${f.value.toLowerCase()}%` }; + } + if (f.id === 'msisdn' && f.value) { filterParams.msisdn = { like: `%${f.value.toLowerCase()}%` }; } - // Handle date range filter if (f.id === 'CreatedAt' && f.value?.from && f.value?.to) { filterParams.created_at = { from: `${f.value.from} 00:00:00`, @@ -232,7 +239,6 @@ const ManageWalletContextProvider = ({ children }: { children: React.ReactNode } }; } - // Handle wallet ID filter if (f.id === 'id_wallet' && f.value) { filterParams.id_wallet = f.value; } @@ -247,14 +253,37 @@ const ManageWalletContextProvider = ({ children }: { children: React.ReactNode } order_direction: sortDirection, filter: JSON.stringify(filterParams) }); - + // console.log(response); if (!response || !response.data) { console.warn('No data received:', response); return { data: [], totalCount: 0 }; } - setWallets(response?.data.list); - return { data: response?.data.list, totalCount: response?.data.total_count }; + const walletsResponse = await GetData(`${API_URL_WALLET}/dashboard/wallet/`, { + limit: 100, + page: 1, + with_deleted: false, + order_field: 'created_at', + order_direction: 'ASC' + }); + + const walletsMap = walletsResponse?.data?.list + ? walletsResponse.data.list.reduce((acc: any, wallet: any) => { + acc[wallet.ID] = wallet.name; + return acc; + }, {}) + : {}; + + const enrichedData = response?.data.list.map((item: any) => ({ + ...item, + name: walletsMap[item.id_wallet] || 'Unknown Wallet' + })); + + setWallets(enrichedData); + return { + data: enrichedData, + totalCount: response?.data.total_count + }; } catch (error) { console.error('Error fetching Wallet', error); return { data: [], totalCount: 0 }; @@ -293,4 +322,4 @@ const ManageWalletContextProvider = ({ children }: { children: React.ReactNode } }; export { ManageWalletContext, ManageWalletContextProvider }; -export type { WalletProps }; \ No newline at end of file +export type { WalletProps }; From a0983b9ef59bcee94ce4c30c1f4d5da7d37d42b9 Mon Sep 17 00:00:00 2001 From: wayanrivan Date: Mon, 12 May 2025 21:11:48 +0700 Subject: [PATCH 02/10] update --- .../history-transaction/blocks/DetailTransaction.tsx | 2 ++ .../transaction/history-transaction/blocks/ListToolbar.tsx | 1 + .../history-transaction/hooks/TransactionContext.tsx | 1 + 3 files changed, 4 insertions(+) diff --git a/src/pages/transaction/history-transaction/blocks/DetailTransaction.tsx b/src/pages/transaction/history-transaction/blocks/DetailTransaction.tsx index 2862059..0736560 100644 --- a/src/pages/transaction/history-transaction/blocks/DetailTransaction.tsx +++ b/src/pages/transaction/history-transaction/blocks/DetailTransaction.tsx @@ -281,6 +281,8 @@ const DetailTransaction = () => { kind = 'TOP UP'; } else if (transactionDetails?.kind === 'R') { kind = 'RETURN'; + }else if (transactionDetails?.kind === 'E') { + kind = 'REWARD'; } return kind; })()} diff --git a/src/pages/transaction/history-transaction/blocks/ListToolbar.tsx b/src/pages/transaction/history-transaction/blocks/ListToolbar.tsx index ef55958..342c24e 100644 --- a/src/pages/transaction/history-transaction/blocks/ListToolbar.tsx +++ b/src/pages/transaction/history-transaction/blocks/ListToolbar.tsx @@ -177,6 +177,7 @@ const ListToolbar = () => { TOP UP RETURN TOP UP PARTNER + REWARD diff --git a/src/pages/transaction/history-transaction/hooks/TransactionContext.tsx b/src/pages/transaction/history-transaction/hooks/TransactionContext.tsx index 5332a60..f0f679a 100644 --- a/src/pages/transaction/history-transaction/hooks/TransactionContext.tsx +++ b/src/pages/transaction/history-transaction/hooks/TransactionContext.tsx @@ -77,6 +77,7 @@ const TransactionProvider = ({ children }: { children: React.ReactNode }) => { case 'U': return 'TOP UP'; case 'R': return 'RETURN'; case 'N': return 'TOP UP PARTNER'; + case 'R': return 'REWARD'; default: return '_'; } }, From 2dcff774f12566f646962951a290af2494307399 Mon Sep 17 00:00:00 2001 From: bagusajisaputroo Date: Mon, 12 May 2025 21:13:51 +0700 Subject: [PATCH 03/10] add "E" on status kind transfertype --- src/pages/transfer/transfertype/blocks/AddDialog.tsx | 1 + src/pages/transfer/transfertype/blocks/EditDialog.tsx | 1 + .../transfer/transfertype/hooks/ManageTransferTypeContext.tsx | 3 ++- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/pages/transfer/transfertype/blocks/AddDialog.tsx b/src/pages/transfer/transfertype/blocks/AddDialog.tsx index e164a1b..2c4ec65 100644 --- a/src/pages/transfer/transfertype/blocks/AddDialog.tsx +++ b/src/pages/transfer/transfertype/blocks/AddDialog.tsx @@ -559,6 +559,7 @@ const AddDialog = () => { Withdraw Top Up Top Up Patner + Reward {errors.status_kind && ( diff --git a/src/pages/transfer/transfertype/blocks/EditDialog.tsx b/src/pages/transfer/transfertype/blocks/EditDialog.tsx index 1fd1936..cf761c8 100644 --- a/src/pages/transfer/transfertype/blocks/EditDialog.tsx +++ b/src/pages/transfer/transfertype/blocks/EditDialog.tsx @@ -757,6 +757,7 @@ const EditDialog = () => { Withdraw Top Up Top Up Patner + Reward {errors.status_kind && ( diff --git a/src/pages/transfer/transfertype/hooks/ManageTransferTypeContext.tsx b/src/pages/transfer/transfertype/hooks/ManageTransferTypeContext.tsx index afb3628..1614b59 100644 --- a/src/pages/transfer/transfertype/hooks/ManageTransferTypeContext.tsx +++ b/src/pages/transfer/transfertype/hooks/ManageTransferTypeContext.tsx @@ -276,7 +276,8 @@ const ManageTransferTypeContextProvider = ({ children }: { children: React.React P: { label: 'Purchase', className: 'bg-green-100 text-green-600' }, W: { label: 'Withdraw', className: 'bg-fuchsia-100 text-fuchsia-600' }, U: { label: 'Top Up', className: 'bg-yellow-100 text-yellow-600' }, - N: { label: 'Top Up Patner', className: 'bg-purple-100 text-purple-600' } + N: { label: 'Top Up Patner', className: 'bg-purple-100 text-purple-600' }, + E: {label: 'Reward', className: 'bg-rose-100 text-rose-600'} }; const kindInfo = mapping[kind] || { From 971e80a20c09646d32dd826a078083513b384989 Mon Sep 17 00:00:00 2001 From: wayanrivan Date: Mon, 12 May 2025 21:14:19 +0700 Subject: [PATCH 04/10] update --- .../approval-transaction/blocks/DetailApprovalTransaction.tsx | 4 ++++ .../history-transaction/blocks/DetailTransaction.tsx | 2 ++ 2 files changed, 6 insertions(+) diff --git a/src/pages/transaction/approval-transaction/blocks/DetailApprovalTransaction.tsx b/src/pages/transaction/approval-transaction/blocks/DetailApprovalTransaction.tsx index 319d75f..53541be 100644 --- a/src/pages/transaction/approval-transaction/blocks/DetailApprovalTransaction.tsx +++ b/src/pages/transaction/approval-transaction/blocks/DetailApprovalTransaction.tsx @@ -261,6 +261,8 @@ const DetailApprovalTransaction = () => { kind = 'TOP UP'; } else if (transactionDetails?.kind === 'R') { kind = 'RETURN'; + }else if (transactionDetails?.kind === 'E') { + kind = 'REWARD'; } return kind; })()} @@ -445,6 +447,8 @@ const DetailApprovalTransaction = () => { kind = 'TOP UP'; } else if (transactionDetails?.kind === 'R') { kind = 'RETURN'; + }else if (transactionDetails?.kind === 'E') { + kind = 'REWARD'; } return kind; })()} diff --git a/src/pages/transaction/history-transaction/blocks/DetailTransaction.tsx b/src/pages/transaction/history-transaction/blocks/DetailTransaction.tsx index 0736560..b03adce 100644 --- a/src/pages/transaction/history-transaction/blocks/DetailTransaction.tsx +++ b/src/pages/transaction/history-transaction/blocks/DetailTransaction.tsx @@ -463,6 +463,8 @@ const DetailTransaction = () => { kind = 'TOP UP'; } else if (transactionDetails?.kind === 'R') { kind = 'RETURN'; + }else if (transactionDetails?.kind === 'E') { + kind = 'REWARD'; } return kind; })()} From fd56025c47f1563da1ce05a7c1ef6a4a2cdc3c41 Mon Sep 17 00:00:00 2001 From: wayanrivan Date: Mon, 12 May 2025 22:02:05 +0700 Subject: [PATCH 05/10] update --- .../history-transaction/blocks/DetailTransaction.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pages/transaction/history-transaction/blocks/DetailTransaction.tsx b/src/pages/transaction/history-transaction/blocks/DetailTransaction.tsx index b03adce..6a9dd4f 100644 --- a/src/pages/transaction/history-transaction/blocks/DetailTransaction.tsx +++ b/src/pages/transaction/history-transaction/blocks/DetailTransaction.tsx @@ -338,7 +338,7 @@ const DetailTransaction = () => { )} - {/* {activeTab === 'detail' && transactionDetails?.kind === 'P' && ( */} + {activeTab === 'detail' && (

Product Information @@ -391,7 +391,7 @@ const DetailTransaction = () => {

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

Full Name

-

{transactionDetails?.origin_customer?.fullname ?? transactionDetails?.origin_customer?.origin_name}

+

{transactionDetails?.origin_customer?.origin_name}

Phone Number

-

{transactionDetails?.origin_customer?.msisdn ?? transactionDetails?.origin_msisdn}

+

{transactionDetails?.origin_msisdn}

Email

From 02fbcbc42ec107927706bc98b09b238789de8480 Mon Sep 17 00:00:00 2001 From: wayanrivan Date: Mon, 12 May 2025 22:03:45 +0700 Subject: [PATCH 06/10] update --- .../history-transaction/hooks/TransactionContext.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/transaction/history-transaction/hooks/TransactionContext.tsx b/src/pages/transaction/history-transaction/hooks/TransactionContext.tsx index f0f679a..bfd2355 100644 --- a/src/pages/transaction/history-transaction/hooks/TransactionContext.tsx +++ b/src/pages/transaction/history-transaction/hooks/TransactionContext.tsx @@ -77,7 +77,7 @@ const TransactionProvider = ({ children }: { children: React.ReactNode }) => { case 'U': return 'TOP UP'; case 'R': return 'RETURN'; case 'N': return 'TOP UP PARTNER'; - case 'R': return 'REWARD'; + case 'E': return 'REWARD'; default: return '_'; } }, From 2ef9c8a4e43c5268c535cee15ccdccb7e09835bb Mon Sep 17 00:00:00 2001 From: wayanrivan Date: Mon, 12 May 2025 22:06:44 +0700 Subject: [PATCH 07/10] update dashboard --- src/pages/dashboards/home/blocks/TransactionPieChart.tsx | 1 + src/pages/dashboards/home/blocks/TransactionValue.tsx | 3 +++ 2 files changed, 4 insertions(+) diff --git a/src/pages/dashboards/home/blocks/TransactionPieChart.tsx b/src/pages/dashboards/home/blocks/TransactionPieChart.tsx index 5e2f3b5..904b962 100644 --- a/src/pages/dashboards/home/blocks/TransactionPieChart.tsx +++ b/src/pages/dashboards/home/blocks/TransactionPieChart.tsx @@ -43,6 +43,7 @@ const TransactionPieChart = ({ startdate, enddate }: Props) => { { name: 'Purchase', value: parseFloat((responseTransactionValue?.data?.P ?? 0).toFixed(2)), color: '#baf7c5' }, { name: 'Withdraw', value: parseFloat((responseTransactionValue?.data?.W ?? 0).toFixed(2)), color: '#f56565' }, { name: 'Top Up Partner', value: parseFloat((responseTransactionValue?.data?.N ?? 0).toFixed(2)), color: '#f7fa52' }, + { name: 'Reward', value: parseFloat((responseTransactionValue?.data?.E ?? 0).toFixed(2)), color: '#f7fa52' }, ]; return ( diff --git a/src/pages/dashboards/home/blocks/TransactionValue.tsx b/src/pages/dashboards/home/blocks/TransactionValue.tsx index 5c69564..451decc 100644 --- a/src/pages/dashboards/home/blocks/TransactionValue.tsx +++ b/src/pages/dashboards/home/blocks/TransactionValue.tsx @@ -64,6 +64,9 @@ const TransactionValue = ({ startdate, enddate }: Props) => { case "N": type = "Top Up Partner"; break; + case "E": + type = "Reward"; + break; default: type = "Unknown"; break; From 8dca6c875eeddef69bdb52f05de7d383be46f07b Mon Sep 17 00:00:00 2001 From: bagusajisaputroo Date: Mon, 12 May 2025 22:19:04 +0700 Subject: [PATCH 08/10] fix group name on wallet history --- .../hooks/ManageWalletHistoryContext.tsx | 27 +++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/src/pages/wallet/wallet-history/hooks/ManageWalletHistoryContext.tsx b/src/pages/wallet/wallet-history/hooks/ManageWalletHistoryContext.tsx index ccc854e..2a7a907 100644 --- a/src/pages/wallet/wallet-history/hooks/ManageWalletHistoryContext.tsx +++ b/src/pages/wallet/wallet-history/hooks/ManageWalletHistoryContext.tsx @@ -192,8 +192,7 @@ const ManageWalletContextProvider = ({ children }: { children: React.ReactNode } } }, { - accessorFn: (row) => row.group.name, - id: 'group_name', + accessorKey: 'group_name', header: ({ column }) => , enableSorting: false, enableHiding: false, @@ -253,12 +252,13 @@ const ManageWalletContextProvider = ({ children }: { children: React.ReactNode } order_direction: sortDirection, filter: JSON.stringify(filterParams) }); - // console.log(response); + if (!response || !response.data) { console.warn('No data received:', response); return { data: [], totalCount: 0 }; } + // Fetch wallets to map wallet names const walletsResponse = await GetData(`${API_URL_WALLET}/dashboard/wallet/`, { limit: 100, page: 1, @@ -267,6 +267,15 @@ const ManageWalletContextProvider = ({ children }: { children: React.ReactNode } order_direction: 'ASC' }); + // Fetch groups to map group names + const groupsResponse = await GetData(`${API_URL_WALLET}/dashboard/group/`, { + limit: 100, + page: 1, + with_deleted: false, + order_field: 'created_at', + order_direction: 'ASC' + }); + const walletsMap = walletsResponse?.data?.list ? walletsResponse.data.list.reduce((acc: any, wallet: any) => { acc[wallet.ID] = wallet.name; @@ -274,9 +283,17 @@ const ManageWalletContextProvider = ({ children }: { children: React.ReactNode } }, {}) : {}; + const groupsMap = groupsResponse?.data?.list + ? groupsResponse.data.list.reduce((acc: any, group: any) => { + acc[group.ID] = group.name; + return acc; + }, {}) + : {}; + const enrichedData = response?.data.list.map((item: any) => ({ ...item, - name: walletsMap[item.id_wallet] || 'Unknown Wallet' + name: walletsMap[item.id_wallet] || 'Unknown Wallet', + group_name: groupsMap[item.id_group] || 'Unknown Group' })); setWallets(enrichedData); @@ -322,4 +339,4 @@ const ManageWalletContextProvider = ({ children }: { children: React.ReactNode } }; export { ManageWalletContext, ManageWalletContextProvider }; -export type { WalletProps }; +export type { WalletProps }; \ No newline at end of file From f81c28b843a6b6ce02ab4c4e2d7515c9169bd218 Mon Sep 17 00:00:00 2001 From: bagusajisaputroo Date: Mon, 12 May 2025 22:19:35 +0700 Subject: [PATCH 09/10] update wallet history --- .../wallet/wallet-history/hooks/ManageWalletHistoryContext.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/pages/wallet/wallet-history/hooks/ManageWalletHistoryContext.tsx b/src/pages/wallet/wallet-history/hooks/ManageWalletHistoryContext.tsx index 2a7a907..71d4d39 100644 --- a/src/pages/wallet/wallet-history/hooks/ManageWalletHistoryContext.tsx +++ b/src/pages/wallet/wallet-history/hooks/ManageWalletHistoryContext.tsx @@ -258,7 +258,6 @@ const ManageWalletContextProvider = ({ children }: { children: React.ReactNode } return { data: [], totalCount: 0 }; } - // Fetch wallets to map wallet names const walletsResponse = await GetData(`${API_URL_WALLET}/dashboard/wallet/`, { limit: 100, page: 1, @@ -267,7 +266,6 @@ const ManageWalletContextProvider = ({ children }: { children: React.ReactNode } order_direction: 'ASC' }); - // Fetch groups to map group names const groupsResponse = await GetData(`${API_URL_WALLET}/dashboard/group/`, { limit: 100, page: 1, From 75dfe1b59ff54f52b1cbc59c583749580296fbaf Mon Sep 17 00:00:00 2001 From: bagusajisaputroo Date: Tue, 13 May 2025 02:03:25 +0700 Subject: [PATCH 10/10] fixing currency field on wallet history --- .../hooks/ManageWalletHistoryContext.tsx | 90 ++++++++++++------- 1 file changed, 57 insertions(+), 33 deletions(-) diff --git a/src/pages/wallet/wallet-history/hooks/ManageWalletHistoryContext.tsx b/src/pages/wallet/wallet-history/hooks/ManageWalletHistoryContext.tsx index 71d4d39..84a7a5f 100644 --- a/src/pages/wallet/wallet-history/hooks/ManageWalletHistoryContext.tsx +++ b/src/pages/wallet/wallet-history/hooks/ManageWalletHistoryContext.tsx @@ -6,10 +6,8 @@ import { ColumnDef } from '@tanstack/react-table'; import React, { createContext, useCallback, useMemo, useState } from 'react'; import ListToolbar from '../blocks/ListToolbar'; -const formatNumber = (num: number, currencyCode: string = 'USD'): string => { +const formatNumber = (num: number): string => { return num.toLocaleString('en-US', { - style: 'currency', - currency: currencyCode, minimumFractionDigits: 2, maximumFractionDigits: 2 }); @@ -110,10 +108,7 @@ const ManageWalletContextProvider = ({ children }: { children: React.ReactNode } { accessorKey: 'amount', header: ({ column }) => , - cell: ({ row }) => { - const currencyCode = row.original.balance_type?.currency?.code || 'USD'; - return formatNumber(row.original.amount, currencyCode); - }, + cell: ({ row }) => formatNumber(row.original.amount), enableSorting: false, enableHiding: false, meta: { @@ -134,10 +129,7 @@ const ManageWalletContextProvider = ({ children }: { children: React.ReactNode } { accessorKey: 'amount_this_month', header: ({ column }) => , - cell: ({ row }) => { - const currencyCode = row.original.balance_type?.currency?.code || 'USD'; - return formatNumber(row.original.amount_this_month, currencyCode); - }, + cell: ({ row }) => formatNumber(row.original.amount_this_month), enableSorting: false, enableHiding: false, meta: { @@ -161,19 +153,18 @@ const ManageWalletContextProvider = ({ children }: { children: React.ReactNode } headerClassName: 'w-[200px]' } }, + // { + // accessorFn: (row) => row.balance_type?.name, + // id: 'balance_type_name', + // header: ({ column }) => , + // enableSorting: false, + // enableHiding: false, + // meta: { + // headerClassName: 'w-[200px]' + // } + // }, { - accessorFn: (row) => row.balance_type.name, - id: 'balance_type_name', - header: ({ column }) => , - enableSorting: false, - enableHiding: false, - meta: { - headerClassName: 'w-[200px]' - } - }, - { - accessorFn: (row) => row.balance_type.currency.name, - id: 'currency_name', + accessorKey: 'currency_name', header: ({ column }) => , enableSorting: false, enableHiding: false, @@ -182,8 +173,7 @@ const ManageWalletContextProvider = ({ children }: { children: React.ReactNode } } }, { - accessorFn: (row) => row.balance_type.currency.code, - id: 'currency_code', + accessorKey: 'currency_code', header: ({ column }) => , enableSorting: false, enableHiding: false, @@ -201,7 +191,7 @@ const ManageWalletContextProvider = ({ children }: { children: React.ReactNode } } }, { - accessorFn: (row) => row.group.is_bank, + accessorFn: (row) => row.group?.is_bank, id: 'is_bank', header: ({ column }) => , enableSorting: false, @@ -274,9 +264,20 @@ const ManageWalletContextProvider = ({ children }: { children: React.ReactNode } order_direction: 'ASC' }); + const currenciesResponse = await GetData(`${API_URL_WALLET}/dashboard/currency/`, { + limit: 100, + page: 1, + with_deleted: false, + order_field: 'created_at', + order_direction: 'ASC' + }); + const walletsMap = walletsResponse?.data?.list ? walletsResponse.data.list.reduce((acc: any, wallet: any) => { - acc[wallet.ID] = wallet.name; + acc[wallet.ID] = { + name: wallet.name, + id_currency: wallet.id_currency + }; return acc; }, {}) : {}; @@ -288,11 +289,34 @@ const ManageWalletContextProvider = ({ children }: { children: React.ReactNode } }, {}) : {}; - const enrichedData = response?.data.list.map((item: any) => ({ - ...item, - name: walletsMap[item.id_wallet] || 'Unknown Wallet', - group_name: groupsMap[item.id_group] || 'Unknown Group' - })); + const currenciesMap = currenciesResponse?.data?.list + ? currenciesResponse.data.list.reduce((acc: any, currency: any) => { + acc[currency.ID] = { + name: currency.name, + code: currency.code + }; + return acc; + }, {}) + : {}; + + const enrichedData = response?.data.list.map((item: any) => { + const walletInfo = walletsMap[item.id_wallet] || { + name: 'Unknown Wallet', + id_currency: null + }; + const currencyInfo = currenciesMap[walletInfo.id_currency] || { + name: 'Unknown Currency', + code: 'USD' + }; + + return { + ...item, + name: walletInfo.name, + group_name: groupsMap[item.id_group] || 'Unknown Group', + currency_name: currencyInfo.name, + currency_code: currencyInfo.code + }; + }); setWallets(enrichedData); return { @@ -337,4 +361,4 @@ const ManageWalletContextProvider = ({ children }: { children: React.ReactNode } }; export { ManageWalletContext, ManageWalletContextProvider }; -export type { WalletProps }; \ No newline at end of file +export type { WalletProps };