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,22 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Administration\Domain\Exception;
|
||||
|
||||
use RuntimeException;
|
||||
|
||||
use function sprintf;
|
||||
|
||||
final class ClassNameInvalideException extends RuntimeException
|
||||
{
|
||||
public static function pourLongueur(string $value, int $min, int $max): self
|
||||
{
|
||||
return new self(sprintf(
|
||||
'Le nom de classe "%s" doit contenir entre %d et %d caractères.',
|
||||
$value,
|
||||
$min,
|
||||
$max,
|
||||
));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Administration\Domain\Exception;
|
||||
|
||||
use App\Administration\Domain\Model\SchoolClass\ClassName;
|
||||
use RuntimeException;
|
||||
|
||||
use function sprintf;
|
||||
|
||||
final class ClasseDejaExistanteException extends RuntimeException
|
||||
{
|
||||
public static function avecNom(ClassName $name): self
|
||||
{
|
||||
return new self(sprintf(
|
||||
'Une classe avec le nom "%s" existe déjà pour cette année scolaire.',
|
||||
$name,
|
||||
));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Administration\Domain\Exception;
|
||||
|
||||
use App\Administration\Domain\Model\SchoolClass\ClassId;
|
||||
use RuntimeException;
|
||||
|
||||
use function sprintf;
|
||||
|
||||
final class ClasseNonSupprimableException extends RuntimeException
|
||||
{
|
||||
public static function carElevesAffectes(ClassId $classId, int $nombreEleves): self
|
||||
{
|
||||
return new self(sprintf(
|
||||
'La classe "%s" ne peut pas être supprimée car %d élève(s) y sont encore affectés. Veuillez d\'abord réaffecter les élèves.',
|
||||
$classId,
|
||||
$nombreEleves,
|
||||
));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Administration\Domain\Exception;
|
||||
|
||||
use App\Administration\Domain\Model\SchoolClass\ClassId;
|
||||
use RuntimeException;
|
||||
|
||||
use function sprintf;
|
||||
|
||||
final class ClasseNotFoundException extends RuntimeException
|
||||
{
|
||||
public static function withId(ClassId $classId): self
|
||||
{
|
||||
return new self(sprintf(
|
||||
'La classe avec l\'ID "%s" n\'a pas été trouvée.',
|
||||
$classId,
|
||||
));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user