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

/** 科目管理 */
export namespace Subject {
  /** 删除科目 */
  type DeleteSubject = BaseDefine<{ id: number }>

  interface BaseSubjectInfo {
    /** 科目代码 */
    code: string
    /** 科目名称 */
    name: string
    /** 科目客观分 */
    objectiveScore: number
    /** 启用/禁用 */
    enable: boolean
  }

  interface SubjectInfo extends BaseSubjectInfo {
    /** 科目ID */
    id: number
    /** 考试ID */
    examId: number
    /** 考试名称 */
    examName: string
    /** 客观分 */
    objectiveScore: number
    /** 主观分 */
    subjectiveScore: number
    /** 试卷总分 */
    totalScore: number
  }

  /** 获取科目信息 */
  type GetSubjectInfo = BaseDefine<{ id: number }, SubjectInfo>

  /** 查询科目列表 */
  type GetSubjectList = BaseDefine<
    MultipleQuery<{
      /** 科目代码 */
      code?: string
      /** 科目名称 */
      name?: string
      /** 启用/禁用 */
      enable?: boolean
    }>,
    MultipleResult<SubjectInfo>
  >
  /** 新增/修改科目 */
  type SaveSubjectInfo = BaseDefine<BaseSubjectInfo & { id?: number }>

  /** 启用/禁用科目 */
  type ToggleEnableSubject = BaseDefine<{ ids: number[]; enable: boolean }>
  export interface ApiMap {
    /** 删除考试 */
    deleteSubject: DeleteSubject
    /** 获取考试信息 */
    getSubjectInfo: GetSubjectInfo
    /** 查询考试列表 */
    getSubjectList: GetSubjectList
    /** 新增/修改考试 */
    saveSubjectInfo: SaveSubjectInfo
    /** 启用/禁用科目 */
    toggleEnableSubject: ToggleEnableSubject
  }
}
