Files
CRM_Montzar/apps/api/src/contacts/dto.ts
T

230 lines
3.5 KiB
TypeScript

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<string, unknown>;
@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<string, unknown>;
@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<string, unknown>;
@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<string, unknown>;
@IsOptional()
@ValidateIf((_, v) => v !== '' && v != null)
@IsString()
ownerId?: string | null;
}