From 2ebf7c9a0aafc286f68b1cf546a3403bb2b644af Mon Sep 17 00:00:00 2001 From: bagusajisaputroo Date: Sat, 12 Apr 2025 13:23:01 +0700 Subject: [PATCH] Adding permission on update transfertype --- .../transfer/transfertype/TransferType.tsx | 2 +- .../transfertype/blocks/EditDialog.tsx | 36 +++++++++++++------ 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/src/pages/transfer/transfertype/TransferType.tsx b/src/pages/transfer/transfertype/TransferType.tsx index ab79eca..903669e 100644 --- a/src/pages/transfer/transfertype/TransferType.tsx +++ b/src/pages/transfer/transfertype/TransferType.tsx @@ -37,7 +37,7 @@ const TransferType = () => { - {/* */} + diff --git a/src/pages/transfer/transfertype/blocks/EditDialog.tsx b/src/pages/transfer/transfertype/blocks/EditDialog.tsx index db7e391..82a757a 100644 --- a/src/pages/transfer/transfertype/blocks/EditDialog.tsx +++ b/src/pages/transfer/transfertype/blocks/EditDialog.tsx @@ -43,7 +43,7 @@ interface CustomerProps { msisdn: string; } -interface GroupProps { +interface PermissionObject { id: string; name: string; description: string; @@ -56,7 +56,7 @@ const EditDialog = () => { useManageTransferTypeContext(); const { reload } = useDataGrid(); const [wallets, setWallets] = useState([]); - const [groups, setGroups] = useState([]); + const [groups, setGroups] = useState([]); const { GetData, PutData } = useCallApi(); const [isSubmitting, setIsSubmitting] = useState(false); const parsedUser = getAuth()?.user; @@ -215,9 +215,13 @@ const EditDialog = () => { const doUpdateTransferType = useCallback(async () => { try { - const response = await PutData(`${API_URL}/transactiontype/update/${selectedTransferType}`, { - ...formField - }); + // Create a clean copy of the form data with properly formatted permissions + const formDataToSend = { + ...formField, + permission: formField.permission.filter(id => typeof id === 'string') + }; + + const response = await PutData(`${API_URL}/transactiontype/update/${selectedTransferType}`, formDataToSend); if (response?.status) { setAlert({ show: false, message: '' }); @@ -299,7 +303,7 @@ const EditDialog = () => { limit: 100, page: 1, with_deleted: false, - order_field: 'wallets.name', + order_field: 'Wallets.name', order_direction: 'ASC', }); @@ -321,8 +325,21 @@ const EditDialog = () => { const fetchTransactionType = async () => { try { const response = await GetData(`${API_URL}/transactiontype/getdata/${selectedTransferType}`, {}); - + console.log(response); if (response?.status) { + // Process permissions to ensure they're always string IDs + let permissionIds: string[] = []; + + if (Array.isArray(response.data.permission)) { + permissionIds = response.data.permission.map((perm: any) => { + // Check if permission is an object or string + if (typeof perm === 'object' && perm !== null) { + return perm.id; + } + return perm; + }); + } + setFormField((prev) => ({ ...prev, name: response.data.name, @@ -335,7 +352,7 @@ const EditDialog = () => { status_approval: response.data.status_approval, type: response.data.type || '', status: response.data.status, - permission: response.data.permission || [] + permission: permissionIds })); } } catch (error) { @@ -346,14 +363,13 @@ const EditDialog = () => { }); } }; - + const timer = setTimeout(() => { fetchTransactionType(); }, 150); return () => clearTimeout(timer); }, [showEditDialog, selectedTransferType, GetData]); - useEffect(() => { if (showEditDialog === false) { resetForm();