<?php

declare(strict_types=1);

namespace App\Administration\Domain\Model\GradingConfiguration;

/**
 * Value Object encapsulant la configuration de notation d'un établissement.
 *
 * Délègue le comportement au GradingMode tout en fournissant un point
 * d'extension si des options supplémentaires sont ajoutées ultérieurement
 * (ex: autoriser les demi-points, afficher la moyenne de classe).
 */
final readonly class GradingConfiguration
{
    public function __construct(
        public GradingMode $mode,
    ) {
    }

    public function scaleMax(): ?int
    {
        return $this->mode->scaleMax();
    }

    public function estNumerique(): bool
    {
        return $this->mode->estNumerique();
    }

    public function calculeMoyenne(): bool
    {
        return $this->mode->calculeMoyenne();
    }

    public function equals(self $other): bool
    {
        return $this->mode === $other->mode;
    }
}
