first commit

This commit is contained in:
sajjadtalkhabi
2026-05-13 01:43:05 +03:30
commit d2a577f254
297 changed files with 36274 additions and 0 deletions
+119
View File
@@ -0,0 +1,119 @@
import { useMutation, useQuery } from '@tanstack/vue-query'
import {
apiAddAdminTerm,
apiAddAdminTermCourses,
apiAddAdminTermStudents,
apiChangeAdminTermStatus,
apiCloneAdminTerm,
apiDeleteAdminTerm,
apiGetAdminTerms,
apiGetAdminTermCourses,
apiGetAdminTermStudents,
apiRemoveAdminTermCourse,
apiRemoveAdminTermStudent,
apiShowAdminTerm,
apiToggleAdminTermStudentLeave,
apiUpdateAdminTerm,
} from '@/services/api/admin-terms'
import { cleanFilters } from '@/utils/clean-filters'
export const adminTermsKeys = {
all: ['admin', 'terms'],
list: (filters, pagination) => ['admin', 'terms', 'list', filters, pagination],
detail: (id) => ['admin', 'terms', 'detail', id],
students: (termId, filters, pagination) => [
'admin',
'terms',
'students',
termId,
filters,
pagination,
],
courses: (termId, filters, pagination) => [
'admin',
'terms',
'courses',
termId,
filters,
pagination,
],
}
export const useAdminTermsListQuery = (filtersRef, paginationRef, options = {}) =>
useQuery({
queryKey: ['admin', 'terms', 'list', filtersRef, paginationRef],
queryFn: () => apiGetAdminTerms({ ...cleanFilters(filtersRef.value), ...paginationRef.value }),
...options,
})
export const useAdminTermQuery = (idRef, options = {}) =>
useQuery({
queryKey: ['admin', 'terms', 'detail', idRef],
queryFn: () => apiShowAdminTerm(idRef.value),
select: (response) => response?.data ?? response,
...options,
})
export const useAddAdminTermMutation = () =>
useMutation({ mutationFn: (payload) => apiAddAdminTerm(payload) })
export const useUpdateAdminTermMutation = () =>
useMutation({ mutationFn: ({ id, payload }) => apiUpdateAdminTerm(id, payload) })
export const useDeleteAdminTermMutation = () =>
useMutation({ mutationFn: (id) => apiDeleteAdminTerm(id) })
export const useCloneAdminTermMutation = () =>
useMutation({ mutationFn: (id) => apiCloneAdminTerm(id) })
export const useChangeAdminTermStatusMutation = () =>
useMutation({ mutationFn: ({ id, payload }) => apiChangeAdminTermStatus(id, payload) })
export const useAdminTermStudentsQuery = (termIdRef, filtersRef, paginationRef, options = {}) =>
useQuery({
queryKey: ['admin', 'terms', 'students', termIdRef, filtersRef, paginationRef],
queryFn: () =>
apiGetAdminTermStudents(termIdRef.value, {
...cleanFilters(filtersRef.value),
...paginationRef.value,
}),
...options,
})
export const useAddAdminTermStudentsMutation = () =>
useMutation({
mutationFn: ({ termId, payload }) => apiAddAdminTermStudents(termId, payload),
})
export const useRemoveAdminTermStudentMutation = () =>
useMutation({
mutationFn: ({ termId, userId }) => apiRemoveAdminTermStudent(termId, userId),
})
export const useToggleAdminTermStudentLeaveMutation = () =>
useMutation({
mutationFn: ({ termId, userId, payload }) =>
apiToggleAdminTermStudentLeave(termId, userId, payload),
})
export const useAdminTermCoursesQuery = (termIdRef, filtersRef, paginationRef, options = {}) =>
useQuery({
queryKey: ['admin', 'terms', 'courses', termIdRef, filtersRef, paginationRef],
queryFn: () =>
apiGetAdminTermCourses(termIdRef.value, {
...cleanFilters(filtersRef?.value || {}),
...paginationRef?.value,
}),
...options,
})
export const useAddAdminTermCoursesMutation = () =>
useMutation({
mutationFn: ({ termId, payload }) => apiAddAdminTermCourses(termId, payload),
})
export const useRemoveAdminTermCourseMutation = () =>
useMutation({
mutationFn: ({ termId, courseId }) => apiRemoveAdminTermCourse(termId, courseId),
})