53 lines
1.2 KiB
TypeScript
53 lines
1.2 KiB
TypeScript
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;
|
|
}
|