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
+94
View File
@@ -0,0 +1,94 @@
import { register } from '@/services/mock/registry'
import { endpoints } from '@/services/api/endpoints'
import { adminExams, examParticipants } from '@/services/mock/fixtures/admin-exams'
import { adminCourseTemplates } from '@/services/mock/fixtures/admin-courses'
import { adminSessions } from '@/services/mock/fixtures/admin-sessions'
import {
filterDateRange,
filterItems,
findOrThrow,
isoNow,
makeId,
paginate,
removeById,
updateById,
} from '@/services/mock/helpers'
register('GET', endpoints.getExamsList, ({ query }) => {
let list = filterItems(adminExams, query, {
title: 'includes',
courseTemplateId: (item, v) => String(item.courseTemplate?.id) === String(v),
})
list = filterDateRange(list, query)
return paginate(list, query)
})
register('GET', endpoints.showExam, ({ params }) => ({
data: findOrThrow(adminExams, params.id),
}))
register('POST', endpoints.addNewExam, ({ data }) => {
const session = adminSessions.find((s) => s.id === Number(data.sessionId))
const template = session?.courseTemplate
? adminCourseTemplates.find((c) => c.id === Number(session.courseTemplate.id))
: null
const item = {
id: makeId(),
title: data.title || '',
description: data.description || '',
session: session ? { id: session.id, title: session.title } : null,
sessionTitle: session?.title || '',
courseTemplate: template ? { id: template.id, title: template.title } : null,
courseTemplateTitle: template?.title || '',
durationMinutes: Number(data.durationMinutes) || 0,
passingScore: Number(data.passingScore) || 0,
questionsCount: data.questions?.length || 0,
randomize: !!data.randomize,
endDate: data.endDate || '',
startDate: isoNow(),
createdAt: isoNow(),
questions: data.questions || [],
usedInTerms: [],
}
adminExams.unshift(item)
return { data: item }
})
register('PUT', endpoints.updateExam, ({ params, data }) => {
const session = adminSessions.find((s) => s.id === Number(data.sessionId))
const template = session?.courseTemplate
? adminCourseTemplates.find((c) => c.id === Number(session.courseTemplate.id))
: null
return {
data: updateById(adminExams, params.id, {
title: data.title,
description: data.description,
session: session ? { id: session.id, title: session.title } : undefined,
sessionTitle: session?.title,
courseTemplate: template ? { id: template.id, title: template.title } : undefined,
courseTemplateTitle: template?.title,
durationMinutes: Number(data.durationMinutes) || 0,
passingScore: Number(data.passingScore) || 0,
questionsCount: data.questions?.length || 0,
randomize: !!data.randomize,
endDate: data.endDate,
questions: data.questions || [],
}),
}
})
register('DELETE', endpoints.deleteExam, ({ params }) => {
removeById(adminExams, params.id)
return { data: { message: 'حذف موفق' } }
})
register('GET', endpoints.getExamParticipants, ({ params, query }) => {
const list = examParticipants.get(Number(params.examId)) || []
return paginate(list, query)
})
register('GET', endpoints.showExamParticipant, ({ params }) => {
const list = examParticipants.get(Number(params.examId)) || []
const found = list.find((p) => String(p.id) === String(params.participantId))
return { data: found || null }
})