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.
48 lines
1.2 KiB
PHP
48 lines
1.2 KiB
PHP
<?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;
|
|
}
|