import { ApiProperty } from '@nestjs/swagger';
import { IsNotEmpty, IsOptional, IsString, MaxLength, IsInt, IsUUID, IsBoolean, IsNumber } from 'class-validator';

export class CreatePresentacionDto {
  @ApiProperty({ example: 'uuid-del-producto', description: 'ID del producto' })
  @IsNotEmpty()
  @IsUUID()
  producto_id: string;

  @ApiProperty({ example: 'Caja x12', description: 'Nombre de la presentación' })
  @IsNotEmpty()
  @IsString()
  @MaxLength(100)
  nombre: string;

  @ApiProperty({ example: 'CJ12', description: 'Abreviatura de la presentación', required: false })
  @IsOptional()
  @IsString()
  @MaxLength(10)
  abreviatura?: string;

  @ApiProperty({ example: 12, description: 'Factor de conversión respecto a la unidad base' })
  @IsNotEmpty()
  @IsNumber()
  factor_conversion: number;

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

  @ApiProperty({ example: 120000, description: 'Precio de la presentación (si es null se calcula automáticamente)', required: false })
  @IsOptional()
  @IsNumber()
  precio?: number;

  @ApiProperty({ example: true, description: 'Si es la presentación por defecto', required: false })
  @IsOptional()
  @IsBoolean()
  es_default?: boolean;

  @ApiProperty({ example: 0, description: 'Orden de visualización', required: false })
  @IsOptional()
  @IsInt()
  orden?: number;
}
