import { Transform, Type } from 'class-transformer'; import { IsInt, IsOptional, IsString, IsUUID, Matches, Max, MaxLength, Min, MinLength, ValidateIf, } from 'class-validator'; const optionalText = ({ value }: { value: unknown }) => typeof value === 'string' && value.trim() ? value.trim() : null; export class CreateInspectionFindingDto { @IsOptional() @IsUUID('4') clientGeneratedId?: string; @IsUUID('4') assetId!: string; @IsOptional() @Transform(optionalText) @IsUUID('4') catalogItemId?: string | null; @ValidateIf((value: CreateInspectionFindingDto) => !value.catalogItemId) @Transform(optionalText) @IsString() @MinLength(1) @MaxLength(500) customTitle?: string | null; @IsOptional() @Transform(optionalText) @IsString() @MaxLength(12000) customLegalBasis?: string | null; @Transform(({ value }) => (typeof value === 'string' ? value.trim() : value)) @IsString() @MinLength(1) @MaxLength(20000) description!: string; @IsOptional() @Type(() => Number) @IsInt() @Min(1) @Max(10) severity?: number; @IsOptional() @Transform(optionalText) @Matches(/^\d{4}-\d{2}-\d{2}$/) correctionDueOn?: string | null; }