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

export class AddLineaDto {
  @ApiPropertyOptional({ description: "PLU del producto (maeplu)" })
  @IsOptional()
  @IsString()
  @MaxLength(25) // maeplu.plu es varchar(25) — ver cotizacion-linea.entity.ts
  plu?: string;

  @ApiPropertyOptional({ description: "Descripcion manual para productos por ingresar" })
  @IsOptional()
  @IsString()
  @MaxLength(255)
  descripcion?: string;

  @ApiPropertyOptional({ description: "Precio unitario final de linea manual", default: 0 })
  @IsOptional()
  @IsNumber()
  @Min(0)
  precioUnitarioConIva?: number;

  @ApiPropertyOptional({ description: "Indica si la linea manual es servicio", default: false })
  @IsOptional()
  @IsBoolean()
  esServicio?: boolean;

  @ApiPropertyOptional({ description: "Cantidad", default: 1 })
  @IsOptional()
  @IsNumber()
  @Min(0.001)
  cantidad?: number;

  @ApiProperty({ description: "Token de bloqueo vigente" })
  @IsNotEmpty()
  @IsString()
  @MaxLength(36)
  lockToken: string;
}
