src/Controller/Frontend/NuevoIngreso/AspiranteConfirmacionController.php line 278

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Frontend\NuevoIngreso;
  3. use App\Entity\NuevoIngreso\Aspirante;
  4. use App\Entity\NuevoIngreso\AspRegistro;
  5. use App\Entity\NuevoIngreso\PlanesOfertados;
  6. use App\Form\NuevoIngreso\BuscaPreregistroCurpType;
  7. use App\Form\NuevoIngreso\BuscaPreregistroType;
  8. use App\Form\NuevoIngreso\BuscarConfirmacionType;
  9. use App\Repository\NuevoIngreso\AspiranteRepository;
  10. use App\Repository\NuevoIngreso\AspRegistroRepository;
  11. use App\Repository\NuevoIngreso\PlanesOfertadosRepository;
  12. use App\Repository\NuevoIngreso\TopesPlanesOfertadosRepository;
  13. use App\Service\Mailer\Mailer;
  14. use App\Service\NuevoIngreso\AspiranteService;
  15. use Doctrine\Persistence\ManagerRegistry;
  16. use Qipsius\TCPDFBundle\Controller\TCPDFController;
  17. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  18. use Symfony\Component\HttpFoundation\Request;
  19. use Symfony\Component\HttpFoundation\Response;
  20. use Symfony\Component\Routing\Annotation\Route;
  21. /**
  22.  * @Route("/public/aspirante/confirmacion")
  23.  */
  24. class AspiranteConfirmacionController extends AbstractController
  25. {
  26.     //STATUS 2, es para la confirmacion, para tomar en cuenta en fechas, etc.
  27.     private const STATUS 2;
  28.     /**
  29.      * @Route("/_nivel_uagro_superior_/{nivel}", name="frontend_aspirante_confirmacion_nivel")
  30.      */
  31.     public function confirmacionNivel(PlanesOfertadosRepository $planesOfertadosRepositoryint $nivel): Response
  32.     {
  33.         return $this->render('frontend/aspirante/confirmacion/nivel.html.twig', [
  34.             'planes' => $planesOfertadosRepository->findPlanesPorNivel($nivelself::STATUS),
  35.             'nivel' => $nivel
  36.         ]);
  37.     }
  38.     /**
  39.      * @Route("/espacios_agotados/{nivel}/{plan}", name="frontend_aspirante_espacios_agotados")
  40.      */
  41.     public function espaciosAgotados(PlanesOfertadosRepository $planesOfertadosRepositoryint $nivelint $plan): Response
  42.     {
  43.         return $this->render('frontend/aspirante/confirmacion/espacios_agotados.html.twig', [
  44.             'planes' => $planesOfertadosRepository->findPlanesPorNivel($nivelself::STATUS),
  45.             'nivel' => $nivel,
  46.             'plan' => $plan
  47.         ]);
  48.     }
  49.     /**
  50.      * @Route("/_a_confirmar_registro/{id}", name="frontend_aspirante_confirmacion_confirm")
  51.      */
  52.     public function confirmacionConfirm(PlanesOfertados $planPlanesOfertadosRepository $planesOfertadosRepositoryTopesPlanesOfertadosRepository $topesPlanesOfertadosRepository)
  53.     {
  54.         //Checamos si el plan en realidad se encuentra en las fechas de inicio y fin de preregistro, de acuerdo ala fecha/hora actual
  55.         if(!$planesOfertadosRepository->findPlanPorFecha($planself::STATUS)) {
  56.             $this->addFlash('error''El plan no se encuentra activo. No lo intente de nuevo.');
  57.             return $this->redirectToRoute('frontend_aspirante_confirmacion_nivel',  [ 'nivel' => $plan->getNivelPlanEstudios() ]);
  58.         }
  59.         //Si ya no hay espacios no puede continuar
  60.         /*
  61.         $topePlanOfertado = $topesPlanesOfertadosRepository->findOneBy(
  62.             ['planOfertadoTope' => $plan]
  63.         );
  64.         if ($topePlanOfertado->getNumeroConsecutivo() > $topePlanOfertado->getNumeroMaximo() ) {
  65.             $this->addFlash('error', 'Lo sentimos, Ya no hay espacios Disponibles en ' .$plan->getNombreUnidadAcademica());
  66.             return $this->redirectToRoute('frontend_aspirante_confirmacion_nivel', [ 'nivel' => $plan->getNivelPlanEstudios() ]);
  67.         }
  68.         */
  69.         return $this->render('frontend/aspirante/confirmacion/confirm.html.twig', [
  70.             'planOfertado' => $plan
  71.         ]);
  72.     }
  73.     /**
  74.      * @Route("/execute/{id}", name="frontend_aspirante_confirmacion_execute")
  75.      */
  76.     public function confirmacionExecute(
  77.         PlanesOfertados $planRequest $requestAspiranteRepository $aspiranteRepository,
  78.         AspRegistroRepository $aspRegistroRepositoryPlanesOfertadosRepository $planesOfertadosRepository,
  79.         TopesPlanesOfertadosRepository $topesPlanesOfertadosRepositoryManagerRegistry $doctrine
  80.     ): Response
  81.     {
  82.         $entityManager $doctrine->getManager();
  83.         //Checamos si el plan en realidad se encuentra en las fechas de inicio y fin de confirmacion, de acuerdo ala fecha/hora actual
  84.         if(!$planesOfertadosRepository->findPlanPorFecha($planself::STATUS)) {
  85.             $this->addFlash('error''El plan no se encuentra activo. No lo intente de nuevo.');
  86.             return $this->redirectToRoute('frontend_aspirante_confirmacion_nivel',  [ 'nivel' => $plan->getNivelPlanEstudios() ]);
  87.         }
  88.         $form $this->createForm(BuscarConfirmacionType::class, null);
  89.         $form->handleRequest($request);
  90.         if ($form->isSubmitted() && $form->isValid()) {
  91.             $formData $form->getData();
  92.             $aspRegistro $aspRegistroRepository->findOneBy([
  93.                 'claveUnicaRegistro' => $formData['clur'],
  94.                 'cancelado' => 0
  95.             ]);
  96.             if ($aspRegistro) {
  97.                 //Checar si ya tiene Registro Confirmado, CONSECUTIVO_PLESXURES != 0
  98.             if ($aspRegistro->getConsecutivoPlesxures() != null) {
  99.                  if ($aspRegistro->getCiclo() < 460)
  100.                             {
  101.                              $this->addFlash('error''No existe confirmación para esa CLUR.');
  102.                              // Nota aqui se podrá poner el return al twig con el mensaje que modifico en su código
  103.                                  return $this->redirectToRoute('frontend_aspirante_buscar_confirmacion');
  104.                             }
  105.                     $this->addFlash('success''Ya ha reservado espacio anteriormente.');
  106.                     return $this->redirectToRoute('frontend_aspirante_confirmacion_finalizada',  [ 'id' => $aspRegistro->getAspirante()->getId() ]);
  107.                 }
  108.                 //Verificar que el ciclo este activo de acuerdo al plan de estudios
  109.                 $cicloActivoTopesPlaesOfertados $topesPlanesOfertadosRepository->findOneBy([
  110.                     'planOfertadoTope' => $plan->getId(),
  111.                     'estado' => 1
  112.                 ]);
  113.                 if (!$cicloActivoTopesPlaesOfertados) {
  114.                     $this->addFlash('error''El Ciclo del Plan elegido no esta Activo.');
  115.                     return $this->redirectToRoute('frontend_aspirante_confirmacion_execute', [ 'id' => $plan->getId() ]);
  116.                 }
  117.                 // Verificamos que aun halla espacios disponibles, de lo contrario redirigimos...
  118.                 if ($cicloActivoTopesPlaesOfertados->getNumeroConsecutivo() > $cicloActivoTopesPlaesOfertados->getNumeroMaximo()) {
  119.                     $this->addFlash('error''Lo sentimos, Ya no hay espacios Disponibles, acude a las oficinas de la Unidad Académica ' .$plan->getNombreUnidadAcademica().' para instrucciones para indicaciones de nuevos espacios.');
  120.                     return $this->redirectToRoute('frontend_aspirante_espacios_agotados', [ 'nivel' => $plan->getNivelPlanEstudios(), 'plan' => $plan->getId() ]);
  121.                 } else {
  122.                     $aspRegistro->setPlanOfertado($plan);
  123.                     $aspRegistro->setCiclo($cicloActivoTopesPlaesOfertados->getCiclo());
  124.                     $entityManager->flush();
  125.                     //redirigir cuando ya ocupo un espacio
  126.                     $this->addFlash('success''Espacio Reservado Satisfactoriamente.');
  127.                     return $this->redirectToRoute('frontend_aspirante_confirmacion_finalizada',  [ 'id' => $aspRegistro->getAspirante()->getId() ]);
  128.                 }
  129.             } else {
  130.                 $this->addFlash('error''No se ha encontrado Preregistro con la CLUR proporcionada.');
  131.                 return $this->redirectToRoute('frontend_aspirante_confirmacion_execute', [ 'id' => $plan->getId() ]);
  132.             }
  133.         }
  134.         return $this->renderForm('frontend/aspirante/confirmacion/execute.html.twig', [
  135.             'form' => $form,
  136.             'planOfertado' => $plan
  137.         ]);
  138.     }
  139.     /**
  140.      * @Route("/confirmation-finished/{id}", name="frontend_aspirante_confirmacion_finalizada")
  141.      */
  142.     public function confirmacionFinalizada(Aspirante $aspiranteAspRegistroRepository $aspRegistroRepository)
  143.     {
  144.         $aspRegistro $aspRegistroRepository->findBy(['aspirante' => $aspirante->getId()]);
  145.         return $this->render('frontend/aspirante/confirmacion/confirmacion_finalizada.html.twig', [
  146.             'aspirante' => $aspirante,
  147.             'aspRegistro' => $aspRegistro[0]
  148.         ]);
  149.     }
  150.     /**
  151.      * @Route("/{id}/confirmacion-pdf", name="frontend_aspirante_confirmacion_pdf")
  152.      */
  153.     public function generaConfirmacionRegistroPdf(
  154.         Aspirante $aspiranteAspRegistroRepository $aspRegistroRepository,
  155.         TCPDFController $tcpdfAspiranteService $aspiranteService$projectDir
  156.     )
  157.     {
  158.         if($datosRegistro $aspRegistroRepository->findByAspirante($aspirante->getId()))
  159.         {
  160.             $pdf $aspiranteService->generaRegistroConfirmadoPDF($tcpdf$aspirante$datosRegistro$projectDir);
  161.             //$pdf = $aspiranteService->generarPreregistroPDF($aspirante, $datosRegistro);
  162.             $pdf->Output('registroUAGro.pdf''D');
  163.         }
  164.         return $this->redirectToRoute('frontend_aspirante_confirmacion_finalizada', [ 'id' => $aspirante->getId() ]);
  165.     }
  166.     /**
  167.      * @Route("/{id}/programacion-pdf", name="frontend_aspirante_programacion_pdf")
  168.      */
  169.     public function descargaProgramacionPdf(Aspirante $aspiranteAspRegistroRepository $aspRegistroRepository$projectDirConfirmacionNMS$projectDirConfirmacionNS)
  170.     {
  171.         $planAspirante $aspRegistroRepository->findOneBy([
  172.             'aspirante' => $aspirante
  173.         ]);
  174.         if ($planAspirante->getPlanOfertado()->getNivelPlanEstudios() === 3) {
  175.             $filePath $projectDirConfirmacionNMS.$planAspirante->getPlanOfertado()->getPdfRevisionDoctos();
  176.         } else {
  177.             $filePath $projectDirConfirmacionNS.$planAspirante->getPlanOfertado()->getPdfRevisionDoctos();
  178.         }
  179.         $response = new Response();
  180.         $response->headers->set('Content-Type''application/xml; charset=utf-8');
  181.         $response->headers->set('Content-Disposition'sprintf('attachment; filename="%s"'$planAspirante->getPlanOfertado()->getPdfRevisionDoctos() ));
  182.         $response->setContent(file_get_contents($filePath));
  183.         return $response;
  184.     }
  185.     /**
  186.      * @Route("/{id}/enviar-email-confirmacion", name="frontend_aspirante_enviar_email_confirmacion")
  187.      */
  188.     public function enviaEmailConfirmacion(Aspirante $aspiranteMailer $mailer)
  189.     {
  190.         if($aspirante)
  191.         {
  192.             $mailer->enviarEmailConfirmacion($aspirante);
  193.             $this->addFlash('success''Se ha enviado el correo satisfactoriamente.');
  194.         } else {
  195.             $this->addFlash('error''No se ha encontrado email.');
  196.         }
  197.         return $this->redirectToRoute('frontend_aspirante_confirmacion_finalizada', [  'id'=> $aspirante->getId() ]);
  198.     }
  199.         /**
  200.      * @Route("/search-confirmation", name="frontend_aspirante_buscar_confirmacion")
  201.      */
  202.     public function buscarConfirmacion(Request $request,  AspRegistroRepository $aspRegistroRepository): Response
  203.     {
  204.         $form $this->createForm(BuscarConfirmacionType::class, null);
  205.         $form->handleRequest($request);
  206.         if ($form->isSubmitted() && $form->isValid()) {
  207.             $formData $form->getData();
  208.             //dd( $formData['clur']);
  209.             $aspiranteRegistro $aspRegistroRepository->findOneBy([
  210.                 'claveUnicaRegistro' => $formData['clur']
  211.             ]);
  212.             if (!$aspiranteRegistro) {
  213.                 $this->addFlash('error''No se ha encontrado ASPIRANTE con la CLUR proporcionada.');
  214.                 return $this->redirectToRoute('frontend_aspirante_buscar_confirmacion');
  215.             }
  216.             if ($aspiranteRegistro->getConsecutivoPlesxures() != null) {
  217.                 if($aspiranteRegistro->getCiclo() < 460 ) {
  218.                     $this->addFlash('error''No existe confirmación para este ciclo.');
  219.                     return $this->redirectToRoute('frontend_aspirante_buscar_confirmacion');
  220.                 }
  221.                 $this->addFlash('success''Confirmación encontrada.');
  222.                 return $this->redirectToRoute('frontend_aspirante_confirmacion_finalizada',  [ "id" => $aspiranteRegistro->getAspirante()->getId() ]);
  223.             } else {
  224.                 $this->addFlash('error''No se ha CONFIRMADO registro con la CLUR proporcionada.');
  225.                 return $this->redirectToRoute('frontend_aspirante_buscar_confirmacion');
  226.             }
  227.         }
  228.         return $this->renderForm('frontend/aspirante/confirmacion/buscar_confirmacion.html.twig', [
  229.             'form' => $form
  230.         ]);
  231.     }
  232.     /**
  233.      * @Route("/search-sede", name="frontend_aspirante_buscar_sede")
  234.  */
  235.     public function buscarSede(Request $request,  AspRegistroRepository $aspRegistroRepository): Response
  236.     {
  237.         return $this->renderForm('frontend/aspirante/confirmacion/buscar_sede.html.twig');
  238.     }
  239. }