<?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 RFTablaRetencionSubscriber 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['proceso'])) {
$idProceso = $data['proceso'];
$proceso = $this->entityManager->getRepository(\App\Entity\ParProceso::class)->find($idProceso);
$codigo = $proceso->getCodigoRF() != "" ? $proceso->getCodigoRF() : "N/A";
//$documentosId = [];
$documentosStr = "<ul>";
foreach ($proceso->getDocumentos() as $doc) {
// $documentosId[] = $doc->getId();
$documentosStr .= "<li>{$doc->getNombre()}</li>";
}
$documentosStr .= "</ul>";
$director = "Sin Director";
// $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) {
// return $er->createQueryBuilder('d')
// ->where('d.id in (:documentos)')
// ->setParameter('documentos', $documentosId)
// ->orderBy('d.nombre', 'ASC');
// }, 'label' => 'Documentos',
// 'placeholder' => 'Seleccione una Opción.',
// 'required' => true,
// 'multiple' => true,
// 'attr' => ['class' => 'form-control']]);
$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) {
return $er->createQueryBuilder('p')
->leftJoin('p.proceso', 'pro')
->where('pro.id = :idProceso')
->setParameter('idProceso', $idProceso)
->orderBy('p.subproceso', 'ASC');
}, 'label' => 'SubProceso',
'attr' => ['class' => 'form-control'], 'required' => true, 'placeholder' => 'seleccióne una opcion']);
foreach ($proceso->getIdPerfilCargo() as $pc) {
foreach ($pc->getPersona() as $usuario) {
if ($usuario->hasNivelDirector()) {
$director = "{$pc->getParProceso()->getNombre()}-{$usuario->getNombres()}";
}
}
}
// $empresa = "N/A";
// $sede = "N/A";
// $tipoContrato = "N/A";
// if ($colaborador->getPerfilCargo()) {
// $cargo = $colaborador->getPerfilCargo()->getCargo()->getNombre();
// }
// $candidato = $this->entityManager->getRepository(\App\Entity\GHCandidato::class)->findOneBy(['numeroDocumento' => $colaborador->getNumeroDocumento(), 'estado' => [19, 15]]);
// if ($candidato) {
// $contratacion = $this->entityManager->getRepository(\App\Entity\GHContratacion::class)->findOneBy(['candidato' => $candidato->getId(), 'estado' => [15, 19]]);
// if ($contratacion) {
// $salario = $contratacion->getSalario();
// $empresa = $contratacion->getContrato()->getEmpresaFilial()->getNombre();
// $tipoContrato = $candidato->getVacante()->getParTipoContrato()->getNombre();
// }
// }
$data['codigo'] = $codigo;
//$data['revisionDirectorProceso'] = $director;
$data['historicoDocumentos'] = $documentosStr;
$event->setData($data);
}
}
}