import {z} from 'zod';
import { useAuth } from '@common/contexts/useAuth.ts';
import { useApi } from '@common/api/useApi.ts';

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

const accountInfoSchema = z.object({
  nickname: z.string().optional().default(''), // 昵称
  phoneNum: z.string(), // 手机号
  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';
    }
  }), // 实名状态
  picUrl: z.string().url().optional(), // 头像
  userIdCardNum: z.string().optional(), // 身份证号
  // 1、开屏
  // 2、工作台-banner
  // 3、热点资讯-列表
  // 4、热点资讯-详情
  // 5、我的页面
  // 6、医信课堂-banner
  // 7、消息-列表
  // 8、消息-详情
  // 9、热点资讯-图片菜单
  // 10、自动签名页面
  // 11、授权签名-我的授权码页面
  // 12、我的授权码-授权成功页面
  // 13、授权签名-指定授权页面
  // 14、指定授权-授权签名后页面
  advertisementModuleList: z.array(z.number()).optional(), // 广告列表
  faceDetectFirms: z
    .array(
      z.object({
        clientId: z.string(), // 厂商id
        firmName: z.string(), // 厂商名
      }),
    )
    .optional(), // 人脸识别厂商？
  enableCert: z.boolean(), // 是否可以下证
  gxLeader: z.boolean().optional().default(false), // 冠新leader
  hasBindFirm: z.boolean().optional().default(false), // 是否绑定厂商
  hasFaceDetect: z.boolean().optional().default(false), // 是否进行了人脸识别
});

type AccountInfo = z.infer<typeof accountInfoSchema>;

// 登录用户个人信息
// {"changeDevice":false,"enableCert":true,"faceDetectFirms":[],"gxLeader":false,"hasBindFirm":true,"hasFaceDetect":false,"hasPwd":true,"isRealName":true,"nickname":"汪新","phoneNum":"17801465917","picUrl":"https://dev.51trust.com/am/doctor/pic/img?userId=99b00468e337456cb0005ad10d6d88da&version=1720598887000","realName":true,"realNameStatus":1,"userId":"99b00468e337456cb0005ad10d6d88da","userIdCardNum":"630101198001011955","userName":"汪新","userType":2}
// {"changeDevice":false,"enableCert":true,"faceDetectFirms":[],"gxLeader":false,"hasBindFirm":true,"hasFaceDetect":false,"hasPwd":false,"isRealName":true,"nickname":"齐卫鹏","phoneNum":"13263367627","picUrl":"https://dev.51trust.com/am/doctor/pic/img?userId=551dba9326d34f349902deaffada5af4&version=1679899882000","realName":true,"realNameStatus":1,"userId":"551dba9326d34f349902deaffada5af4","userIdCardNum":"410802198905300075","userName":"齐卫鹏","userType":2}
const useAccountInfo = () => {
  const {
    state: {userInfo},
  } = useAuth();

  return useApi(
    '/am/v3/userCenter/getAccountInfo',
    'GET',
    {
      userId: userInfo?.userId ?? '',
    },
    accountInfoSchema,
    {log: false},
  );
};

export type {AccountInfo};
export {useAccountInfo};
