<?php
namespace App\Entity;
use App\Entity\User;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use App\Repository\ClubRepository;
#[ORM\Entity(repositoryClass: ClubRepository::class)]
class Club extends User
{
#[ORM\OneToOne(targetEntity: ClubInfo::class, mappedBy: 'owner', cascade: ['persist', 'remove'])]
private $clubInfo;
#[ORM\OneToMany(targetEntity: CoachInfo::class, mappedBy: 'createdByClub')]
private Collection $createdCoachInfos;
#[ORM\OneToMany(targetEntity: Availability::class, mappedBy: 'club')]
private $availabilities;
#[ORM\OneToMany(targetEntity: Partnership::class, mappedBy: 'club')]
private $partnerships;
public function __construct()
{
parent::__construct();
$this->createdCoachInfos = new ArrayCollection();
$this->availabilities = new ArrayCollection();
$this->partnerships = new ArrayCollection();
}
public function getClubInfo(): ?ClubInfo
{
return $this->clubInfo;
}
public function setClubInfo(?ClubInfo $clubInfo): self
{
$this->clubInfo = $clubInfo;
return $this;
}
public function getCreatedCoachInfos(): Collection
{
return $this->createdCoachInfos;
}
public function addCreatedCoachInfo(CoachInfo $coachInfo): self
{
if (!$this->createdCoachInfos->contains($coachInfo)) {
$this->createdCoachInfos[] = $coachInfo;
$coachInfo->setCreatedByClub($this);
}
return $this;
}
public function removeCreatedCoachInfo(CoachInfo $coachInfo): self
{
if ($this->createdCoachInfos->removeElement($coachInfo)) {
if ($coachInfo->getCreatedByClub() === $this) {
$coachInfo->setCreatedByClub(null);
}
}
return $this;
}
/**
* @return Collection|Availability[]
*/
public function getAvailabilities(): Collection
{
return $this->availabilities;
}
public function addAvailability(Availability $availability): self
{
if (!$this->availabilities->contains($availability)) {
$this->availabilities[] = $availability;
$availability->setClub($this);
}
return $this;
}
public function removeAvailability(Availability $availability): self
{
if ($this->availabilities->removeElement($availability)) {
// set the owning side to null (unless already changed)
if ($availability->getClub() === $this) {
$availability->setClub(null);
}
}
return $this;
}
/**
* @return Collection|Partnership[]
*/
public function getPartnerships(): Collection
{
return $this->partnerships;
}
public function addPartnership(Partnership $partnership): self
{
if (!$this->partnerships->contains($partnership)) {
$this->partnerships[] = $partnership;
$partnership->setClub($this);
}
return $this;
}
public function removePartnership(Partnership $partnership): self
{
if ($this->partnerships->removeElement($partnership)) {
// set the owning side to null (unless already changed)
if ($partnership->getClub() === $this) {
$partnership->setClub(null);
}
}
return $this;
}
}