<?php
namespace App\Entity;
use ApiPlatform\Core\Annotation\ApiResource;
use App\Repository\AcademyRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
#[ORM\Entity(repositoryClass: AcademyRepository::class)]
#[ApiResource()]
class Academy
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column(type: 'integer')]
#[Groups(['user:read'])]
private $id;
#[ORM\Column(type: 'string', length: 120)]
#[Groups(['user:read'])]
private $label;
#[ORM\OneToMany(mappedBy: 'academy', targetEntity: User::class)]
private $users;
#[ORM\Column(type: 'integer', nullable: true)]
#[Groups(['user:read'])]
private $montant;
#[ORM\Column(type: 'integer', nullable: true)]
#[Groups(['user:read'])]
private $dateLimited;
#[ORM\OneToMany(mappedBy: 'academy', targetEntity: PitchDisponibility::class, cascade:['persist','remove'])]
private $pitchDisponibilities;
#[ORM\ManyToOne(targetEntity: Pitch::class, inversedBy: 'academies')]
private $pitch;
public function __construct()
{
$this->users = new ArrayCollection();
$this->pitchDisponibilities = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getLabel(): ?string
{
return $this->label;
}
public function setLabel(string $label): self
{
$this->label = $label;
return $this;
}
/**
* @return Collection<int, User>
*/
public function getUsers(): Collection
{
return $this->users;
}
public function addUser(User $user): self
{
if (!$this->users->contains($user)) {
$this->users[] = $user;
$user->setAcademy($this);
}
return $this;
}
public function removeUser(User $user): self
{
if ($this->users->removeElement($user)) {
// set the owning side to null (unless already changed)
if ($user->getAcademy() === $this) {
$user->setAcademy(null);
}
}
return $this;
}
public function getMontant(): ?int
{
return $this->montant;
}
public function setMontant(?int $montant): self
{
$this->montant = $montant;
return $this;
}
public function getDateLimited(): ?int
{
return $this->dateLimited;
}
public function setDateLimited(?int $dateLimited): self
{
$this->dateLimited = $dateLimited;
return $this;
}
/**
* @return Collection<int, PitchDisponibility>
*/
public function getPitchDisponibilities(): Collection
{
return $this->pitchDisponibilities;
}
public function addPitchDisponibility(PitchDisponibility $pitchDisponibility): self
{
if (!$this->pitchDisponibilities->contains($pitchDisponibility)) {
$this->pitchDisponibilities[] = $pitchDisponibility;
$pitchDisponibility->setAcademy($this);
}
return $this;
}
public function removePitchDisponibility(PitchDisponibility $pitchDisponibility): self
{
if ($this->pitchDisponibilities->removeElement($pitchDisponibility)) {
// set the owning side to null (unless already changed)
if ($pitchDisponibility->getAcademy() === $this) {
$pitchDisponibility->setAcademy(null);
}
}
return $this;
}
public function getPitch(): ?Pitch
{
return $this->pitch;
}
public function setPitch(?Pitch $pitch): self
{
$this->pitch = $pitch;
return $this;
}
}