<?php
// src/Form/EventListener/AddNameFieldSubscriber.php
namespace App\FormSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\Form\Form;
use Doctrine\ORM\EntityManagerInterface;
class GHExamenPeriodicoSubscriber implements EventSubscriberInterface {
private $entityManager;
public function __construct(
EntityManagerInterface $entityManager
) {
$this->entityManager = $entityManager;
}
public static function getSubscribedEvents(): array {
// Tells the dispatcher that you want to listen on the form.pre_set_data
// event and that the preSetData method should be called.
return [FormEvents::PRE_SUBMIT => 'preSubmit'];
}
public function preSubmit(FormEvent $event): void {
$data = $event->getData();
//data es un arreglo con los valores establecidos por el usuario en el form.
//como $data contiene el pais seleccionado por el usuario al enviar el formulario,
// usamos el valor de la posicion $data['country'] para filtrar el sql de los estados
if (isset($data['persona'])) {
$idColaborador = $data['persona'];
$colaborador = $this->entityManager->getRepository(\App\Entity\TerPersona::class)->find($idColaborador);
$cargo = "N/A";
$criticidad = "N/A";
$proceso = "N/A";
$sede = "N/A";
$fecIng = "N/A";
$empresa = "N/A";
if ($colaborador->getPerfilCargo()) {
$cargo = $colaborador->getPerfilCargo()->getCargo()->getNombre();
$proceso = $colaborador->getPerfilCargo()->getParProceso()->getNombre();
$criticidad = $colaborador->getPerfilCargo()->getParCriticidad()->getNombreCriticidad();
}
if ($colaborador->getSede()) {
$sede = $colaborador->getSede()->getNombre();
}
$candidato = $this->entityManager->getRepository(\App\Entity\GHCandidato::class)->findOneBy(['numeroDocumento' => $colaborador->getNumeroDocumento()]);
if ($candidato) {
$contratacion = $this->entityManager->getRepository(\App\Entity\GHContratacion::class)->findOneBy(['candidato' => $candidato->getId()]);
if ($contratacion) {
$empresa = $contratacion->getContrato()?->getEmpresaFilial()?->getAbreviatura() ?? 'N/A';
$fecIng = $contratacion->getFechaIngreso()->format('Y-m-d');
}
}
if ($event->getForm()->has('cargoTmp')) {
$data['cargoTmp'] = $cargo;
}
if ($event->getForm()->has('criticidadTmp')) {
$data['criticidadTmp'] = $criticidad;
}
if ($event->getForm()->has('procesoTmp')) {
$data['procesoTmp'] = $proceso;
}
if ($event->getForm()->has('sedeTmp')) {
$data['sedeTmp'] = $sede;
}
if ($event->getForm()->has('fechaIngresoTmp')) {
$data['fechaIngresoTmp'] = $candidato && $candidato->getContratacion()->first() && $candidato->getContratacion()->first()->getFechaIngreso() ?
$candidato->getContratacion()->first()->getFechaIngreso()->format('Y-m-d') : 'N/A';
}
if ($event->getForm()->has('empresaTmp')) {
$data['empresaTmp'] = $empresa;
}
$event->setData($data);
}
}
}