feat: Gestion des classes scolaires

Permet aux administrateurs de créer, modifier et supprimer des classes
pour organiser les élèves par niveau. L'archivage soft-delete préserve
l'historique tout en masquant les classes obsolètes.

Inclut la validation des noms (2-50 caractères), les niveaux scolaires
du CP à la Terminale, et les contrôles d'accès par rôle.
This commit is contained in:
2026-02-05 15:24:29 +01:00
parent b45ef735db
commit 8e09e0abf1
54 changed files with 5099 additions and 5 deletions

View File

@@ -0,0 +1,47 @@
<?php
declare(strict_types=1);
namespace App\Administration\Domain\Repository;
use App\Administration\Domain\Model\SchoolClass\AcademicYearId;
use App\Administration\Domain\Model\SchoolClass\ClassId;
use App\Administration\Domain\Model\SchoolClass\ClassName;
use App\Administration\Domain\Model\SchoolClass\SchoolClass;
use App\Shared\Domain\Tenant\TenantId;
interface ClassRepository
{
public function save(SchoolClass $class): void;
/**
* @throws \App\Administration\Domain\Exception\ClasseNotFoundException
*/
public function get(ClassId $id): SchoolClass;
public function findById(ClassId $id): ?SchoolClass;
/**
* Recherche une classe par nom dans un tenant et une année scolaire.
*/
public function findByName(
ClassName $name,
TenantId $tenantId,
AcademicYearId $academicYearId,
): ?SchoolClass;
/**
* Retourne toutes les classes actives d'un tenant pour une année scolaire.
*
* @return SchoolClass[]
*/
public function findActiveByTenantAndYear(
TenantId $tenantId,
AcademicYearId $academicYearId,
): array;
/**
* Supprime une classe du repository.
*/
public function delete(ClassId $id): void;
}