<?php

declare(strict_types=1);

namespace Seka\Vzdelavanie\Http\Requests\Sprava\Testovanie\Otazka;

use Spatie\Enum\Laravel\Rules\EnumRule;
use Spatie\Enum\Laravel\Http\EnumRequest;
use Illuminate\Foundation\Http\FormRequest;
use Seka\Vzdelavanie\Enums\ModelStatusEnum;
use Spatie\Enum\Laravel\Http\Requests\TransformsEnums;
use Seka\Vzdelavanie\Models\Testovanie\DruhSpravnejOdpovedeEnum;

/**
 * Class OtazkaStoreRequest
 *
 * @package Seka\Vzdelavanie\Http\Requests\Sprava\Testovanie\Otazka
 */
final class OtazkaStoreRequest extends FormRequest
{
    use TransformsEnums;

    /**
     * @return array
     */
    public function rules(): array
    {
        return [
            'znenie' => 'required|min:10|max:8192',
            'druh_spravnej_odpovede' => [
                'required',
                new EnumRule(DruhSpravnejOdpovedeEnum::class),
            ],
            'stav' => [
                'required',
                new EnumRule(ModelStatusEnum::class),
            ],
        ];
    }

    /**
     * @return string[]
     */
    public function enums(): array
    {
        return [
            EnumRequest::REQUEST_REQUEST => [
                'stav' => ModelStatusEnum::class,
                'druh_spravnej_odpovede' => DruhSpravnejOdpovedeEnum::class,
            ],
        ];
    }
}
