<?phpnamespace App\Entity;use App\Repository\ModuleRepository;use Doctrine\Common\Collections\ArrayCollection;use Doctrine\Common\Collections\Collection;use Doctrine\ORM\Mapping as ORM;use App\Entity\Traits\Timestampable;/** * Module / Thème du programme national (créé par le superadmin). * * Niveau optionnel au-dessus de l'Unité d'Apprentissage (LearningUnit) et * de la Leçon (Lesson) — certaines matières (ex: histoire-géo) n'ont ni * Module ni UA, seulement des leçons ; d'autres (ex: informatique) ont les * deux. `position` définit l'ordre d'apparition dans le programme. */#[ORM\HasLifecycleCallbacks]#[ORM\Entity(repositoryClass: ModuleRepository::class)]class Module{ use Timestampable; #[ORM\Id] #[ORM\GeneratedValue] #[ORM\Column] private ?int $id = null; #[ORM\Column(length: 255)] private ?string $title = null; #[ORM\Column(length: 255, nullable: true)] private ?string $titleEn = null; #[ORM\Column] private ?int $position = null; #[ORM\ManyToOne(inversedBy: 'modules')] #[ORM\JoinColumn(nullable: false)] private ?SubjectReference $subjectReference = null; #[ORM\OneToMany(mappedBy: 'module', targetEntity: LearningUnit::class)] #[ORM\OrderBy(['position' => 'ASC'])] private Collection $learningUnits; #[ORM\OneToMany(mappedBy: 'module', targetEntity: Lesson::class)] private Collection $lessons; #[ORM\ManyToOne] private ?User $author = null; public function __construct() { $this->learningUnits = new ArrayCollection(); $this->lessons = new ArrayCollection(); } public function __toString(): string { return $this->title ?? ''; } public function getId(): ?int { return $this->id; } public function getTitle(): ?string { return $this->title; } public function setTitle(string $title): static { $this->title = $title; return $this; } public function getTitleEn(): ?string { return $this->titleEn; } public function setTitleEn(?string $titleEn): static { $this->titleEn = $titleEn; return $this; } public function getPosition(): ?int { return $this->position; } public function setPosition(int $position): static { $this->position = $position; return $this; } public function getSubjectReference(): ?SubjectReference { return $this->subjectReference; } public function setSubjectReference(?SubjectReference $subjectReference): static { $this->subjectReference = $subjectReference; return $this; } /** @return Collection<int, LearningUnit> */ public function getLearningUnits(): Collection { return $this->learningUnits; } /** @return Collection<int, Lesson> */ public function getLessons(): Collection { return $this->lessons; } public function getAuthor(): ?User { return $this->author; } public function setAuthor(?User $author): static { $this->author = $author; return $this; }}