import { Type } from "class-transformer"; import { ArrayMinSize, IsArray, IsIn, IsInt, IsNumber, IsOptional, IsString, IsUUID, Min, ValidateNested, } from "class-validator"; import { ContractItemInputDto } from "./contract-item-input.dto.js"; import { ContractPartyInputDto } from "./contract-party-input.dto.js"; export class CreateContractDto { @IsOptional() @IsUUID() resellerId?: string; @IsOptional() @IsUUID() companyId?: string; @IsOptional() @IsUUID() quoteId?: string; @IsOptional() @IsUUID() clientRegistrationId?: string; @IsIn([0, 12, 24, 36, 48]) contractPeriod!: number; @IsOptional() @IsInt() @Min(0) fidelityPeriod?: number; @IsArray() @ArrayMinSize(1) @ValidateNested({ each: true }) @Type(() => ContractItemInputDto) items!: ContractItemInputDto[]; @IsArray() @ArrayMinSize(1) @ValidateNested({ each: true }) @Type(() => ContractPartyInputDto) parties!: ContractPartyInputDto[]; @IsOptional() @IsNumber() @Min(0) implementationFee?: number; @IsOptional() @IsString() notes?: string; }