src/FormSubscriber/RFTablaRetencionSubscriber.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 RFTablaRetencionSubscriber 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['proceso'])) {
  28.             $idProceso $data['proceso'];
  29.             $proceso $this->entityManager->getRepository(\App\Entity\ParProceso::class)->find($idProceso);
  30.             $codigo $proceso->getCodigoRF() != "" $proceso->getCodigoRF() : "N/A";
  31.             //$documentosId = [];
  32.             $documentosStr "<ul>";
  33.             foreach ($proceso->getDocumentos() as $doc) {
  34.                 //  $documentosId[] = $doc->getId();
  35.                 $documentosStr .= "<li>{$doc->getNombre()}</li>";
  36.             }
  37.             $documentosStr .= "</ul>";
  38.             $director "Sin Director";
  39. //            $event->getForm()->add('documentos', \Symfony\Bridge\Doctrine\Form\Type\EntityType::class, ['class' => \App\Entity\DocDocumento::class, 'query_builder' => function (\Doctrine\ORM\EntityRepository $er) use ($documentosId) {
  40. //                    return $er->createQueryBuilder('d')
  41. //                            ->where('d.id in (:documentos)')
  42. //                            ->setParameter('documentos', $documentosId)
  43. //                            ->orderBy('d.nombre', 'ASC');
  44. //                }, 'label' => 'Documentos',
  45. //                'placeholder' => 'Seleccione una Opción.',
  46. //                'required' => true,
  47. //                'multiple' => true,
  48. //                'attr' => ['class' => 'form-control']]);
  49.             $event->getForm()->add('subProceso'\Symfony\Bridge\Doctrine\Form\Type\EntityType::class, ['class' => \App\Entity\ParSubproceso::class, 'query_builder' => function (\Doctrine\ORM\EntityRepository $er) use ($idProceso) {
  50.                     return $er->createQueryBuilder('p')
  51.                             ->leftJoin('p.proceso''pro')
  52.                             ->where('pro.id = :idProceso')
  53.                             ->setParameter('idProceso'$idProceso)
  54.                             ->orderBy('p.subproceso''ASC');
  55.                 }, 'label' => 'SubProceso',
  56.                 'attr' => ['class' => 'form-control'], 'required' => true'placeholder' => 'seleccióne una opcion']);
  57.             foreach ($proceso->getIdPerfilCargo() as $pc) {
  58.                 foreach ($pc->getPersona() as $usuario) {
  59.                     if ($usuario->hasNivelDirector()) {
  60.                         $director "{$pc->getParProceso()->getNombre()}-{$usuario->getNombres()}";
  61.                     }
  62.                 }
  63.             }
  64. //            $empresa = "N/A";
  65. //            $sede = "N/A";
  66. //            $tipoContrato = "N/A";
  67. //            if ($colaborador->getPerfilCargo()) {
  68. //                $cargo = $colaborador->getPerfilCargo()->getCargo()->getNombre();
  69. //            }
  70. //            $candidato = $this->entityManager->getRepository(\App\Entity\GHCandidato::class)->findOneBy(['numeroDocumento' => $colaborador->getNumeroDocumento(), 'estado' => [19, 15]]);
  71. //            if ($candidato) {
  72. //                $contratacion = $this->entityManager->getRepository(\App\Entity\GHContratacion::class)->findOneBy(['candidato' => $candidato->getId(), 'estado' => [15, 19]]);
  73. //                if ($contratacion) {
  74. //                    $salario = $contratacion->getSalario();
  75. //                    $empresa = $contratacion->getContrato()->getEmpresaFilial()->getNombre();
  76. //                    $tipoContrato = $candidato->getVacante()->getParTipoContrato()->getNombre();
  77. //                }
  78. //            }
  79.             $data['codigo'] = $codigo;
  80.             //$data['revisionDirectorProceso'] = $director;
  81.             $data['historicoDocumentos'] = $documentosStr;
  82.             $event->setData($data);
  83.         }
  84.     }
  85. }