import type { IndustrialParkStatus, UserRole } from '@prisma/client';

export class UpdateIndustrialParkCommand {
  constructor(
    public readonly id: string,
    /** User performing the update. Used to enforce ownership for PARK_OPERATOR role. */
    public readonly requesterUserId: string,
    public readonly requesterRole: UserRole,
    public readonly name?: string,
    public readonly nameEn?: string | null,
    public readonly developer?: string,
    public readonly operator?: string | null,
    public readonly status?: IndustrialParkStatus,
    public readonly occupancyRate?: number,
    public readonly remainingAreaHa?: number,
    public readonly tenantCount?: number,
    public readonly landRentUsdM2Year?: number | null,
    public readonly rbfRentUsdM2Month?: number | null,
    public readonly rbwRentUsdM2Month?: number | null,
    public readonly managementFeeUsd?: number | null,
    public readonly infrastructure?: Record<string, unknown> | null,
    public readonly connectivity?: Record<string, unknown> | null,
    public readonly incentives?: Record<string, unknown> | null,
    public readonly targetIndustries?: string[],
    public readonly description?: string | null,
    public readonly descriptionEn?: string | null,
    public readonly isVerified?: boolean,
    /** Admin-only: reassign the owning PARK_OPERATOR user. Null to unassign. */
    public readonly ownerId?: string | null,
  ) {}
}
