import { IsString, IsNotEmpty, Length, Matches, IsOptional } from 'class-validator';

export class LoginByPhoneDto {
  @IsString()
  @IsNotEmpty({ message: '手机号不能为空' })
  @Matches(/^1[3-9]\d{9}$/, { message: '手机号格式不正确' })
  phone: string;

  @IsString()
  @IsNotEmpty({ message: '验证码不能为空' })
  @Length(6, 6, { message: '验证码为6位数字' })
  code: string;

  @IsString()
  @IsOptional()
  inviteCode?: string;
}

export class LoginByPasswordDto {
  @IsString()
  @IsNotEmpty({ message: '手机号不能为空' })
  phone: string;

  @IsString()
  @IsNotEmpty({ message: '密码不能为空' })
  @Length(6, 20, { message: '密码长度为6-20位' })
  password: string;

  @IsString()
  @IsOptional()
  inviteCode?: string;
}

export class WechatLoginDto {
  @IsString()
  @IsNotEmpty({ message: 'code不能为空' })
  code: string;

  @IsString()
  @IsOptional()
  nickname?: string;

  @IsString()
  @IsOptional()
  avatar?: string;

  @IsString()
  @IsOptional()
  inviteCode?: string;
}

export class WechatPhoneLoginDto {
  @IsString()
  @IsNotEmpty({ message: 'code不能为空' })
  code: string;

  @IsString()
  @IsNotEmpty({ message: 'encryptedData不能为空' })
  encryptedData: string;

  @IsString()
  @IsNotEmpty({ message: 'iv不能为空' })
  iv: string;

  @IsString()
  @IsOptional()
  inviteCode?: string;
}

export class RegisterDto {
  @IsString()
  @IsNotEmpty({ message: '手机号不能为空' })
  @Matches(/^1[3-9]\d{9}$/, { message: '手机号格式不正确' })
  phone: string;

  @IsString()
  @IsNotEmpty({ message: '验证码不能为空' })
  @Length(6, 6, { message: '验证码为6位数字' })
  code: string;

  @IsString()
  @Length(6, 20, { message: '密码长度为6-20位' })
  password?: string;

  nickname?: string;

  @IsString()
  @IsOptional()
  inviteCode?: string;
}

export class SendCodeDto {
  @IsString()
  @IsNotEmpty({ message: '手机号不能为空' })
  @Matches(/^1[3-9]\d{9}$/, { message: '手机号格式不正确' })
  phone: string;
}
