import { BaseDefine, MultipleQuery, MultipleResult } from './base'

/** 考试管理 */
export namespace Exam {
  /** 删除考试 */
  type DeleteExam = BaseDefine<{ id: number }>

  /** 获取考试信息 */
  type GetExamInfo = BaseDefine<{ id: number }, Required<BaseExamInfo>>

  /** 查询考试列表 */
  type GetExamList = BaseDefine<
    MultipleQuery<{
      /** 考试状态 */
      enable?: boolean
      /** 考试名称 */
      name?: string
    }>,
    MultipleResult<{
      /** 考试状态 */
      enable: boolean
      /** 考试ID */
      id: number
      /** 考试名称 */
      name: string
      /** 更新时间 */
      updateTime: string
    }>
  >
  interface BaseExamInfo {
    id?: number
    /** 问题卷允许打回 */
    doubtReject: boolean
    /** 评卷模式 */
    markingMode: MarkMode
    /** 在线评卷时长 */
    maxMarkingDuration: number
    /** 自动回收任务(分钟) */
    maxTaskRecover: number
    /** 考试名称 */
    name: string
    /** 抽查卷允许打回 */
    spotCheckReject: boolean
    /** 用户姓名收集 */
    userNameCollect: boolean
    enable: boolean
  }

  /** 新增/修改考试 */
  type SaveExamInfo = BaseDefine<Partial<BaseExamInfo>>

  /** 启用/禁用考试 */
  type ToggleEnableExam = BaseDefine<{ ids: number[]; enable: boolean }>
  export interface ApiMap {
    /** 删除考试 */
    deleteExam: DeleteExam
    /** 获取考试信息 */
    getExamInfo: GetExamInfo
    /** 查询考试列表 */
    getExamList: GetExamList
    /** 新增/修改考试 */
    saveExamInfo: SaveExamInfo
    /** 启用/禁用考试 */
    toggleEnableExam: ToggleEnableExam
  }
}
