import api from '..'; const ACCOUNTS_API = 'users'; export const accountsApi = api.injectEndpoints({ endpoints: (build) => ({ getStatistics: build.query, void>({ query: () => ({ url: `${ACCOUNTS_API}/statistics`, method: 'GET', }), providesTags: ['users', 'teachers', 'courses', 'orders'], }), getUsersByAdmin: build.query, void>({ query: () => ({ url: `${ACCOUNTS_API}`, method: 'GET', }), providesTags: ['users'], }), getTachersBySchool: build.query, number>({ query: (school_id) => ({ url: `${ACCOUNTS_API}/teachers/${school_id}`, method: 'GET', }), providesTags: ['teachers', 'users'], }), getSchools: build.query, void>({ query: () => ({ url: `${ACCOUNTS_API}/schools`, method: 'GET', }), providesTags: ['users'], }), getTeachers: build.query, void>({ query: () => ({ url: `${ACCOUNTS_API}/teachers`, method: 'GET', }), providesTags: ['users', 'teachers'], }), getInstDesigners: build.query< ResponseI< { user_id: number; firstName: string; lastName: string; inst_designer_id: number; }[] >, void >({ query: () => ({ url: `${ACCOUNTS_API}/instDesigners`, method: 'GET', }), providesTags: ['users'], }), deleteUser: build.mutation< ResponseI, { user_id: number; } >({ query: ({ user_id }) => ({ url: `${ACCOUNTS_API}/${user_id}`, method: 'DELETE', }), invalidatesTags: ['users'], }), deleteTeacher: build.mutation< ResponseI, { teacherId: number; } >({ query: ({ teacherId }) => ({ url: `${ACCOUNTS_API}/teacher/${teacherId}`, method: 'DELETE', }), invalidatesTags: ['users', 'teachers'], }), bulkDeleteUser: build.mutation< ResponseI, { user_ids: number[]; } >({ query: ({ user_ids }) => ({ url: `${ACCOUNTS_API}/bulkDelete`, method: 'POST', body: { userIds: user_ids }, }), invalidatesTags: ['users'], }), bulkDeleteTeachers: build.mutation< ResponseI, { teacherIds: number[]; } >({ query: ({ teacherIds }) => ({ url: `${ACCOUNTS_API}/bulkDelete/teachers`, method: 'POST', body: { teacherIds: teacherIds }, }), invalidatesTags: ['users', 'teachers'], }), getUserById: build.query, number>({ query: (user_id) => ({ url: `${ACCOUNTS_API}/${user_id}`, method: 'GET', }), providesTags: ['users'], }), getTeacherById: build.query, number>({ query: (teacher_id) => ({ url: `${ACCOUNTS_API}/teacher/${teacher_id}`, method: 'GET', }), providesTags: ['users', 'teachers'], }), updateUser: build.mutation< ResponseI, { userId: number; body: UserI; } >({ query: ({ userId, body }) => ({ url: `${ACCOUNTS_API}/${userId}`, method: 'PUT', body: body, }), invalidatesTags: ['users', 'teachers'], }), updateTeacher: build.mutation< ResponseI, { teacherId: number; body: UserI; } >({ query: ({ teacherId, body }) => ({ url: `${ACCOUNTS_API}/teacher/${teacherId}`, method: 'PUT', body: body, }), invalidatesTags: ['users', 'teachers'], }), }), }); export const { useGetUsersByAdminQuery, useGetTachersBySchoolQuery, useBulkDeleteUserMutation, useDeleteUserMutation, useGetSchoolsQuery, useGetUserByIdQuery, useUpdateUserMutation, useUpdateTeacherMutation, useGetTeachersQuery, useGetTeacherByIdQuery, useDeleteTeacherMutation, useBulkDeleteTeachersMutation, useGetInstDesignersQuery, useGetStatisticsQuery, } = accountsApi;