import { CardType, EnumExamType, EnumSmsType, EnumUserType } from "@/common/enum";

export interface LoginInfo {
  accessToken: string;
  refreshToken: string;
  expiresTime: string;
  openid: string;
}

export interface StudentExamInfo {
  nickName: string;
  location: string;
  endYear: number;
  examType?: EnumExamType;
  examMajor?: string;
}

export interface InviteInfo {
  inviteCode?: string;
}

export interface CultureScores {
  biology?: number;
  chemistry?: number;
  physics?: number;
  chinese?: number;
  english?: number;
  foreign?: number;
  geography?: number;
  history?: number;
  mathematics?: number;
  political?: number;
}

export interface SchoolListQueryDTO {
  keyword?: string;
  pageNum: number;
  pageSize: number;
  examType?: string;
}
export interface SchoolItem {
  id: number;
  name: string;
  location: string;
}

export interface ClassListQueryDTO {
  schoolId: number;
}

export interface ClassItem {
  id: number;
  name: string;
  schoolId: number;
}

export interface CardInfo {
  agentId?: number;
  agentName?: string;
  assignExamType?: EnumExamType;
  assignLocation?: string;
  assignSchoolId?: number;
  assignSchoolName?: string;
  cardNo: string;
  cardId: number;
  classId?: number;
  className?: string;
  endYear?: number;
  password: string;

}

export interface RegisterInfo {
  classId?: number;
  endYear: number;
  examType: string;
  inviteCode?: string;
  location: string;
  examMajor?: string;
  nickName: string;
  schoolId?: number;
  schoolName?: string;
  scores: Scores;
  username?: string;
  mobile: string;
  password: string;
  code: string;
  uuid: string;
}

export interface BindCardInfo extends RegisterInfo {
  cardNo?: string;
  // 临时信息
  schoolClassName?: string;
}

export interface Scores {
  biology?: number;
  chemistry?: number;
  physics?: number;
  chinese?: number;
  english?: number;
  foreign?: number;
  geography?: number;
  history?: number;
  mathematics?: number;
  political?: number;
  skill?: number; // 职业技能成绩
}

export interface SmsRequestDTO {
  mobile: string;
  smsType?: EnumSmsType;
  uuid?: string;
  code?: string;
}

export interface CaptchaImage {
  img: string;
  uuid: string;
}

export interface LoginRequestDTO {
  code?: string;
  mobile?: string;
  password?: string;
  username?: string;
  uuid?: string;
}

export interface MobileLoginResponseDTO {
  code?: number;
  message?: string;
}


export interface UserInfo {
  admin: boolean;
  avatar?: string;
  cardId?: number;
  code: string;
  endYear: number;
  examType: EnumExamType;
  examMajor?: string;
  inviteCode?: string;
  location: string;
  nickName: string;
  phonenumber: string;
  regStatus: string;
  userId: number;
  userName: string;
  scores: Scores;
  userType: EnumUserType,
  accountType: number,
  schoolName: string;
  schoolClassName: string;
  classId?: number;
  schoolId?: number;
  campusClassName?: string;
  campusName?: string;
  classSelect: number; // 0: 不可修改班级 1: 可修改班级
}

export interface VipCardInfo {
  campusId: number; // 校区ID
  classId: number; // 班级ID
  className: string; // 班级名称
  schoolId: number; // 学校ID
  schoolName: string; // 学校名称
  year: number; // 入学年份
  endYear: number; // 毕业年份
  outDate: string; // 到期时间
  type: CardType;
}

export type UserRole = 'vip' | 'normal' | 'guest' | 'teacher' | 'agent' | 'auditor'

// export interface BindCardInfo {
//   cardNo: string;
//   password: string;
// }