<?php
namespace App\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
/**
* Entidad que representa un tipo de recurso en el sistema
*
* @ORM\Entity
*/
class TipoReserva
{
/**
* ID del tipo de recurso
*
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
* @Groups({"tipo_recurso_read", "recurso_read", "recurso_write"})
*/
private $id;
/**
* Nombre del tipo de recurso
*
* @ORM\Column(type="string", length=100, nullable=true)
* @Groups({"tipo_recurso_read", "recurso_read", "recurso_write"})
*/
private $nombre;
/**
* @ORM\OneToMany(targetEntity=\App\Entity\Reserva::class, mappedBy="tipoReserva")
*/
private $reservas;
/**
* Descripción del tipo de recurso
*
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"tipo_recurso_read", "recurso_read"})
*/
private $descripcion;
/**
* Código del tipo de recurso
*
* @ORM\Column(type="string", length=50, nullable=true)
* @Groups({"tipo_recurso_read", "recurso_read"})
*/
private $codigo;
/**
* Recursos asociados a este tipo
* @ORM\OneToMany(targetEntity=\App\Entity\Recurso::class, mappedBy="tipoReserva")
*/
private $recursos;
/**
* Constructor
*/
public function __construct()
{
$this->recursos = new ArrayCollection();
$this->reservas = new ArrayCollection();
}
/**
* Obtiene el ID del tipo de recurso
*
* @return int|null ID del tipo de recurso
*/
public function getId(): ?int
{
return $this->id;
}
/**
* Establece el ID del tipo de recurso
*
* @param int|null $id ID del tipo de recurso
*
* @return self
*/
public function setId(?int $id): self
{
$this->id = $id;
return $this;
}
/**
* Obtiene el nombre del tipo de recurso
*
* @return string|null Nombre del tipo de recurso
*/
public function getNombre(): ?string
{
return $this->nombre;
}
/**
* Establece el nombre del tipo de recurso
*
* @param string $nombre Nombre del tipo de recurso
*
* @return self
*/
public function setNombre(string $nombre): self
{
$this->nombre = $nombre;
return $this;
}
/**
* Obtiene la descripción del tipo de recurso
*
* @return string|null Descripción del tipo de recurso
*/
public function getDescripcion(): ?string
{
return $this->descripcion;
}
/**
* Establece la descripción del tipo de recurso
*
* @param string|null $descripcion Descripción del tipo de recurso
*
* @return self
*/
public function setDescripcion(?string $descripcion): self
{
$this->descripcion = $descripcion;
return $this;
}
/**
* Obtiene el código del tipo de recurso
*
* @return string|null Código del tipo de recurso
*/
public function getCodigo(): ?string
{
return $this->codigo;
}
/**
* Establece el código del tipo de recurso
*
* @param string|null $codigo Código del tipo de recurso
*
* @return self
*/
public function setCodigo(?string $codigo): self
{
$this->codigo = $codigo;
return $this;
}
/**
* Obtiene los recursos asociados a este tipo
*
* @return Collection|Recurso[] Recursos asociados
*/
public function getRecursos(): Collection
{
return $this->recursos;
}
/**
* Agrega un recurso a este tipo
*
* @param Recurso $recurso Recurso a agregar
*
* @return self
*/
public function addRecurso(Recurso $recurso): self
{
if (!$this->recursos->contains($recurso)) {
$this->recursos[] = $recurso;
$recurso->setTipoRecurso($this);
}
return $this;
}
/**
* Elimina un recurso de este tipo
*
* @param Recurso $recurso Recurso a eliminar
*
* @return self
*/
public function removeRecurso(Recurso $recurso): self
{
if ($this->recursos->removeElement($recurso)) {
// Establecer el lado propietario como null (a menos que ya haya cambiado)
if ($recurso->getTipoRecurso() === $this) {
$recurso->setTipoRecurso(null);
}
}
return $this;
}
/**
* Convierte el objeto a string
*
* @return string Representación en string
*/
public function __toString(): string
{
return (string) $this->nombre;
}
/**
* @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->setTipoReserva($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->getTipoReserva() === $this) {
$reserva->setTipoReserva(null);
}
}
return $this;
}
}