feat: Permettre aux enseignants de créer et gérer les devoirs
Les enseignants avaient besoin d'un outil pour créer des devoirs assignés à leurs classes, avec filtrage automatique par matière selon la classe sélectionnée. Le système valide que la date d'échéance tombe un jour ouvrable (lundi-vendredi) et empêche les dates dans le passé. Le domaine modélise le devoir comme un agrégat avec pièces jointes, statut brouillon/publié, et événements métier (création, modification, suppression). Les handlers de notification écoutent ces événements pour les futurs envois aux parents et élèves.
This commit is contained in:
28
backend/src/Scolarite/Domain/Service/DueDateValidator.php
Normal file
28
backend/src/Scolarite/Domain/Service/DueDateValidator.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Scolarite\Domain\Service;
|
||||
|
||||
use App\Administration\Domain\Model\SchoolCalendar\SchoolCalendar;
|
||||
use App\Scolarite\Domain\Exception\DateEcheanceInvalideException;
|
||||
use DateTimeImmutable;
|
||||
|
||||
final readonly class DueDateValidator
|
||||
{
|
||||
public function valider(DateTimeImmutable $dueDate, DateTimeImmutable $now, SchoolCalendar $calendar): void
|
||||
{
|
||||
$tomorrow = $now->modify('+1 day')->setTime(0, 0);
|
||||
|
||||
if ($dueDate < $tomorrow) {
|
||||
throw DateEcheanceInvalideException::dansLePasse($dueDate);
|
||||
}
|
||||
|
||||
if (!$calendar->estJourOuvre($dueDate)) {
|
||||
$entry = $calendar->trouverEntreePourDate($dueDate);
|
||||
$raison = $entry !== null ? $entry->label : 'weekend';
|
||||
|
||||
throw DateEcheanceInvalideException::jourBloque($dueDate, $raison);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user