<?php

declare(strict_types=1);

namespace Seka\Portal\Modul\Terminy\Entities\Udalost;

/**
 * Enum DruhUdalosti
 *
 * @package Seka\Portal\Modul\Terminy\Entities\Udalost
 */
enum DruhUdalosti: string
{
    case ZAKLADNE_SKOLENIE = 'ZAKLADNE_SKOLENIE';
    case PRACOVNE_STRETNUTIE = 'PRACOVNE_STRETNUTIE';
    case DOSKOLOVACIE_SKOLENIE = 'DOSKOLOVACIE_SKOLENIE';
    case SKUSKA_ODBORNEJ_SPOSOBILOSTI = 'SKUSKA_ODBORNEJ_SPOSOBILOSTI';
    case SKOLENIE_ADMINISTRATIVNYCH_PRACOVNIKOV = 'SKOLENIE_ADMINISTRATIVNYCH_PRACOVNIKOV';

    /**
     * @param string $name
     *
     * @return self|null
     */
    public static function fromName(string $name): ?self
    {
        foreach (self::cases() as $case) {
            if ($case->name === $name) {
                return $case;
            }
        }

        return null;
    }

    /**
     * @return string
     */
    public function label(): string
    {
        return match ($this) {
            self::ZAKLADNE_SKOLENIE => 'základné školenie',
            self::PRACOVNE_STRETNUTIE => 'pracovné stretnutie',
            self::DOSKOLOVACIE_SKOLENIE => 'doškoľovacie školenie',
            self::SKUSKA_ODBORNEJ_SPOSOBILOSTI => 'skúška odbornej spôsobilosti',
            self::SKOLENIE_ADMINISTRATIVNYCH_PRACOVNIKOV => 'školenie administratívnych pracovníkov',
        };
    }

    /**
     * @return string
     */
    public function color(): string
    {
        return match ($this) {
            self::ZAKLADNE_SKOLENIE => '#adbadd',
            self::PRACOVNE_STRETNUTIE => '#c0d1d8',
            self::DOSKOLOVACIE_SKOLENIE => '#efe1e6',
            self::SKUSKA_ODBORNEJ_SPOSOBILOSTI => '#a5a9f1',
            self::SKOLENIE_ADMINISTRATIVNYCH_PRACOVNIKOV => '#ffe959',
        };
    }

    /**
     * @param \Seka\Portal\Modul\Terminy\Entities\Udalost\DruhUdalosti $other
     *
     * @return bool
     */
    public function equal(self $other): bool
    {
        return $this == $other;
    }
}
