src/FormSubscriber/GHPerfilCargoSubscriber.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 GHPerfilCargoSubscriber 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['ParProceso'])) {
  28.             $idBusqueda $data['ParProceso'];
  29.             $proceso $this->entityManager->getRepository(\App\Entity\ParProceso::class)->find($idBusqueda);
  30.             $event->getForm()->add('cargo'\Symfony\Bridge\Doctrine\Form\Type\EntityType::class, ['class' => \App\Entity\ParCargo::class, 'query_builder' => function (\Doctrine\ORM\EntityRepository $er) use ($idBusqueda) {
  31.                             return $er->createQueryBuilder('c')
  32.                             ->leftJoin('c.procesos''pro')
  33.                             ->where('pro.id = :idBusqueda')
  34.                             ->setParameter('idBusqueda'$idBusqueda)
  35.                             ->orderBy('c.nombre''ASC');
  36.                         }, 'label' => 'Cargo',
  37.                         'attr' => ['class' => 'form-control'], 'placeholder' => 'Seleccione una Opción.''required' => true])
  38.                     ->add('subprocesoId'\Symfony\Bridge\Doctrine\Form\Type\EntityType::class, ['class' => \App\Entity\ParSubproceso::class, 'query_builder' => function (\Doctrine\ORM\EntityRepository $er) use ($idBusqueda) {
  39.                             return $er->createQueryBuilder('sp')
  40.                             ->leftJoin('sp.proceso''pro')
  41.                             ->where('pro.id = :idBusqueda')
  42.                             ->setParameter('idBusqueda'$idBusqueda)
  43.                             ->orderBy('sp.subproceso''ASC');
  44.                         }, 'label' => 'SubProceso',
  45.                         'attr' => ['class' => 'form-control'], 'placeholder' => 'Seleccione una Opción.''required' => true])
  46.                     ->add('personalCargo'\Symfony\Bridge\Doctrine\Form\Type\EntityType::class, ['class' => \App\Entity\ParCargo::class, 'query_builder' => function (\Doctrine\ORM\EntityRepository $er) use ($idBusqueda) {
  47.                             return $er->createQueryBuilder('c')
  48.                             ->leftJoin('c.procesos''pro')
  49.                             ->where('pro.id = :idBusqueda')
  50.                             ->setParameter('idBusqueda'$idBusqueda)
  51.                             ->orderBy('c.nombre''ASC');
  52.                         }, 'label' => 'Personal a cargo',
  53.                         'multiple' => true,
  54.                         'attr' => ['class' => 'form-control'], 'placeholder' => 'Seleccione una Opción.''required' => false])
  55. //                    ->add('jefeInmediatoCargo', \Symfony\Bridge\Doctrine\Form\Type\EntityType::class, ['class' => \App\Entity\ParCargo::class, 'query_builder' => function (\Doctrine\ORM\EntityRepository $er) use ($idBusqueda) {
  56. //                            return $er->createQueryBuilder('c')
  57. //                            ->leftJoin('c.procesos', 'pro')
  58. //                            ->leftJoin('c.perfilCargo', 'pc')
  59. //                            ->leftJoin('pc.persona', 'p')
  60. //                            ->leftJoin('p.nivelCargo', 'nc')
  61. //                            ->where('pro.id = :idProceso')
  62. //                            ->andWhere('nc.id in (1,2,3)')
  63. //                            ->setParameter('idProceso', $idBusqueda)
  64. //                            ->orderBy('c.nombre', 'ASC');
  65. //                        }, 'label' => 'Jefe Inmediato',
  66. //                        'attr' => ['class' => 'form-control'], 'placeholder' => 'Seleccione una Opción.', 'required' => true])
  67. //                    ->add('cargoAprueba', \Symfony\Bridge\Doctrine\Form\Type\EntityType::class, ['class' => \App\Entity\ParCargo::class, 'query_builder' => function (\Doctrine\ORM\EntityRepository $er) use ($idBusqueda) {
  68. //                            return $er->createQueryBuilder('c')
  69. //                            ->leftJoin('c.procesos', 'pro')
  70. //                            ->leftJoin('c.perfilCargo', 'pc')
  71. //                            ->leftJoin('pc.persona', 'p')
  72. //                            ->leftJoin('p.nivelCargo', 'nc')
  73. //                            ->where('pro.id = :idProceso')
  74. //                            ->andWhere('nc.id in (1,2)')
  75. //                            ->setParameter('idProceso', $idBusqueda)
  76. //                            ->orderBy('c.nombre', 'ASC');
  77. //                        }, 'label' => 'Aprobado por',
  78. //                        'attr' => ['class' => 'form-control'], 'placeholder' => 'Seleccione una Opción.', 'required' => true])
  79.             ;
  80.         }
  81.         if (isset($data['empresaFilial'])) {
  82.             $idBusqueda $data['empresaFilial'];
  83.             $event->getForm()->add('sede'\Symfony\Bridge\Doctrine\Form\Type\EntityType::class, ['class' => \App\Entity\TerSedeEmpresa::class, 'query_builder' => function (\Doctrine\ORM\EntityRepository $er) use ($idBusqueda) {
  84.                     return $er->createQueryBuilder('se')
  85.                             ->leftJoin('se.empresaFilial''ef')
  86.                             ->where('ef.id in (:idEmpresa)')
  87.                             ->setParameter('idEmpresa'$idBusqueda)
  88.                             ->orderBy('se.nombre''ASC');
  89.                 }, 'label' => 'Sucursal',
  90.                 'multiple' => true,
  91.                 'label_attr' => ['class' => 'field_required'],
  92.                 'attr' => ['class' => 'form-control'], 'placeholder' => 'Seleccione una Opción.'])
  93.             ;
  94.         }
  95.     }
  96. }