<?php

declare(strict_types=1);

namespace App\Administration\Application\Port;

use App\Administration\Domain\Model\SchoolClass\AcademicYearId;
use App\Administration\Domain\Model\SchoolClass\SchoolId;
use App\Shared\Domain\Tenant\TenantId;

/**
 * Port pour vérifier l'existence de notes dans une période.
 *
 * Implémenté par le module Notes/Évaluations (Epic 6).
 * L'implémentation par défaut retourne false tant que le module n'existe pas.
 */
interface GradeExistenceChecker
{
    public function hasGradesInPeriod(
        TenantId $tenantId,
        AcademicYearId $academicYearId,
        int $periodSequence,
    ): bool;

    /**
     * Vérifie si des notes existent pour une année scolaire entière.
     *
     * Utilisé pour bloquer le changement de mode de notation quand
     * des évaluations ont déjà été saisies.
     */
    public function hasGradesForYear(
        TenantId $tenantId,
        SchoolId $schoolId,
        AcademicYearId $academicYearId,
    ): bool;
}
