<?php
namespace App\Entity;
use App\Enum\ComarcaEnum;
use App\Enum\TipoViaEnum;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="entidad_colaboradora")
*/
class EntidadColaboradora extends Entidad
{
/**
* @ORM\Column(type="json", nullable=true)
*/
private $configuracionCitas;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $beneficiariaSubvencion;
/**
* @ORM\OneToMany(
* targetEntity=\App\Entity\EntidadColaboradoraPropietarioContenido::class,
* mappedBy="entidadColaboradora"
* )
*/
private $propietarioContenidoEntidadColaboradoras;
/**
* @ORM\OneToMany(targetEntity=\App\Entity\Curso::class, mappedBy="entidadColaboradora")
*/
private $curso;
/**
* @ORM\OneToMany(targetEntity=\App\Entity\ExpedientePerteneAEntidad::class, mappedBy="entidadColaboradora")
*/
private $expedientePerteneAEntidads;
/**
* @ORM\OneToMany(targetEntity=\App\Entity\Calendario::class, mappedBy="entidadColaboradora")
*/
private $calendario;
/**
* @ORM\OneToMany(targetEntity=\App\Entity\Enlace::class, mappedBy="entidadColaboradora")
*/
private $enlace;
/**
* @ORM\ManyToMany(targetEntity=\App\Entity\Formador::class, inversedBy="entidadColaboradoras")
* @ORM\JoinTable(
* name="colabora",
* joinColumns={@ORM\JoinColumn(name="entidad_colaboradora_id", referencedColumnName="id", nullable=false)},
* inverseJoinColumns={@ORM\JoinColumn(name="profesional_id", referencedColumnName="id", nullable=false)}
* )
*/
private $profesionals;
/**
* @ORM\ManyToMany(targetEntity=\App\Entity\Participante::class, mappedBy="entidadColaboradoras")
*/
private $participantes;
/**
* @ORM\ManyToMany(targetEntity=\App\Entity\UsuarioHermes::class, mappedBy="entidadColaboradorasFavorito")
*/
private $usuarioHermesFavorito;
public function __construct()
{
$this->curso = new ArrayCollection();
$this->expedientePerteneAEntidads = new ArrayCollection();
$this->calendario = new ArrayCollection();
$this->enlace = new ArrayCollection();
$this->profesionals = new ArrayCollection();
$this->participantes = new ArrayCollection();
$this->propietarioContenidoEntidadColaboradoras = new ArrayCollection();
$this->usuarioHermesFavorito = new ArrayCollection();
}
public function getConfiguracionCitas(): ?array
{
return $this->configuracionCitas;
}
public function setConfiguracionCitas(?array $configuracionCitas): static
{
$this->configuracionCitas = $configuracionCitas;
return $this;
}
public function isBeneficiariaSubvencion(): ?bool
{
return $this->beneficiariaSubvencion;
}
public function setBeneficiariaSubvencion(?bool $beneficiariaSubvencion): static
{
$this->beneficiariaSubvencion = $beneficiariaSubvencion;
return $this;
}
/**
* @return Collection<int, Curso>
*/
public function getCurso(): Collection
{
return $this->curso;
}
public function addCurso(Curso $curso): static
{
if (!$this->curso->contains($curso)) {
$this->curso->add($curso);
$curso->setEntidadColaboradora($this);
}
return $this;
}
public function removeCurso(Curso $curso): static
{
if ($this->curso->removeElement($curso)) {
// set the owning side to null (unless already changed)
if ($curso->getEntidadColaboradora() === $this) {
$curso->setEntidadColaboradora(null);
}
}
return $this;
}
/**
* @return Collection<int, ExpedientePerteneAEntidad>
*/
public function getExpedientePerteneAEntidads(): Collection
{
return $this->expedientePerteneAEntidads;
}
public function addExpedientePerteneAEntidad(ExpedientePerteneAEntidad $expedientePerteneAEntidad): static
{
if (!$this->expedientePerteneAEntidads->contains($expedientePerteneAEntidad)) {
$this->expedientePerteneAEntidads->add($expedientePerteneAEntidad);
$expedientePerteneAEntidad->setEntidadColaboradora($this);
}
return $this;
}
public function removeExpedientePerteneAEntidad(ExpedientePerteneAEntidad $expedientePerteneAEntidad): static
{
if ($this->expedientePerteneAEntidads->removeElement($expedientePerteneAEntidad)) {
// set the owning side to null (unless already changed)
if ($expedientePerteneAEntidad->getEntidadColaboradora() === $this) {
$expedientePerteneAEntidad->setEntidadColaboradora(null);
}
}
return $this;
}
/**
* @return Collection<int, Calendario>
*/
public function getCalendario(): Collection
{
return $this->calendario;
}
public function addCalendario(Calendario $calendario): static
{
if (!$this->calendario->contains($calendario)) {
$this->calendario->add($calendario);
$calendario->setEntidadColaboradora($this);
}
return $this;
}
public function removeCalendario(Calendario $calendario): static
{
if ($this->calendario->removeElement($calendario)) {
// set the owning side to null (unless already changed)
if ($calendario->getEntidadColaboradora() === $this) {
$calendario->setEntidadColaboradora(null);
}
}
return $this;
}
/**
* @return Collection<int, Enlace>
*/
public function getEnlace(): Collection
{
return $this->enlace;
}
public function addEnlace(Enlace $enlace): static
{
if (!$this->enlace->contains($enlace)) {
$this->enlace->add($enlace);
$enlace->setEntidadColaboradora($this);
}
return $this;
}
public function removeEnlace(Enlace $enlace): static
{
if ($this->enlace->removeElement($enlace)) {
// set the owning side to null (unless already changed)
if ($enlace->getEntidadColaboradora() === $this) {
$enlace->setEntidadColaboradora(null);
}
}
return $this;
}
/**
* @return Collection<int, Formador>
*/
public function getProfesionals(): Collection
{
return $this->profesionals;
}
public function addProfesional(Formador $profesional): static
{
if (!$this->profesionals->contains($profesional)) {
$this->profesionals->add($profesional);
}
return $this;
}
public function removeProfesional(Formador $profesional): static
{
$this->profesionals->removeElement($profesional);
return $this;
}
/**
* @return Collection<int, Participante>
*/
public function getParticipantes(): Collection
{
return $this->participantes;
}
public function addParticipante(Participante $participante): static
{
if (!$this->participantes->contains($participante)) {
$this->participantes->add($participante);
$participante->addEntidadColaboradora($this);
}
return $this;
}
public function removeParticipante(Participante $participante): static
{
if ($this->participantes->removeElement($participante)) {
$participante->removeEntidadColaboradora($this);
}
return $this;
}
/**
* @return Collection<int, EntidadColaboradoraPropietarioContenido>
*/
public function getPropietarioContenidoEntidadColaboradoras(): Collection
{
return $this->propietarioContenidoEntidadColaboradoras;
}
public function addPropietarioContenidoEntidadColaboradora(EntidadColaboradoraPropietarioContenido $propietarioContenidoEntidadColaboradora): static
{
if (!$this->propietarioContenidoEntidadColaboradoras->contains($propietarioContenidoEntidadColaboradora)) {
$this->propietarioContenidoEntidadColaboradoras->add($propietarioContenidoEntidadColaboradora);
$propietarioContenidoEntidadColaboradora->setEntidadColaboradora($this);
}
return $this;
}
public function removePropietarioContenidoEntidadColaboradora(EntidadColaboradoraPropietarioContenido $propietarioContenidoEntidadColaboradora): static
{
if ($this->propietarioContenidoEntidadColaboradoras->removeElement($propietarioContenidoEntidadColaboradora)) {
// set the owning side to null (unless already changed)
if ($propietarioContenidoEntidadColaboradora->getEntidadColaboradora() === $this) {
$propietarioContenidoEntidadColaboradora->setEntidadColaboradora(null);
}
}
return $this;
}
/**
* @return Collection<int, UsuarioHermes>
*/
public function getUsuarioHermesFavorito(): Collection
{
return $this->usuarioHermesFavorito;
}
public function addUsuarioHermesFavorito(UsuarioHermes $usuarioHermes): static
{
if (!$this->usuarioHermesFavorito->contains($usuarioHermes)) {
$this->usuarioHermesFavorito->add($usuarioHermes);
$usuarioHermes->addEntidadColaboradorasFavorito($this);
}
return $this;
}
public function removeUsuarioHermesFavorito(UsuarioHermes $usuarioHermes): static
{
if ($this->usuarioHermesFavorito->removeElement($usuarioHermes)) {
$usuarioHermes->removeEntidadColaboradorasFavorito($this);
}
return $this;
}
public function getFullAddress(): string
{
$partes = [];
$tipoVia = $this->getTipoVia() ? TipoViaEnum::{'TIPO_VIA_' . $this->getTipoVia() . '_DESC'}?->value : '';
if ($tipoVia || $this->getDireccion()) {
$partes[] = trim( $tipoVia . ' ' . $this->getDireccion());
}
// Número, piso, planta, puerta, escalera
$detalle = [];
if ($this->getNumero()) {
$detalle[] = 'Nº ' . $this->getNumero();
}
if ($this->getPiso()) {
$detalle[] = 'Piso ' . $this->getPiso();
}
if ($this->getPlanta()) {
$detalle[] = 'Planta ' . $this->getPlanta();
}
if ($this->getPuerta()) {
$detalle[] = 'Puerta ' . $this->getPuerta();
}
if ($this->getEscalera()) {
$detalle[] = 'Escalera ' . $this->getEscalera();
}
if (!empty($detalle)) {
$partes[] = implode(', ', $detalle);
}
// Código postal + población
if ($this->getCp() || $this->getPoblacion()) {
$partes[] = trim($this->getCp() . ' ' . $this->getPoblacion());
}
// Comarca
if ($this->getComarca()?->value) {
$partes[] = $this->getComarca()->value??'';
}
// Provincia
if ($this->getProvincia()) {
$partes[] = $this->getProvincia();
}
// País
if ($this->getPais()) {
$partes[] = $this->getPais();
}
return implode(' - ', $partes);
}
}