diff --git a/src/pages/settings/user/manage-user/blocks/EditDialog.tsx b/src/pages/settings/user/manage-user/blocks/EditDialog.tsx
index ecf99cd..a18ec29 100644
--- a/src/pages/settings/user/manage-user/blocks/EditDialog.tsx
+++ b/src/pages/settings/user/manage-user/blocks/EditDialog.tsx
@@ -153,9 +153,9 @@ const EditDialog = () => {
email: response.data.email,
id_role: response.data.idRole,
status: response.data.status,
- customerid: response.data.customerid
+ customerid: response.data.customer.id
}));
- // console.log('Customer ID dari user detail:', response.data.customerid);
+ // console.log('Customer ID from API:', response?.data.customerid);
} else {
setFormField((prev) => ({
...prev,
@@ -170,16 +170,6 @@ const EditDialog = () => {
// console.log('Fetched ID Role:', response?.data.id_role);
}, []);
- useEffect(() => {
- if (selectedUser) {
- doFetchUserData(selectedUser);
- }
- }, [selectedUser]);
-
- useEffect(() => {
- getCustomerList([{ id: 'id', desc: false }]);
- }, []);
-
useEffect(() => {
if (showEditDialog === false) {
resetForm();
@@ -188,6 +178,7 @@ const EditDialog = () => {
useEffect(() => {
const fetchAllData = async () => {
+ await getCustomerList([{ id: 'id', desc: false }]);
await doFetchUserRole([{ id: 'name', desc: false }]);
if (selectedUser) {
await doFetchUserData(selectedUser);
diff --git a/src/pages/settings/user/manage-user/blocks/ListToolBar.tsx b/src/pages/settings/user/manage-user/blocks/ListToolBar.tsx
index 70eb5be..2e76deb 100644
--- a/src/pages/settings/user/manage-user/blocks/ListToolBar.tsx
+++ b/src/pages/settings/user/manage-user/blocks/ListToolBar.tsx
@@ -15,7 +15,7 @@ const ListToolBar = () => {
table.getColumn('username')?.setFilterValue(event.target.value)
diff --git a/src/pages/settings/user/manage-user/hooks/ManageUserContext.tsx b/src/pages/settings/user/manage-user/hooks/ManageUserContext.tsx
index 31c3c48..2e2b2dd 100644
--- a/src/pages/settings/user/manage-user/hooks/ManageUserContext.tsx
+++ b/src/pages/settings/user/manage-user/hooks/ManageUserContext.tsx
@@ -78,7 +78,7 @@ const ManageUserContextProvider = ({ children }: { children: React.ReactNode })
const columns = useMemo[]>(
() => [
{
- accessorFn: (row) => row.username,
+ accessorKey: 'username',
id: 'username',
header: ({ column }) => ,
enableSorting: true,
@@ -88,27 +88,27 @@ const ManageUserContextProvider = ({ children }: { children: React.ReactNode })
accessorFn: (row) => row.customer?.username,
id: 'customer',
header: ({ column }) => ,
- enableSorting: false,
+ enableSorting: true,
enableHiding: false,
meta: {
headerClassName: 'w-[300px]'
}
},
{
- accessorFn: (row) => row.email,
+ accessorKey: 'email',
id: 'email',
header: ({ column }) => ,
- enableSorting: false,
+ enableSorting: true,
enableHiding: false,
meta: {
headerClassName: 'w-[350px]'
}
},
{
- accessorFn: (row) => row.name,
+ accessorKey: 'name',
id: 'name',
header: ({ column }) => ,
- enableSorting: false,
+ enableSorting: true,
enableHiding: false,
meta: {
headerClassName: 'w-[250px]'
@@ -118,7 +118,7 @@ const ManageUserContextProvider = ({ children }: { children: React.ReactNode })
accessorFn: (row) => row.role.name,
id: 'role_name',
header: ({ column }) => ,
- enableSorting: false,
+ enableSorting: true,
enableHiding: false,
cell: (data: any) => {
const { role } = data.row.original;
@@ -132,7 +132,7 @@ const ManageUserContextProvider = ({ children }: { children: React.ReactNode })
}
},
{
- accessorFn: (row) => row.status,
+ accessorKey: 'status',
id: 'status',
header: ({ column }) => ,
enableSorting: false,
@@ -190,18 +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;
+
+ // 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';
+
+ acc[key] = curr.value.toLowerCase();
+ return acc;
+ }, {});
+
sorting = sorting.length == 0 ? [{ id: 'Users.username', desc: false }] : sorting;
- filter = filter.length == 0 ? {} : { any: filter[0].value.toLowerCase() };
+ filter = Object.keys(mappedFilter).length === 0 ? {} : mappedFilter;
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 ? 'ASC' : 'DESC',
+ order_direction: sorting[0].desc === false ? 'DESC' : 'ASC',
filter: JSON.stringify(filter)
});
// console.log('response api:', response);
-
return { data: response?.data.list, totalCount: response?.data.total_count };
};
@@ -228,9 +241,10 @@ const ManageUserContextProvider = ({ children }: { children: React.ReactNode })
layout={{ card: true }}
sorting={[{ id: 'Users.username', desc: false }]}
serverSide={true}
- onFetchData={({ pageIndex, pageSize, sorting, columnFilters }) =>
- doGetListData(pageIndex, pageSize, sorting, columnFilters)
- }
+ onFetchData={({ pageIndex, pageSize, sorting, columnFilters }) => {
+ // console.log('FILTER SENT:', columnFilters);
+ return doGetListData(pageIndex, pageSize, sorting, columnFilters);
+ }}
>
{children}