import httpClient from '@/utils/http';

import {
  ControllerResponse,
  ExamBatchDeleteScanAnswerSheetInfoRequest,
  ExamBatchObjectiveQuestionRiskProcessRequest,
  ExamBatchTransferScanAnswerSheetInfoRequest,
  ExamDownloadScanAnswerSheetAbsentListRequest,
  ExamExportObjectiveQuestionRiskRequest,
  ExamGetObjectiveQuestionRiskListRequest,
  ExamGetObjectiveQuestionRiskListResponse,
  ExamGetObjectiveQuestionRiskQuestionListRequest,
  ExamGetObjectiveQuestionRiskQuestionListResponse,
  ExamGetObjectiveQuestionRiskStatisticsRequest,
  ExamGetObjectiveQuestionRiskStatisticsResponse,
  ExamGetScanAnswerSheetAbsentListRequest,
  ExamGetScanAnswerSheetAbsentListResponse,
  ExamGetScanAnswerSheetClassMatchDetailRequest,
  ExamGetScanAnswerSheetClassMatchDetailResponse,
  ExamGetScanAnswerSheetClassMatchListRequest,
  ExamGetScanAnswerSheetClassMatchListResponse,
  ExamGetScanAnswerSheetExceptionListRequest,
  ExamGetScanAnswerSheetExceptionListResponse,
  ExamGetScanAnswerSheetInfoListRequest,
  ExamGetScanAnswerSheetInfoListResponse,
  ExamGetScanAnswerSheetInfoStatisticsRequest,
  ExamGetScanAnswerSheetInfoStatisticsResponse,
  ExamGetScanAnswerSheetProgressRequest,
  ExamGetScanAnswerSheetProgressResponse,
  ExamGetScanAnswerSheetProgressStatisticsRequest,
  ExamGetScanAnswerSheetProgressStatisticsResponse,
  ExamGetScanAnswerSheetRepeatStudentInfoRequest,
  ExamGetScanAnswerSheetRepeatStudentInfoResponse,
  ExamMarkObjectiveQuestionRiskAbsentRequest,
  ExamSaveObjectiveQuestionRiskAnswerRequest,
  ExamSaveScanAnswerSheetExceptionUploadRequest,
  ExamScanAnswerSheetMatchStudentAddRequest,
  ExamScanAnswerSheetOverviewRequest,
  ExamScanAnswerSheetOverviewResponse,
  ModelPageResponse
} from './data-contracts';
export default {
  /**
   * @description 扫描答题卡-查看缺考名单（进度详情-查看缺考、未上传学生名单-支持学生和考号模糊搜索）
   */
  absentListCreate: (request: ExamGetScanAnswerSheetAbsentListRequest) => {
    return httpClient.post<
      ControllerResponse & {
        data?: ModelPageResponse & {
          list?: ExamGetScanAnswerSheetAbsentListResponse[];
        };
      }
    >(`/scan-answer-sheet/absent-list`, { params: request });
  },
  /**
   * @description 扫描答题卡-查看缺考名单-下载缺考名单（excel格式并且按照原型表格为表头导出）
   */
  absentListDownloadCreate: (request: ExamDownloadScanAnswerSheetAbsentListRequest) => {
    return httpClient.post<
      ControllerResponse & {
        data?: string;
      }
    >(`/scan-answer-sheet/absent-list/download`, { params: request });
  },
  /**
   * @description 扫描答题卡-班级匹配详情
   */
  classMatchDetailCreate: (request: ExamGetScanAnswerSheetClassMatchDetailRequest) => {
    return httpClient.post<
      ControllerResponse & {
        data?: ModelPageResponse & {
          list?: ExamGetScanAnswerSheetClassMatchDetailResponse[];
        };
      }
    >(`/scan-answer-sheet/class-match/detail`, { params: request });
  },
  /**
   * @description 扫描答题卡-班级匹配列表
   */
  classMatchListCreate: (request: ExamGetScanAnswerSheetClassMatchListRequest) => {
    return httpClient.post<
      ControllerResponse & {
        data?: ExamGetScanAnswerSheetClassMatchListResponse[];
      }
    >(`/scan-answer-sheet/class-match/list`, { params: request });
  },
  /**
   * @description 扫描异常-各种扫描异常列表
   */
  exceptionListCreate: (request: ExamGetScanAnswerSheetExceptionListRequest) => {
    return httpClient.post<
      ControllerResponse & {
        data?: ModelPageResponse & {
          list?: ExamGetScanAnswerSheetExceptionListResponse[];
        };
      }
    >(`/scan-answer-sheet/exception/list`, { params: request });
  },
  /**
   * @description 扫描异常-考号识别异常、考号重复异常-手动匹配考号信息-并添加
   */
  exceptionMatchStudentAddCreate: (request: ExamScanAnswerSheetMatchStudentAddRequest) => {
    return httpClient.post<
      ControllerResponse & {
        message?: string;
      }
    >(`/scan-answer-sheet/exception/match-student-add`, { params: request });
  },
  /**
   * @description 客观题异常-低风险异常-批量处理
   */
  exceptionObjectiveQuestionRiskBatchProcessCreate: (
    request: ExamBatchObjectiveQuestionRiskProcessRequest
  ) => {
    return httpClient.post<
      ControllerResponse & {
        message?: string;
      }
    >(`/scan-answer-sheet/exception/objective-question-risk/batch-process`, { params: request });
  },
  /**
   * @description 客观题异常-高低风险-导出
   */
  exceptionObjectiveQuestionRiskExportCreate: (request: ExamExportObjectiveQuestionRiskRequest) => {
    return httpClient.post<
      ControllerResponse & {
        data?: string;
      }
    >(`/scan-answer-sheet/exception/objective-question-risk/export`, { params: request });
  },
  /**
   * @description 客观题异常-高低风险异常列表
   */
  exceptionObjectiveQuestionRiskListCreate: (request: ExamGetObjectiveQuestionRiskListRequest) => {
    return httpClient.post<
      ControllerResponse & {
        data?: ModelPageResponse & {
          list?: ExamGetObjectiveQuestionRiskListResponse[];
        };
      }
    >(`/scan-answer-sheet/exception/objective-question-risk/list`, { params: request });
  },
  /**
   * @description 客观题异常-标记为缺考
   */
  exceptionObjectiveQuestionRiskMarkAbsentCreate: (
    request: ExamMarkObjectiveQuestionRiskAbsentRequest
  ) => {
    return httpClient.post<
      ControllerResponse & {
        message?: string;
      }
    >(`/scan-answer-sheet/exception/objective-question-risk/mark-absent`, { params: request });
  },
  /**
   * @description 客观题异常-全部题、异常题-列表
   */
  exceptionObjectiveQuestionRiskQuestionListCreate: (
    request: ExamGetObjectiveQuestionRiskQuestionListRequest
  ) => {
    return httpClient.post<
      ControllerResponse & {
        data?: ExamGetObjectiveQuestionRiskQuestionListResponse[];
      }
    >(`/scan-answer-sheet/exception/objective-question-risk/question-list`, { params: request });
  },
  /**
   * @description 客观题异常-保存答案
   */
  exceptionObjectiveQuestionRiskSaveAnswerCreate: (
    request: ExamSaveObjectiveQuestionRiskAnswerRequest
  ) => {
    return httpClient.post<
      ControllerResponse & {
        message?: string;
      }
    >(`/scan-answer-sheet/exception/objective-question-risk/save-answer`, { params: request });
  },
  /**
   * @description 客观题异常-统计信息
   */
  exceptionObjectiveQuestionRiskStatisticsCreate: (
    request: ExamGetObjectiveQuestionRiskStatisticsRequest
  ) => {
    return httpClient.post<
      ControllerResponse & {
        data?: ExamGetObjectiveQuestionRiskStatisticsResponse;
      }
    >(`/scan-answer-sheet/exception/objective-question-risk/statistics`, { params: request });
  },
  /**
   * @description 扫描异常-考号重复-重复考生的信息（每次切换答题卡就调用）
   */
  exceptionRepeatStudentInfoCreate: (request: ExamGetScanAnswerSheetRepeatStudentInfoRequest) => {
    return httpClient.post<
      ControllerResponse & {
        data?: ExamGetScanAnswerSheetRepeatStudentInfoResponse;
      }
    >(`/scan-answer-sheet/exception/repeat-student-info`, { params: request });
  },
  /**
   * @description 扫描异常-折角异常、试卷不完整-保存并上传（包含批量保存上传）
   */
  exceptionSaveUploadCreate: (request: ExamSaveScanAnswerSheetExceptionUploadRequest) => {
    return httpClient.post<
      ControllerResponse & {
        message?: string;
      }
    >(`/scan-answer-sheet/exception/save-upload`, { params: request });
  },
  /**
   * @description 答题卡管理-批量删除（单个删除）
   */
  infoBatchDeleteCreate: (request: ExamBatchDeleteScanAnswerSheetInfoRequest) => {
    return httpClient.post<
      ControllerResponse & {
        message?: string;
      }
    >(`/scan-answer-sheet/info/batch-delete`, { params: request });
  },
  /**
   * @description 答题卡管理-批量转移到其他科目
   */
  infoBatchTransferCreate: (request: ExamBatchTransferScanAnswerSheetInfoRequest) => {
    return httpClient.post<
      ControllerResponse & {
        message?: string;
      }
    >(`/scan-answer-sheet/info/batch-transfer`, { params: request });
  },
  /**
   * @description 答题卡管理-列表展示（按照筛选条件筛选）
   */
  infoListCreate: (request: ExamGetScanAnswerSheetInfoListRequest) => {
    return httpClient.post<
      ControllerResponse & {
        data?: ModelPageResponse & {
          list?: ExamGetScanAnswerSheetInfoListResponse[];
        };
      }
    >(`/scan-answer-sheet/info/list`, { params: request });
  },
  /**
   * @description 进度详情-列表
   */
  infoProgressCreate: (request: ExamGetScanAnswerSheetProgressRequest) => {
    return httpClient.post<
      ControllerResponse & {
        data?: ModelPageResponse & {
          list?: ExamGetScanAnswerSheetProgressResponse[];
        };
      }
    >(`/scan-answer-sheet/info/progress`, { params: request });
  },
  /**
   * @description 进度详情-统计信息
   */
  infoProgressStatisticsCreate: (request: ExamGetScanAnswerSheetProgressStatisticsRequest) => {
    return httpClient.post<
      ControllerResponse & {
        data?: ExamGetScanAnswerSheetProgressStatisticsResponse;
      }
    >(`/scan-answer-sheet/info/progress/statistics`, { params: request });
  },
  /**
   * @description 答题卡管理-统计信息
   */
  infoStatisticsCreate: (request: ExamGetScanAnswerSheetInfoStatisticsRequest) => {
    return httpClient.post<
      ControllerResponse & {
        data?: ExamGetScanAnswerSheetInfoStatisticsResponse;
      }
    >(`/scan-answer-sheet/info/statistics`, { params: request });
  },
  /**
   * @description 扫描答题卡-主页面总览
   */
  overviewCreate: (request: ExamScanAnswerSheetOverviewRequest) => {
    return httpClient.post<
      ControllerResponse & {
        data?: ExamScanAnswerSheetOverviewResponse;
      }
    >(`/scan-answer-sheet/overview`, { params: request });
  }
};
