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 | null; @ApiPropertyOptional() @IsOptional() @IsString() masterPlanUrl?: string | null; @ApiPropertyOptional() @IsOptional() @IsString() minPrice?: string | null; @ApiPropertyOptional() @IsOptional() @IsString() maxPrice?: string | null; @ApiPropertyOptional() @IsOptional() @IsObject() pricePerM2Range?: Record | 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 | null; @ApiPropertyOptional() @IsOptional() @IsArray() media?: Record[] | null; @ApiPropertyOptional() @IsOptional() @IsArray() documents?: Record[] | 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; }