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

/** 题目管理 */
export namespace Question {
  /** 删除小题 */
  type DeleteSubQuestion = BaseDefine<{
    id: number
  }>

  /** 编辑小题 */
  type EditSubQuestion = BaseDefine<{
    id?: number
    /** 小题间隔分 */
    intervalScore?: number
  }>

  /** 小题列表信息 */
  interface SubQuestionInfo {
    id: number
    intervalScore: number
    mainNumber: number
    mainTitle: string
    subNumber: number
    totalScore: number
  }

  /** 获取小题列表 */
  type GetSubQuestionList = BaseDefine<{ subjectCode: string }, SubQuestionInfo[]>

  interface MainQuestionListItem {
    createTime: string
    creatorId: number
    examId: number
    groupNumber: number
    id: number
    levelRange: number[]
    mainNumber: number
    minMarkTime: number
    remarkNumber: number
    remarkType: string
    standardRate: number
    selfRate: number
    subjectCode: string
    systemRate: number
    title: string
    totalScore: number
    updateTime: string
    updaterId: number
  }

  /** 获取大题列表 */
  type GetMainQuestionList = BaseDefine<{ subjectCode: string }, MainQuestionListItem[]>

  /** 获取小组列表 */
  type GetQuestionGroupList = BaseDefine<{ subjectCode?: string; mainNumber?: number }, number[]>

  interface SubQuestionStruct {
    intervalScore: number
    score: number
    subNumber: number
    totalScore: number
  }
  /** 获取大题评卷结构 */
  type GetQuestionStruct = BaseDefine<
    { mainNumber?: number },
    { mainNumber: number; mainTitle: string; questionList: SubQuestionStruct[] }
  >

  /** 大题设置 (新增/编辑) */
  interface MainQuestionMeta {
    /** 大题号 */
    mainNumber?: number
    /** 大题名称 */
    mainTitle: string
    /** 分组数量 */
    groupNumber?: number
    /** 间隔分 */
    intervalScore?: number
    /** 最小阅卷时间 */
    minMarkTime?: number
    /** 小题数量 */
    questionCount?: number
    /** 小题满分 */
    questionScore?: number
    /** 回评数量 */
    remarkNumber?: number
    /** 标准卷频度 */
    standardRate?: number
    /** 自查卷频度 */
    selfRate?: number
    /** 系统抽查频度 */
    systemRate?: number
    /** 起始题号 */
    startNumber: number
    /** 档次比例 */
    levelRange: number[]
    /** 回评方式,可用值:TIME,QUANTITY */
    remarkType: RemarkType
    /** 科目代码 */
    subjectCode: string
    /** 成绩表对应题目类型,可用值:WRITING,TRANSLATION */
    category?: QuestionCategory
  }

  /** 新增大题 */
  type AddMainQuestion = BaseDefine<MainQuestionMeta>

  /** 大题设置 */
  type EditMainQuestion = BaseDefine<MainQuestionMeta>

  /** 获取大题信息 */
  type GetMainQuestionInfo = BaseDefine<
    { mainNumber: number; subjectCode: string },
    MainQuestionMeta & { examId: number }
  >

  export interface ApiMap {
    deleteSubQuestion: DeleteSubQuestion
    editSubQuestion: EditSubQuestion
    getSubQuestionList: GetSubQuestionList
    addMainQuestion: AddMainQuestion
    editMainQuestion: EditMainQuestion
    getMainQuestionInfo: GetMainQuestionInfo
    getMainQuestionList: GetMainQuestionList
    getQuestionGroupList: GetQuestionGroupList
    /** 获取大题评卷结构 */
    getQuestionStruct: GetQuestionStruct
  }
}
