<?php
namespace App\Entity;
use App\Repository\GHCandidatoRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Validator\Constraints as Assert;
#[ORM\Table(name: 'gh_candidato')]
#[ORM\Entity(repositoryClass: GHCandidatoRepository::class)]
#[UniqueEntity(
fields: ['numeroDocumento', 'vacante'],
errorPath: 'numeroDocumento',
message: 'Este numero de cedula ya esta registrado para la vacante.',
groups: ['Default'] // <- solo se activa en este grupo
)]
#[ORM\HasLifecycleCallbacks]
class GHCandidato {
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
private ?int $id = null;
#[ORM\Column(length: 255)]
private ?string $nombres = null;
#[ORM\Column(length: 255)]
#[Assert\Regex(
pattern: '/^[0-9]*$/',
message: 'Solo puede ingresar numeros',
)]
private ?string $numeroDocumento = null;
#[ORM\Column]
private ?int $proceso = null;
#[ORM\Column(length: 255)]
#[Assert\Email(
message: 'la direccion {{ value }} no es valida',
)]
private ?string $correoElectronico = null;
#[ORM\Column(length: 255)]
#[Assert\Regex(
pattern: '/^[0-9]*$/',
message: 'Solo puede ingresar numeros',
)]
private ?string $celular = null;
#[ORM\Column(length: 255)]
private ?string $hojaVida = null;
#nullable
#[ORM\Column(length: 255, nullable:true)]
private ?string $comentario = null;
#[ORM\ManyToOne(inversedBy: 'candidato')]
private ?ParTipoDocumento $tipoDocumento = null;
#[ORM\ManyToOne(inversedBy: 'candidato')]
private ?ParTipoConvocatoria $tipoConvocatoria = null;
#[ORM\ManyToOne(inversedBy: 'candidato')]
private ?GHVacante $vacante = null;
#[ORM\ManyToOne(inversedBy: 'candidato')]
private ?ParFuenteReclutamiento $fuenteReclutamiento = null;
#[ORM\OneToMany(mappedBy: 'candidato', targetEntity: GHContratacion::class, cascade: ['remove'], orphanRemoval: true)]
private Collection $contratacion;
#[ORM\OneToMany(mappedBy: 'candidato', targetEntity: GHRevisionInicial::class, cascade: ['remove'], orphanRemoval: true)]
private Collection $revisionInicial;
#[ORM\OneToMany(mappedBy: 'candidato', targetEntity: GHExamenes::class, cascade: ['remove'], orphanRemoval: true)]
private Collection $examenes;
#[ORM\OneToMany(mappedBy: 'candidato', targetEntity: GHSolicitudDotacion::class)]
private Collection $solicitudDotacion;
#[ORM\OneToMany(mappedBy: 'candidato', targetEntity: GHCarnetizacion::class)]
private Collection $carnetizacion;
#[ORM\OneToMany(mappedBy: 'candidato', targetEntity: GHAfiliacionContratacion::class, cascade: ['remove'], orphanRemoval: true)]
private Collection $afiliacionContratacion;
#[ORM\OneToMany(mappedBy: 'candidato', targetEntity: GHContrato::class)]
private Collection $contrato;
#[ORM\OneToMany(mappedBy: 'candidato', targetEntity: GHPruebasPsicotecnicas::class, cascade: ['remove'], orphanRemoval: true)]
private Collection $pruebaPsicotecnica;
#[ORM\OneToMany(mappedBy: 'candidato', targetEntity: GHPruebasTecnicas::class)]
private Collection $pruebaTecnica;
#[ORM\OneToMany(mappedBy: 'candidato', targetEntity: GHVisitaDomiciliaria::class, cascade: ['remove'], orphanRemoval: true)]
private Collection $visitaDomiciliaria;
#[ORM\ManyToOne(inversedBy: 'GHCandidato')]
private ?ParEstado $estado = null;
#[ORM\Column]
private ?\DateTime $createAt = null;
#[ORM\Column]
private ?\DateTime $updateAt = null;
#[ORM\Column(length: 55)]
private ?string $createUser = null;
#[ORM\Column(length: 55)]
private ?string $updateUser = null;
#[ORM\OneToMany(mappedBy: 'candidato', targetEntity: GHEntrevista::class, cascade: ['remove'], orphanRemoval: true)]
private Collection $entrevista;
#[ORM\OneToMany(mappedBy: 'candidato', targetEntity: GHEntrevistaJefe::class, cascade: ['remove'], orphanRemoval: true)]
private Collection $entrevistaJefe;
#[ORM\Column(nullable: true)]
private ?int $ordenContratacion = null;
#[ORM\ManyToOne(inversedBy: 'candidato')]
private ?ParMotivoFinalizacion $motivoFinalizacion = null;
#[ORM\Column(type: Types::TEXT, nullable: true)]
private ?string $observacionFinalizacion = null;
#[ORM\Column(length: 100, nullable: true)]
private ?string $estadoAnterior = null;
#[ORM\Column(type: Types::DATETIME_MUTABLE, nullable: true)]
private ?\DateTimeInterface $fechaFinalizacion = null;
#[ORM\Column(length: 255, nullable: true)]
private ?string $estadoProceso = null;
#[ORM\Column(type: Types::DATETIME_MUTABLE, nullable: true)]
private ?\DateTimeInterface $fechaOrdenContratacion = null;
public function __toString(): string
{
return $this->nombres; // Devuelve el nombre del candidato como el "texto" del objeto
}
public function __construct() {
$this->contratacion = new ArrayCollection();
$this->idVisita = new ArrayCollection();
$this->revisionInicial = new ArrayCollection();
$this->idExamenes = new ArrayCollection();
$this->solicitudDotacion = new ArrayCollection();
$this->carnetizacion = new ArrayCollection();
$this->afiliacionContratacion = new ArrayCollection();
$this->contrato = new ArrayCollection();
$this->pruebaPsicotecnica = new ArrayCollection();
$this->pruebaTecnica = new ArrayCollection();
$this->idVisitaDomiciliaria = new ArrayCollection();
$this->idExamen = new ArrayCollection();
$this->entrevista = new ArrayCollection();
$this->entrevistaJefe = new ArrayCollection();
}
public function getId(): ?int {
return $this->id;
}
public function getNombres(): ?string {
return $this->nombres;
}
public function getNumeroDocumento(): ?string {
return $this->numeroDocumento;
}
public function getProceso(): ?int {
return $this->proceso;
}
public function getCorreoElectronico(): ?string {
return $this->correoElectronico;
}
public function getCelular(): ?string {
return $this->celular;
}
public function getHojaVida(): ?string {
return $this->hojaVida;
}
public function getComentario(): ?string {
return $this->comentario;
}
public function setComentario(?string $comentario): void {
$this->comentario = $comentario;
}
public function setNombres(?string $nombres): void {
$this->nombres = $nombres;
}
public function setNumeroDocumento(?string $numeroDocumento): void {
$this->numeroDocumento = $numeroDocumento;
}
public function setProceso(?int $proceso): void {
$this->proceso = $proceso;
}
public function setCorreoElectronico(?string $correoElectronico): void {
$this->correoElectronico = $correoElectronico;
}
public function setCelular(?string $celular): void {
$this->celular = $celular;
}
public function setFuenteReclutamiento(?ParFuenteReclutamiento $fuenteReclutamiento): void {
$this->fuenteReclutamiento = $fuenteReclutamiento;
}
public function setHojaVida(?string $hojaVida): void {
$this->hojaVida = $hojaVida;
}
public function getTipoDocumento(): ?ParTipoDocumento {
return $this->tipoDocumento;
}
public function setTipoDocumento(?ParTipoDocumento $tipoDocumentoId): static {
$this->tipoDocumento = $tipoDocumentoId;
return $this;
}
public function getTipoConvocatoria(): ?ParTipoConvocatoria {
return $this->tipoConvocatoria;
}
public function setTipoConvocatoria(?ParTipoConvocatoria $tipoConvocatoria): static {
$this->tipoConvocatoria = $tipoConvocatoria;
return $this;
}
public function getVacante(): ?GHVacante {
return $this->vacante;
}
public function setVacante(?GHVacante $vacante): static {
$this->vacante = $vacante;
return $this;
}
public function getFuenteReclutamiento(): ?ParFuenteReclutamiento {
return $this->fuenteReclutamiento;
}
public function setFuenteReclutamientoId(?ParFuenteReclutamiento $fuenteReclutamientoId): static {
$this->fuenteReclutamientoId = $fuenteReclutamientoId;
return $this;
}
/**
* @return Collection<int, GHContratacion>
*/
public function getContratacion(): Collection {
return $this->contratacion;
}
public function addContratacion(GHContratacion $contratacion): static {
if (!$this->contratacion->contains($contratacion)) {
$this->contratacion->add($contratacion);
$contratacion->setCandidato($this);
}
return $this;
}
public function removeContratacion(GHContratacion $contratacion): static {
if ($this->contratacion->removeElement($contratacion)) {
// set the owning side to null (unless already changed)
if ($contratacion->getCandidato() === $this) {
$contratacion->setCandidato(null);
}
}
return $this;
}
/**
* @return Collection<int, GHRevisionInicial>
*/
public function getRevisionInicial(): Collection {
return $this->revisionInicial;
}
public function addRevisionInicial(GHRevisionInicial $revisionInicial): static {
if (!$this->revisionInicial->contains($revisionInicial)) {
$this->revisionInicial->add($revisionInicial);
$revisionInicial->setCandidato($this);
}
return $this;
}
public function removeRevisionInicial(GHRevisionInicial $revisionInicial): static {
if ($this->revisionInicial->removeElement($revisionInicial)) {
// set the owning side to null (unless already changed)
if ($revisionInicial->getCandidato() === $this) {
$revisionInicial->setCandidato(null);
}
}
return $this;
}
/**
* @return Collection<int, GHExamenes>
*/
public function getExamenes(): Collection {
return $this->examenes;
}
public function addExamenes(GHExamenes $idExamene): static {
if (!$this->examenes->contains($idExamene)) {
$this->examenes->add($idExamene);
$idExamene->setCandidato($this);
}
return $this;
}
public function removeExamenes(GHExamenes $idExamene): static {
if ($this->examenes->removeElement($idExamene)) {
// set the owning side to null (unless already changed)
if ($idExamene->getCandidato() === $this) {
$idExamene->setCandidato(null);
}
}
return $this;
}
/**
* @return Collection<int, GHSolicitudDotacion>
*/
public function getSolicitudDotacion(): Collection {
return $this->solicitudDotacion;
}
public function addSolicitudDotacion(GHSolicitudDotacion $solicitudDotacion): static {
if (!$this->solicitudDotacion->contains($solicitudDotacion)) {
$this->solicitudDotacion->add($solicitudDotacion);
$solicitudDotacion->setCandidato($this);
}
return $this;
}
public function removeSolicitudDotacion(GHSolicitudDotacion $solicitudDotacion): static {
if ($this->solicitudDotacion->removeElement($solicitudDotacion)) {
// set the owning side to null (unless already changed)
if ($solicitudDotacion->getCandidato() === $this) {
$solicitudDotacion->setCandidato(null);
}
}
return $this;
}
/**
* @return Collection<int, GHCarnetizacion>
*/
public function getCarnetizacion(): Collection {
return $this->carnetizacion;
}
public function addCarnetizacion(GHCarnetizacion $carnetizacion): static {
if (!$this->carnetizacion->contains($carnetizacion)) {
$this->carnetizacion->add($carnetizacion);
$carnetizacion->setCandidato($this);
}
return $this;
}
public function removeCarnetizacion(GHCarnetizacion $carnetizacion): static {
if ($this->carnetizacion->removeElement($carnetizacion)) {
// set the owning side to null (unless already changed)
if ($carnetizacion->getCandidato() === $this) {
$carnetizacion->setCandidato(null);
}
}
return $this;
}
/**
* @return Collection<int, GHAfiliacionContratacion>
*/
public function getAfiliacionContratacion(): Collection {
return $this->afiliacionContratacion;
}
public function addAfiliacionContratacion(GHAfiliacionContratacion $afiliacionContratacion): static {
if (!$this->afiliacionContratacion->contains($afiliacionContratacion)) {
$this->afiliacionContratacion->add($afiliacionContratacion);
$afiliacionContratacion->setCandidato($this);
}
return $this;
}
public function removeAfiliacionContratacion(GHAfiliacionContratacion $afiliacionContratacion): static {
if ($this->afiliacionContratacion->removeElement($afiliacionContratacion)) {
// set the owning side to null (unless already changed)
if ($afiliacionContratacion->getCandidato() === $this) {
$afiliacionContratacion->setCandidato(null);
}
}
return $this;
}
/**
* @return Collection<int, GHContrato>
*/
public function getContrato(): Collection {
return $this->contrato;
}
public function addContrato(GHContrato $contrato): static {
if (!$this->contrato->contains($contrato)) {
$this->contrato->add($contrato);
$contrato->setCandidato($this);
}
return $this;
}
public function removeContrato(GHContrato $contrato): static {
if ($this->contrato->removeElement($contrato)) {
// set the owning side to null (unless already changed)
if ($contrato->getCandidato() === $this) {
$contrato->setCandidato(null);
}
}
return $this;
}
/**
* @return Collection<int, GHPruebasPsicotecnicas>
*/
public function getPruebaPsicotecnica(): Collection {
return $this->pruebaPsicotecnica;
}
public function addPruebaPsicotecnica(GHPruebasPsicotecnicas $pruebasPsicotecnica): static {
if (!$this->pruebaPsicotecnica->contains($pruebasPsicotecnica)) {
$this->pruebaPsicotecnica->add($pruebasPsicotecnica);
$pruebasPsicotecnica->setCandidato($this);
}
return $this;
}
public function removeIdPruebasPsicotecnica(GHPruebasPsicotecnicas $pruebaPsicotecnica): static {
if ($this->pruebaPsicotecnica->removeElement($pruebaPsicotecnica)) {
// set the owning side to null (unless already changed)
if ($pruebaPsicotecnica->getCandidato() === $this) {
$pruebaPsicotecnica->setCandidato(null);
}
}
return $this;
}
/**
* @return Collection<int, GHPruebasTecnicas>
*/
public function getPruebaTecnica(): Collection {
return $this->pruebaTecnica;
}
public function addPruebaTecnica(GHPruebasTecnicas $pruebaTecnica): static {
if (!$this->pruebaTecnica->contains($pruebaTecnica)) {
$this->pruebaTecnica->add($pruebaTecnica);
$pruebaTecnica->setCandidato($this);
}
return $this;
}
public function removePruebaTecnica(GHPruebasTecnicas $pruebaTecnica): static {
if ($this->pruebaTecnica->removeElement($pruebaTecnica)) {
// set the owning side to null (unless already changed)
if ($pruebaTecnica->getCandidato() === $this) {
$pruebaTecnica->setCandidato(null);
}
}
return $this;
}
/**
* @return Collection<int, GHVisitaDomiciliaria>
*/
public function getVisitaDomiciliaria(): Collection {
return $this->visitaDomiciliaria;
}
public function addVisitaDomiciliaria(GHVisitaDomiciliaria $idVisitaDomiciliarium): static {
if (!$this->visitaDomiciliaria->contains($idVisitaDomiciliarium)) {
$this->visitaDomiciliaria->add($idVisitaDomiciliarium);
$idVisitaDomiciliarium->setCandidato($this);
}
return $this;
}
public function removeVisitaDomiciliarium(GHVisitaDomiciliaria $idVisitaDomiciliarium): static {
if ($this->visitaDomiciliaria->removeElement($idVisitaDomiciliarium)) {
// set the owning side to null (unless already changed)
if ($idVisitaDomiciliarium->getCandidato() === $this) {
$idVisitaDomiciliarium->setCandidato(null);
}
}
return $this;
}
public function getEstado(): ?ParEstado {
return $this->estado;
}
public function setEstado(?ParEstado $estado): static {
$this->estado = $estado;
return $this;
}
public function getCreateAt(): ?\DateTime {
return $this->createAt;
}
public function setCreateAt(\DateTime $createAt): static {
$this->createAt = $createAt;
return $this;
}
public function getUpdateAt(): ?\DateTime {
return $this->updateAt;
}
public function setUpdateAt(\DateTime $updateAt): static {
$this->updateAt = $updateAt;
return $this;
}
public function getCreateUser(): ?string {
return $this->createUser;
}
public function setCreateUser(string $createUser): static {
$this->createUser = $createUser;
return $this;
}
public function getUpdateUser(): ?string {
return $this->updateUser;
}
public function setUpdateUser(string $updateUser): static {
$this->updateUser = $updateUser;
return $this;
}
/**
* @return Collection<int, GHEntrevista>
*/
public function getEntrevista(): Collection {
return $this->entrevista;
}
public function addEntrevistum(GHEntrevista $entrevistum): static {
if (!$this->entrevista->contains($entrevistum)) {
$this->entrevista->add($entrevistum);
$entrevistum->setCandidato($this);
}
return $this;
}
public function removeEntrevistum(GHEntrevista $entrevistum): static {
if ($this->entrevista->removeElement($entrevistum)) {
// set the owning side to null (unless already changed)
if ($entrevistum->getCandidato() === $this) {
$entrevistum->setCandidato(null);
}
}
return $this;
}
/**
* @return Collection<int, GHEntrevistaJefe>
*/
public function getEntrevistaJefe(): Collection {
return $this->entrevistaJefe;
}
public function addEntrevistaJefe(GHEntrevistaJefe $entrevistaJefe): static {
if (!$this->entrevistaJefe->contains($entrevistaJefe)) {
$this->entrevistaJefe->add($entrevistaJefe);
$entrevistaJefe->setCandidato($this);
}
return $this;
}
public function removeEntrevistaJefe(GHEntrevistaJefe $entrevistaJefe): static {
if ($this->entrevistaJefe->removeElement($entrevistaJefe)) {
// set the owning side to null (unless already changed)
if ($entrevistaJefe->getCandidato() === $this) {
$entrevistaJefe->setCandidato(null);
}
}
return $this;
}
public function getOrdenContratacion(): ?int {
return $this->ordenContratacion;
}
public function setOrdenContratacion(?int $ordenContratacion): static {
$this->ordenContratacion = $ordenContratacion;
return $this;
}
public function getMotivoFinalizacion(): ?ParMotivoFinalizacion {
return $this->motivoFinalizacion;
}
public function setMotivoFinalizacion(?ParMotivoFinalizacion $motivoFinalizacion): static {
$this->motivoFinalizacion = $motivoFinalizacion;
return $this;
}
public function getObservacionFinalizacion(): ?string {
return $this->observacionFinalizacion;
}
public function setObservacionFinalizacion(?string $observacionFinalizacion): static {
$this->observacionFinalizacion = $observacionFinalizacion;
return $this;
}
public function getEstadoAnterior(): ?string {
return $this->estadoAnterior;
}
public function setEstadoAnterior(?string $estadoAnterior): static {
$this->estadoAnterior = $estadoAnterior;
return $this;
}
// #[ORM\PreUpdate]
// public function guardarEstadoAnterior(\Doctrine\ORM\Event\PreUpdateEventArgs $args): void {
// try {
// if($this->getEstado()->getId() == 6){
// $this->fechaFinalizacion = new \DateTime('now');
// }
// $this->estadoAnterior = $args->getOldValue('estado') != null ? $args->getOldValue('estado')->getNombre() : null;
// } catch (\Exception $e) {
// }
// }
public function getFechaFinalizacion(): ?\DateTimeInterface {
return $this->fechaFinalizacion;
}
public function setFechaFinalizacion(?\DateTimeInterface $fechaFinalizacion): static {
$this->fechaFinalizacion = $fechaFinalizacion;
return $this;
}
public function getEstadoProceso(): ?string
{
return $this->estadoProceso;
}
public function setEstadoProceso(?string $estadoProceso): static
{
$this->estadoProceso = $estadoProceso;
return $this;
}
public function getFechaOrdenContratacion(): ?\DateTimeInterface
{
return $this->fechaOrdenContratacion;
}
public function setFechaOrdenContratacion(?\DateTimeInterface $fechaOrdenContratacion): static
{
$this->fechaOrdenContratacion = $fechaOrdenContratacion;
return $this;
}
}