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.
38 lines
827 B
PHP
38 lines
827 B
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Scolarite\Domain\Event;
|
|
|
|
use App\Scolarite\Domain\Model\Homework\HomeworkId;
|
|
use App\Shared\Domain\DomainEvent;
|
|
use DateTimeImmutable;
|
|
use Override;
|
|
use Ramsey\Uuid\UuidInterface;
|
|
|
|
final readonly class DevoirCree implements DomainEvent
|
|
{
|
|
public function __construct(
|
|
public HomeworkId $homeworkId,
|
|
public string $classId,
|
|
public string $subjectId,
|
|
public string $teacherId,
|
|
public string $title,
|
|
public DateTimeImmutable $dueDate,
|
|
private DateTimeImmutable $occurredOn,
|
|
) {
|
|
}
|
|
|
|
#[Override]
|
|
public function occurredOn(): DateTimeImmutable
|
|
{
|
|
return $this->occurredOn;
|
|
}
|
|
|
|
#[Override]
|
|
public function aggregateId(): UuidInterface
|
|
{
|
|
return $this->homeworkId->value;
|
|
}
|
|
}
|