import type { ProjectDevelopmentStatus } from '@prisma/client';

export class CreateProjectCommand {
  constructor(
    public readonly name: string,
    public readonly slug: string,
    public readonly developer: string,
    public readonly developerLogo: string | null,
    public readonly totalUnits: number,
    public readonly status: ProjectDevelopmentStatus,
    public readonly latitude: number,
    public readonly longitude: number,
    public readonly address: string,
    public readonly ward: string,
    public readonly district: string,
    public readonly city: string,
    public readonly description: string | null,
    public readonly amenities: Record<string, unknown> | null,
    public readonly masterPlanUrl: string | null,
    public readonly minPrice: bigint | null,
    public readonly maxPrice: bigint | null,
    public readonly pricePerM2Range: Record<string, unknown> | null,
    public readonly totalArea: number | null,
    public readonly buildingCount: number | null,
    public readonly floorCount: number | null,
    public readonly unitTypes: Record<string, unknown> | null,
    public readonly tags: string[],
    public readonly startDate: Date | null,
    public readonly completionDate: Date | null,
    public readonly suitableFor: string[] = [],
    public readonly whyThisLocation: string | null = null,
    /**
     * Owner of the new project. Admin can pass any user id (e.g. when
     * provisioning a project on behalf of a CĐT). DEVELOPER callers are
     * forced to their own id. Null = unassigned (admin-managed).
     */
    public readonly ownerId: string | null = null,
  ) {}
}
