import { Type } from 'class-transformer' import { IsEmail, IsEnum, IsInt, IsOptional, IsString, Max, MaxLength, Min, MinLength, ValidateNested, } from 'class-validator' class ContactInfoDto { @IsOptional() @IsString() @MaxLength(200) primaryName?: string @IsOptional() @IsEmail() primaryEmail?: string @IsOptional() @IsEmail() billingEmail?: string } class BillingInfoDto { @IsOptional() @IsString() @MaxLength(200) companyName?: string @IsOptional() @IsString() @MaxLength(40) vatId?: string @IsOptional() @IsString() @MaxLength(2) country?: string @IsOptional() @IsEmail() contactEmail?: string } export class UpdatePartnerDto { @IsOptional() @IsString() @MinLength(2) @MaxLength(120) name?: string @IsOptional() @IsString() @MinLength(3) @MaxLength(120) domain?: string @IsOptional() @IsEnum(['active', 'in-negotiation', 'paused', 'terminated']) status?: 'active' | 'in-negotiation' | 'paused' | 'terminated' @IsOptional() @IsInt() @Min(0) @Max(100) marginPct?: number @IsOptional() @ValidateNested() @Type(() => ContactInfoDto) contactInfo?: ContactInfoDto @IsOptional() @ValidateNested() @Type(() => BillingInfoDto) billingInfo?: BillingInfoDto }