<?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 RFPaqueteSubscriber 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['personaRecibe']) || isset($data['personaDestinatario'])) {
// echo $data['personaRecibe'];exit;
if (isset($data['personaRecibe'])) {
$idColaborador = $data['personaRecibe'];
} else if (isset($data['personaDestinatario'])) {
$idColaborador = $data['personaDestinatario'];
}
$colaborador = $this->entityManager->getRepository(\App\Entity\TerPersona::class)->find($idColaborador);
// $salario = 0;
// $cargo = "N/A";
$proceso = "N/A";
// $jefeProceso = "";
if ($colaborador->getPerfilCargo()) {
$cargo = $colaborador->getPerfilCargo()->getCargo()->getNombre();
$proceso = $colaborador->getPerfilCargo()->getParProceso()->getNombre();
foreach ($colaborador->getPerfilCargo()->getPersona() as $persona) {
if ($persona->getEstado()->getId() == 1) {
foreach ($persona->getNivelCargo() as $nc) {
if ($nc->getId() == 1 || $nc->getId() == 2 || $nc->getId() == 3) {
$jefeProceso = $persona->getNombres();
}
}
}
}
}
//$data['cargoTmp'] = $cargo;
$data['procesoTmp'] = $proceso;
$event->getForm()
//->add('cargoTmp', null, ['attr' => ['class' => 'form-control'], 'data' => $cargo, 'disabled' => true, 'label' => 'Cargo Actual', 'mapped' => false])
->add('procesoTmp', null, ['attr' => ['class' => 'form-control'], 'data' => $proceso, 'disabled' => true, 'label' => 'Proceso', 'mapped' => false])
->add('firma', null, ['attr' => ['class' => 'firma']]);
//->add('jefeProcesoTmp', null, ['attr' => ['class' => 'form-control'], 'data' => $jefeProceso, 'disabled' => true, 'label' => 'Jefe Inmediato', 'mapped' => false]);
} else {
$event->getForm()
//->add('cargoTmp', null, ['disabled' => true, 'label' => 'Cargo Actual', 'mapped' => false])
->add('procesoTmp', null, ['disabled' => true, 'label' => 'Proceso Actual', 'mapped' => false])
->add('firma', null, ['attr' => ['class' => 'firma']]);
}
}
}