import { Transform } from 'class-transformer'; import { IsEmpty, IsObject, IsOptional, IsString, IsUUID, Matches, MaxLength, MinLength, } from 'class-validator'; export class UpdateAssetDto { @IsOptional() @IsUUID('4') typeId?: string; @IsOptional() @Transform(({ value }) => typeof value === 'string' ? value.trim().toUpperCase() : value, ) @IsString() @MinLength(1) @MaxLength(120) @Matches(/^[A-Z0-9][A-Z0-9._/-]*$/) code?: string; @IsOptional() @Transform(({ value }) => (typeof value === 'string' ? value.trim() : value)) @IsString() @MinLength(1) @MaxLength(200) name?: string; @IsOptional() @Transform(({ value }) => typeof value === 'string' && value.trim() ? value.trim() : null, ) @IsString() @MaxLength(200) commonName?: string | null; @IsOptional() @IsUUID('4') parentId?: string | null; @IsOptional() @IsUUID('4') operationalAreaId?: string | null; @IsOptional() @IsEmpty({ message: 'La Empresa relacionada se administra en el Yacimiento, no desde la edición genérica del Inventario' }) operatorCompanyId?: string | null; @IsOptional() @IsEmpty({ message: 'El Tipo de concesión se administra en el Yacimiento, no desde la edición genérica del Inventario' }) concessionTypeId?: string | null; @IsOptional() @Transform(({ value }) => typeof value === 'string' && value.trim() ? value.trim() : null, ) @IsString() @MaxLength(4000) description?: string | null; @IsOptional() @IsObject() attributes?: Record; }