<?php

declare(strict_types=1);

namespace Seka\Portal\Modul\Statistiky\Entities\Zaznam\Enums;

/**
 * Enum DruhEmisnejKontrolyEnum
 *
 * @package Seka\Portal\Modul\Statistiky\Entities\Zaznam\Enums
 */
enum DruhEmisnejKontrolyEnum: string
{
    case ZVLASTNA = 'ZVLASTNA';
    case PRAVIDELNA = 'PRAVIDELNA';
    case OPAKOVANA_PRAVIDELNA = 'OPAKOVANA_PRAVIDELNA';
    case ADMINISTRATIVNA_MIMO_LEHOTY = 'ADMINISTRATIVNA_MIMO_LEHOTY';
    case ADMINISTRATIVNA_POCAS_LEHOTY = 'ADMINISTRATIVNA_POCAS_LEHOTY';
    case OPAKOVANA_ADMINISTRATIVNA_MIMO_LEHOTY = 'OPAKOVANA_ADMINISTRATIVNA_MIMO_LEHOTY';
    case OPAKOVANA_ADMINISTRATIVNA_POCAS_LEHOTY = 'OPAKOVANA_ADMINISTRATIVNA_POCAS_LEHOTY';

    /**
     * @return string
     */
    public function label(): string
    {
        return match ($this) {
            self::ZVLASTNA => 'Zvláštna',
            self::PRAVIDELNA => 'Pravidelná',
            self::OPAKOVANA_PRAVIDELNA => 'Opakovaná pravidelná',
            self::ADMINISTRATIVNA_MIMO_LEHOTY => 'Administratívna mimo lehoty',
            self::ADMINISTRATIVNA_POCAS_LEHOTY => 'Administratívna počas lehoty',
            self::OPAKOVANA_ADMINISTRATIVNA_MIMO_LEHOTY => 'Opakovaná administratívna mimo lehoty',
            self::OPAKOVANA_ADMINISTRATIVNA_POCAS_LEHOTY => 'Opakovaná administratívna počas lehoty',
        };
    }

    /**
     * @param \Seka\Portal\Modul\Statistiky\Entities\Zaznam\Enums\DruhEmisnejKontrolyEnum $other
     *
     * @return bool
     */
    public function equal(self $other): bool
    {
        return $this == $other;
    }
}
