51 lines
2.3 KiB
TypeScript
51 lines
2.3 KiB
TypeScript
import { ApiPropertyOptional } from '@nestjs/swagger';
|
|
import { ProjectDevelopmentStatus } from '@prisma/client';
|
|
import { Type } from 'class-transformer';
|
|
import {
|
|
IsString,
|
|
IsNumber,
|
|
IsEnum,
|
|
IsOptional,
|
|
IsArray,
|
|
IsObject,
|
|
IsBoolean,
|
|
Min,
|
|
IsDateString,
|
|
} from 'class-validator';
|
|
|
|
export class UpdateProjectDto {
|
|
@ApiPropertyOptional() @IsOptional() @IsString() name?: string;
|
|
@ApiPropertyOptional() @IsOptional() @IsString() developer?: string;
|
|
@ApiPropertyOptional() @IsOptional() @IsString() developerLogo?: string | null;
|
|
|
|
@ApiPropertyOptional() @IsOptional() @IsNumber() @Type(() => Number) @Min(1)
|
|
totalUnits?: number;
|
|
|
|
@ApiPropertyOptional() @IsOptional() @IsNumber() @Type(() => Number) @Min(0)
|
|
completedUnits?: number;
|
|
|
|
@ApiPropertyOptional({ enum: ProjectDevelopmentStatus })
|
|
@IsOptional() @IsEnum(ProjectDevelopmentStatus)
|
|
status?: ProjectDevelopmentStatus;
|
|
|
|
@ApiPropertyOptional() @IsOptional() @IsString() description?: string | null;
|
|
@ApiPropertyOptional() @IsOptional() @IsObject() amenities?: Record<string, unknown> | null;
|
|
@ApiPropertyOptional() @IsOptional() @IsString() masterPlanUrl?: string | null;
|
|
@ApiPropertyOptional() @IsOptional() @IsString() minPrice?: string | null;
|
|
@ApiPropertyOptional() @IsOptional() @IsString() maxPrice?: string | null;
|
|
@ApiPropertyOptional() @IsOptional() @IsObject() pricePerM2Range?: Record<string, unknown> | null;
|
|
|
|
@ApiPropertyOptional() @IsOptional() @IsNumber() @Type(() => Number) @Min(0)
|
|
totalArea?: number | null;
|
|
|
|
@ApiPropertyOptional() @IsOptional() @IsNumber() @Type(() => Number) buildingCount?: number | null;
|
|
@ApiPropertyOptional() @IsOptional() @IsNumber() @Type(() => Number) floorCount?: number | null;
|
|
@ApiPropertyOptional() @IsOptional() @IsObject() unitTypes?: Record<string, unknown> | null;
|
|
@ApiPropertyOptional() @IsOptional() @IsArray() media?: Record<string, unknown>[] | null;
|
|
@ApiPropertyOptional() @IsOptional() @IsArray() documents?: Record<string, unknown>[] | null;
|
|
@ApiPropertyOptional() @IsOptional() @IsArray() @IsString({ each: true }) tags?: string[];
|
|
@ApiPropertyOptional() @IsOptional() @IsBoolean() isVerified?: boolean;
|
|
@ApiPropertyOptional() @IsOptional() @IsDateString() startDate?: string | null;
|
|
@ApiPropertyOptional() @IsOptional() @IsDateString() completionDate?: string | null;
|
|
}
|