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

export class UpdateLineaDto {
  @ApiPropertyOptional({ description: "Nueva cantidad" })
  @IsOptional()
  @IsNumber()
  @Min(0.001)
  cantidad?: number;

  @ApiPropertyOptional({
    description: "Nuevo precio unitario base solo para esta cotizacion",
  })
  @IsOptional()
  @IsNumber()
  @Min(0)
  precioUnitario?: number;

  @ApiPropertyOptional({
    description:
      "Nuevo precio unitario final con IVA solo para esta cotizacion",
  })
  @IsOptional()
  @IsNumber()
  @Min(0)
  precioUnitarioConIva?: number;

  @ApiPropertyOptional({
    description: "Descripcion visible solo en esta cotizacion",
  })
  @IsOptional()
  @IsString()
  @MaxLength(255)
  descripcion?: string;

  @ApiProperty({ description: "Motivo requerido para auditar el cambio" })
  @IsString()
  @IsNotEmpty()
  @MaxLength(500)
  motivo: string;

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