Add enums for ReviewStatus, TrackMaterial, LaunchType, RideCategory, and RollerCoasterType; implement Designer and RideModel models; create migrations for ride_models and helpful_votes tables; enhance RideGalleryComponent documentation

This commit is contained in:
pacnpal
2025-02-25 20:37:19 -05:00
parent 8951e59f49
commit 64b0e90a27
35 changed files with 3157 additions and 1 deletions

71
app/Enums/RideStatus.php Normal file
View File

@@ -0,0 +1,71 @@
<?php
namespace App\Enums;
enum RideStatus: string
{
case SELECT = '';
case OPERATING = 'OPERATING';
case CLOSED_TEMP = 'CLOSED_TEMP';
case SBNO = 'SBNO';
case CLOSING = 'CLOSING';
case CLOSED_PERM = 'CLOSED_PERM';
case UNDER_CONSTRUCTION = 'UNDER_CONSTRUCTION';
case DEMOLISHED = 'DEMOLISHED';
case RELOCATED = 'RELOCATED';
public function label(): string
{
return match($this) {
self::SELECT => 'Select status',
self::OPERATING => 'Operating',
self::CLOSED_TEMP => 'Temporarily Closed',
self::SBNO => 'Standing But Not Operating',
self::CLOSING => 'Closing',
self::CLOSED_PERM => 'Permanently Closed',
self::UNDER_CONSTRUCTION => 'Under Construction',
self::DEMOLISHED => 'Demolished',
self::RELOCATED => 'Relocated',
};
}
public function isPostClosingStatus(): bool
{
return in_array($this, [
self::SBNO,
self::CLOSED_PERM,
]);
}
public static function postClosingStatuses(): array
{
return [
self::SBNO,
self::CLOSED_PERM,
];
}
public static function values(): array
{
return array_column(self::cases(), 'value');
}
public static function labels(): array
{
return array_map(fn($case) => $case->label(), self::cases());
}
public static function options(): array
{
return array_combine(self::values(), self::labels());
}
public static function postClosingOptions(): array
{
$statuses = array_filter(self::cases(), fn($case) => $case->isPostClosingStatus());
return array_combine(
array_column($statuses, 'value'),
array_map(fn($case) => $case->label(), $statuses)
);
}
}