This commit is contained in:
fro1991
2025-02-01 23:51:53 +07:00
parent d216a5bb8c
commit 76d65df562
19 changed files with 56 additions and 70 deletions

View File

@ -47,7 +47,7 @@ const ListToolBar = () => {
if (date?.from && date?.to) {
filters.push({
id: 'user_activity.created_at',
id: 'UserActivities.createdAt',
value: {
from: `${date.from.toISOString().split('T')[0]} 00:00:00`,
to: `${date.to.toISOString().split('T')[0]} 23:59:59`

View File

@ -43,12 +43,12 @@ const LogActivityContextProvider = ({ children }: { children: React.ReactNode })
const columns = useMemo<ColumnDef<any>[]>(
() => [
{
accessorFn: (row) => row.created_at,
id: 'created_at',
accessorFn: (row) => row.createdAt,
id: 'createdAt',
header: ({ column }) => <DataGridColumnHeader title="Timestamp" column={column} />,
enableSorting: true,
enableHiding: false,
cell: ({ row }) => moment(row.original.created_at).format('YYYY-MM-DD HH:mm:ss')
cell: ({ row }) => moment(row.original.createdAt).format('YYYY-MM-DD HH:mm:ss')
},
{
accessorFn: (row) => row.user.username,
@ -116,11 +116,15 @@ const LogActivityContextProvider = ({ children }: { children: React.ReactNode })
all_user = auth.role_name === 'Super Admin';
}
const user = localStorage.getItem('brillian-bri-tl-auth-v1=9.1.1');
console.log('filter :', filter);
const user = localStorage.getItem(
`${import.meta.env.VITE_APP_NAME}-auth-v${import.meta.env.VITE_APP_VERSION}`
);
const parsedUser = user ? JSON.parse(user) : null;
const desc = sorting.length > 0 ? sorting[0].desc : false;
sorting = [{ id: 'user_activity.created_at', desc }];
sorting = [{ id: 'UserActivities.createdAt', desc }];
let dataFilter: any = {};
@ -128,17 +132,17 @@ const LogActivityContextProvider = ({ children }: { children: React.ReactNode })
filter.forEach((f: any) => {
if (f.id === 'username') {
dataFilter['username'] = { like: f.value };
} else if (f.id === 'user_activity.created_at') {
dataFilter['user_activity.created_at'] = f.value;
} else if (f.id === 'UserActivities.createdAt') {
dataFilter['UserActivities.createdAt'] = f.value;
}
});
}
if (!dataFilter['user_activity.created_at']) {
if (!dataFilter['UserActivities.createdAt']) {
const defaultFrom = date?.from || new Date(new Date().setMonth(new Date().getMonth() - 1));
const defaultTo = date?.to || new Date();
dataFilter['user_activity.created_at'] = {
dataFilter['UserActivities.createdAt'] = {
from: `${format(defaultFrom, 'yyyy-MM-dd')} 00:00:00`,
to: `${format(defaultTo, 'yyyy-MM-dd')} 23:59:59`
};
@ -151,7 +155,7 @@ const LogActivityContextProvider = ({ children }: { children: React.ReactNode })
order_field: sorting[0].id,
order_direction: sorting[0].desc === false ? 'ASC' : 'DESC',
filter: JSON.stringify(dataFilter),
all_user: all_user
all_user
});
return { data: response?.data.list, totalCount: response?.data.total_count };
@ -160,39 +164,36 @@ const LogActivityContextProvider = ({ children }: { children: React.ReactNode })
);
const doExportData = async (sorting: any, filter: any) => {
const AUTH_LOCAL_STORAGE_KEY = `${import.meta.env.VITE_APP_NAME}-auth-v${import.meta.env.VITE_APP_VERSION}`;
const user = localStorage.getItem(
`${import.meta.env.VITE_APP_NAME}-auth-v${import.meta.env.VITE_APP_VERSION}`
);
const user = localStorage.getItem(AUTH_LOCAL_STORAGE_KEY);
const parsedUser = user ? JSON.parse(user) : null;
sorting = sorting.length === 0 ? [{ id: 'user_activity.created_at', desc: false }] : sorting;
sorting = sorting.length === 0 ? [{ id: 'UserActivities.createdAt', desc: false }] : sorting;
filter = filter && filter.length > 0 ? filter : [];
const auth = getAuth();
let all_user = false;
if (auth) {
all_user = auth.role_name === 'Super Admin';
}
let dataFilter: any = {};
if (filter && filter.length > 0) {
filter.forEach((f: any) => {
if (f.id === 'username') {
dataFilter['username'] = { like: f.value };
} else if (f.id === 'user_activity.created_at') {
dataFilter['user_activity.created_at'] = f.value;
} else if (f.id === 'UserActivities.createdAt') {
dataFilter['UserActivities.createdAt'] = f.value;
}
});
}
if (!dataFilter['user_activity.created_at']) {
if (!dataFilter['UserActivities.createdAt']) {
const defaultFrom = new Date(new Date().setMonth(new Date().getMonth() - 1));
const defaultTo = new Date();
dataFilter['user_activity.created_at'] = {
dataFilter['UserActivities.createdAt'] = {
from: `${format(defaultFrom, 'yyyy-MM-dd')} 00:00:00`,
to: `${format(defaultTo, 'yyyy-MM-dd')} 23:59:59`
};
}
let order = 'user_activity.created_at';
let order = 'UserActivities.createdAt';
let param = {
all_user: false,
// order_field: sorting[0].id,
@ -208,8 +209,8 @@ const LogActivityContextProvider = ({ children }: { children: React.ReactNode })
GetExportData(url, param, 'user_activity_export_');
const createActivity = {
module: 'Update Pengajuan Kredit',
description: `Export Pengajuan Kredit => Log Activity`,
module: 'Log Activity',
description: `Export => Log Activity`,
action: 'E'
};
doSaveLogActivity(createActivity);
@ -230,7 +231,7 @@ const LogActivityContextProvider = ({ children }: { children: React.ReactNode })
pagination={{ size: 10 }}
toolbar={<ListToolBar />}
layout={{ card: true }}
sorting={[{ id: 'UserActivity.created_at', desc: true }]}
sorting={[{ id: 'UserActivity.createdAt', desc: true }]}
serverSide={true}
onFetchData={({ pageIndex, pageSize, sorting, columnFilters }) =>
doGetListData(pageIndex, pageSize, sorting, columnFilters)

View File

@ -86,8 +86,7 @@ const AddDialog = () => {
const response = await PostData(`${API_URL}/user_role/create`, {
name: formField.name,
roles: selectMenus,
status: 'Y',
application: 'ukln'
status: 'Y'
});
if (response?.status) {
@ -97,7 +96,7 @@ const AddDialog = () => {
reload();
const createActivity = {
module: 'Manage Position',
description: `Create New User => ${formField.name}`,
description: `Create New Position => ${formField.name}`,
action: 'C'
};

View File

@ -1,12 +1,12 @@
import { Container, DataGridInner } from '@/components';
import { EditDialog } from './blocks';
import { ConfigUserContextProvider } from './hooks';
import { ManageUserContextProvider } from './hooks';
import { AddDialog } from './blocks/AddDialog';
import { DeleteDialog } from './blocks/DeleteDialog';
export default function ConfigUserPage() {
return (
<ConfigUserContextProvider>
<ManageUserContextProvider>
<Container>
<div className="grid gap-5 lg:gap-7.5">
<DataGridInner />
@ -15,6 +15,6 @@ export default function ConfigUserPage() {
<AddDialog />
<DeleteDialog />
</Container>
</ConfigUserContextProvider>
</ManageUserContextProvider>
);
}

View File

@ -50,22 +50,9 @@ const EditDialog = () => {
e.preventDefault();
const response = await PutData(`${API_URL}/user/update/${selectedUser}`, {
...formField,
id_role: undefined,
id_role_old: undefined
});
if (response?.status) {
if (formField.id_role_old != '') {
const responseUserDeleteRole = await PutData(
`${API_URL}/user/delete_role/${selectedUser}/${formField.id_role_old}`,
{}
);
}
const responseUserAddRole = await PutData(
`${API_URL}/user/add_role/${selectedUser}/${formField.id_role}`,
{}
);
setAlert((prev) => ({ ...prev, show: false, message: '' }));
handleEditDialog(false, null);
toast.success('Success Update User');
reload();
@ -86,15 +73,15 @@ const EditDialog = () => {
const doFetchUserData = useCallback(async (id: string) => {
const response = await GetData(`${API_URL}/user/detail/${id}`, { id });
if (response?.status) {
let id_role = response.data.roles;
let id_role = response.data.role.id || '';
setFormField((prev) => ({
...prev,
name: response.data.name,
username: response.data.username,
email: response.data.email,
id_role: id_role.length != 0 ? id_role[0].id : '',
id_role_old: id_role.length != 0 ? id_role[0].id : '',
id_role: id_role,
id_role_old: id_role,
status: response.data.status
}));
} else {

View File

@ -45,11 +45,11 @@ const initialProps: ContextProps = {
roles: []
};
const ConfigUserContext = createContext<ContextProps>(initialProps);
const ManageUserContext = createContext<ContextProps>(initialProps);
const API_URL = apiConfig.service_dashboard;
const ConfigUserContextProvider = ({ children }: { children: React.ReactNode }) => {
const ManageUserContextProvider = ({ children }: { children: React.ReactNode }) => {
/* state */
const [showEditDialog, setShowEditDialog] = useState(false);
const [showAddDialog, setShowAddDialog] = useState(false);
@ -104,18 +104,16 @@ const ConfigUserContextProvider = ({ children }: { children: React.ReactNode })
}
},
{
accessorFn: (row) => row.role_name,
accessorFn: (row) => row.role.name,
id: 'role_name',
header: ({ column }) => <DataGridColumnHeader title="Role Name" column={column} />,
enableSorting: false,
enableHiding: false,
cell: (data: any) => {
const { roles } = data.row.original;
const { role } = data.row.original;
console.log('role :', role);
let html = <p className="text-danger italic">Unassigned</p>;
for (let _role of roles) {
html = _role.name;
}
if (role && role.name) html = role.name;
return html;
},
meta: {
@ -214,7 +212,7 @@ const ConfigUserContextProvider = ({ children }: { children: React.ReactNode })
}, [fetchRoles]);
return (
<ConfigUserContext.Provider
<ManageUserContext.Provider
value={{
showEditDialog,
handleEditDialog,
@ -241,9 +239,9 @@ const ConfigUserContextProvider = ({ children }: { children: React.ReactNode })
>
{children}
</DataGridProvider>
</ConfigUserContext.Provider>
</ManageUserContext.Provider>
);
};
export { ConfigUserContextProvider, ConfigUserContext };
export { ManageUserContextProvider, ManageUserContext };
export type { SelectedUser };

View File

@ -0,0 +1,2 @@
export * from './ManageUserContext';
export * from './useManageUserContext';

View File

@ -1,8 +1,8 @@
import { useContext } from 'react';
import { ConfigUserContext } from './ConfigUserContext';
import { ManageUserContext } from './ManageUserContext';
const useUserContext = () => {
const context = useContext(ConfigUserContext);
const context = useContext(ManageUserContext);
if (!context) throw new Error('useUserContext must be used within AuthProvider');

View File

@ -1,2 +0,0 @@
export * from './ConfigUserContext';
export * from './useUserContext';