src/Entity/UserProfile.php line 10
<?phpnamespace App\Entity;use App\Repository\UserProfileRepository;use Doctrine\ORM\Mapping as ORM;use Symfony\Component\Validator\Constraints as Assert;#[ORM\Entity(repositoryClass: UserProfileRepository::class)]class UserProfile{public const TIPO_FORMADOR_INTERNO = 'interno';public const TIPO_FORMADOR_EMPRESA_EXTERNA = 'empresa_externa';#[ORM\Id]#[ORM\GeneratedValue]#[ORM\Column]private ?int $id = null;#[ORM\OneToOne(inversedBy: 'profile')]#[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')]private ?User $user = null;// ===== DATOS PERSONALES =====#[ORM\Column(length: 100)]private string $nombre;#[ORM\Column(length: 100)]private string $apellido1;#[ORM\Column(length: 100)]private string $apellido2;#[ORM\Column(type: 'date')]private ?\DateTimeInterface $fechaNacimiento = null;#[Assert\NotBlank(message: 'El genero es obligatorio')]#[ORM\Column(length: 10)]private string $sexo;// ===== DIRECCIÓN (OPCIONAL) =====#[ORM\Column(length: 50, nullable: true)]private ?string $tipoVia = null;#[ORM\Column(length: 150, nullable: true)]private ?string $nombreVia = null;#[ORM\Column(length: 10, nullable: true)]private ?string $numeroVia = null;#[ORM\Column(length: 10, nullable: true)]private ?string $codigoPostal = null;#[ORM\Column(length: 100, nullable: true)]private ?string $provincia = null;#[ORM\Column(length: 100, nullable: true)]private ?string $municipio = null;#[ORM\Column(length: 10, nullable: true)]private ?string $portal = null;#[ORM\Column(length: 10, nullable: true)]private ?string $bloque = null;#[ORM\Column(length: 10, nullable: true)]private ?string $escalera = null;#[ORM\Column(length: 10, nullable: true)]private ?string $planta = null;#[ORM\Column(length: 10, nullable: true)]private ?string $puerta = null;#[Assert\Regex(pattern: '/^(?:\+34|0034)?[6-7]\d{8}$/',message: 'Introduzca un número de móvil válido')]#[ORM\Column(length: 20, nullable: true)]private ?string $telefono = null;// ===== VINCULACIÓN PROFESIONAL =====#[ORM\Column(length: 30, nullable: true)]private ?string $tipoFormador = null;// ===== DATOS LABORALES =====#[ORM\ManyToOne]#[ORM\JoinColumn(nullable: true)]private ?TaxonomyValue $centroTrabajo = null;#[ORM\ManyToOne]#[ORM\JoinColumn(nullable: true)]private ?TaxonomyValue $puestoTrabajo = null;#[ORM\ManyToOne]#[ORM\JoinColumn(nullable: true)]private ?TaxonomyValue $especialidad = null;#[ORM\ManyToOne]#[ORM\JoinColumn(nullable: true)]private ?TaxonomyValue $grupo = null;#[ORM\ManyToOne]#[ORM\JoinColumn(nullable: true)]private ?TaxonomyValue $situacionLaboral = null;// ===== EMPRESA EXTERNA =====#[ORM\Column(length: 255, nullable: true)]private ?string $entidadExterna = null;#[ORM\Column(length: 20, nullable: true)]private ?string $cifEntidadExterna = null;#[ORM\Column(length: 255, nullable: true)]private ?string $direccionEntidadExterna = null;#[ORM\Column(length: 255, nullable: true)]private ?string $contactoEntidadExterna = null;// ================== GETTERS & SETTERS ==================public function getId(): ?int{return $this->id;}public function getUser(): ?User{return $this->user;}public function setUser(User $user): self{$this->user = $user;return $this;}public function getNombre(): string{return $this->nombre;}public function setNombre(string $nombre): self{$this->nombre = $nombre;return $this;}public function getApellido1(): string{return $this->apellido1;}public function setApellido1(string $apellido1): self{$this->apellido1 = $apellido1;return $this;}public function getApellido2(): string{return $this->apellido2;}public function setApellido2(string $apellido2): self{$this->apellido2 = $apellido2;return $this;}public function getFechaNacimiento(): ?\DateTimeInterface{return $this->fechaNacimiento;}public function setFechaNacimiento(?\DateTimeInterface $fechaNacimiento): self{$this->fechaNacimiento = $fechaNacimiento;return $this;}public function getSexo(): string{return $this->sexo;}public function setSexo(string $sexo): self{$this->sexo = $sexo;return $this;}public function getTipoVia(): ?string{return $this->tipoVia;}public function setTipoVia(?string $tipoVia): self{$this->tipoVia = $tipoVia;return $this;}public function getNombreVia(): ?string{return $this->nombreVia;}public function setNombreVia(?string $nombreVia): self{$this->nombreVia = $nombreVia;return $this;}public function getNumeroVia(): ?string{return $this->numeroVia;}public function setNumeroVia(?string $numeroVia): self{$this->numeroVia = $numeroVia;return $this;}public function getCodigoPostal(): ?string{return $this->codigoPostal;}public function setCodigoPostal(?string $codigoPostal): self{$this->codigoPostal = $codigoPostal;return $this;}public function getProvincia(): ?string{return $this->provincia;}public function setProvincia(?string $provincia): self{$this->provincia = $provincia;return $this;}public function getMunicipio(): ?string{return $this->municipio;}public function setMunicipio(?string $municipio): self{$this->municipio = $municipio;return $this;}public function getPortal(): ?string{return $this->portal;}public function setPortal(?string $portal): self{$this->portal = $portal;return $this;}public function getBloque(): ?string{return $this->bloque;}public function setBloque(?string $bloque): self{$this->bloque = $bloque;return $this;}public function getEscalera(): ?string{return $this->escalera;}public function setEscalera(?string $escalera): self{$this->escalera = $escalera;return $this;}public function getPlanta(): ?string{return $this->planta;}public function setPlanta(?string $planta): self{$this->planta = $planta;return $this;}public function getPuerta(): ?string{return $this->puerta;}public function setPuerta(?string $puerta): self{$this->puerta = $puerta;return $this;}public function getTelefono(): ?string{return $this->telefono;}public function setTelefono(?string $telefono): self{$this->telefono = $telefono;return $this;}public function getTipoFormador(): ?string{if ($this->tipoFormador !== null) {return $this->tipoFormador;}if ($this->hasExternalCompanyData()) {return self::TIPO_FORMADOR_EMPRESA_EXTERNA;}if ($this->hasLaborData()) {return self::TIPO_FORMADOR_INTERNO;}return null;}public function setTipoFormador(?string $tipoFormador): self{$this->tipoFormador = $tipoFormador;return $this;}public function getCentroTrabajo(): ?TaxonomyValue{return $this->centroTrabajo;}public function setCentroTrabajo(?TaxonomyValue $centroTrabajo): self{$this->centroTrabajo = $centroTrabajo;return $this;}public function getPuestoTrabajo(): ?TaxonomyValue{return $this->puestoTrabajo;}public function setPuestoTrabajo(?TaxonomyValue $puestoTrabajo): self{$this->puestoTrabajo = $puestoTrabajo;return $this;}public function getEspecialidad(): ?TaxonomyValue{return $this->especialidad;}public function setEspecialidad(?TaxonomyValue $especialidad): self{$this->especialidad = $especialidad;return $this;}public function getGrupo(): ?TaxonomyValue{return $this->grupo;}public function setGrupo(?TaxonomyValue $grupo): self{$this->grupo = $grupo;return $this;}public function getSituacionLaboral(): ?TaxonomyValue{return $this->situacionLaboral;}public function setSituacionLaboral(?TaxonomyValue $situacionLaboral): self{$this->situacionLaboral = $situacionLaboral;return $this;}public function getEntidadExterna(): ?string{return $this->entidadExterna;}public function setEntidadExterna(?string $entidadExterna): self{$this->entidadExterna = $entidadExterna;return $this;}public function getCifEntidadExterna(): ?string{return $this->cifEntidadExterna;}public function setCifEntidadExterna(?string $cifEntidadExterna): self{$this->cifEntidadExterna = $cifEntidadExterna;return $this;}public function getDireccionEntidadExterna(): ?string{return $this->direccionEntidadExterna;}public function setDireccionEntidadExterna(?string $direccionEntidadExterna): self{$this->direccionEntidadExterna = $direccionEntidadExterna;return $this;}public function getContactoEntidadExterna(): ?string{return $this->contactoEntidadExterna;}public function setContactoEntidadExterna(?string $contactoEntidadExterna): self{$this->contactoEntidadExterna = $contactoEntidadExterna;return $this;}public function isFormadorInterno(): bool{return $this->getTipoFormador() === self::TIPO_FORMADOR_INTERNO;}public function isEmpresaExterna(): bool{return $this->getTipoFormador() === self::TIPO_FORMADOR_EMPRESA_EXTERNA;}public function hasLaborData(): bool{return $this->centroTrabajo !== null|| $this->puestoTrabajo !== null|| $this->especialidad !== null|| $this->grupo !== null|| $this->situacionLaboral !== null;}public function hasExternalCompanyData(): bool{return ($this->entidadExterna !== null && trim($this->entidadExterna) !== '')|| ($this->cifEntidadExterna !== null && trim($this->cifEntidadExterna) !== '')|| ($this->direccionEntidadExterna !== null && trim($this->direccionEntidadExterna) !== '')|| ($this->contactoEntidadExterna !== null && trim($this->contactoEntidadExterna) !== '');}public function clearLaborData(): self{$this->centroTrabajo = null;$this->puestoTrabajo = null;$this->especialidad = null;$this->grupo = null;$this->situacionLaboral = null;return $this;}public function clearExternalCompanyData(): self{$this->entidadExterna = null;$this->cifEntidadExterna = null;$this->direccionEntidadExterna = null;$this->contactoEntidadExterna = null;return $this;}}