import { ApiProperty } from '@nestjs/swagger';
import { IsEnum } from 'class-validator';
import { type ResendOtpContext } from '../../application/commands/resend-otp/resend-otp.command';

export const RESEND_OTP_CONTEXTS = ['EMAIL_CHANGE', 'PHONE_CHANGE'] as const;

export class ResendOtpDto {
  @ApiProperty({
    description:
      'Loại OTP cần gửi lại. Hỗ trợ đổi email (EMAIL_CHANGE) hoặc đổi số điện thoại (PHONE_CHANGE). Để gửi lại mã đặt lại mật khẩu, gọi lại endpoint /auth/forgot-password.',
    enum: RESEND_OTP_CONTEXTS,
    example: 'EMAIL_CHANGE',
  })
  @IsEnum(RESEND_OTP_CONTEXTS, {
    message: 'Context phải là EMAIL_CHANGE hoặc PHONE_CHANGE',
  })
  context!: ResendOtpContext;
}
