<?phpnamespace App\Entity;use App\Repository\LearningUnitRepository;use Doctrine\Common\Collections\ArrayCollection;use Doctrine\Common\Collections\Collection;use Doctrine\ORM\Mapping as ORM;use App\Entity\Traits\Timestampable;/** * Unité d'Apprentissage (UA) du programme national (créée par le superadmin). * * Niveau optionnel entre le Module (nullable — une UA peut exister sans * Module parent, ex: matières sans Thème mais avec UA) et la Leçon (Lesson). * `position` définit l'ordre d'apparition dans le programme. */#[ORM\HasLifecycleCallbacks]#[ORM\Entity(repositoryClass: LearningUnitRepository::class)]class LearningUnit{ 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: 'learningUnits')] #[ORM\JoinColumn(nullable: false)] private ?SubjectReference $subjectReference = null; #[ORM\ManyToOne(inversedBy: 'learningUnits')] #[ORM\JoinColumn(nullable: true, onDelete: 'SET NULL')] private ?Module $module = null; #[ORM\OneToMany(mappedBy: 'learningUnit', targetEntity: Lesson::class)] private Collection $lessons; #[ORM\ManyToOne] private ?User $author = null; public function __construct() { $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; } public function getModule(): ?Module { return $this->module; } public function setModule(?Module $module): static { $this->module = $module; return $this; } /** @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; }}