src/Controller/DefaultController.php line 84

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Component\HttpFoundation\Request;
  4. use App\Entity\Solicitud;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Symfony\Component\Mime\Email;
  7. class DefaultController extends BaseController
  8. {
  9.     public function indexAction()
  10.     {   
  11.         $retorno $this->redirectAuthenticated();
  12.         if ($retorno !== false)
  13.         {
  14.             return $retorno;
  15.         }
  16.         
  17.         $infoProcesoReclutamiento $this->getInfoProcesoReclutamiento();
  18.         $infoProcesoReservistas $this->getInfoProcesoReservistas();
  19.         
  20.         return $this->render(
  21.             "Default/landingPage.html.twig" ,
  22.             [
  23.                 'allow'=>$infoProcesoReclutamiento['allow'],
  24.                 'tituloReg'=>$infoProcesoReclutamiento['tituloReg'],
  25.                 'periodoIni'=> $infoProcesoReclutamiento['periodoIni'],
  26.                 'periodoFin'=> $infoProcesoReclutamiento['periodoFin'],
  27.                 'acuartelamiento'=>$infoProcesoReclutamiento['acuartelamiento'],
  28.                 'allowReservas'=>$infoProcesoReservistas['allowReservas'],
  29.                 'diaIniReservas'=>$infoProcesoReservistas['diaIniReservas'],
  30.                 'diaFinReservas'=>$infoProcesoReservistas['diaFinReservas'],
  31.                 'tituloReservas'=>$infoProcesoReservistas['tituloReservas'],
  32.             ]
  33.         );
  34.         
  35.     }
  36.     public function indexReclutamientoAction()
  37.     {   
  38.         $retorno $this->redirectAuthenticated();
  39.         if ($retorno !== false)
  40.         {
  41.             return $retorno;
  42.         }
  43.         
  44.         $infoProcesoReclutamiento $this->getInfoProcesoReclutamiento();
  45.         
  46.         return $this->render(
  47.             "Default/landingReclutamientoPage.html.twig" ,
  48.             [
  49.                 'allow'=>$infoProcesoReclutamiento['allow'],
  50.                 'tituloReg'=>$infoProcesoReclutamiento['tituloReg'],
  51.                 'periodoIni'=> $infoProcesoReclutamiento['periodoIni'],
  52.                 'periodoFin'=> $infoProcesoReclutamiento['periodoFin'],
  53.                 'acuartelamiento'=>$infoProcesoReclutamiento['acuartelamiento'],
  54.             ]
  55.         );
  56.     }
  57.     public function indexReservasAction()
  58.     {   
  59.         $retorno $this->redirectAuthenticated();
  60.         if ($retorno !== false)
  61.         {
  62.             return $retorno;
  63.         }
  64.         
  65.         $infoProcesoReservistas $this->getInfoProcesoReservistas();
  66.         
  67.         return $this->render(
  68.             "Default/landingReservasPage.html.twig" ,
  69.             [
  70.                 'allowReservas'=>$infoProcesoReservistas['allowReservas'],
  71.                 'diaIniReservas'=>$infoProcesoReservistas['diaIniReservas'],
  72.                 'diaFinReservas'=>$infoProcesoReservistas['diaFinReservas'],
  73.                 'tituloReservas'=>$infoProcesoReservistas['tituloReservas'],
  74.             ]
  75.         );
  76.     }
  77.     protected function redirectAuthenticated()
  78.     {
  79.         $usuario $this->getUser();
  80.         if (is_object($usuario))
  81.         {
  82.             if ((true==$usuario->isRoleAssigned('ROLE_ADMINISTRADOR'))|| 
  83.                 (true==$usuario->isRoleAssigned('ROLE_COORDINADOR_DIRECCION'))|| 
  84.                 (true==$usuario->isRoleAssigned('ROLE_COORDINADOR_BASE'))||
  85.                 (true==$usuario->isRoleAssigned('ROLE_COORDINADOR_CENTRO')) || 
  86.                 (true==$usuario->isRoleAssigned('ROLE_OPERADOR_CENTRO')) || 
  87.                 (true==$usuario->isRoleAssigned('ROLE_OPERADOR_INSTRUCCION')) || 
  88.                 (true==$usuario->isRoleAssigned('ROLE_OPERADOR_UNIDAD')) ||
  89.                 (true==$usuario->isRoleAssigned('ROLE_PSICOLOGO')) || 
  90.                 (true==$usuario->isRoleAssigned('ROLE_PSICOLOGO_JEFE'))  
  91.                )
  92.             {
  93.                 return $this->render("Default/inicio.html.twig", []);
  94.             }
  95.             if( true==$usuario->isRoleAssigned('ROLE_RESERVISTA'))
  96.             {
  97.                 $procesoActivo $this->em->getRepository('App\\Entity\\ProcesoRegistroReservistas')
  98.                     ->findOneBy(array('activo'=>true));
  99.                 if ($procesoActivo)
  100.                 {
  101.                     $reservista $this->em->getRepository('App\\Entity\\Reservista')
  102.                             ->findOneBy(['identificacion'=>$this->getUser()->getUsername()]);
  103.                     $reservistaProceso $this->em->getRepository('App\\Entity\\ReservistaProceso')
  104.                             ->findOneBy(['procesoRegistro'=>$procesoActivo->getId(), 'reservista'=>$reservista->getId()]);
  105.                     return $this->redirect($this->generateUrl('crud_plain_show', ['rol' => 'reservista''routeClassName' => 'reservistaproceso''id'=>$reservistaProceso->getId()]));
  106.                 }
  107.                 return $this->render("Default/inicio.html.twig", []);
  108.             }
  109.         }
  110.         return false;
  111.     }
  112.     
  113.     protected function getInfoProcesoReclutamiento()
  114.     {
  115.         $allow=true;
  116.         $allowReservas=true;
  117.         $msg='';
  118.         $procesoActivo $this->em->getRepository('App\\Entity\\ProcesoReclutamiento')
  119.                                             ->createQueryBuilder('p')
  120.                                             ->where('p.activo=true')
  121.                                             ->getQuery()->getOneOrNullResult();
  122.         
  123.         if (!$procesoActivo)
  124.         {
  125.             $allow=false;
  126.             $msg 'No hay ningún proceso activo para el registro';
  127.         }
  128.         else
  129.         {
  130.             $hoy = new \DateTime();
  131.             if ($hoy<$procesoActivo->getFechaInicioRegistro() || $hoy>$procesoActivo->getFechaFinRegistro())
  132.             {
  133.                 $allow=false;
  134.                 $msg 'El período de registro es desde '.$procesoActivo->getFechaInicioRegistro()->format('d/m/Y H:i').' hasta '.$procesoActivo->getFechaFinRegistro()->format('d/m/Y H:i');
  135.             }
  136.         }
  137.         
  138.             if ($allow)
  139.             {    
  140.                 $inicioAcuartelamiento $this->dateToTxt($procesoActivo->getFechaAcuartelamiento());
  141.                 $finalAcuartelamiento $this->dateToTxt($procesoActivo->getFechaFinDias());
  142.                 $diaIniRegistro=$this->dateToTxt($procesoActivo->getFechaInicioRegistro());
  143.                 $diaFinRegistro=$this->dateToTxt($procesoActivo->getFechaFinRegistro());
  144.                 $tituloReg='Acuartelamiento Leva '.$procesoActivo->getAnno(). ' - '$procesoActivo->getLlamada().' LLAMADA';
  145.                 
  146.             }else{
  147.                 $inicioAcuartelamiento '';
  148.                 $finalAcuartelamiento '';
  149.                 $tituloReg='';
  150.                 $diaIniRegistro='';
  151.                 $diaFinRegistro='';
  152.                 
  153.             }
  154.             
  155.             $data = [
  156.                 'allow'=>$allow,
  157.                 'tituloReg'=>$tituloReg,
  158.                 'periodoIni'=> $diaIniRegistro,
  159.                 'periodoFin'=> $diaFinRegistro,
  160.                 'acuartelamiento'=>$inicioAcuartelamiento.' y hasta el '.$finalAcuartelamiento,
  161.             ];
  162.             return $data;
  163.     }
  164.     
  165.     protected function getInfoProcesoReservistas()
  166.     {
  167.         $allowReservas=true;
  168.         $msg='';
  169.         
  170.         $procesoReservasActivo $this->em->getRepository('App\\Entity\\ProcesoRegistroReservistas')
  171.                                             ->createQueryBuilder('p')
  172.                                             ->where('p.activo=true')
  173.                                             ->getQuery()->getOneOrNullResult();
  174.         
  175.         if (!$procesoReservasActivo)
  176.         {
  177.             $allowReservas=false;
  178.             $msg 'No hay ningún proceso activo para la actualización de datos de reservas';
  179.         }
  180.         else
  181.         {
  182.             $hoy = new \DateTime();
  183.             if ($hoy<$procesoReservasActivo->getFechaInicioRegistro() || $hoy>$procesoReservasActivo->getFechaFinRegistro())
  184.             {
  185.                 $allowReservas=false;
  186.                 $msg 'El período de registro es desde '.$procesoReservasActivo->getFechaInicioRegistro()->format('d/m/Y H:i').' hasta '.$procesoReservasActivo->getFechaFinRegistro()->format('d/m/Y H:i');
  187.             }
  188.         }
  189.         
  190.         if ($allowReservas)
  191.         {    
  192.             $diaIniReservas=$this->dateToTxt($procesoReservasActivo->getFechaInicioRegistro());
  193.             $diaFinReservas=$this->dateToTxt($procesoReservasActivo->getFechaFinRegistro());
  194.             $tituloReservas='Actualización desde Leva '.$procesoReservasActivo->getAnnoDesde(). ' hasta Leva '$procesoReservasActivo->getAnnoHasta().'.';
  195.         }
  196.         else
  197.         {
  198.             $tituloReservas='';
  199.             $diaIniReservas='';
  200.             $diaFinReservas='';
  201.         }
  202.         $data = [
  203.             'allowReservas'=>$allowReservas,
  204.             'diaIniReservas'=>$diaIniReservas,
  205.             'diaFinReservas'=>$diaFinReservas,
  206.             'tituloReservas'=>$tituloReservas,
  207.         ];
  208.         return $data;
  209.     }
  210.     
  211.     protected function dateToTxt($date)
  212.     {
  213.         $diaSemana = ['Domingo''Lunes''Martes''Miércoles''Jueves''Viernes''Sábado'];
  214.         $diaSemana $diaSemana[$date->format('w')];
  215.         
  216.         $mes = ['Enero''Febrero''Marzo''Abril''Mayo''Junio''Julio''Agosto''Septiembre''Octubre''Noviembre''Diciembre'];
  217.         $mes $mes[$date->format('n')-1];
  218.         return $diaSemana.' '.date_format($date,'d').' de '.$mes.' del '.date_format($date,'Y');
  219.     }
  220.     
  221.     public function verificaEmailAction()
  222.     {
  223.         $email_address $this->request->get('verify_email');
  224.         $data = ['ok' => true];
  225.         try
  226.         {
  227.             $codigo random_int(100000999999);
  228.             $email = new Email();
  229.             $email->from($this->getParameter('mailer_from'))
  230.                 ->to($email_address)
  231.                 //->cc('[email protected]')
  232.                 //->bcc('[email protected]')
  233.                 //->replyTo('[email protected]')
  234.                 //->priority(Email::PRIORITY_HIGH)
  235.                 ->subject('Verificación de correo electrónico para registro de reservistas')
  236.                 ->html($this->render('Default/verify_email.html.twig',
  237.                         array('codigo' => $codigo))->getContent());
  238.             $this->mailer->send($email);
  239.             $this->session->set('verify_email_code'$codigo);
  240.         }
  241.         catch (\Exception $exc)
  242.         {
  243.             $data['ok'] = false;
  244.             $data['msg'] = $this->translator->trans('seguridad.mail.error.conexion', array());
  245.             $data['msg'] .= ' -('.$exc->getMessage().')';
  246.         }
  247.         $response = new Response(json_encode($data));
  248.         $response->headers->set('Content-Type''application/json');
  249.         return $response;
  250.     }
  251.     public function verificaEmailCodeAction()
  252.     {
  253.         $verify_code $this->request->get('verify_email_code');
  254.         $stored_code $this->session->get('verify_email_code');
  255.         $data = ['ok' => $verify_code == $stored_code];
  256.         $response = new Response(json_encode($data));
  257.         $response->headers->set('Content-Type''application/json');
  258.         return $response;
  259.     }
  260. }