import { PageResult, PageParams } from './common';

export interface SchoolItem {
  id: number;
  // 学校名称
  name: string;
  // 学校代码
  code: string;
  // 子机构代码
  subCode: string;
  // 开启双评
  doubleTrack: boolean;
  // 开启删除分组警告
  groupDeleteCheck: boolean;
  // 省份
  province: string;
  // 城市
  city: string;
  // 学校地址
  address: string;
  // 管理员登录名
  adminLoginName: string;
  // 管理员名称
  adminName: string;
  // 访问key
  accessKey: string;
  // 访问secret
  accessSecret: string;
  // 描述
  description: string;
}
export interface SchoolListFilter {
  name: string;
}
export type SchoolListPageParam = PageParams<SchoolListFilter>;
export type SchoolListPageRes = PageResult<SchoolItem>;

export type SchoolUpdateParam = Partial<SchoolItem>;

export interface SchoolUpdateAdminParam {
  id: number;
  // 管理员登录名
  loginName: string;
  // 管理员名称
  name: string;
  // 密码
  password: string;
}

export interface SchoolStatusInfo {
  // 是否允许设置双评
  doubleTrack: boolean;
  // 是否允许删除分组警告
  groupDeleteWarn: boolean;
  // 是否正在同步
  running: boolean;
  // 是否能够同步
  syncEnable: boolean;
}

// set
export type SettingType =
  | 'FILE_SERVER'
  | 'MARK_TIME'
  | 'AUTO_REPORT'
  | 'STUDENT_SHEET_COUNT'
  | 'QUALITY_ANALYSIS';
export interface SettingItem {
  id: string | number; // 假设配置项有唯一ID
  // 配置项类型
  name: string;
  // 配置项key: FILE_SERVER,MARK_TIME,AUTO_REPORT,STUDENT_SHEET_COUNT,QUALITY_ANALYSIS
  type: SettingType;
  // 配置项值
  description: string | boolean | number;
  descriptionText: string;
}

export interface SettingUpdateParam {
  id: number;
  name: string;
  type: SettingType;
  description: string | boolean | number;
}

// auth
export interface AuthInfo {
  // 是否授权
  auth: boolean;
  // 过期时间
  expireTime: string | null;
  // 授权模式
  authMode: string;
  // 是否开始双评
  doubleTrack: boolean;
  // 开启删除分组警告
  groupDeleteWarn: boolean;
  // 试评模式
  trialMode: string;
  // 支持客观题卡
  yjsObjectiveEnable: boolean;
}

export interface AuthUpdateParams {
  // 授权模式
  authMode: 'offline' | 'online' | '';
  // 授权文件
  offlineFile: File | null;
  // 访问key
  accessKey: string;
  // 访问secret
  accessSecret: string;
}
