<?phpnamespace App\Entity;use App\Entity\Traits\Timestampable;use App\Repository\LearningCompetencyRepository;use Doctrine\ORM\Mapping as ORM;// Compétence du module Apprentissage — INDÉPENDANTE du système de notation// par compétence existant (App\Entity\Competence, obligatoirement rattaché à// un Quarter OU un Exams). Rattachée à UNE leçon/TD du cahier de texte// (SubjectLesson) précise, pas directement à la matière : un simple libellé// de savoir-faire ("Reconnaître une fraction") propre à cette leçon,// évaluable par toutes les Activity de TOUTES les capsules qui digitalisent// cette même leçon (voir Capsule::$subjectLesson). Une capsule "libre" (sans// SubjectLesson) ne peut donc pas se voir associer de compétence — c'est// voulu : la compétence est un attribut du point de programme, pas de la// capsule. La "note" existe seulement en creux, via l'historique des// StudentActivityAttempt des activités qui la référencent (voir// StudentActivityAttemptRepository::findByStudentAndCompetency).#[ORM\HasLifecycleCallbacks]#[ORM\Entity(repositoryClass: LearningCompetencyRepository::class)]class LearningCompetency{ use Timestampable; #[ORM\Id] #[ORM\GeneratedValue] #[ORM\Column] private ?int $id = null; #[ORM\ManyToOne(inversedBy: 'learningCompetencies')] #[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')] private ?SubjectLesson $subjectLesson = null; #[ORM\Column(length: 255)] private ?string $name = null; #[ORM\Column(type: 'text', nullable: true)] private ?string $description = null; #[ORM\Column] private int $position = 0; #[ORM\ManyToOne] #[ORM\JoinColumn(nullable: false)] private ?User $author = null; #[ORM\ManyToOne] private ?User $editor = null; public function __toString(): string { return $this->name ?? ''; } public function getId(): ?int { return $this->id; } public function getSubjectLesson(): ?SubjectLesson { return $this->subjectLesson; } public function setSubjectLesson(?SubjectLesson $subjectLesson): static { $this->subjectLesson = $subjectLesson; return $this; } public function getName(): ?string { return $this->name; } public function setName(string $name): static { $this->name = $name; return $this; } public function getDescription(): ?string { return $this->description; } public function setDescription(?string $description): static { $this->description = $description; return $this; } public function getPosition(): int { return $this->position; } public function setPosition(int $position): static { $this->position = $position; return $this; } public function getAuthor(): ?User { return $this->author; } public function setAuthor(?User $author): static { $this->author = $author; return $this; } public function getEditor(): ?User { return $this->editor; } public function setEditor(?User $editor): static { $this->editor = $editor; return $this; }}