<?php
namespace App\Entity;
use App\Enum\GeneroEnum;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="formador")
*/
class Formador extends PropietarioContenido
{
/**
* @ORM\Column(type="string", nullable=true)
*/
private $formacionRecibida;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $publico;
/**
* @ORM\Column(type="string", nullable=true, enumType="App\Enum\GeneroEnum")
*/
private $genero;
/**
* @ORM\Column(type="string", nullable=true, name="pais_origen")
*/
private $paisOrigen;
/**
* @ORM\Column(type="datetime", nullable=true, name="fecha_nacimiento")
*/
private $fechaNacimiento;
/**
* @ORM\Column(type="string", nullable=true)
*/
private $estudios;
/**
* @ORM\Column(type="string", nullable=true, name="categoria_profesional")
*/
private $categoriaProfesional;
/**
* @ORM\Column(type="json", nullable=true)
*/
private $datosAcademicos;
/**
* @ORM\Column(type="json", nullable=true)
*/
private $datosProfesionales;
/**
* @ORM\Column(type="json", nullable=true)
*/
private $datosFormativos;
/**
* @ORM\Column(type="json", nullable=true)
*/
private $notificaciones;
/**
* @ORM\Column(type="json", nullable=true)
*/
private $autorizaciones;
/**
* @ORM\Column(type="boolean", nullable=true, name="info_datos_formativos_public", options={"default":false})
*/
private $infoDatosFormativosPublic;
/**
* @ORM\Column(type="boolean", nullable=true, name="info_telefono_public", options={"default":false})
*/
private $infoTelefonoPublic;
/**
* @ORM\Column(type="boolean", nullable=true, name="info_email_public", options={"default":false})
*/
private $infoEmailPublic;
/**
* @ORM\Column(type="boolean", nullable=true, name="info_nss_public", options={"default":false})
*/
private $infoNssPublic;
/**
* @ORM\OneToMany(targetEntity=\App\Entity\Imparte::class, mappedBy="formador")
*/
private $impartes;
/**
* @ORM\ManyToMany(targetEntity=\App\Entity\EntidadColaboradora::class, mappedBy="profesionals")
*/
private $entidadColaboradoras;
/**
* @ORM\ManyToMany(targetEntity=\App\Entity\UsuarioHermes::class, mappedBy="formadoresFavorito")
*/
private $usuarioHermesFavorito;
public function __construct()
{
$this->impartes = new ArrayCollection();
$this->entidadColaboradoras = new ArrayCollection();
$this->usuarioHermesFavorito = new ArrayCollection();
}
public function getFormacionRecibida(): ?string
{
return $this->formacionRecibida;
}
public function setFormacionRecibida(?string $formacionRecibida): static
{
$this->formacionRecibida = $formacionRecibida;
return $this;
}
public function isPublico(): ?bool
{
return $this->publico;
}
public function setPublico(?bool $publico): static
{
$this->publico = $publico;
return $this;
}
/**
* @return Collection<int, Imparte>
*/
public function getImpartes(): Collection
{
return $this->impartes;
}
public function addImparte(Imparte $imparte): static
{
if (!$this->impartes->contains($imparte)) {
$this->impartes->add($imparte);
$imparte->setFormador($this);
}
return $this;
}
public function removeImparte(Imparte $imparte): static
{
if ($this->impartes->removeElement($imparte)) {
// set the owning side to null (unless already changed)
if ($imparte->getFormador() === $this) {
$imparte->setFormador(null);
}
}
return $this;
}
/**
* @return Collection<int, EntidadColaboradora>
*/
public function getEntidadColaboradoras(): Collection
{
return $this->entidadColaboradoras;
}
public function addEntidadColaboradora(EntidadColaboradora $entidadColaboradora): static
{
if (!$this->entidadColaboradoras->contains($entidadColaboradora)) {
$this->entidadColaboradoras->add($entidadColaboradora);
$entidadColaboradora->addProfesional($this);
}
return $this;
}
public function removeEntidadColaboradora(EntidadColaboradora $entidadColaboradora): static
{
if ($this->entidadColaboradoras->removeElement($entidadColaboradora)) {
$entidadColaboradora->removeProfesional($this);
}
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->addFormadoresFavorito($this);
}
return $this;
}
public function removeUsuarioHermesFavorito(UsuarioHermes $usuarioHermes): static
{
if ($this->usuarioHermesFavorito->removeElement($usuarioHermes)) {
$usuarioHermes->removeFormadoresFavorito($this);
}
return $this;
}
public function getGenero(): ?GeneroEnum
{
return $this->genero; //? $this->genero->label() : null;
}
public function setGenero(?GeneroEnum $genero): static
{
$this->genero = $genero; //GeneroEnum::tryFrom($genero);
return $this;
}
public function getPaisOrigen(): ?string
{
return $this->paisOrigen;
}
public function setPaisOrigen(?string $paisOrigen): static
{
$this->paisOrigen = $paisOrigen;
return $this;
}
public function getFechaNacimiento(): ?\DateTimeInterface
{
return $this->fechaNacimiento;
}
public function setFechaNacimiento(?\DateTimeInterface $fechaNacimiento): static
{
$this->fechaNacimiento = $fechaNacimiento;
return $this;
}
public function getCategoriaProfesional(): ?string
{
return $this->categoriaProfesional;
}
public function setCategoriaProfesional(?string $categoriaProfesional): static
{
$this->categoriaProfesional = $categoriaProfesional;
return $this;
}
public function getDatosAcademicos(): ?array
{
return $this->datosAcademicos;
}
public function setDatosAcademicos(?array $datosAcademicos): static
{
$this->datosAcademicos = $datosAcademicos;
return $this;
}
public function getDatosProfesionales(): ?array
{
return $this->datosProfesionales;
}
public function setDatosProfesionales(?array $datosProfesionales): static
{
$this->datosProfesionales = $datosProfesionales;
return $this;
}
public function getDatosFormativos(): ?array
{
return $this->datosFormativos;
}
public function setDatosFormativos(?array $datosFormativos): static
{
$this->datosFormativos = $datosFormativos;
return $this;
}
public function isInfoDatosFormativosPublic(): ?bool
{
return $this->infoDatosFormativosPublic;
}
public function setInfoDatosFormativosPublic(?bool $infoDatosFormativosPublic): static
{
$this->infoDatosFormativosPublic = $infoDatosFormativosPublic;
return $this;
}
public function isInfoTelefonoPublic(): ?bool
{
return $this->infoTelefonoPublic;
}
public function setInfoTelefonoPublic(?bool $infoTelefonoPublic): static
{
$this->infoTelefonoPublic = $infoTelefonoPublic;
return $this;
}
public function isInfoEmailPublic(): ?bool
{
return $this->infoEmailPublic;
}
public function setInfoEmailPublic(?bool $infoEmailPublic): static
{
$this->infoEmailPublic = $infoEmailPublic;
return $this;
}
public function isInfoNssPublic(): ?bool
{
return $this->infoNssPublic;
}
public function setInfoNssPublic(?bool $infoNssPublic): static
{
$this->infoNssPublic = $infoNssPublic;
return $this;
}
public function getEstudios(): ?string
{
return $this->estudios;
}
public function setEstudios(?string $estudios): static
{
$this->estudios = $estudios;
return $this;
}
public function getNotificaciones(): ?array
{
return $this->notificaciones;
}
public function setNotificaciones(?array $notificaciones): static
{
$this->notificaciones = $notificaciones;
return $this;
}
public function getAutorizaciones(): ?array
{
return $this->autorizaciones;
}
public function setAutorizaciones(?array $autorizaciones): static
{
$this->autorizaciones = $autorizaciones;
return $this;
}
public function getGrupos(): Collection
{
return new ArrayCollection([]);
}
}