diff --git a/src/Entity/Announcement.php b/src/Entity/Announcement.php index 41bcf91..5cf1c55 100644 --- a/src/Entity/Announcement.php +++ b/src/Entity/Announcement.php @@ -30,21 +30,21 @@ class Announcement private ?Status $status = null; /** - * @var Collection + * @var Collection */ - #[ORM\ManyToMany(targetEntity: Intern::class, mappedBy: 'favorites')] - private Collection $internsfav; + #[ORM\OneToMany(targetEntity: InternApplication::class, mappedBy: 'application')] + private Collection $applicants; /** - * @var Collection + * @var Collection */ - #[ORM\ManyToMany(targetEntity: Intern::class, mappedBy: 'applications')] - private Collection $applicants; + #[ORM\OneToMany(targetEntity: InternFavorite::class, mappedBy: 'announcement')] + private Collection $favoritesInterns; public function __construct() { - $this->internsfav = new ArrayCollection(); $this->applicants = new ArrayCollection(); + $this->favoritesInterns = new ArrayCollection(); } public function getId(): ?int @@ -101,54 +101,60 @@ class Announcement } /** - * @return Collection - */ - public function getInternsfav(): Collection - { - return $this->internsfav; - } - - public function addInternfav(Intern $intern): static - { - if (!$this->internsfav->contains($intern)) { - $this->internsfav->add($intern); - $intern->addFavorite($this); - } - - return $this; - } - - public function removeInternfav(Intern $intern): static - { - if ($this->internsfav->removeElement($intern)) { - $intern->removeFavorite($this); - } - - return $this; - } - - /** - * @return Collection + * @return Collection */ public function getApplicants(): Collection { return $this->applicants; } - public function addApplicant(Intern $applicant): static + public function addApplicants(InternApplication $applicants): static { - if (!$this->applicants->contains($applicant)) { - $this->applicants->add($applicant); - $applicant->addApplication($this); + if (!$this->applicants->contains($applicants)) { + $this->applicants->add($applicants); + $applicants->setApplication($this); } return $this; } - public function removeApplicant(Intern $applicant): static + public function removeApplicants(InternApplication $applicants): static { - if ($this->applicants->removeElement($applicant)) { - $applicant->removeApplication($this); + if ($this->applicants->removeElement($applicants)) { + // set the owning side to null (unless already changed) + if ($applicants->getApplication() === $this) { + $applicants->setApplication(null); + } + } + + return $this; + } + + /** + * @return Collection + */ + public function getFavoritesInterns(): Collection + { + return $this->favoritesInterns; + } + + public function addFavoritesIntern(InternFavorite $favoritesIntern): static + { + if (!$this->favoritesInterns->contains($favoritesIntern)) { + $this->favoritesInterns->add($favoritesIntern); + $favoritesIntern->setAnnouncement($this); + } + + return $this; + } + + public function removeFavoritesIntern(InternFavorite $favoritesIntern): static + { + if ($this->favoritesInterns->removeElement($favoritesIntern)) { + // set the owning side to null (unless already changed) + if ($favoritesIntern->getAnnouncement() === $this) { + $favoritesIntern->setAnnouncement(null); + } } return $this; diff --git a/src/Entity/Intern.php b/src/Entity/Intern.php index b03dcd8..2ca1f8e 100644 --- a/src/Entity/Intern.php +++ b/src/Entity/Intern.php @@ -19,30 +19,35 @@ class Intern extends UserApp private ?string $resume = null; /** - * @var Collection + * @var Collection */ - #[ORM\ManyToMany(targetEntity: Announcement::class, inversedBy: 'interns')] - #[ORM\JoinTable(name: 'favorites')] - private Collection $favorites; + #[ORM\OneToMany(targetEntity: InternDegree::class, mappedBy: 'intern')] + private Collection $degrees; /** - * @var Collection + * @var Collection */ - #[ORM\ManyToMany(targetEntity: Announcement::class, inversedBy: 'applicants')] - #[ORM\JoinTable(name: 'applications')] + #[ORM\OneToMany(targetEntity: InternSkill::class, mappedBy: 'intern')] + private Collection $skills; + + /** + * @var Collection + */ + #[ORM\OneToMany(targetEntity: InternApplication::class, mappedBy: 'intern')] private Collection $applications; /** - * @var Collection + * @var Collection */ - #[ORM\ManyToMany(targetEntity: Skill::class, inversedBy: 'interns')] - private Collection $skills; + #[ORM\OneToMany(targetEntity: InternFavorite::class, mappedBy: 'intern')] + private Collection $favorites; public function __construct() { - $this->favorites = new ArrayCollection(); - $this->applications = new ArrayCollection(); + $this->degrees = new ArrayCollection(); $this->skills = new ArrayCollection(); + $this->applications = new ArrayCollection(); + $this->favorites = new ArrayCollection(); } public function getCoverLetter(): ?string @@ -70,73 +75,121 @@ class Intern extends UserApp } /** - * @return Collection + * @return Collection */ - public function getFavorites(): Collection + public function getDegrees(): Collection { - return $this->favorites; + return $this->degrees; } - public function addFavorite(Announcement $favorite): static + public function addDegree(InternDegree $degree): static { - if (!$this->favorites->contains($favorite)) { - $this->favorites->add($favorite); + if (!$this->degrees->contains($degree)) { + $this->degrees->add($degree); + $degree->setIntern($this); } return $this; } - public function removeFavorite(Announcement $favorite): static + public function removeDegree(InternDegree $degree): static { - $this->favorites->removeElement($favorite); - - return $this; - } - - /** - * @return Collection - */ - public function getApplications(): Collection - { - return $this->applications; - } - - public function addApplication(Announcement $application): static - { - if (!$this->applications->contains($application)) { - $this->applications->add($application); + if ($this->degrees->removeElement($degree)) { + // set the owning side to null (unless already changed) + if ($degree->getIntern() === $this) { + $degree->setIntern(null); + } } return $this; } - public function removeApplication(Announcement $application): static - { - $this->applications->removeElement($application); - - return $this; - } - /** - * @return Collection + * @return Collection */ public function getSkills(): Collection { return $this->skills; } - public function addSkill(Skill $skill): static + public function addSkill(InternSkill $skill): static { if (!$this->skills->contains($skill)) { $this->skills->add($skill); + $skill->setIntern($this); } return $this; } - public function removeSkill(Skill $skill): static + public function removeSkill(InternSkill $skill): static { - $this->skills->removeElement($skill); + if ($this->skills->removeElement($skill)) { + // set the owning side to null (unless already changed) + if ($skill->getIntern() === $this) { + $skill->setIntern(null); + } + } + + return $this; + } + + /** + * @return Collection + */ + public function getApplications(): Collection + { + return $this->applications; + } + + public function addApplication(InternApplication $application): static + { + if (!$this->applications->contains($application)) { + $this->applications->add($application); + $application->setIntern($this); + } + + return $this; + } + + public function removeApplication(InternApplication $application): static + { + if ($this->applications->removeElement($application)) { + // set the owning side to null (unless already changed) + if ($application->getIntern() === $this) { + $application->setIntern(null); + } + } + + return $this; + } + + /** + * @return Collection + */ + public function getFavorites(): Collection + { + return $this->favorites; + } + + public function addFavorite(InternFavorite $favorite): static + { + if (!$this->favorites->contains($favorite)) { + $this->favorites->add($favorite); + $favorite->setIntern($this); + } + + return $this; + } + + public function removeFavorite(InternFavorite $favorite): static + { + if ($this->favorites->removeElement($favorite)) { + // set the owning side to null (unless already changed) + if ($favorite->getIntern() === $this) { + $favorite->setIntern(null); + } + } return $this; } diff --git a/src/Entity/Skill.php b/src/Entity/Skill.php index 47bea20..7752cfe 100644 --- a/src/Entity/Skill.php +++ b/src/Entity/Skill.php @@ -19,9 +19,9 @@ class Skill private ?string $label = null; /** - * @var Collection + * @var Collection */ - #[ORM\ManyToMany(targetEntity: Intern::class, mappedBy: 'skills')] + #[ORM\OneToMany(targetEntity: InternSkill::class, mappedBy: 'skill')] private Collection $interns; public function __construct() @@ -47,27 +47,30 @@ class Skill } /** - * @return Collection + * @return Collection */ public function getInterns(): Collection { return $this->interns; } - public function addIntern(Intern $intern): static + public function addIntern(InternSkill $intern): static { if (!$this->interns->contains($intern)) { $this->interns->add($intern); - $intern->addSkill($this); + $intern->setSkill($this); } return $this; } - public function removeIntern(Intern $intern): static + public function removeIntern(InternSkill $intern): static { if ($this->interns->removeElement($intern)) { - $intern->removeSkill($this); + // set the owning side to null (unless already changed) + if ($intern->getSkill() === $this) { + $intern->setSkill(null); + } } return $this;