diff --git a/src/pages/settings/user/manage-user/hooks/ManageUserContext.tsx b/src/pages/settings/user/manage-user/hooks/ManageUserContext.tsx
index 2e2b2dd..8b33e36 100644
--- a/src/pages/settings/user/manage-user/hooks/ManageUserContext.tsx
+++ b/src/pages/settings/user/manage-user/hooks/ManageUserContext.tsx
@@ -95,7 +95,7 @@ const ManageUserContextProvider = ({ children }: { children: React.ReactNode })
}
},
{
- accessorKey: 'email',
+ accessorFn: (row) => row.email,
id: 'email',
header: ({ column }) => ,
enableSorting: true,
@@ -105,7 +105,7 @@ const ManageUserContextProvider = ({ children }: { children: React.ReactNode })
}
},
{
- accessorKey: 'name',
+ accessorFn: (row) => row.name,
id: 'name',
header: ({ column }) => ,
enableSorting: true,
@@ -132,7 +132,7 @@ const ManageUserContextProvider = ({ children }: { children: React.ReactNode })
}
},
{
- accessorKey: 'status',
+ accessorFn: (row) => row.status,
id: 'status',
header: ({ column }) => ,
enableSorting: false,
@@ -190,31 +190,31 @@ const ManageUserContextProvider = ({ children }: { children: React.ReactNode })
);
const doGetListData = async (page: number, limit: number, sorting: any, filter: any) => {
- const mappedFilter = filter.reduce((acc: any, curr: any) => {
- let key = curr.id;
+ const USER_TABLE_COLUMNS = ['username', 'email', 'name', 'status'];
- // mapping kolom ke nama kolom lengkap (agar tidak ambigu di backend)
- if (key === 'username') key = 'Users.username';
- if (key === 'customer') key = 'Customers.username';
- if (key === 'role_name') key = 'Roles.name';
- if (key === 'email') key = 'Users.email';
- if (key === 'name') key = 'Users.name';
+ // ➕ Tambahkan prefix ke field dari tabel Users
+ const mappedSorting = sorting.map((sort: any) => ({
+ ...sort,
+ id: USER_TABLE_COLUMNS.includes(sort.id) ? `Users.${sort.id}` : sort.id
+ }));
- acc[key] = curr.value.toLowerCase();
- return acc;
- }, {});
+ const orderField = mappedSorting[0]?.id ?? 'Users.username';
+ const orderDirection = mappedSorting[0]?.desc === false ? 'DESC' : 'ASC';
- sorting = sorting.length == 0 ? [{ id: 'Users.username', desc: false }] : sorting;
- filter = Object.keys(mappedFilter).length === 0 ? {} : mappedFilter;
+ filter =
+ filter.length == 0
+ ? {}
+ : { 'Users.username': { like: `%${filter[0].value?.toLowerCase()}%` } };
const response = await GetData(`${API_URL}/user/list`, {
limit: limit,
page: page + 1,
with_deleted: false,
- order_field: sorting[0].id,
- order_direction: sorting[0].desc === false ? 'DESC' : 'ASC',
+ order_field: orderField,
+ order_direction: orderDirection,
filter: JSON.stringify(filter)
});
// console.log('response api:', response);
+
return { data: response?.data.list, totalCount: response?.data.total_count };
};
@@ -241,10 +241,9 @@ const ManageUserContextProvider = ({ children }: { children: React.ReactNode })
layout={{ card: true }}
sorting={[{ id: 'Users.username', desc: false }]}
serverSide={true}
- onFetchData={({ pageIndex, pageSize, sorting, columnFilters }) => {
- // console.log('FILTER SENT:', columnFilters);
- return doGetListData(pageIndex, pageSize, sorting, columnFilters);
- }}
+ onFetchData={({ pageIndex, pageSize, sorting, columnFilters }) =>
+ doGetListData(pageIndex, pageSize, sorting, columnFilters)
+ }
>
{children}