<?php

declare(strict_types=1);

namespace Seka\Portal\Modul\Statistiky\Services\Analyzators\Validators;

use Seka\Portal\Modul\Statistiky\Entities\Zaznam\Enums\DruhEmisnejKontrolyEnum;

/**
 * Class LexicalKontrolaDruh
 *
 * @package Seka\Portal\Modul\Statistiky\Services\Analyzators\Validators
 */
final class LexicalKontrolaDruh extends Lexical
{
    /**
     * @param $input
     *
     * @return bool
     */
    public function validate($input): bool
    {
        parent::validate($input);

        return strlen($input) > 0 && collect(DruhEmisnejKontrolyEnum::cases())->map(fn($case) => $case->value)->contains(mb_strtoupper($input));
    }

    /**
     * @param $input
     *
     * @return string
     */
    public function getErrorMsg($input): string
    {
        return sprintf('povolene hodnoty: %s, %s', collect(DruhEmisnejKontrolyEnum::cases())->map(fn($case) => $case->value)->implode(','), $input);
    }
}
