import { ApiProperty } from '@nestjs/swagger';
import { IsString, Length } from 'class-validator';

export class VerifyMfaSetupDto {
  @ApiProperty({ description: 'Mã TOTP 6 chữ số từ ứng dụng authenticator', example: '123456' })
  @IsString()
  @Length(6, 6, { message: 'Mã TOTP phải có 6 chữ số' })
  totpCode!: string;
}

export class VerifyMfaChallengeDto {
  @ApiProperty({ description: 'ID phiên xác thực MFA' })
  @IsString()
  challengeId!: string;

  @ApiProperty({ description: 'Mã TOTP 6 chữ số', example: '123456' })
  @IsString()
  @Length(6, 6, { message: 'Mã TOTP phải có 6 chữ số' })
  totpCode!: string;
}

export class UseBackupCodeDto {
  @ApiProperty({ description: 'ID phiên xác thực MFA' })
  @IsString()
  challengeId!: string;

  @ApiProperty({ description: 'Mã backup 8 ký tự', example: 'ABCD1234' })
  @IsString()
  @Length(8, 8, { message: 'Mã backup phải có 8 ký tự' })
  backupCode!: string;
}

export class DisableMfaDto {
  @ApiProperty({ description: 'Mã TOTP hiện tại để xác nhận tắt MFA', example: '123456' })
  @IsString()
  @Length(6, 6, { message: 'Mã TOTP phải có 6 chữ số' })
  totpCode!: string;
}
