<?php
namespace App\Controller;
use Symfony\Component\HttpFoundation\Request;
use App\Entity\Solicitud;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Mime\Email;
class DefaultController extends BaseController
{
public function indexAction()
{
$retorno = $this->redirectAuthenticated();
if ($retorno !== false)
{
return $retorno;
}
$infoProcesoReclutamiento = $this->getInfoProcesoReclutamiento();
$infoProcesoReservistas = $this->getInfoProcesoReservistas();
return $this->render(
"Default/landingPage.html.twig" ,
[
'allow'=>$infoProcesoReclutamiento['allow'],
'tituloReg'=>$infoProcesoReclutamiento['tituloReg'],
'periodoIni'=> $infoProcesoReclutamiento['periodoIni'],
'periodoFin'=> $infoProcesoReclutamiento['periodoFin'],
'acuartelamiento'=>$infoProcesoReclutamiento['acuartelamiento'],
'allowReservas'=>$infoProcesoReservistas['allowReservas'],
'diaIniReservas'=>$infoProcesoReservistas['diaIniReservas'],
'diaFinReservas'=>$infoProcesoReservistas['diaFinReservas'],
'tituloReservas'=>$infoProcesoReservistas['tituloReservas'],
]
);
}
public function indexReclutamientoAction()
{
$retorno = $this->redirectAuthenticated();
if ($retorno !== false)
{
return $retorno;
}
$infoProcesoReclutamiento = $this->getInfoProcesoReclutamiento();
return $this->render(
"Default/landingReclutamientoPage.html.twig" ,
[
'allow'=>$infoProcesoReclutamiento['allow'],
'tituloReg'=>$infoProcesoReclutamiento['tituloReg'],
'periodoIni'=> $infoProcesoReclutamiento['periodoIni'],
'periodoFin'=> $infoProcesoReclutamiento['periodoFin'],
'acuartelamiento'=>$infoProcesoReclutamiento['acuartelamiento'],
]
);
}
public function indexReservasAction()
{
$retorno = $this->redirectAuthenticated();
if ($retorno !== false)
{
return $retorno;
}
$infoProcesoReservistas = $this->getInfoProcesoReservistas();
return $this->render(
"Default/landingReservasPage.html.twig" ,
[
'allowReservas'=>$infoProcesoReservistas['allowReservas'],
'diaIniReservas'=>$infoProcesoReservistas['diaIniReservas'],
'diaFinReservas'=>$infoProcesoReservistas['diaFinReservas'],
'tituloReservas'=>$infoProcesoReservistas['tituloReservas'],
]
);
}
protected function redirectAuthenticated()
{
$usuario = $this->getUser();
if (is_object($usuario))
{
if ((true==$usuario->isRoleAssigned('ROLE_ADMINISTRADOR'))||
(true==$usuario->isRoleAssigned('ROLE_COORDINADOR_DIRECCION'))||
(true==$usuario->isRoleAssigned('ROLE_COORDINADOR_BASE'))||
(true==$usuario->isRoleAssigned('ROLE_COORDINADOR_CENTRO')) ||
(true==$usuario->isRoleAssigned('ROLE_OPERADOR_CENTRO')) ||
(true==$usuario->isRoleAssigned('ROLE_OPERADOR_INSTRUCCION')) ||
(true==$usuario->isRoleAssigned('ROLE_OPERADOR_UNIDAD')) ||
(true==$usuario->isRoleAssigned('ROLE_PSICOLOGO')) ||
(true==$usuario->isRoleAssigned('ROLE_PSICOLOGO_JEFE'))
)
{
return $this->render("Default/inicio.html.twig", []);
}
if( true==$usuario->isRoleAssigned('ROLE_RESERVISTA'))
{
$procesoActivo = $this->em->getRepository('App\\Entity\\ProcesoRegistroReservistas')
->findOneBy(array('activo'=>true));
if ($procesoActivo)
{
$reservista = $this->em->getRepository('App\\Entity\\Reservista')
->findOneBy(['identificacion'=>$this->getUser()->getUsername()]);
$reservistaProceso = $this->em->getRepository('App\\Entity\\ReservistaProceso')
->findOneBy(['procesoRegistro'=>$procesoActivo->getId(), 'reservista'=>$reservista->getId()]);
return $this->redirect($this->generateUrl('crud_plain_show', ['rol' => 'reservista', 'routeClassName' => 'reservistaproceso', 'id'=>$reservistaProceso->getId()]));
}
return $this->render("Default/inicio.html.twig", []);
}
}
return false;
}
protected function getInfoProcesoReclutamiento()
{
$allow=true;
$allowReservas=true;
$msg='';
$procesoActivo = $this->em->getRepository('App\\Entity\\ProcesoReclutamiento')
->createQueryBuilder('p')
->where('p.activo=true')
->getQuery()->getOneOrNullResult();
if (!$procesoActivo)
{
$allow=false;
$msg = 'No hay ningún proceso activo para el registro';
}
else
{
$hoy = new \DateTime();
if ($hoy<$procesoActivo->getFechaInicioRegistro() || $hoy>$procesoActivo->getFechaFinRegistro())
{
$allow=false;
$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');
}
}
if ($allow)
{
$inicioAcuartelamiento = $this->dateToTxt($procesoActivo->getFechaAcuartelamiento());
$finalAcuartelamiento = $this->dateToTxt($procesoActivo->getFechaFinDias());
$diaIniRegistro=$this->dateToTxt($procesoActivo->getFechaInicioRegistro());
$diaFinRegistro=$this->dateToTxt($procesoActivo->getFechaFinRegistro());
$tituloReg='Acuartelamiento Leva '.$procesoActivo->getAnno(). ' - '. $procesoActivo->getLlamada().' LLAMADA';
}else{
$inicioAcuartelamiento = '';
$finalAcuartelamiento = '';
$tituloReg='';
$diaIniRegistro='';
$diaFinRegistro='';
}
$data = [
'allow'=>$allow,
'tituloReg'=>$tituloReg,
'periodoIni'=> $diaIniRegistro,
'periodoFin'=> $diaFinRegistro,
'acuartelamiento'=>$inicioAcuartelamiento.' y hasta el '.$finalAcuartelamiento,
];
return $data;
}
protected function getInfoProcesoReservistas()
{
$allowReservas=true;
$msg='';
$procesoReservasActivo = $this->em->getRepository('App\\Entity\\ProcesoRegistroReservistas')
->createQueryBuilder('p')
->where('p.activo=true')
->getQuery()->getOneOrNullResult();
if (!$procesoReservasActivo)
{
$allowReservas=false;
$msg = 'No hay ningún proceso activo para la actualización de datos de reservas';
}
else
{
$hoy = new \DateTime();
if ($hoy<$procesoReservasActivo->getFechaInicioRegistro() || $hoy>$procesoReservasActivo->getFechaFinRegistro())
{
$allowReservas=false;
$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');
}
}
if ($allowReservas)
{
$diaIniReservas=$this->dateToTxt($procesoReservasActivo->getFechaInicioRegistro());
$diaFinReservas=$this->dateToTxt($procesoReservasActivo->getFechaFinRegistro());
$tituloReservas='Actualización desde Leva '.$procesoReservasActivo->getAnnoDesde(). ' hasta Leva '. $procesoReservasActivo->getAnnoHasta().'.';
}
else
{
$tituloReservas='';
$diaIniReservas='';
$diaFinReservas='';
}
$data = [
'allowReservas'=>$allowReservas,
'diaIniReservas'=>$diaIniReservas,
'diaFinReservas'=>$diaFinReservas,
'tituloReservas'=>$tituloReservas,
];
return $data;
}
protected function dateToTxt($date)
{
$diaSemana = ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'];
$diaSemana = $diaSemana[$date->format('w')];
$mes = ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'];
$mes = $mes[$date->format('n')-1];
return $diaSemana.' '.date_format($date,'d').' de '.$mes.' del '.date_format($date,'Y');
}
public function verificaEmailAction()
{
$email_address = $this->request->get('verify_email');
$data = ['ok' => true];
try
{
$codigo = random_int(100000, 999999);
$email = new Email();
$email->from($this->getParameter('mailer_from'))
->to($email_address)
//->cc('[email protected]')
//->bcc('[email protected]')
//->replyTo('[email protected]')
//->priority(Email::PRIORITY_HIGH)
->subject('Verificación de correo electrónico para registro de reservistas')
->html($this->render('Default/verify_email.html.twig',
array('codigo' => $codigo))->getContent());
$this->mailer->send($email);
$this->session->set('verify_email_code', $codigo);
}
catch (\Exception $exc)
{
$data['ok'] = false;
$data['msg'] = $this->translator->trans('seguridad.mail.error.conexion', array());
$data['msg'] .= ' -('.$exc->getMessage().')';
}
$response = new Response(json_encode($data));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
public function verificaEmailCodeAction()
{
$verify_code = $this->request->get('verify_email_code');
$stored_code = $this->session->get('verify_email_code');
$data = ['ok' => $verify_code == $stored_code];
$response = new Response(json_encode($data));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
}