import { Transform, Type } from 'class-transformer'; import { IsDate, IsEmpty, IsOptional, IsString, IsUUID, MaxLength, MinLength } from 'class-validator'; export class ChangeAssetContextDto { @IsOptional() @IsUUID('4') parentId?: string | null; @IsOptional() @IsUUID('4') operationalAreaId?: string | null; /** * Compatibilidad de contrato únicamente. F5/F6 separa la ubicación física * del Inventario de la Operadora temporal del Área, por lo que este valor no * puede modificarse desde un cambio de contexto del Inventario. */ @IsOptional() @IsEmpty({ message: 'La Operadora se administra en la relación temporal del Área, no en el Inventario' }) operatorCompanyId?: string | null; @IsOptional() @Type(() => Date) @IsDate() effectiveAt?: Date; @Transform(({ value }) => typeof value === 'string' ? value.trim() : value) @IsString() @MinLength(5) @MaxLength(2000) reason!: string; }