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:
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user