'Operating', self::CLOSED_TEMP => 'Temporarily Closed', self::CLOSED_PERM => 'Permanently Closed', self::UNDER_CONSTRUCTION => 'Under Construction', self::DEMOLISHED => 'Demolished', self::RELOCATED => 'Relocated', }; } /** * Get Tailwind CSS classes for status badge */ public function getStatusClasses(): string { return match($this) { self::OPERATING => 'bg-green-100 text-green-800', self::CLOSED_TEMP => 'bg-yellow-100 text-yellow-800', self::CLOSED_PERM => 'bg-red-100 text-red-800', self::UNDER_CONSTRUCTION => 'bg-blue-100 text-blue-800', self::DEMOLISHED => 'bg-gray-100 text-gray-800', self::RELOCATED => 'bg-purple-100 text-purple-800', }; } /** * Check if the park is currently operational */ public function isOperational(): bool { return $this === self::OPERATING; } /** * Check if the park is permanently closed */ public function isPermanentlyClosed(): bool { return in_array($this, [self::CLOSED_PERM, self::DEMOLISHED]); } /** * Check if the park is temporarily closed */ public function isTemporarilyClosed(): bool { return $this === self::CLOSED_TEMP; } /** * Get all status options as an array for forms * * @return array */ public static function options(): array { return array_reduce(self::cases(), function ($carry, $status) { $carry[$status->value] = $status->label(); return $carry; }, []); } }