import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger";
import { IsNotEmpty, IsOptional, IsString } from "class-validator";

export class LoginDto {
  // Nombre de campo "username" (no "email") y sin @IsEmail: DECISION
  // EXPLICITA para no tener que tocar el frontend hoy — sigue mandando
  // { username, password } tal cual, sin rebuild ni cambio de
  // NEXT_PUBLIC_API_URL. Acepta email real O username local; AuthService
  // resuelve cual es (ver resolveIdentidadPorLogin()). @IsEmail rechazaria
  // de entrada cualquier username que no tenga forma de correo.
  @ApiProperty({
    example: "operador@ejemplo.com",
    description: "Email de la identidad O username local del tenant (se resuelve automaticamente)",
  })
  @IsNotEmpty({ message: "El usuario es requerido" })
  @IsString()
  username: string;

  @ApiProperty({ example: "admin123" })
  @IsNotEmpty({ message: "La contraseña es requerida" })
  @IsString()
  password: string;

  // Requerido solo cuando la identidad tiene mas de una membresia activa (o
  // ninguna y accede como plataforma) — ver AuthService.resolveTenantAccess.
  @ApiPropertyOptional({
    description: "Codigo del tenant al que se quiere acceder (Tenant.codigo)",
  })
  @IsOptional()
  @IsString()
  tenantCodigo?: string;
}
