fix field Wallet and Wallet Rule

- sync form field with response field
- sync group with wallet on create Wallet Rule
This commit is contained in:
Wikzyy
2025-04-10 13:55:00 +07:00
parent 07dfcf6074
commit 0c049086e9
3 changed files with 39 additions and 19 deletions

View File

@ -73,7 +73,7 @@ const ManageWalletContextProvider = ({ children }: { children: React.ReactNode }
const columns = useMemo<ColumnDef<any>[]>( const columns = useMemo<ColumnDef<any>[]>(
() => [ () => [
{ {
accessorFn: (row) => row.Wallet_name, accessorFn: (row) => row.name,
id: 'name', id: 'name',
header: ({ column }) => <DataGridColumnHeader title="Name" column={column} />, header: ({ column }) => <DataGridColumnHeader title="Name" column={column} />,
enableSorting: true, enableSorting: true,
@ -83,7 +83,7 @@ const ManageWalletContextProvider = ({ children }: { children: React.ReactNode }
} }
}, },
{ {
accessorFn: (row) => row.Wallet_description, accessorFn: (row) => row.description,
id: 'description', id: 'description',
header: ({ column }) => <DataGridColumnHeader title="Description" column={column} />, header: ({ column }) => <DataGridColumnHeader title="Description" column={column} />,
enableSorting: true, enableSorting: true,
@ -93,13 +93,13 @@ const ManageWalletContextProvider = ({ children }: { children: React.ReactNode }
} }
}, },
{ {
accessorFn: (row) => row.Wallet_status, accessorFn: (row) => row.status,
id: 'status', id: 'status',
header: ({ column }) => <DataGridColumnHeader title="Status" column={column} />, header: ({ column }) => <DataGridColumnHeader title="Status" column={column} />,
enableSorting: true, enableSorting: true,
enableHiding: false, enableHiding: false,
cell: ({ row }) => { cell: ({ row }) => {
const isActive = row.original.Wallet_status === 'Y'; const isActive = row.original.status === 'Y';
return ( return (
<span <span
@ -155,7 +155,7 @@ const ManageWalletContextProvider = ({ children }: { children: React.ReactNode }
order_direction: sorting[0].desc == false ? 'ASC' : 'DESC', order_direction: sorting[0].desc == false ? 'ASC' : 'DESC',
filter: JSON.stringify(filter) filter: JSON.stringify(filter)
}); });
// console.log(response?.data); console.log(response?.data);
setWallets(response?.data.list); setWallets(response?.data.list);
return { data: response?.data.list, totalCount: response?.data.total_count }; return { data: response?.data.list, totalCount: response?.data.total_count };
} catch (error) { } catch (error) {
@ -183,7 +183,7 @@ const ManageWalletContextProvider = ({ children }: { children: React.ReactNode }
pagination={{ size: 25 }} pagination={{ size: 25 }}
toolbar={<ListToolbar />} toolbar={<ListToolbar />}
layout={{ card: true }} layout={{ card: true }}
sorting={[{ id: 'created_at', desc: true }]} sorting={[{ id: 'wallets.created_at', desc: true }]}
serverSide={true} serverSide={true}
onFetchData={({ pageIndex, pageSize, sorting, columnFilters }) => onFetchData={({ pageIndex, pageSize, sorting, columnFilters }) =>
getWalletLists(pageIndex, pageSize, sorting, columnFilters) getWalletLists(pageIndex, pageSize, sorting, columnFilters)

View File

@ -40,14 +40,24 @@ interface GroupProps {
status: string; status: string;
} }
interface WalletProps { interface WalletGroupProps {
ID: string; id: string;
name: string; name: string;
id_currency: string; description: string;
status: string; status: string;
} }
interface WalletProps {
id: string;
name: string;
id_currency: string;
status: string;
group: WalletGroupProps[];
}
const API_URL_WALLET = apiConfig.service_wallet; const API_URL_WALLET = apiConfig.service_wallet;
const API_URL_MASTERDATA = apiConfig.service_master_data;
const AddDialog = () => { const AddDialog = () => {
const { showAddDialog, handleAddDialog, selectedWalletRule } = useManageWalletRuleContext(); const { showAddDialog, handleAddDialog, selectedWalletRule } = useManageWalletRuleContext();
const { reload } = useDataGrid(); const { reload } = useDataGrid();
@ -143,7 +153,7 @@ const AddDialog = () => {
const getWalletLists = async (sorting: any) => { const getWalletLists = async (sorting: any) => {
try { try {
const response = await GetData(`${API_URL_WALLET}/dashboard/wallet`, { const response = await GetData(`${API_URL_MASTERDATA}/wallet/list`, {
limit: 100, limit: 100,
page: 1, page: 1,
with_deleted: false, with_deleted: false,
@ -158,8 +168,11 @@ const AddDialog = () => {
} }
}; };
const selectedWallet = wallets.find((wallet) => wallet.id === formField.id_wallet);
const filteredGroups = selectedWallet ? selectedWallet.group : [];
useEffect(() => { useEffect(() => {
getWalletLists([{ id: 'name', desc: false }]); getWalletLists([{ id: 'wallets.name', desc: false }]);
getGroupLists([{ id: 'name', desc: false }]); getGroupLists([{ id: 'name', desc: false }]);
}, []); }, []);
@ -193,14 +206,16 @@ const AddDialog = () => {
</label> </label>
<Select <Select
value={formField.id_wallet} value={formField.id_wallet}
onValueChange={(value) => setFormField({ ...formField, id_wallet: value })} onValueChange={(value) =>
setFormField({ ...formField, id_wallet: value, id_group: '' })
}
> >
<SelectTrigger> <SelectTrigger>
<SelectValue placeholder="Select Wallet Type" /> <SelectValue placeholder="Select Wallet Type" />
</SelectTrigger> </SelectTrigger>
<SelectContent> <SelectContent>
{wallets.map((wallet) => ( {wallets.map((wallet) => (
<SelectItem key={wallet.ID} value={wallet.ID}> <SelectItem key={wallet.id} value={wallet.id}>
{wallet.name} {wallet.name}
</SelectItem> </SelectItem>
))} ))}
@ -217,16 +232,21 @@ const AddDialog = () => {
<Select <Select
value={formField.id_group} value={formField.id_group}
onValueChange={(value) => setFormField({ ...formField, id_group: value })} onValueChange={(value) => setFormField({ ...formField, id_group: value })}
disabled={filteredGroups.length === 0}
> >
<SelectTrigger> <SelectTrigger>
<SelectValue placeholder="Select Group Type" /> <SelectValue placeholder="Select Group Type" />
</SelectTrigger> </SelectTrigger>
<SelectContent> <SelectContent>
{groups.map((group) => ( {filteredGroups.length > 0 ? (
<SelectItem key={group.ID} value={group.ID}> filteredGroups.map((group) => (
{group.name} <SelectItem key={group.id} value={group.id}>
</SelectItem> {group.name}
))} </SelectItem>
))
) : (
<SelectItem value="empty">No groups available</SelectItem>
)}
</SelectContent> </SelectContent>
</Select> </Select>
</div> </div>

View File

@ -222,7 +222,7 @@ const ManageWalletRuleContextProvider = ({ children }: { children: React.ReactNo
order_direction: sorting[0].desc == false ? 'ASC' : 'DESC', order_direction: sorting[0].desc == false ? 'ASC' : 'DESC',
filter: JSON.stringify(filter) filter: JSON.stringify(filter)
}); });
console.log(response?.data); // console.log(response?.data);
setWalletRules(response?.data.list); setWalletRules(response?.data.list);
return { data: response?.data.list, totalCount: response?.data.total_count }; return { data: response?.data.list, totalCount: response?.data.total_count };
} catch (error) { } catch (error) {