<?php

declare(strict_types=1);

namespace App\Administration\Domain\Model\HomeworkRules;

/**
 * Type de règle de devoirs configurable par l'établissement.
 *
 * Extensible : de nouveaux types pourront être ajoutés (V2)
 * sans impacter les règles existantes.
 *
 * @see FR81: Configurer règles de timing des devoirs
 */
enum RuleType: string
{
    case MINIMUM_DELAY = 'minimum_delay';
    case NO_MONDAY_AFTER = 'no_monday_after';

    /**
     * Clés de paramètres attendues pour ce type de règle.
     *
     * @return string[]
     */
    public function requiredParams(): array
    {
        return match ($this) {
            self::MINIMUM_DELAY => ['days'],
            self::NO_MONDAY_AFTER => ['day', 'time'],
        };
    }

    /**
     * Libellé utilisateur en français.
     */
    public function label(): string
    {
        return match ($this) {
            self::MINIMUM_DELAY => 'Délai minimum avant échéance',
            self::NO_MONDAY_AFTER => 'Pas de devoir pour lundi après un horaire',
        };
    }
}
