<?php

namespace App\Enums;

enum VehicleType: string
{
    case TREKKER = 'TREKKER';
    case VRACHTWAGEN = 'VRACHTWAGEN';


    case OPLEGGER = 'OPLEGGER';
    case AANHANGER = 'AANHANGER';

    case BEDRIJF = 'BEDRIJF';
    case AUTO = 'AUTO';

    public function label(): string
    {
        return match ($this) {
            self::TREKKER => __('trucks.vehicle_type.tractor'),
            self::VRACHTWAGEN => __('trucks.vehicle_type.truck'),
            self::OPLEGGER => __('trucks.vehicle_type.semi-trailer'),
            self::AANHANGER => __('trucks.vehicle_type.trailer'),
            self::BEDRIJF => __('trucks.vehicle_type.company'),
            self::AUTO => __('trucks.vehicle_type.auto'),
        };
    }

    public static function options(array $selectedOptions = null): array
    {
        if ($selectedOptions) {
            foreach ($selectedOptions as $selectedOption) {
                $options[$selectedOption] = self::from($selectedOption)->label();
            }

            return $options;
        }

        return [
            self::TREKKER->value => self::TREKKER->label(),
            self::VRACHTWAGEN->value => self::VRACHTWAGEN->label(),
            self::OPLEGGER->value => self::OPLEGGER->label(),
            self::AANHANGER->value => self::AANHANGER->label(),
            self::BEDRIJF->value => self::BEDRIJF->label(),
            self::AUTO->value => self::AUTO->label(),
        ];
    }

    public function isTrailer(): bool
    {
        return $this->value === 'OPLEGGER'
            || $this->value === 'AANHANGER';
    }
}
