EducationCurriculum.php 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Entity\Education;
  4. use ApiPlatform\Metadata\ApiResource;
  5. use App\Entity\AccessWish\EducationStudentWish;
  6. use App\Entity\Booking\Course;
  7. use App\Entity\Booking\Examen;
  8. use App\Entity\Product\Intangible;
  9. use App\Repository\Education\EducationCurriculumRepository;
  10. // use DH\Auditor\Provider\Doctrine\Auditing\Annotation\Auditable;
  11. use Doctrine\Common\Collections\ArrayCollection;
  12. use Doctrine\Common\Collections\Collection;
  13. use Doctrine\ORM\Mapping as ORM;
  14. /**
  15. * Curriculum éducatif; composé d'un cycle, d'une année et d'un niveau.
  16. */
  17. #[ApiResource(operations: [])]
  18. // #[Auditable]
  19. #[ORM\Entity(repositoryClass: EducationCurriculumRepository::class)]
  20. class EducationCurriculum
  21. {
  22. #[ORM\Id]
  23. #[ORM\Column]
  24. #[ORM\GeneratedValue]
  25. private ?int $id = null;
  26. #[ORM\ManyToOne(inversedBy: 'educationCurriculums')]
  27. #[ORM\JoinColumn(referencedColumnName: 'id', nullable: true, onDelete: 'SET NULL')]
  28. private ?EducationNotationConfig $educationNotationConfig;
  29. #[ORM\ManyToOne(inversedBy: 'educationCurriculums')]
  30. private Education $education;
  31. #[ORM\ManyToOne]
  32. private Cycle $cycle;
  33. #[ORM\OneToMany(mappedBy: 'educationCurriculum', targetEntity: EducationStudent::class, cascade: ['persist'])]
  34. private Collection $educationStudent;
  35. #[ORM\ManyToMany(targetEntity: EducationTiming::class, inversedBy: 'educationCurriculums')]
  36. #[ORM\JoinColumn(name: 'educationCurriculum_id', referencedColumnName: 'id')]
  37. #[ORM\InverseJoinColumn(name: 'educationTiming_id', referencedColumnName: 'id')]
  38. private Collection $educationTimings;
  39. #[ORM\OneToMany(mappedBy: 'educationCurriculum', targetEntity: EducationStudentWish::class, cascade: [], orphanRemoval: false)]
  40. protected Collection $educationStudentWish;
  41. #[ORM\ManyToMany(targetEntity: Course::class, mappedBy: 'educationCurriculum', cascade: [], orphanRemoval: false)]
  42. protected Collection $courses;
  43. #[ORM\ManyToMany(targetEntity: Examen::class, mappedBy: 'educationCurriculum', cascade: [], orphanRemoval: false)]
  44. protected Collection $examens;
  45. #[ORM\ManyToMany(targetEntity: Intangible::class, mappedBy: 'educationCurriculums', cascade: [], orphanRemoval: false)]
  46. protected Collection $intangibles;
  47. #[ORM\ManyToMany(
  48. targetEntity: EducationCurriculumPack::class,
  49. mappedBy: 'requiredEducationCurriculums',
  50. cascade: [],
  51. orphanRemoval: true,
  52. )]
  53. protected Collection $requiredEducationCurriculumPacks;
  54. #[ORM\ManyToMany(
  55. targetEntity: EducationCurriculumPack::class,
  56. mappedBy: 'requiredChoicesEducationCurriculums',
  57. cascade: [],
  58. orphanRemoval: true,
  59. )]
  60. protected Collection $requiredChoicesEducationCurriculumPacks;
  61. #[ORM\ManyToMany(
  62. targetEntity: EducationCurriculumPack::class,
  63. mappedBy: 'optionnalEducationCurriculums',
  64. cascade: [],
  65. orphanRemoval: true,
  66. )]
  67. protected Collection $optionnalEducationCurriculumPacks;
  68. public function __construct()
  69. {
  70. $this->educationStudent = new ArrayCollection();
  71. $this->educationTimings = new ArrayCollection();
  72. }
  73. public function getId(): ?int
  74. {
  75. return $this->id;
  76. }
  77. public function setEducationNotationConfig(?EducationNotationConfig $educationNotationConfig): self
  78. {
  79. $this->educationNotationConfig = $educationNotationConfig;
  80. return $this;
  81. }
  82. public function getEducationNotationConfig(): ?EducationNotationConfig
  83. {
  84. return $this->educationNotationConfig;
  85. }
  86. public function getEducation(): ?Education
  87. {
  88. return $this->education;
  89. }
  90. public function setEducation(?Education $education): self
  91. {
  92. $this->education = $education;
  93. return $this;
  94. }
  95. public function getCycle(): ?Cycle
  96. {
  97. return $this->cycle;
  98. }
  99. public function setCycle(?Cycle $cycle): self
  100. {
  101. $this->cycle = $cycle;
  102. return $this;
  103. }
  104. /**
  105. * @return Collection<int, EducationStudent>
  106. */
  107. public function getEducationStudent(): Collection
  108. {
  109. return $this->educationStudent;
  110. }
  111. public function addEducationStudent(EducationStudent $educationStudent): self
  112. {
  113. if (!$this->educationStudent->contains($educationStudent)) {
  114. $this->educationStudent[] = $educationStudent;
  115. $educationStudent->setEducationCurriculum($this);
  116. }
  117. return $this;
  118. }
  119. public function removeEducationStudent(EducationStudent $educationStudent): self
  120. {
  121. if ($this->educationStudent->removeElement($educationStudent)) {
  122. // set the owning side to null (unless already changed)
  123. if ($educationStudent->getEducationCurriculum() === $this) {
  124. $educationStudent->setEducationCurriculum(null);
  125. }
  126. }
  127. return $this;
  128. }
  129. /**
  130. * @return Collection<int, EducationTiming>
  131. */
  132. public function getEducationTimings(): Collection
  133. {
  134. return $this->educationTimings;
  135. }
  136. public function addEducationTiming(EducationTiming $educationTiming): self
  137. {
  138. if (!$this->educationTimings->contains($educationTiming)) {
  139. $this->educationTimings[] = $educationTiming;
  140. }
  141. return $this;
  142. }
  143. public function removeEducationTiming(EducationTiming $educationTiming): self
  144. {
  145. $this->educationTimings->removeElement($educationTiming);
  146. return $this;
  147. }
  148. function getEducationStudentWish(): Collection
  149. {
  150. return $this->educationStudentWish;
  151. }
  152. function setEducationStudentWish(Collection $educationStudentWish): self
  153. {
  154. $this->educationStudentWish = $educationStudentWish;
  155. return $this;
  156. }
  157. function getCourses(): Collection
  158. {
  159. return $this->courses;
  160. }
  161. function setCourses(Collection $courses): self
  162. {
  163. $this->courses = $courses;
  164. return $this;
  165. }
  166. function getExamens(): Collection
  167. {
  168. return $this->examens;
  169. }
  170. function setExamens(Collection $examens): self
  171. {
  172. $this->examens = $examens;
  173. return $this;
  174. }
  175. function getIntangibles(): Collection
  176. {
  177. return $this->intangibles;
  178. }
  179. function setIntangibles(Collection $intangibles): self
  180. {
  181. $this->intangibles = $intangibles;
  182. return $this;
  183. }
  184. function getRequiredEducationCurriculumPacks(): Collection
  185. {
  186. return $this->requiredEducationCurriculumPacks;
  187. }
  188. function setRequiredEducationCurriculumPacks(Collection $requiredEducationCurriculumPacks): self
  189. {
  190. $this->requiredEducationCurriculumPacks = $requiredEducationCurriculumPacks;
  191. return $this;
  192. }
  193. function getRequiredChoicesEducationCurriculumPacks(): Collection
  194. {
  195. return $this->requiredChoicesEducationCurriculumPacks;
  196. }
  197. function setRequiredChoicesEducationCurriculumPacks(Collection $requiredChoicesEducationCurriculumPacks): self
  198. {
  199. $this->requiredChoicesEducationCurriculumPacks = $requiredChoicesEducationCurriculumPacks;
  200. return $this;
  201. }
  202. function getOptionnalEducationCurriculumPacks(): Collection
  203. {
  204. return $this->optionnalEducationCurriculumPacks;
  205. }
  206. function setOptionnalEducationCurriculumPacks(Collection $optionnalEducationCurriculumPacks): self
  207. {
  208. $this->optionnalEducationCurriculumPacks = $optionnalEducationCurriculumPacks;
  209. return $this;
  210. }
  211. }