import { ApiProperty } from '@nestjs/swagger';
import { Type } from 'class-transformer';
import { IsBoolean, IsIn, IsInt, IsOptional, IsString, Max, MaxLength, Min } from 'class-validator';

export const MODOS_OPERATIVOS = ['operacional', 'co-pilot', 'hibrido'] as const;
export type ModoOperativoValor = (typeof MODOS_OPERATIVOS)[number];

export class ActualizarCarteraConfigDto {
  @ApiProperty({ enum: MODOS_OPERATIVOS, required: false })
  @IsOptional()
  @IsIn(MODOS_OPERATIVOS as unknown as string[])
  modo_operativo?: ModoOperativoValor;

  @ApiProperty({ required: false })
  @IsOptional()
  @IsString()
  @MaxLength(50)
  fuente_default?: string;

  @ApiProperty({ required: false, description: 'Habilitar cron diario de recomendaciones IA + webhooks' })
  @IsOptional()
  @IsBoolean()
  recomendaciones_auto_activas?: boolean;

  @ApiProperty({ required: false, description: 'Hora del día (0-23) en la que corre el cron' })
  @IsOptional()
  @Type(() => Number)
  @IsInt()
  @Min(0)
  @Max(23)
  recomendaciones_auto_hora?: number;

  @ApiProperty({ required: false })
  @IsOptional()
  @IsString()
  @MaxLength(80)
  marca_nombre?: string;

  @ApiProperty({ required: false })
  @IsOptional()
  @IsString()
  @MaxLength(500)
  marca_logo_url?: string;

  @ApiProperty({ required: false, description: 'Color hex ej #4F46E5' })
  @IsOptional()
  @IsString()
  @MaxLength(20)
  marca_color_primario?: string;
}
