feat(users): add user evaluation panel with PDF export

Shows the admin a summary of a user's sessions viewed, exam/homework
performance, and current term status, with a PDF export action.
This commit is contained in:
madresebanoo
2026-09-02 15:03:55 +04:30
parent 887eb2589d
commit 052ec8a54f
5 changed files with 411 additions and 0 deletions
+3
View File
@@ -8,6 +8,9 @@ export const apiShowAdminUser = (id) => http.get(buildUrl(endpoints.showUserDeta
export const apiGetAdminUserRegisterData = (id) =>
http.get(buildUrl(endpoints.getUserRegisterData, { id }))
export const apiGetAdminUserEvaluation = (id) =>
http.get(buildUrl(endpoints.getUserEvaluation, { id }))
export const apiAddAdminUser = (payload) => http.post(endpoints.addNewUser, payload)
export const apiUpdateAdminUser = (id, payload) =>
+1
View File
@@ -82,6 +82,7 @@ export const endpoints = {
changeUserStatus: '/admin/users/:id/status',
deleteUser: '/admin/users/:id',
getUserRegisterData: '/admin/users/:id/register-data',
getUserEvaluation: '/admin/users/:id/evaluation',
// ─── Backend-aligned: Terms ────────────────────────────────────────────────
getTermsList: '/terms',
+10
View File
@@ -4,6 +4,7 @@ import {
apiAddAdminUser,
apiChangeAdminUserStatus,
apiDeleteAdminUser,
apiGetAdminUserEvaluation,
apiGetAdminUserRegisterData,
apiGetAdminUsers,
apiShowAdminUser,
@@ -16,6 +17,7 @@ export const adminUsersKeys = {
list: (filters, pagination) => ['admin', 'users', 'list', filters, pagination],
detail: (id) => ['admin', 'users', 'detail', id],
registerData: (id) => ['admin', 'users', 'register-data', id],
evaluation: (id) => ['admin', 'users', 'evaluation', id],
}
export const useAdminUsersListQuery = (filtersRef, paginationRef, options = {}) =>
@@ -59,6 +61,14 @@ export const useAdminUserRegisterDataQuery = (idRef, options = {}) =>
...options,
})
export const useAdminUserEvaluationQuery = (idRef, options = {}) =>
useQuery({
queryKey: ['admin', 'users', 'evaluation', idRef],
queryFn: () => apiGetAdminUserEvaluation(idRef.value),
select: (response) => response?.data ?? response,
...options,
})
export const useAddAdminUserMutation = () =>
useMutation({ mutationFn: (payload) => apiAddAdminUser(payload) })