<?php

declare(strict_types=1);

namespace App\Enums;

/**
 * Enum RolaPouzivatelaEnum
 *
 * Enumeracny typ pre role pouzivatelov v systeme
 *
 * @author Radoslav Lukac <dev@seka.sk>
 */
enum RolaPouzivatelaEnum: string
{
    case supervizor = 'supervizor';
    case admin = 'admin';
    case spravca_pek = 'spravca_pek';
    case technik = 'technik';
    case technicka_podpora_pts = 'technicka_podpora_pts';
    case kalibrator = 'kalibrator';
    case pek_konatel = 'pek_konatel';
    case pek_poverena_osoba = 'pek_poverena_osoba';
    case prijem = 'prijem';
    case absolvent = 'absolvent';

    /**
     * Definicia popisov pre jednotlive hodnoty enumu
     *
     * @return array<string, string> Asociativne pole popisov
     */
    protected static function labels(): array
    {
        return [
            'supervizor' => 'Supervízor',
            'admin' => 'Administrátor',
            'spravca_pek' => 'Správca PEK',
            'technik' => 'Technik',
            'technicka_podpora_pts' => 'Technická podpora TS',
            'kalibrator' => 'Kalibrátor',
            'pek_konatel' => 'Konateľ PEK',
            'pek_poverena_osoba' => 'Poverená osoba PEK',
            'prijem' => 'Príjem',
            'absolvent' => 'Absolvent',
        ];
    }

    /**
     * Vráti popis pre konkrétny stav
     */
    public function getLabel(): string
    {
        return match ($this) {
            self::supervizor => 'Supervízor',
            self::admin => 'Administrátor',
            self::spravca_pek => 'Správca PEK',
            self::technik => 'Technik',
            self::technicka_podpora_pts => 'Technická podpora TS',
            self::kalibrator => 'Kalibrátor',
            self::pek_konatel => 'Konateľ PEK',
            self::pek_poverena_osoba => 'Poverená osoba PEK',
            self::prijem => 'Príjem',
            self::absolvent => 'Absolvent',
        };
    }
}
