187 lines
4.0 KiB
PHP
187 lines
4.0 KiB
PHP
<?php
|
|
|
|
namespace DMD\LaLigaApi\Entity;
|
|
|
|
use DMD\LaLigaApi\Repository\FacilityRepository;
|
|
use Doctrine\Common\Collections\ArrayCollection;
|
|
use Doctrine\Common\Collections\Collection;
|
|
use Doctrine\ORM\Mapping as ORM;
|
|
|
|
#[ORM\Entity(repositoryClass: FacilityRepository::class)]
|
|
#[ORM\HasLifecycleCallbacks]
|
|
class Facility
|
|
{
|
|
#[ORM\Id]
|
|
#[ORM\GeneratedValue]
|
|
#[ORM\Column]
|
|
private ?int $id = null;
|
|
|
|
#[ORM\Column(length: 255, nullable: true)]
|
|
private ?string $name = null;
|
|
|
|
#[ORM\Column(length: 255, nullable: true)]
|
|
private ?string $address = null;
|
|
|
|
#[ORM\OneToMany(mappedBy: 'facility', targetEntity: Game::class)]
|
|
private Collection $games;
|
|
|
|
#[ORM\ManyToOne(inversedBy: 'facilities')]
|
|
private ?Season $season = null;
|
|
|
|
#[ORM\Column(nullable: true)]
|
|
private ?\DateTimeImmutable $createdAt = null;
|
|
|
|
#[ORM\Column(nullable: true)]
|
|
private ?bool $active = null;
|
|
|
|
#[ORM\Column(nullable: true)]
|
|
private ?array $availableHours = null;
|
|
|
|
#[ORM\OneToMany(mappedBy: 'homeFacility', targetEntity: Team::class)]
|
|
private Collection $teams;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->games = new ArrayCollection();
|
|
$this->teams = new ArrayCollection();
|
|
}
|
|
|
|
public function getId(): ?int
|
|
{
|
|
return $this->id;
|
|
}
|
|
|
|
public function getName(): ?string
|
|
{
|
|
return $this->name;
|
|
}
|
|
|
|
public function setName(?string $name): static
|
|
{
|
|
$this->name = $name;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getAddress(): ?string
|
|
{
|
|
return $this->address;
|
|
}
|
|
|
|
public function setAddress(?string $address): static
|
|
{
|
|
$this->address = $address;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return Collection<int, Game>
|
|
*/
|
|
public function getGames(): Collection
|
|
{
|
|
return $this->games;
|
|
}
|
|
|
|
public function addGame(Game $game): static
|
|
{
|
|
if (!$this->games->contains($game)) {
|
|
$this->games->add($game);
|
|
$game->setFacility($this);
|
|
}
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function removeGame(Game $game): static
|
|
{
|
|
if ($this->games->removeElement($game)) {
|
|
// set the owning side to null (unless already changed)
|
|
if ($game->getFacility() === $this) {
|
|
$game->setFacility(null);
|
|
}
|
|
}
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getSeason(): ?Season
|
|
{
|
|
return $this->season;
|
|
}
|
|
|
|
public function setSeason(?Season $season): static
|
|
{
|
|
$this->season = $season;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getCreatedAt(): ?\DateTimeImmutable
|
|
{
|
|
return $this->createdAt;
|
|
}
|
|
|
|
#[ORM\PrePersist]
|
|
public function setCreatedAt(): void
|
|
{
|
|
$timezone = new \DateTimeZone('Europe/Madrid');
|
|
$this->createdAt = new \DateTimeImmutable('now', $timezone);
|
|
}
|
|
|
|
public function isActive(): ?bool
|
|
{
|
|
return $this->active;
|
|
}
|
|
|
|
public function setActive(?bool $active): static
|
|
{
|
|
$this->active = $active;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getAvailableHours(): ?array
|
|
{
|
|
return $this->availableHours;
|
|
}
|
|
|
|
public function setAvailableHours(?array $availableHours): static
|
|
{
|
|
$this->availableHours = $availableHours;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return Collection<int, Team>
|
|
*/
|
|
public function getTeams(): Collection
|
|
{
|
|
return $this->teams;
|
|
}
|
|
|
|
public function addTeam(Team $team): static
|
|
{
|
|
if (!$this->teams->contains($team)) {
|
|
$this->teams->add($team);
|
|
$team->setHomeFacility($this);
|
|
}
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function removeTeam(Team $team): static
|
|
{
|
|
if ($this->teams->removeElement($team)) {
|
|
// set the owning side to null (unless already changed)
|
|
if ($team->getHomeFacility() === $this) {
|
|
$team->setHomeFacility(null);
|
|
}
|
|
}
|
|
|
|
return $this;
|
|
}
|
|
|
|
}
|