import { Transform } from 'class-transformer'; import { ArrayMaxSize, IsArray, IsBoolean, IsIn, IsOptional, IsString, IsUUID, MaxLength, MinLength, } from 'class-validator'; export class CreateInventoryFamilyDto { @IsIn(['INSTALLATION', 'SUBINSTALLATION']) level!: 'INSTALLATION' | 'SUBINSTALLATION'; @Transform(({ value }) => typeof value === 'string' ? value.trim() : value) @IsString() @MinLength(1) @MaxLength(240) name!: string; @IsOptional() @IsUUID('4') parentFamilyId?: string | null; @IsOptional() @IsArray() @ArrayMaxSize(100) @IsString({ each: true }) @MaxLength(160, { each: true }) informationLabels?: string[]; } export class UpdateInventoryFamilyDto { @IsOptional() @Transform(({ value }) => typeof value === 'string' ? value.trim() : value) @IsString() @MinLength(1) @MaxLength(240) name?: string; @IsOptional() @IsUUID('4') parentFamilyId?: string | null; @IsOptional() @IsArray() @ArrayMaxSize(100) @IsString({ each: true }) @MaxLength(160, { each: true }) informationLabels?: string[]; @IsOptional() @IsBoolean() isActive?: boolean; } export class ReplaceInventoryFamilyFindingsDto { @IsArray() @ArrayMaxSize(2000) @IsUUID('4', { each: true }) itemIds!: string[]; @Transform(({ value }) => typeof value === 'string' ? value.trim() : value) @IsString() @MinLength(5) @MaxLength(2000) reason!: string; }