import { api } from "@/lib/api-client"; import type { Assignment, AssignmentState, AssignmentCreateRequest, ExamSchedule, ExamScheduleCreateRequest, ScheduleState, StudentExamAssignment, PaginatedResponse, PaginationParams, ApiSuccessResponse, } from "@/types"; export interface AssignmentListParams extends PaginationParams { state?: AssignmentState; entity_id?: number; } export interface ScheduleListParams extends PaginationParams { state?: ScheduleState; } export const assignmentsService = { async list(params?: AssignmentListParams): Promise> { return api.get>("/assignments", params as Record); }, async getById(id: number): Promise { return api.get(`/assignments/${id}`); }, async create(data: AssignmentCreateRequest): Promise { return api.post("/assignments", data); }, async update(id: number, data: Partial): Promise { return api.patch(`/assignments/${id}`, data); }, async delete(id: number): Promise { return api.delete(`/assignments/${id}`); }, async archive(id: number): Promise { return api.post(`/assignments/${id}/archive`); }, async start(id: number): Promise { return api.post(`/assignments/${id}/start`); }, async listSchedules(params?: ScheduleListParams): Promise> { return api.get>("/exam-schedules", params as Record); }, async createSchedule(data: ExamScheduleCreateRequest): Promise { return api.post("/exam-schedules", data); }, async updateSchedule(id: number, data: Partial): Promise { return api.put(`/exam-schedules/${id}`, data); }, async deleteSchedule(id: number): Promise { return api.delete(`/exam-schedules/${id}`); }, async archiveSchedule(id: number): Promise { return api.post(`/exam-schedules/${id}/archive`); }, async getStudentExams(): Promise<{ items: StudentExamAssignment[] }> { return api.get<{ items: StudentExamAssignment[] }>("/student/my-exams"); }, };