import { ApiPropertyOptional } from '@nestjs/swagger'; import { ProjectDevelopmentStatus } from '@prisma/client'; import { Type } from 'class-transformer'; import { IsString, IsEnum, IsOptional, IsNumber, IsBoolean, Min, Max } from 'class-validator'; export class SearchProjectsDto { @ApiPropertyOptional({ description: 'Tìm kiếm theo tên, chủ đầu tư, quận, thành phố' }) @IsOptional() @IsString() q?: string; @ApiPropertyOptional({ enum: ProjectDevelopmentStatus }) @IsOptional() @IsEnum(ProjectDevelopmentStatus) status?: ProjectDevelopmentStatus; @ApiPropertyOptional({ example: 'Hồ Chí Minh' }) @IsOptional() @IsString() city?: string; @ApiPropertyOptional({ example: 'Thủ Đức' }) @IsOptional() @IsString() district?: string; @ApiPropertyOptional({ example: 'Vingroup' }) @IsOptional() @IsString() developer?: string; @ApiPropertyOptional() @IsOptional() @IsBoolean() @Type(() => Boolean) isVerified?: boolean; @ApiPropertyOptional({ default: 1 }) @IsOptional() @IsNumber() @Type(() => Number) @Min(1) page?: number; @ApiPropertyOptional({ default: 20 }) @IsOptional() @IsNumber() @Type(() => Number) @Min(1) @Max(100) limit?: number; }