import { OptionalExceptionType } from '@/constants/enumerate';
import { PageResult, PageParams } from './common';

export interface ReviewStatInfo {
  // 任务已完成数
  markedCount: number;
  // 任务待完成数
  unMarkedCount: number;
  // 科目已完成数
  finishCount: number;
  // 科目待完成数
  unFinishCount: number;
}

// 复核统计列表项目： 科目名称 选做科目 试卷总量	任务数	已复核数	待复核数	完成进度	已复核次数
export interface ReviewStatItem {
  // 科目名称
  subjectName: string;
  subjectCode: string;
  // 选做科目
  selectiveText: string;
  // 试卷总量
  totalPaperCount: number;
  // 任务数
  totalCount: number;
  // 已复核数
  inspectedCount: number;
  // 待复核数
  leftCount: number;
  // 完成进度
  percent: number;
  // 已复核次数
  finishCount: number;
}
export type ReviewStatListPageRes = PageResult<ReviewStatItem>;

export interface ReviewStatListFilter {
  // 科目
  subjectCode?: string;
  // 选做科目
  selective?: boolean;
  // 完成进度
  finished?: boolean;
  // 复核次数
  inspectRound?: number;
}
export type ReviewStatListPageParams = PageParams<ReviewStatListFilter>;

// 全卷复核
// 全卷复核列表项目：科目	密号	选做异常	客观分	主观分	试卷总分	得分明细
export interface FullReviewItem {
  // 主键
  id: number;
  // 科目
  subjectName: string;
  subjectCode: string;
  // 密号
  secretNumber: string;
  // 选做异常
  selectiveError: string;
  // 客观分
  objectiveScoreString: string;
  // 主观分
  subjectiveScoreString: string;
  // 试卷总分
  totalScore: number;
  // 得分明细
  subjectiveScoreList: string;
  // 复核轮数
  inspectHistoryMap?: Record<
    string,
    {
      examId: number;
      id: number;
      inspectRound: number;
      inspectTime: string;
      inspectorId: number;
      inspectorName: string;
      studentId: number;
      subjectCode: string;
    }
  >;
}
export type FullReviewListPageRes = PageResult<FullReviewItem>;

export interface FullReviewListFilter {
  // 科目
  subjectCode: string;
  // 选做科目
  selective?: boolean;
  // 状态：已复核、未复核
  inspected?: boolean;
  // 标记卷
  marked?: boolean;
  // 学院
  college?: number;
  // 试卷总分
  startScore?: number;
  endScore?: number;
  // 选做题
  selectiveStatus?: OptionalExceptionType;
  // 复核次数
  inspectRound?: number;
  // 复核人
  inspectorName?: string;
  // 大题号
  mainNumber?: number;
  // 大题得分
  mainStartScore?: number;
  mainEndScore?: number;
  // 小题得分
  questionScore?: number;
  // 密号
  secretNumber?: string;
}
export type FullReviewListPageParams = PageParams<FullReviewListFilter>;

// 成绩校验
// 成绩校验列表项目：考生编号 科目 满分 状态 试卷总分 得分明细
export interface ScoreCheckItem {
  // 主键
  id: number;
  // 考生编号
  studentCode: string;
  // 科目
  subjectName: string;
  // 科目编号
  subjectCode: string;
  // 满分
  fullScore: number;
  // 状态
  status: string;
  // 试卷总分
  totalScore: number;
  // 得分明细
  subjectiveScoreList: string;
}
export type ScoreCheckListPageRes = PageResult<ScoreCheckItem>;

export interface CheckReviewRes {
  message: string;
  // -1-不可以再次复核，并弹出消息，0-需要弹出消息以待确认，1-可以再次复核
  status: -1 | 0 | 1;
}

export interface CancelReviewRes {
  message: string;
  success: boolean;
}

export interface SubjectStatusInfo {
  // 是否显示再次复核按钮
  showNextInspect: boolean;
  // 是否显示再次复核提示
  showNextInspectMsg: boolean;
}
