import { Type } from 'class-transformer'; import { IsEmail, IsInt, IsObject, IsOptional, IsString, Max, MaxLength, Min, MinLength, ValidateIf, } from 'class-validator'; export class ListQueryDto { @IsOptional() @IsString() q?: string; @IsOptional() @Type(() => Number) @IsInt() @Min(1) page?: number = 1; @IsOptional() @Type(() => Number) @IsInt() @Min(1) @Max(100) limit?: number = 20; } export class CreateCompanyDto { @IsString() @MinLength(2) @MaxLength(160) name!: string; @IsOptional() @IsString() @MaxLength(32) nationalId?: string; @IsOptional() @IsString() @MaxLength(40) phone?: string; @IsOptional() @ValidateIf((_, v) => v !== '' && v != null) @IsEmail() email?: string; @IsOptional() @IsString() @MaxLength(200) website?: string; @IsOptional() @IsString() @MaxLength(400) address?: string; @IsOptional() @IsString() @MaxLength(2000) notes?: string; @IsOptional() @IsObject() customFields?: Record; @IsOptional() @ValidateIf((_, v) => v !== '' && v != null) @IsString() ownerId?: string | null; } export class UpdateCompanyDto { @IsOptional() @IsString() @MinLength(2) @MaxLength(160) name?: string; @IsOptional() @IsString() @MaxLength(32) nationalId?: string; @IsOptional() @IsString() @MaxLength(40) phone?: string; @IsOptional() @ValidateIf((_, v) => v !== '' && v != null) @IsEmail() email?: string; @IsOptional() @IsString() @MaxLength(200) website?: string; @IsOptional() @IsString() @MaxLength(400) address?: string; @IsOptional() @IsString() @MaxLength(2000) notes?: string; @IsOptional() @IsObject() customFields?: Record; @IsOptional() @ValidateIf((_, v) => v !== '' && v != null) @IsString() ownerId?: string | null; } export class CreatePersonDto { @IsString() @MinLength(1) @MaxLength(80) firstName!: string; @IsString() @MinLength(1) @MaxLength(80) lastName!: string; @IsOptional() @ValidateIf((_, v) => v !== '' && v != null) @IsEmail() email?: string; @IsOptional() @IsString() @MaxLength(40) phone?: string; @IsOptional() @IsString() @MaxLength(40) mobile?: string; @IsOptional() @IsString() @MaxLength(120) position?: string; @IsOptional() @IsString() @MaxLength(2000) notes?: string; @IsOptional() @ValidateIf((_, v) => v !== '' && v != null) @IsString() companyId?: string | null; @IsOptional() @IsObject() customFields?: Record; @IsOptional() @ValidateIf((_, v) => v !== '' && v != null) @IsString() ownerId?: string | null; } export class UpdatePersonDto { @IsOptional() @IsString() @MinLength(1) @MaxLength(80) firstName?: string; @IsOptional() @IsString() @MinLength(1) @MaxLength(80) lastName?: string; @IsOptional() @ValidateIf((_, v) => v !== '' && v != null) @IsEmail() email?: string; @IsOptional() @IsString() @MaxLength(40) phone?: string; @IsOptional() @IsString() @MaxLength(40) mobile?: string; @IsOptional() @IsString() @MaxLength(120) position?: string; @IsOptional() @IsString() @MaxLength(2000) notes?: string; @IsOptional() @ValidateIf((_, v) => v !== '' && v != null) @IsString() companyId?: string | null; @IsOptional() @IsObject() customFields?: Record; @IsOptional() @ValidateIf((_, v) => v !== '' && v != null) @IsString() ownerId?: string | null; }