src/Controller/OrganizacionController.php line 52

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use Symfony\Component\HttpFoundation\Session\Session;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\Routing\Generator\UrlGenerator;
  9. use App\Service\AuthClaveUnicaService;
  10. use App\Service\RacService;
  11. use App\Repository\PostulacionRepository;
  12. use App\Repository\ConvocatoriaRepository;
  13. use App\Entity\Postulacion;
  14. use App\Form\NuevaPostulacionType;
  15. /**
  16.  * @Route("/organizacion", name="organizacion_")
  17.  */
  18. class OrganizacionController extends AbstractController
  19. {
  20.     #[Route('/home'name'home')]
  21.     public function home(
  22.         Request $request,
  23.         PostulacionRepository $postulacionRepository,
  24.         ConvocatoriaRepository $convocatoriaRepository,
  25.         AuthClaveUnicaService $authClaveUnicaService,
  26.         RacService $racService
  27.         ): Response
  28.     {
  29.         if (!($authClaveUnicaService->isValidaSessionCuActiva($request))){
  30.             $this->addFlash('warning''Sesión Expirada!');
  31.             $authClaveUnicaService->limpiarSession($request);
  32.             return $this->redirect($this->generateUrl('sesionExpirada'));
  33.         }
  34.         $userCuActual =  $authClaveUnicaService->getUserLoginCUToSession($request);
  35.         $rolNumero $userCuActual->rolNumero;
  36.         $rolDv $userCuActual->rolDv;
  37.         $postulaciones $postulacionRepository->findByRut(strval($rolNumero));
  38.         return $this->render('organizacion/home.html.twig', [
  39.             'userCuActual'=> $userCuActual,
  40.             'postulaciones' => $postulaciones,
  41.         ]);
  42.     }
  43.     #[Route('/nuevapostulacion'name'postulacion')]
  44.     public function postulacion(
  45.         Request $request,
  46.         PostulacionRepository $postulacionRepository,
  47.         ConvocatoriaRepository $convocatoriaRepository,
  48.         AuthClaveUnicaService $authClaveUnicaService,
  49.         RacService $racService
  50.         ): Response
  51.     {
  52.         if (!($authClaveUnicaService->isValidaSessionCuActiva($request))){
  53.             $this->addFlash('warning''Sesión Expirada!');
  54.             $authClaveUnicaService->limpiarSession($request);
  55.             return $this->redirect($this->generateUrl('default'));
  56.         }
  57.         $userCuActual =  $authClaveUnicaService->getUserLoginCUToSession($request);
  58.         $run strval(number_format((int) $userCuActual->rolNumero0'''.')) . '-' $userCuActual -> rolDv;
  59.         $convocatorias $convocatoriaRepository->findEnPostulacion();
  60.         $organizaciones $racService->getRegisterRac(strval($run));
  61.         $organizacionesLista = [];
  62.         $organizacionesDictionary = [];
  63.         if(!empty($organizaciones)){
  64.             foreach($organizaciones as $orga){
  65.                 if(!empty($orga['org_id']))$organizacionesDictionary[$orga['org_id']] = $orga;
  66.                 if(!empty($orga['org_id']))$organizacionesLista[$orga['org_id'] . '.-' $orga['nombre_org']] = $orga['org_id'];
  67.             }
  68.         }
  69.         $convocatoriasByPostulaciones = [];
  70.         foreach($convocatorias as $convo){
  71.             $convocatoriasByPostulaciones[$convo->getId()] = [];
  72.             $postulacionesForConvocatorias $postulacionRepository->findAllByRutAndConvocatoria($userCuActual->rolNumero$convo->getId());
  73.             foreach($postulacionesForConvocatorias as $postu){
  74.                 $convocatoriasByPostulaciones[$convo->getId()][] = $postu->getOrganizacionId();
  75.             }
  76.         }
  77.         // Tu entidad o un objeto base
  78.         $form $this->createForm(NuevaPostulacionType::class, null, [
  79.             'racService' => $organizacionesLista,
  80.         ]);
  81.         // Manejo de la solicitud
  82.         $form->handleRequest($request);
  83.         if ($form->isSubmitted() && $form->isValid()) {
  84.             try {
  85.                 $convocatoria $form->get('convocatoria')->getData();
  86.                 $organizacion $form->get('organizacion')->getData();
  87.                 $postulacionExiste =  $postulacionRepository->findOneByRutAndOrganizacionIdConvocatoria($userCuActual->rolNumero$organizacion$convocatoria);
  88.                 if($postulacionExiste){
  89.                     $this->addFlash('danger''Ya existe una postulación a esta convocatoria');
  90.                     return $this->redirectToRoute('organizacion_postulacion');
  91.                 }
  92.                 $postulacion = new Postulacion();
  93.                 $postulacion->setRut($userCuActual->rolNumero);
  94.                 $postulacion->setDv($userCuActual->rolDv);
  95.                 $postulacion->setNombres($userCuActual->nombres);
  96.                 $postulacion->setApellidos($userCuActual->apellidos);
  97.                 $postulacion->setEmail($organizacionesDictionary[$organizacion]["datos_org"]["email_contacto"][0]);
  98.                 $postulacion->setRacRegion($organizacionesDictionary[$organizacion]["datos_org"]["region"]);
  99.                 $postulacion->setOrganizacionId($organizacion);
  100.                 $postulacion->setOrganizacionRut($organizacionesDictionary[$organizacion]["rut"] ?? '');
  101.                 $postulacion->setOrganizacionName($organizacionesDictionary[$organizacion]["nombre_org"]);
  102.                 $postulacion->setOrganizacionVersionForm($organizacionesDictionary[$organizacion]["formulario_org"]);
  103.                 $postulacion->setFormConPersonlidadJuridica($organizacionesDictionary[$organizacion]["datos_org"]["personalidad_juridica"] == 'Sí tiene Personalidad Jurídica');
  104.                 $postulacion->setCodVerificacionPost("");
  105.                 $postulacion->setConvocatoria($convocatoria);
  106.                 $postulacion->updateTimestamps();
  107.                 $postulacion->setState("new");
  108.                 $postulacionRepository->add($postulacion);
  109.                 $this->addFlash('success''Postulación guardada exitosamente');
  110.                 return $this->redirectToRoute('postulacion_postulacion_editar', ['id' => $postulacion->getId(), 'action' => 'save']);
  111.             } catch (\Exception $e) {
  112.                 $this->addFlash('danger''Ocurrió un error Inesperado' $e->getMessage());
  113.                 return $this->redirectToRoute('organizacion_postulacion');
  114.             }
  115.         }
  116.         return $this->render('organizacion/nueva_postulacion.html.twig', [
  117.             'userCuActual'=>$userCuActual,
  118.             'form' => $form->createView(),
  119.             'convocatorias' => $convocatorias,
  120.             'organizaciones' => $organizaciones,
  121.             'organizacionesDictionary' => $organizacionesDictionary,
  122.             'convocatoriasByPostulaciones' => $convocatoriasByPostulaciones
  123.         ]);
  124.     }
  125. }