<?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 RFCambioCustodiaDocumentoSubscriber 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['nuevoUsuarioResponsable'])) {
$idColaborador = $data['nuevoUsuarioResponsable'];
$colaborador = $this->entityManager->getRepository(\App\Entity\TerPersona::class)->find($idColaborador);
$cargo = "N/A";
$sede = "N/A";
$proceso = "0";
if ($colaborador->getPerfilCargo()) {
$cargo = $colaborador->getPerfilCargo()->getCargo()->getNombre();
$sede = $colaborador->getSede() != null ? $colaborador->getSede()->getId():0;
$proceso = $colaborador->getPerfilCargo()->getParProceso()->getId();
}
$event->getForm()->add('proceso', \Symfony\Bridge\Doctrine\Form\Type\EntityType::class, [
'label' => 'Proceso',
'required' => true,
'class' => \App\Entity\ParProceso::class,
'query_builder' => function (\Doctrine\ORM\EntityRepository $er) use ($proceso) {
return $er->createQueryBuilder('e')
->where('e.id = :idProceso')
//->where('nc.id in (:idNivelCargo)')
->setParameter('idProceso', $proceso)
->orderBy('e.nombre', 'ASC')
->setMaxResults(50);
},
'attr' => array('class' => 'form-control','readonly'=>true)])
->add('sede', \Symfony\Bridge\Doctrine\Form\Type\EntityType::class, [
'label' => 'Sucursal',
'required' => true,
'class' => \App\Entity\TerSedeEmpresa::class,
'query_builder' => function (\Doctrine\ORM\EntityRepository $er)use ($sede) {
return $er->createQueryBuilder('e')
->where('e.id = :idSede')
//->where('nc.id in (:idNivelCargo)')
->setParameter('idSede', $sede)
->orderBy('e.nombre', 'ASC')
->setMaxResults(50);
},
'attr' => array('class' => 'form-control','readonly'=>true)])
// ->add('cargoTmp', null, ['disabled' => true, 'label' => 'Cargo Actual', 'mapped' => false])
;
$data['cargoTmp2'] = $cargo;
$event->setData($data);
}
}
}