diff --git a/api-v3/src/asset-master/dto/inventory-family-admin.dto.ts b/api-v3/src/asset-master/dto/inventory-family-admin.dto.ts new file mode 100644 index 0000000..a6227d2 --- /dev/null +++ b/api-v3/src/asset-master/dto/inventory-family-admin.dto.ts @@ -0,0 +1,71 @@ +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; +}