This commit is contained in:
sajjadtalkhabi
2026-05-21 15:51:32 +03:30
parent 8990ceaddd
commit 74227d5021
71 changed files with 2014 additions and 1666 deletions
@@ -122,11 +122,11 @@ import { objectToFormData } from '@/utils/object-to-formdata'
import { useUploadMediaMutation } from '@/services/query/auth'
import { useAdminTermsListQuery } from '@/services/query/admin-terms'
import { offeredCourseSchema } from '@/features/admin/courses/schema'
import { useAdminCourseTemplatesListQuery } from '@/services/query/admin-course-templates'
import {
adminCoursesKeys,
useAddAdminCourseMutation,
useAdminCourseQuery,
useAdminCoursesListQuery,
useUpdateAdminCourseMutation,
} from '@/services/query/admin-courses'
@@ -139,19 +139,24 @@ const modalData = computed(() => getModal('AddOfferedCourseModal')?.data ?? {})
const mode = computed(() => modalData.value.mode || 'add')
const courseId = computed(() => modalData.value.courseId ?? null)
const isEditMode = computed(() => mode.value === 'edit')
const presetTermId = computed(() => modalData.value.termId ?? '')
const modeTitle = computed(() =>
isEditMode.value ? 'ویرایش دوره ارائه شده' : 'افزودن دوره ارائه شده'
)
const form = ref({
termId: '',
termId: presetTermId.value,
templateId: '',
title: '',
capacity: '',
imageId: null,
isActive: false,
})
watch(presetTermId, (val) => {
if (val && !form.value.termId) form.value.termId = val
})
const image = ref(null)
const schema = offeredCourseSchema
@@ -172,12 +177,9 @@ const termOptions = computed(() => {
})
const templateSearch = ref('')
const templateFilters = computed(() => ({ title: templateSearch.value }))
const templateFilters = computed(() => ({ title: templateSearch.value, termId: 'null' }))
const templatePagination = ref({ page: 1, perPage: 30 })
const { data: templatesResponse } = useAdminCourseTemplatesListQuery(
templateFilters,
templatePagination
)
const { data: templatesResponse } = useAdminCoursesListQuery(templateFilters, templatePagination)
const selectedTemplate = ref(null)
const templateOptions = computed(() => {
const base = templatesResponse.value?.data ?? []
@@ -201,10 +203,9 @@ const { data: existingCourse } = useAdminCourseQuery(courseId, {
watch(existingCourse, (course) => {
if (!course) return
if (course.term) selectedTerm.value = course.term
if (course.template) selectedTemplate.value = course.template
form.value = {
termId: course.term?.id || course.termId || '',
templateId: course.template?.id || course.templateId || '',
templateId: '',
title: course.title || '',
capacity: course.capacity ?? '',
imageId: course.imageId || null,
@@ -237,10 +238,11 @@ const submitting = computed(() => addMutation.isPending.value || updateMutation.
const onSubmit = async (close) => {
const { isValid, payload } = await validate(form.value)
if (!isValid) return
const { templateId: _ignored, ...submitPayload } = payload
if (isEditMode.value) {
await updateMutation.mutateAsync({ id: courseId.value, payload })
await updateMutation.mutateAsync({ id: courseId.value, payload: submitPayload })
} else {
await addMutation.mutateAsync(payload)
await addMutation.mutateAsync(submitPayload)
}
await queryClient.invalidateQueries({ queryKey: adminCoursesKeys.all })
resetErrors()