<?php
namespace App\Entity;
use App\Enum\TipoModalidad;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity
*/
class Recurso extends \App\Entity\BaseEntity
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="string", nullable=true)
*/
private $nombre;
/**
* @ORM\Column(type="string", nullable=true)
*/
private $descripcion;
/**
* @ORM\OneToMany(
* targetEntity=\App\Entity\DisponibilidadDiaria::class,
* mappedBy="recurso",
* cascade={"persist","remove"}
* )
* @Assert\Valid
*/
private $disponibilidadDiaria;
/**
* @ORM\OneToMany(
* targetEntity=\App\Entity\NoDisponibilidadAnual::class,
* mappedBy="recurso",
* cascade={"persist","remove"}
* )
* @Assert\Valid
*/
private $noDisponibilidadAnual;
/**
* @ORM\ManyToOne(targetEntity=\App\Entity\TipoReserva::class, inversedBy="recursos")
* @ORM\JoinColumn(name="tipo_recurso_id", referencedColumnName="id")
*/
private $tipoReserva;
/**
* @ORM\ManyToOne(targetEntity=\App\Entity\Entidad::class, inversedBy="recursos")
* @ORM\JoinColumn(name="entidad_id", referencedColumnName="id")
*/
private $entidad;
/**
* @ORM\Column(type="string", nullable=true)
*/
private $ubicacion;
/**
* @ORM\Column(type="string", nullable=true)
*/
private $categoria;
/**
* @ORM\OneToMany(targetEntity=\App\Entity\Reserva::class, mappedBy="recurso")
*/
private $reservas;
/**
* @ORM\ManyToOne(targetEntity=\App\Entity\EstadoRecurso::class, inversedBy="recursos")
* @ORM\JoinColumn(name="estado_recurso_id", referencedColumnName="id")
*/
private $estadoRecurso;
/**
* @ORM\ManyToOne(targetEntity=\App\Entity\CategoriaRecurso::class, inversedBy="recursos")
* @ORM\JoinColumn(name="categoria_recurso_id", referencedColumnName="id")
*/
private $categoriaRecurso;
/**
* @ORM\Column(type="string", nullable=true)
*/
private $modalidad;
/**
* @ORM\Column(type="datetime", nullable=true)
* @Groups({"recurso_read"})
*/
private $fechaCreacion;
/**
* @ORM\Column(type="datetime", nullable=true)
* @Groups({"recurso_read"})
*/
private $fechaActualizacion;
/**
* @ORM\Column(type="datetime", nullable=true)
* @Groups({"recurso_read"})
*/
private $deletedAt;
public function __construct()
{
$this->reservas = new ArrayCollection();
$this->disponibilidadDiaria = new ArrayCollection();
$this->noDisponibilidadAnual = new ArrayCollection();
$this->fechaCreacion = new \DateTime();
$this->fechaActualizacion = new \DateTime();
}
public function getId(): ?int
{
return $this->id;
}
public function setId($id)
{
$this->id = $id;
return $this;
}
public function getNombre(): ?string
{
return $this->nombre;
}
public function setNombre(?string $nombre): static
{
$this->nombre = $nombre;
return $this;
}
public function getDescripcion(): ?string
{
return $this->descripcion;
}
public function setDescripcion(?string $descripcion): static
{
$this->descripcion = $descripcion;
return $this;
}
public function getTipoRecurso(): ?TipoReserva
{
return $this->tipoReserva;
}
public function setTipoRecurso(?TipoReserva $tipoRecurso): static
{
$this->tipoReserva = $tipoRecurso;
return $this;
}
public function getUbicacion(): ?string
{
return $this->ubicacion;
}
public function setUbicacion(?string $ubicacion): static
{
$this->ubicacion = $ubicacion;
return $this;
}
public function getCategoria(): ?string
{
return $this->categoria;
}
public function setCategoria(?string $categoria): static
{
$this->categoria = $categoria;
return $this;
}
/**
* @return Collection<int, Reserva>
*/
public function getReservas(): Collection
{
return $this->reservas;
}
public function addReserva(Reserva $reserva): static
{
if (!$this->reservas->contains($reserva)) {
$this->reservas->add($reserva);
$reserva->setRecurso($this);
}
return $this;
}
public function removeReserva(Reserva $reserva): static
{
if ($this->reservas->removeElement($reserva)) {
// set the owning side to null (unless already changed)
if ($reserva->getRecurso() === $this) {
$reserva->setRecurso(null);
}
}
return $this;
}
public function getEstadoRecurso(): ?EstadoRecurso
{
return $this->estadoRecurso;
}
public function setEstadoRecurso(?EstadoRecurso $estadoRecurso): static
{
$this->estadoRecurso = $estadoRecurso;
return $this;
}
public function getCategoriaRecurso(): ?CategoriaRecurso
{
return $this->categoriaRecurso;
}
public function setCategoriaRecurso(?CategoriaRecurso $categoriaRecurso): static
{
$this->categoriaRecurso = $categoriaRecurso;
return $this;
}
public function getFechaCreacion(): ?\DateTime
{
return $this->fechaCreacion;
}
public function setFechaCreacion(?\DateTime $fechaCreacion): static
{
$this->fechaCreacion = $fechaCreacion;
return $this;
}
public function getFechaActualizacion(): ?\DateTime
{
return $this->fechaActualizacion;
}
public function setFechaActualizacion(?\DateTime $fechaActualizacion): static
{
$this->fechaActualizacion = $fechaActualizacion;
return $this;
}
public function __toString(): string
{
return $this->nombre;
}
public function getTipoReserva(): ?TipoReserva
{
return $this->tipoReserva;
}
public function setTipoReserva(?TipoReserva $tipoReserva): static
{
$this->tipoReserva = $tipoReserva;
return $this;
}
/**
* @return Collection<int, DisponibilidadDiaria>
*/
public function getDisponibilidadDiaria(): Collection
{
return $this->disponibilidadDiaria;
}
public function addDisponibilidadDiaria(DisponibilidadDiaria $disponibilidad): static
{
if (!$this->disponibilidadDiaria->contains($disponibilidad)) {
$this->disponibilidadDiaria->add($disponibilidad);
$disponibilidad->setRecurso($this);
}
return $this;
}
public function removeDisponibilidadDiaria(DisponibilidadDiaria $disponibilidad): static
{
if ($this->disponibilidadDiaria->removeElement($disponibilidad)) {
// set the owning side to null (unless already changed)
if ($disponibilidad->getRecurso() === $this) {
$disponibilidad->setRecurso(null);
}
}
return $this;
}
/**
* @return Collection<int, NoDisponibilidadAnual>
*/
public function getNoDisponibilidadAnual(): Collection
{
return $this->noDisponibilidadAnual;
}
public function addNoDisponibilidadAnual(NoDisponibilidadAnual $noDisponibilidad): static
{
if (!$this->noDisponibilidadAnual->contains($noDisponibilidad)) {
$this->noDisponibilidadAnual->add($noDisponibilidad);
$noDisponibilidad->setRecurso($this);
}
return $this;
}
public function removeNoDisponibilidadAnual(NoDisponibilidadAnual $noDisponibilidad): static
{
if ($this->noDisponibilidadAnual->removeElement($noDisponibilidad)) {
// set the owning side to null (unless already changed)
if ($noDisponibilidad->getRecurso() === $this) {
$noDisponibilidad->setRecurso(null);
}
}
return $this;
}
public function getModalidad(): ?TipoModalidad
{
return $this->modalidad;
}
public function setModalidad(?TipoModalidad $modalidad): static
{
$this->modalidad = $modalidad;
return $this;
}
public function addDisponibilidadDiarium(DisponibilidadDiaria $disponibilidadDiarium): static
{
if (!$this->disponibilidadDiaria->contains($disponibilidadDiarium)) {
$this->disponibilidadDiaria->add($disponibilidadDiarium);
$disponibilidadDiarium->setRecurso($this);
}
return $this;
}
public function removeDisponibilidadDiarium(DisponibilidadDiaria $disponibilidadDiarium): static
{
if ($this->disponibilidadDiaria->removeElement($disponibilidadDiarium)) {
// set the owning side to null (unless already changed)
if ($disponibilidadDiarium->getRecurso() === $this) {
$disponibilidadDiarium->setRecurso(null);
}
}
return $this;
}
public function getDeletedAt(): ?\DateTimeInterface
{
return $this->deletedAt;
}
public function setDeletedAt(?\DateTimeInterface $deletedAt): static
{
$this->deletedAt = $deletedAt;
return $this;
}
public function getEntidad(): ?Entidad
{
return $this->entidad;
}
public function setEntidad(?Entidad $entidad): static
{
$this->entidad = $entidad;
return $this;
}
}