import {z} from 'zod';

// 用户类型
const UserType = {
  Guanxin: 1, // 冠心用户
  General: 2, // 一般用户
  GeneralAndGuanxin: 3, // 同时是冠心和一般用户
} as const;

// 实名认证状态 0 未实名认证 1 已实名认证 2 实名认证失败 3 证件号不存在 4 证件号已被其他用户使用
const RealNameStatus = {
  Unverified: 0, // 尚未认证
  Success: 1, // 认证成功
  Failure: 2, // 实名认证失败
  Inexistent: 3, // 证件号不存在
  Registered: 4, // 证件号已被其他用户使用
} as const;

// 登录/注册后信息模型
const loginSchema = z.object({
  sessionId: z.string().min(1), // token
  userId: z.string().min(1), // 用户 id
  userType: z.nativeEnum(UserType).transform(val => {
    switch (val) {
      case UserType.Guanxin:
        return 'guanxin';
      case UserType.General:
        return 'general';
      case UserType.GeneralAndGuanxin:
        return 'generalandguanxin';
    }
  }), // 用户类型
  realNameStatus: z.nativeEnum(RealNameStatus).transform(val => {
    switch (val) {
      case RealNameStatus.Unverified:
        return 'unverified';
      case RealNameStatus.Success:
        return 'success';
      case RealNameStatus.Failure:
        return 'failure';
      case RealNameStatus.Inexistent:
        return 'inexistent';
      case RealNameStatus.Registered:
        return 'registered';
    }
  }), // 实名状态
  enableCert: z.boolean(), // 是否可以下证
  gxLeader: z.boolean().optional().default(false), // 冠新leader
  hasBindFirm: z.boolean().optional().default(false), // 是否绑定厂商
  hasFaceDetect: z.boolean().optional().default(false), // 是否进行了人脸识别
});

export {loginSchema};
