import { IsString, IsOptional, IsNumber, IsBoolean, IsArray, ValidateNested, IsIn, IsUUID } from 'class-validator'; import { Type } from 'class-transformer'; class ClienteDto { @IsString() nombre: string; @IsString() telefono: string; @IsString() email: string; @IsOptional() @IsString() provincia?: string; } class ReformaDto { @IsString() @IsIn(['cocina', 'bano', 'salon', 'comedor', 'integral', 'otro']) tipo: string; @IsOptional() @IsNumber() m2Suelo?: number; @IsString() @IsIn(['basica', 'media', 'premium']) calidad: string; @IsOptional() @IsBoolean() estructural?: boolean; @IsOptional() @IsString() @IsIn(['alta', 'media', 'baja']) urgencia?: string; @IsOptional() @IsNumber() presupuestoTarget?: number; } class PreferenciasDto { @IsOptional() @IsString() estilo?: string; @IsOptional() @IsString() gustos?: string; } class EmpresaDto { @IsUUID() tenantId: string; @IsString() nombre: string; } class FotosDto { @IsArray() @IsString({ each: true }) antes: string[]; @IsArray() @IsString({ each: true }) despues: string[]; } class ZonaDto { @IsString() zona: string; @IsArray() @IsString({ each: true }) notas: string[]; @ValidateNested() @Type(() => FotosDto) fotos: FotosDto; } export class PerfilCompletoDto { @IsUUID() leadId: string; @ValidateNested() @Type(() => ClienteDto) cliente: ClienteDto; @ValidateNested() @Type(() => ReformaDto) reforma: ReformaDto; @IsOptional() @ValidateNested() @Type(() => PreferenciasDto) preferencias?: PreferenciasDto; @ValidateNested() @Type(() => EmpresaDto) empresa: EmpresaDto; @IsArray() @ValidateNested({ each: true }) @Type(() => ZonaDto) zonas: ZonaDto[]; }