import { RoleType, BatchAddRole, UserSource } from '@/constants/enumerate';
import { PageResult, PageParams } from './common';

export interface LoginData {
  loginName: string;
  password: string;
}

// 登录名	名称	来源	角色	状态	关联账号
export interface UserItem {
  id: number;
  // 登录名
  loginName: string;
  // 名称
  name: string;
  // 工号 (可选)
  empno: string;
  // 来源 (例如：内部用户)
  source: UserSource;
  // 角色 (例如：学校管理员, 扫描员)
  role: RoleType;
  // 角色名称
  roleName: string;
  // 状态 (启用/禁用)
  enable: boolean;
  // 关联账号
  relatedAccount: string;
  // 学校
  schoolId: number;
  // 最后登录IP
  lastLoginIp: string;
  // 最后登录时间
  lastLoginTime: string;
  // 描述
  description: string;
  // 访问令牌
  accessToken: string;
  // 扫描令牌
  scanToken: string;
  // 学校名称
  schoolName: string;
  // 学校ID
  schoolId: number;
}
export type UserListPageRes = PageResult<UserItem>;

export interface UserListFilter {
  // 登录名
  loginName?: string;
  // 姓名
  name?: string;
  // 状态
  enable?: boolean;
  // 角色
  role?: RoleType;
  // 来源
  source?: UserSource;
}
export type UserListPageParam = PageParams<UserListFilter>;

export interface UserUpdateParam {
  id?: number;
  // 登录名
  loginName: string;
  // 名称
  name: string;
  // 工号 (可选)
  empno: string;
  // 状态 (启用/禁用)
  enable: boolean;
  // 角色 (例如：学校管理员, 扫描员)
  role: RoleType;
  // 密码
  password: string;
  // 绑定科目代码: 科组长/复核员/学校查询员
  subjectCodeString?: string;
  // 绑定考试ID: 学校查询员
  examIdString?: string;
  // 绑定考生文件: 学校查询员
  studentFile?: File;
  // 绑定学院: 学院管理员
  colleges?: string;
}

export interface ResetPasswordParam {
  ids: number[];
  password: string;
}
export interface EnableUserParam {
  ids: number[];
  enabled: boolean;
}

export interface UpdatePasswordParam {
  // id: number;
  // oldPassword: string;
  password: string;
}

export interface BatchCreateUserParam {
  // 角色
  role: BatchAddRole;
  // 命名规则
  prefix: string;
  // 每分组账号数
  number: number;
  // 是否随机密码
  random: boolean;
  // 密码
  password?: string;
  // 科目
  subjectCodeString: string;
}

// 系统版本等信息
export interface SystemInfo {
  // 版本名称
  versionName: string;
  // 版本日期
  versionDate: string;
}

// 角色相关 --------->
export interface RoleItem {
  // 角色名称
  name: string;
  // 角色编码
  code: string;
  // 更新时间
  updateTime: string;
  // 更新人
  updateName: string;
}
export type RoleListPageRes = PageResult<RoleItem>;
export interface RoleListFilter {
  // 学校ID
  schoolId: number;
  // 角色编码
  role?: string;
}
export type RoleListPageParam = PageParams<RoleListFilter>;

// 权限项目
export interface RolePrivilegeItem {
  // 权限编码
  code: string;
  // 权限名称
  name: string;
  // 是否勾选
  enable: boolean;
  // 父级权限编码
  parentCode: string;
}
export interface RolePrivilegeUpdateParam {
  // 角色编码
  role: string;
  schoolId: number;
  // 选中的权限编码
  selectPrivileges: string[];
}

export interface UserMenuItem {
  name: string;
  code: string;
  icon: string;
  level: number;
  privilegeType: string;
  parentCode: string;
  seq: number;
}
