<?php

declare(strict_types=1);

namespace App\Administration\Domain\Model\HomeworkRules;

/**
 * Mode d'application des règles de devoirs.
 *
 * - SOFT : avertissement uniquement, l'enseignant peut passer outre
 * - HARD : blocage, impossible de créer le devoir
 * - DISABLED : aucune vérification
 *
 * @see FR81: Configurer règles de timing des devoirs
 */
enum EnforcementMode: string
{
    case SOFT = 'soft';
    case HARD = 'hard';
    case DISABLED = 'disabled';

    /**
     * Détermine si les règles doivent être vérifiées dans ce mode.
     */
    public function estActif(): bool
    {
        return $this !== self::DISABLED;
    }

    /**
     * Détermine si les violations doivent bloquer la création du devoir.
     */
    public function estBloquant(): bool
    {
        return $this === self::HARD;
    }

    /**
     * Libellé utilisateur en français.
     */
    public function label(): string
    {
        return match ($this) {
            self::SOFT => 'Avertissement',
            self::HARD => 'Blocage',
            self::DISABLED => 'Désactivé',
        };
    }
}
