import type {
  GradeExamDetail,
  GradeSessionListItem,
  GradeSessionPageQuery,
  GradeSubmitPayload,
} from '#/views/x/tms/examGrade/types';

import { defHttp } from '#/api/request';
import {
  mockGetGradeExamDetail,
  mockGetGradeSession,
  mockQueryGradeExams,
  mockQueryGradeSessions,
  mockSubmitGrade,
} from '#/views/x/tms/examGrade/mock';

/** 后端未就绪前走 mock；联调后改为 false */
const USE_MOCK = true;
const prefix = '/api/tms/exam-grade';

export function getGradeSessionList(params: GradeSessionPageQuery) {
  if (USE_MOCK) return mockQueryGradeSessions(params);
  return defHttp.get({ url: `${prefix}/sessions`, params });
}

export function getGradeSessionInfo(id: string) {
  if (USE_MOCK) return mockGetGradeSession(id);
  return defHttp.get<GradeSessionListItem>({ url: `${prefix}/sessions/${id}` });
}

export function getGradeExamList(sessionId: string) {
  if (USE_MOCK) return mockQueryGradeExams(sessionId);
  return defHttp.get({ url: `${prefix}/sessions/${sessionId}/exams` });
}

export function getGradeExamDetail(examId: string) {
  if (USE_MOCK) return mockGetGradeExamDetail(examId);
  return defHttp.get<GradeExamDetail>({ url: `${prefix}/exams/${examId}` });
}

export function submitGrade(data: GradeSubmitPayload) {
  if (USE_MOCK) return mockSubmitGrade(data);
  return defHttp.post({ url: `${prefix}/exams/${data.examId}/submit`, data });
}
