<?php

namespace App\Enums;

enum RideCategory: string
{
    case SELECT = '';
    case ROLLER_COASTER = 'RC';
    case DARK_RIDE = 'DR';
    case FLAT_RIDE = 'FR';
    case WATER_RIDE = 'WR';
    case TRANSPORT = 'TR';
    case OTHER = 'OT';

    public function label(): string
    {
        return match($this) {
            self::SELECT => 'Select ride type',
            self::ROLLER_COASTER => 'Roller Coaster',
            self::DARK_RIDE => 'Dark Ride',
            self::FLAT_RIDE => 'Flat Ride',
            self::WATER_RIDE => 'Water Ride',
            self::TRANSPORT => 'Transport',
            self::OTHER => 'Other',
        };
    }

    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());
    }
}