<?php

declare(strict_types=1);

namespace App\Models\Informacia\Enums;

/**
 * Enum StavInformacieEnum
 */
enum StavInformacieEnum: string
{
    case ZVEREJNENA = 'ZVEREJNENA';
    case PLANOVANE_ZVEREJNENIE = 'PLANOVANE_ZVEREJNENIE';
    case ROZPISANA = 'ROZPISANA';
    case SKRYTA = 'SKRYTA';

    /**
     * @return string[]
     */
    public static function labels(): array
    {
        return [
            'ZVEREJNENA' => 'zverejnená',
            'PLANOVANE_ZVEREJNENIE' => 'plánované zverejnenie',
            'ROZPISANA' => 'rozpísaná',
            'SKRYTA' => 'skrytá',
        ];
    }

    /**
     * Vráti popis pre konkrétny stav
     */
    public function getLabel(): string
    {
        return match ($this) {
            self::ZVEREJNENA => 'zverejnená',
            self::PLANOVANE_ZVEREJNENIE => 'plánované zverejnenie',
            self::ROZPISANA => 'rozpísaná',
            self::SKRYTA => 'skrytá',
        };
    }

    /**
     * @return string
     */
    public function color(): string
    {
        return match ($this) {
            self::ZVEREJNENA => '#81d2c7',
            self::PLANOVANE_ZVEREJNENIE => '#e0e0e2',
            self::ROZPISANA => '#7389ae',
            self::SKRYTA => '#b5bad0',
        };
    }

    /**
     * @param \App\Models\Informacia\Enums\StavInformacieEnum $other
     *
     * @return bool
     */
    public function equal(self $other): bool
    {
        return $this === $other;
    }
}
