import { ApiProperty } from '@nestjs/swagger';
import { Type } from 'class-transformer';
import { IsArray, IsNotEmpty, IsNumber, IsOptional, IsString, IsUUID, MaxLength, ValidateNested } from 'class-validator';

export class VarianteItemDto {
  @ApiProperty({ example: ['uuid-valor-color-rojo', 'uuid-valor-talle-m'], description: 'IDs de valores de atributo para esta variante' })
  @IsNotEmpty()
  @IsArray()
  @IsUUID('4', { each: true })
  atributo_valor_ids: string[];

  @ApiProperty({ example: 50000, description: 'Precio de la variante (null hereda del padre)', required: false })
  @IsOptional()
  @IsNumber()
  precio?: number;

  @ApiProperty({ example: '7891234567890', description: 'Código de barras de la variante', required: false })
  @IsOptional()
  @IsString()
  @MaxLength(14)
  codigo_barra?: string;

  @ApiProperty({ example: 'REMERA-ROJA-M', description: 'Código de producto de la variante', required: false })
  @IsOptional()
  @IsString()
  @MaxLength(50)
  cod_producto?: string;
}

export class GenerateVariantesDto {
  @ApiProperty({ type: [VarianteItemDto], description: 'Lista de variantes a generar' })
  @IsNotEmpty()
  @IsArray()
  @ValidateNested({ each: true })
  @Type(() => VarianteItemDto)
  variantes: VarianteItemDto[];
}
