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

88 lines
1.5 KiB
TypeScript

import {
IsBoolean,
IsInt,
IsOptional,
IsString,
MaxLength,
Min,
MinLength,
} from 'class-validator';
import { Transform, Type } from 'class-transformer';
export class CreateFaqArticleDto {
@IsString()
@MinLength(2)
@MaxLength(500)
question!: string;
@IsString()
@MinLength(2)
@MaxLength(8000)
answer!: string;
@IsOptional()
@IsString()
@MaxLength(100)
category?: string;
@IsOptional()
@IsBoolean()
isPublished?: boolean;
@IsOptional()
@Type(() => Number)
@IsInt()
@Min(0)
position?: number;
}
export class UpdateFaqArticleDto {
@IsOptional()
@IsString()
@MinLength(2)
@MaxLength(500)
question?: string;
@IsOptional()
@IsString()
@MinLength(2)
@MaxLength(8000)
answer?: string;
@IsOptional()
@IsString()
@MaxLength(100)
category?: string | null;
@IsOptional()
@IsBoolean()
isPublished?: boolean;
@IsOptional()
@Type(() => Number)
@IsInt()
@Min(0)
position?: number;
}
export class ListFaqQueryDto {
@IsOptional()
@IsString()
q?: string;
@IsOptional()
@IsString()
category?: string;
/** اگر true فقط مقالات منتشرشده */
@IsOptional()
@Transform(({ value }) => {
if (value === undefined || value === null || value === '') return undefined;
if (value === true || value === 'true' || value === '1') return true;
if (value === false || value === 'false' || value === '0') return false;
return Boolean(value);
})
@IsBoolean()
publishedOnly?: boolean;
}