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; }