src/Entity/SubjectGroupReference.php line 23

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Repository\SubjectGroupReferenceRepository;
  4. use Doctrine\Common\Collections\ArrayCollection;
  5. use Doctrine\Common\Collections\Collection;
  6. use Doctrine\ORM\Mapping as ORM;
  7. use App\Entity\Traits\Timestampable;
  8. /**
  9.  * Groupe de matières national (équivalent national de SubjectGroup).
  10.  *
  11.  * Exemple : "Matières Littéraires", "Matières Scientifiques", "Matières
  12.  * Complémentaires" pour la ClassOption "3ème".
  13.  *
  14.  * Créé par le superadmin. Chaque SubjectReference s'y rattache, ce qui
  15.  * permet de reproduire la même organisation par groupe que dans les
  16.  * bulletins (cf. SubjectGroup), mais au niveau du programme national.
  17.  */
  18. #[ORM\HasLifecycleCallbacks]
  19. #[ORM\Entity(repositoryClassSubjectGroupReferenceRepository::class)]
  20. class SubjectGroupReference
  21. {
  22.     use Timestampable;
  23.     #[ORM\Id]
  24.     #[ORM\GeneratedValue]
  25.     #[ORM\Column]
  26.     private ?int $id null;
  27.     #[ORM\Column(length255)]
  28.     private ?string $name null;
  29.     #[ORM\Column(length255nullabletrue)]
  30.     private ?string $nameEn null;
  31.     #[ORM\ManyToOne(inversedBy'subjectGroupReferences')]
  32.     #[ORM\JoinColumn(nullablefalse)]
  33.     private ?ClassOption $classOption null;
  34.     #[ORM\OneToMany(mappedBy'subjectGroupReference'targetEntitySubjectReference::class)]
  35.     private Collection $subjectReferences;
  36.     #[ORM\ManyToOne]
  37.     private ?User $author null;
  38.     #[ORM\OneToMany(mappedBy'reference'targetEntitySubjectGroup::class)]
  39.     private Collection $subjectGroups;
  40.     public function __construct()
  41.     {
  42.         $this->subjectReferences = new ArrayCollection();
  43.         $this->subjectGroups = new ArrayCollection();
  44.     }
  45.     public function __toString(): string
  46.     {
  47.         return $this->name ' (' . ($this->classOption?->getName() ?? '') . ')';
  48.     }
  49.     public function getId(): ?int
  50.     {
  51.         return $this->id;
  52.     }
  53.     public function getName(): ?string
  54.     {
  55.         return $this->name;
  56.     }
  57.     public function setName(string $name): static
  58.     {
  59.         $this->name $name;
  60.         return $this;
  61.     }
  62.     public function getNameEn(): ?string
  63.     {
  64.         return $this->nameEn;
  65.     }
  66.     public function setNameEn(?string $nameEn): static
  67.     {
  68.         $this->nameEn $nameEn;
  69.         return $this;
  70.     }
  71.     public function getClassOption(): ?ClassOption
  72.     {
  73.         return $this->classOption;
  74.     }
  75.     public function setClassOption(?ClassOption $classOption): static
  76.     {
  77.         $this->classOption $classOption;
  78.         return $this;
  79.     }
  80.     /**
  81.      * @return Collection<int, SubjectReference>
  82.      */
  83.     public function getSubjectReferences(): Collection
  84.     {
  85.         return $this->subjectReferences;
  86.     }
  87.     public function addSubjectReference(SubjectReference $subjectReference): static
  88.     {
  89.         if (!$this->subjectReferences->contains($subjectReference)) {
  90.             $this->subjectReferences->add($subjectReference);
  91.             $subjectReference->setSubjectGroupReference($this);
  92.         }
  93.         return $this;
  94.     }
  95.     public function removeSubjectReference(SubjectReference $subjectReference): static
  96.     {
  97.         if ($this->subjectReferences->removeElement($subjectReference)) {
  98.             if ($subjectReference->getSubjectGroupReference() === $this) {
  99.                 $subjectReference->setSubjectGroupReference(null);
  100.             }
  101.         }
  102.         return $this;
  103.     }
  104.     public function getAuthor(): ?User
  105.     {
  106.         return $this->author;
  107.     }
  108.     public function setAuthor(?User $author): static
  109.     {
  110.         $this->author $author;
  111.         return $this;
  112.     }
  113.     /**
  114.      * @return Collection<int, SubjectGroup>
  115.      */
  116.     public function getSubjectGroups(): Collection
  117.     {
  118.         return $this->subjectGroups;
  119.     }
  120.     public function addSubjectGroup(SubjectGroup $subjectGroup): static
  121.     {
  122.         if (!$this->subjectGroups->contains($subjectGroup)) {
  123.             $this->subjectGroups->add($subjectGroup);
  124.             $subjectGroup->setReference($this);
  125.         }
  126.         return $this;
  127.     }
  128.     public function removeSubjectGroup(SubjectGroup $subjectGroup): static
  129.     {
  130.         if ($this->subjectGroups->removeElement($subjectGroup)) {
  131.             // set the owning side to null (unless already changed)
  132.             if ($subjectGroup->getReference() === $this) {
  133.                 $subjectGroup->setReference(null);
  134.             }
  135.         }
  136.         return $this;
  137.     }
  138. }