src/FormSubscriber/GHExamenPeriodicoSubscriber.php line 30

Open in your IDE?
  1. <?php
  2. // src/Form/EventListener/AddNameFieldSubscriber.php
  3. namespace App\FormSubscriber;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Symfony\Component\Form\Extension\Core\Type\TextType;
  6. use Symfony\Component\Form\FormEvent;
  7. use Symfony\Component\Form\FormEvents;
  8. use Symfony\Component\Form\Form;
  9. use Doctrine\ORM\EntityManagerInterface;
  10. class GHExamenPeriodicoSubscriber implements EventSubscriberInterface {
  11.     private $entityManager;
  12.     public function __construct(
  13.             EntityManagerInterface $entityManager
  14.     ) {
  15.         $this->entityManager $entityManager;
  16.     }
  17.     public static function getSubscribedEvents(): array {
  18.         // Tells the dispatcher that you want to listen on the form.pre_set_data
  19.         // event and that the preSetData method should be called.
  20.         return [FormEvents::PRE_SUBMIT => 'preSubmit'];
  21.     }
  22.     public function preSubmit(FormEvent $event): void {
  23.         $data $event->getData();
  24.         //data es un arreglo con los valores establecidos por el usuario en el form.
  25.         //como $data contiene el pais seleccionado por el usuario al enviar el formulario,
  26.         // usamos el valor de la posicion $data['country'] para filtrar el sql de los estados
  27.         if (isset($data['persona'])) {
  28.             $idColaborador $data['persona'];
  29.             $colaborador $this->entityManager->getRepository(\App\Entity\TerPersona::class)->find($idColaborador);
  30.             $cargo "N/A";
  31.             $criticidad "N/A";
  32.             $proceso "N/A";
  33.             $sede "N/A";
  34.             $fecIng "N/A";
  35.             $empresa "N/A";
  36.             if ($colaborador->getPerfilCargo()) {
  37.                 $cargo $colaborador->getPerfilCargo()->getCargo()->getNombre();
  38.                 $proceso $colaborador->getPerfilCargo()->getParProceso()->getNombre();
  39.                 $criticidad $colaborador->getPerfilCargo()->getParCriticidad()->getNombreCriticidad();
  40.             }
  41.             if ($colaborador->getSede()) {
  42.                 $sede $colaborador->getSede()->getNombre();
  43.             }
  44.             $candidato $this->entityManager->getRepository(\App\Entity\GHCandidato::class)->findOneBy(['numeroDocumento' => $colaborador->getNumeroDocumento()]);
  45.             if ($candidato) {
  46.                 $contratacion $this->entityManager->getRepository(\App\Entity\GHContratacion::class)->findOneBy(['candidato' => $candidato->getId()]);
  47.                 if ($contratacion) {
  48.                     $empresa $contratacion->getContrato()?->getEmpresaFilial()?->getAbreviatura() ?? 'N/A';
  49.                     $fecIng $contratacion->getFechaIngreso()->format('Y-m-d');
  50.                 }
  51.             }
  52.             if ($event->getForm()->has('cargoTmp')) {
  53.                 $data['cargoTmp'] = $cargo;
  54.             }
  55.             if ($event->getForm()->has('criticidadTmp')) {
  56.                 $data['criticidadTmp'] = $criticidad;
  57.             }
  58.             if ($event->getForm()->has('procesoTmp')) {
  59.                 $data['procesoTmp'] = $proceso;
  60.             }
  61.             if ($event->getForm()->has('sedeTmp')) {
  62.                 $data['sedeTmp'] = $sede;
  63.             }
  64.             if ($event->getForm()->has('fechaIngresoTmp')) {
  65.                 $data['fechaIngresoTmp'] = $candidato && $candidato->getContratacion()->first() && $candidato->getContratacion()->first()->getFechaIngreso() ?
  66.                     $candidato->getContratacion()->first()->getFechaIngreso()->format('Y-m-d') : 'N/A';
  67.             }
  68.             if ($event->getForm()->has('empresaTmp')) {
  69.                 $data['empresaTmp'] = $empresa;
  70.             }
  71.             $event->setData($data);
  72.         }
  73.     }
  74. }