<?php
namespace App\Controller;
use Symfony\Component\HttpFoundation\Response;
use App\Entity\Reservista;
use App\Entity\NmclDominioLocalizacion;
use App\Enum\CausaNoIdoneoEnum;
use App\Entity\ReservistaProceso;
use App\Entity\SeguridadUsuario;
use App\Entity\SeguridadConfiguracion;
use Symfony\Component\Mime\Email;
use App\Entity\SeguridadCodigoActivacion;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
class ReservistasController extends RegistrantesController
{
protected $procesoActivo = null;
public function registroLineaAction()
{
$em = $this ->em;
$allow=true;
$msg='';
if (!$this->procesoActivo)
{
$this->procesoActivo = $em->getRepository('App\\Entity\\ProcesoRegistroReservistas')
->createQueryBuilder('p')
->where('p.activo=true')
->getQuery()->getOneOrNullResult();
}
$procesoActivo = $this->procesoActivo;
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:m').' hasta '.$procesoActivo->getFechaFinRegistro()->format('d/m/Y H:m');
}
}
if (!$allow)
{
return $this->render('Aspirantes/registroenlinea.html.twig',
array('allow'=>$allow, 'msg'=>$msg, 'tiempoTest'=>0, 'distintivo'=>''));
}
$regiones = $em->getRepository('App\\Entity\\NmclDominioLocalizacion')
->createQueryBuilder('r')
->leftJoin('r.nivelLocalizacion','nivel')
->leftJoin('nivel.localizacion','localizacion')
->where('localizacion.id=1')
->andWhere('nivel.nivel=1')
->orderBy('r.valor')
->getQuery()->getResult();
$provincias = $em->getRepository('App\\Entity\\NmclDominioLocalizacion')
->createQueryBuilder('r')
->leftJoin('r.nivelLocalizacion','nivel')
->leftJoin('nivel.localizacion','localizacion')
->where('localizacion.id=1')
->andWhere('nivel.nivel=2')
->orderBy('r.valor')
->getQuery()->getResult();
$cantones = $em->getRepository('App\\Entity\\NmclDominioLocalizacion')
->createQueryBuilder('r')
->leftJoin('r.nivelLocalizacion','nivel')
->leftJoin('nivel.localizacion','localizacion')
->where('localizacion.id=1')
->andWhere('nivel.nivel=3')
->orderBy('r.valor')
->getQuery()->getResult();
$parroquias = $em->getRepository('App\\Entity\\NmclDominioLocalizacion')
->createQueryBuilder('r')
->leftJoin('r.nivelLocalizacion','nivel')
->leftJoin('nivel.localizacion','localizacion')
->where('localizacion.id=1')
->andWhere('nivel.nivel=4')
->orderBy('r.valor')
->getQuery()->getResult();
$grados = $em->getRepository('App\\Entity\\NmclGrado')->findAll();
$fuerzas = $em->getRepository('App\\Entity\\NmclFuerza')->findAll();
$armas = $em->getRepository('App\\Entity\\NmclArma')->findAll();
$centrosMovilizacion = $em->getRepository('App\\Entity\\CentroMovilizacion')
->createQueryBuilder('r')
->where('r.activo = true')
->orderBy('r.nombre')
->getQuery()->getResult();
return $this->render('Reservistas/registroenlinea.html.twig',
array('allow'=>$allow, 'regiones'=>$regiones, 'provincias'=>$provincias,
'cantones'=>$cantones,'parroquias'=>$parroquias,'centrosMovilizacion'=>$centrosMovilizacion,
'grados'=>$grados, 'fuerzas' => $fuerzas, 'armas' => $armas,
'distintivo'=>''));
}
public function verificaIdentidadAction($identificacion)
{
$data = array('ok'=>true, 'idoneo'=>true);
$em = $this ->em;
if (!$this->procesoActivo)
{
$this->procesoActivo = $em->getRepository('App\\Entity\\ProcesoRegistroReservistas')
->createQueryBuilder('p')
->where('p.activo=true')
->getQuery()->getOneOrNullResult();
}
$procesoActivo = $this->procesoActivo;
$data['procesoId'] = $procesoActivo->getId();
$url = 'http://200.6.25.31/api/v1/PROC_GET_RESERVISTA_FORM/'; //$ws_dynamo.'/RutaPorcOffline/'.$ruta->getId();
$params = array('cedula'=>$identificacion);
$ret = $this->puedeRegistrarse('POST', $url, $identificacion, $params);
$data['idoneo'] = $ret['ok'];
if ($ret['ok'])
{
// $data['idoneo'] = true; //WILLY: Usar esta linea para probar sin usar los servicios
//$data['msg'] = $ret['msg'];
$reservista = isset($ret['reservista']) ? $ret['reservista'] : null;
if ($reservista)
{
$data['reservistaID']=$reservista->getId();
$data['cedula']=$reservista->getIdentificacion();
$data['nombres']=$reservista->getNombres();
$data['apellidoP']=$reservista->getApellidoPaterno();
$data['apellidoM']=$reservista->getApellidoMaterno();
$data['edad']=$reservista->getEdad();
$data['edadString']=$reservista->getEdadString();
$data['sexo']=$reservista->getSexo();
$data['estadoCivil']=$reservista->getEstadoCivil();
$data['estatura']=$reservista->getEstatura();
$data['telefono']=$reservista->getTelefono();
$data['telefonoEmergencias']=$reservista->getTelefonoEmergencias();
$data['email']=$reservista->getEmail();
$data['fechaNacimiento']=$reservista->getFechaNacimiento()->format('d/m/Y');
$data['paisNacimiento']=$reservista->getPaisNacimiento();
$data['telefono']=$reservista->getTelefono();
if ($reservista->getLugarNacimiento())
{
$data['parroquiaNacimiento']=$reservista->getLugarNacimiento();
$data['cantonNacimiento']=$data['parroquiaNacimiento']->getDominioPadre();
$data['provinciaNacimiento']=$data['cantonNacimiento']->getDominioPadre();
$data['regionNacimiento']=$data['provinciaNacimiento']->getDominioPadre();
$data['parroquiaNacimiento']=$data['parroquiaNacimiento']->__toString();
$data['cantonNacimiento']=$data['cantonNacimiento']->__toString();
$data['provinciaNacimiento']=$data['provinciaNacimiento']->__toString();
$data['regionNacimiento']=$data['regionNacimiento']->__toString();
}
$procesoActivo = $em->getRepository('App\\Entity\\ProcesoRegistroReservistas')
->createQueryBuilder('p')
->where('p.activo=true')
->getQuery()->getOneOrNullResult();
$reservistaProceso = $em->getRepository('App\\Entity\\ReservistaProceso')
->findOneBy(array('reservista'=>$reservista->getId(), 'procesoRegistro'=>$procesoActivo->getId()));
if($reservistaProceso){
$data['centroCapacitarse']=$reservistaProceso->getCentroMovilizacion();
/*
if($reservistaProceso->getPaisResidencia()=='Ecuador'){
$data['residenciaEcuador']=true;
$data['callePrincipal']=$reservistaProceso->getCallePrincipalResidencia();
$data['calleSecundaria']=$reservistaProceso->getCalleSecundariaResidencia();
$data['nroCasa']=$reservistaProceso->getNumeroCasa();
$data['parroquiaResidencia']=$reservistaProceso->getLugarResidencia();
}else{
$data['residenciaEcuador']=false;
$data['paisResidencia']=$reservistaProceso->getPaisResidencia();
$data['referenciaResidencia']=$reservistaProceso->getReferencias();
} */
}
}
else{
$reservistaVerificado = isset($ret['reservistaVerificado']) ? $ret['reservistaVerificado'] : null;
if($reservistaVerificado){
if($reservistaVerificado['C_GENERO']=='M')
$data['sexo']='Masculino';
else
$data['sexo']='Femenino';
$data['telefono']=$reservistaVerificado['VC_TELEFONOCELULAR'];
$data['telefonoEmergencias']=$reservistaVerificado['VC_TELEFONOEMERGENCIA'];
$data['email']=$reservistaVerificado['VC_EMAIL'];
$data['estatura']=$reservistaVerificado['F_ESTATURA'];
$data['gradoMilitar']=$reservistaVerificado['I_PK_GRADOMILITAR'];
$data['ramaGradoMilitar']=$reservistaVerificado['RAMA_GRADO_MILITAR'];
$data['tipoMilitar']=$reservistaVerificado['I_PK_TIPOMILITAR'];
$data['arma']=$reservistaVerificado['I_PK_ARMA'];
$data['tipoArma']=$reservistaVerificado['I_FK_TIPOARMA'];
$data['idUnidad']=$reservistaVerificado['I_PK_UNIDAD'];
$data['unidad']=$reservistaVerificado['VC_UNIDAD'];
$data['tallaRopa']=$reservistaVerificado['I_TALLAROPA'];
$data['tallaZapato']=$reservistaVerificado['I_ZAPATO'];
$data['tallaCabeza']=$reservistaVerificado['I_CABEZA'];
$data['fechaLicenciamiento']=$reservistaVerificado['D_FECHALICENCIAMIENTO'];
$data['tipoSangre']=$reservistaVerificado['VC_TIPOSANGRE'];
}
}
}
else
{
$data['ok'] = false;
$data['causa'] = 'ERROR EN CONEXION';
$data['msg'] = $ret['msg'];
}
if ($data['idoneo'])
{
if ($this->verificaIdentidad($data, $identificacion, $procesoActivo->getFechaInicioRegistro()))
{
$reservista = $this->salvaReservista($data);
$data['reservistaID'] = $reservista->getId();
if (!$this->edadValida($data['fechaNacimiento'], $procesoActivo))
{
$data['idoneo'] = false;
$data['causa'] = CausaNoIdoneoEnum::EDAD;
$data['volverPresentarse']='PROXIMO';
$data['msg']='El año de nacimiento no estå comprendido en los años del proceso de actualización para levas desde '. $procesoActivo->getAnnoDesde().' hasta '. $procesoActivo->getAnnoHasta();
$data['fechaResultado'] = new \DateTime();
}
$this->salvaReservistaProceso($data);
}
}
$data = new Response(json_encode($data));
$data->headers->set('Content-Type', 'application/json');
return $data;
}
public function verificaAntecedentesAction($identificacion)
{
$data = array('ok'=>true, 'idoneo'=>true, 'cedula'=>$identificacion);
$em = $this ->em;
if (!$this->procesoActivo)
{
$this->procesoActivo = $em->getRepository('App\\Entity\\ProcesoRegistroReservistas')
->createQueryBuilder('p')
->where('p.activo=true')
->getQuery()->getOneOrNullResult();
}
/*** BEGIN CONSULTAR SERVICIO WEB POLICIA NACIONAL ***/
$data['ok']=true; //se pudo comunicar con el ws
$data['idoneo']=true; //no tiene antecedentes
$data['antecedente'] =0; //NO tiene problemas
// $this->callPolice($identificacion, $data, false); //WILLY usar esta linea para probar sin consumir el servicio
$this->callPolice($identificacion, $data);
if ($data['ok'])
{
$data['fechaConsultaAntecedentes'] = new \DateTime();
if (!$data['idoneo'])
{
$data['resultadosAntecedentes'] = json_encode($data['antecedente']);
$data['causaRechazo'] = CausaNoIdoneoEnum::POLICIA;
$data['fechaResultado'] = new \DateTime();
$data['volverPresentarse']='PROXIMO';
}
$this->salvaReservistaProceso($data);
unset($data['resultadosAntecedentes']);
unset($data['fechaConsultaAntecedentes']);
unset($data['causaRechazo']);
unset($data['fechaResultado']);
unset($data['volverPresentarse']);
}
else
{
$data['msg']=$this->translator->trans('noidoneo.causa.network.policia');
}
$data = new Response(json_encode($data));
$data->headers->set('Content-Type', 'application/json');
return $data;
}
public function verificaEstudiosAction($identificacion)
{
$data = array('ok'=>true, 'cedula'=>$identificacion);
/*** BEGIN CONSULTAR SERVICIO WEB MIN EDUCACION ***/
$data['ok']=true; //se pudo comunicar con el ws
$data['estudios'] = array();
//$data['estudios'][]=array('anno'=>2013, 'institucion'=>'Colegio XXX', 'titulo'=>'Ingenieron mecĂĄnico');
/*** END CONSULTAR SERVICIO WEB MIN EDUCACION ***/
// $this->callMinEducacion($identificacion, $data, false); //WILLY usar esta lĂnea para probar sin consumir el servicio
$this->callMinEducacion($identificacion, $data);
if ($data['ok'])
{
$data['resultadosEstudios'] = json_encode($data['estudios']);
$data['fechaConsultaEstudios'] = new \DateTime();
$this->salvaReservistaProceso($data);
unset($data['resultadosEstudios']);
unset($data['fechaConsultaEstudios']);
}
else
{
$data['msg']=$this->translator->trans('noidoneo.causa.network.educacion');
}
$data = new Response(json_encode($data));
$data->headers->set('Content-Type', 'application/json');
return $data;
}
private function puedeRegistrarse($method, $url, $identificacion, $params=null)
{
$em = $this->em;
$res = [
'ok' => false,
'causa' => null,
'msg' => null,
];
$reservista = $em->getRepository('App\\Entity\Reservista')->findOneBy(array('identificacion'=>$identificacion));
if($reservista){
$res = [
'ok' => true,
'causa' => null,
'msg' => null,
];
$res['reservista'] = $reservista;
//$this->logger->error('WWW ya estĂĄ registrado'.$identificacion);
}else{
/*$reservistaVerificado = $em->getRepository('App\\Entity\\ReservistaVerificado')->findOneBy(array('identificacion'=>$identificacion));
$ret['reservistaVerificado'] = $reservistaVerificado ? $reservistaVerificado : null;
if ($reservistaVerificado)
{
$reservista = $em->getRepository('App\\Entity\Reservista')->findOneBy(array('identificacion'=>$identificacion));
$ret['reservista'] = $reservista ? $reservista : null;
}
else
{
$ret['ok'] = false;
$ret['causa'] = CausaNoIdoneoEnum::NO_RESERVISTA;
$ret['msg']='No hay un reservista registrado con la indentificaciĂłn proporcionada';
}*/
try {
$this->logger->error('WWW no ya estĂĄ registrado');
$header = [
'accept: application/json',
'Content-Type: application/json',
// 'Content-Length: ' . strlen($data),
// 'Authorization: Bearer '.$token,
];
if ($params && is_array($params))
{
$params = json_encode($params);
}
$handle = curl_init();
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
switch (strtoupper($method))
{
case "GET":
curl_setopt($handle, CURLOPT_HTTPGET, true);
curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true);
break;
case "POST":
curl_setopt($handle, CURLOPT_POST, true);
curl_setopt($handle, CURLOPT_POSTFIELDS, $params);
// $header[] = 'Content-Type: application/json';
break;
case "PUT":
curl_setopt($handle, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($handle, CURLOPT_POSTFIELDS, $params);
break;
case "DELETE":
curl_setopt($handle, CURLOPT_CUSTOMREQUEST, 'DELETE');
if ($params)
{
curl_setopt($handle, CURLOPT_POSTFIELDS, http_build_query($params));
// $url = sprintf("%s?%s", $url, http_build_query($params));
// $header[] = 'Content-Type: application/x-www-form-urlencoded';
}
break;
}
curl_setopt($handle, CURLOPT_URL, $url);
curl_setopt($handle, CURLOPT_HTTPHEADER, $header);
$response = curl_exec($handle);
$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
//$output->writeln('*********************url' . $url);
//$output->writeln('*********************httpCodeDYNAMO' . $httpCode);
//$output->writeln('*********************responseDYNAMO' . json_encode($response));
$this->logger->error('WWW respuesta ws '.json_encode($response));
$res=['ok'=>true];
if(!$response || $httpCode != 200){
$res['ok']=false;
$ret['causa'] = CausaNoIdoneoEnum::NO_RESERVISTA;
$ret['msg']='No hay un reservista registrado con la indentificaciĂłn proporcionada';
$res['httpCode']=$httpCode;
$res['info'] = 'Error: '.$httpCode.'-'.$response.curl_error($handle).$url;
return $res;
}
else
{
$res = [
'ok' => true,
'causa' => null,
'msg' => null,
];
$response = json_decode($response, true);
$res['reservistaVerificado'] = $response['data'];
}
} catch(\Exception $exc) {
$res=array('ok'=>false,'info'=>'Error al consultar'.$exc, 'causa' => CausaNoIdoneoEnum::NO_RESERVISTA, 'msg'=>'No existe un reservista registrado con la indentificaciĂłn proporcionada');
}
}
return $res;
}
private function edadValida($fechaNacimiento, $proceso)
{
$fechaNacimiento = explode('/', $fechaNacimiento);
$fechaNacimiento = $fechaNacimiento[2];
return ($proceso->getAnnoDesde()<=$fechaNacimiento && $fechaNacimiento<=$proceso->getAnnoHasta());
}
public function registroSalvarAction()
{
try
{
$data = $this->request->get('form');
$id = $this->salvaReservistaProceso($data);
$data = array('ok'=>true, 'id'=>$id);
}
catch (\RuntimeException $e)
{
$data = array('ok'=>false, 'msg'=>'No se pudo grabar la operaciĂłn. Intente nuevamente mĂĄs tarde.');
}
$data = new Response(json_encode($data));
$data->headers->set('Content-Type', 'application/json');
return $data;
}
protected function creaUsuario($reservista)
{
$newUser = false;
$userName = $reservista->getIdentificacion();
$usuario = $this->em->getRepository('App\\Entity\\SeguridadUsuario')->findOneBy(['username'=>$userName]);
if (!$usuario)
{
$newUser = true;
$usuario = new SeguridadUsuario();
$usuario->setActivo(false);
// $usuario->setDireccion($reservista->getDireccion());
$usuario->setEliminado(false);
$usuario->setEmail($reservista->getEmail());
$usuario->setFechaRegistro(new \DateTime());
$usuario->setFoto($reservista->getFoto());
$usuario->setIntentosFallidos(0);
// $usuario->setMovil($reservista->getMovil());
$usuario->setNombres($reservista->getNombreCompleto());
$usuario->setPrimerIngreso(TRUE);
$usuario->setTelefono($reservista->getTelefono());
$usuario->setUsername($reservista->getIdentificacion());
}
if (!$usuario->isRoleAssigned('ROLE_RESERVISTA'))
{
$rol = $this->em->getRepository('App\\Entity\\SeguridadRol')->findOneBy(['nombre'=>'ROLE_RESERVISTA']);
if ($rol)
{
$usuario->addAssignedRoles($rol);
}
}
$this->em->persist($usuario);
$this->em->flush();
if ($newUser)
{
//enviar mail de activaciĂłn
$parameterActiveConfiguration = $this->getParameter('SECURITY_CONF');
$configuracionSeguridad = $this->em->getRepository(SeguridadConfiguracion::class)->getActiveConfiguration($parameterActiveConfiguration);
if ($configuracionSeguridad &&$configuracionSeguridad->getCodigoActivacion())
{
$this->sendActivationCode($usuario, $configuracionSeguridad);
}
}
}
protected function sendActivationCode(SeguridadUsuario $user, $configuracionSeguridad)
{
$token = md5(uniqid());
$fecha = new \DateTime();
$codigo = new SeguridadCodigoActivacion();
$codigo->setCodigo($token);
$codigo->setUsuario($user);
$codigo->setFechaEnvio($fecha);
$vigenciaCodigo = $configuracionSeguridad->getVigenciaCodigo();
if ($vigenciaCodigo>0)
{
$fechaMaxActivacion = clone $fecha;
$fechaMaxActivacion->add(new \DateInterval('PT'.$vigenciaCodigo.'H'));
$codigo->setFechaVigencia($fechaMaxActivacion);
}
$this->em->persist($codigo);
$this->em->flush();
$url = $this->generateUrl('usuario_register_activation', array('token' => $token), UrlGeneratorInterface::ABSOLUTE_URL);
try
{
$subject = $this->translator->trans('seguridad.mail.sender', array()).' - '.$this->translator->trans('seguridad.activacion.subject', array());
$email = new Email();
$email->from($this->getParameter('mailer_from'))
->to($user->getEmail())
//->cc('[email protected]')
//->bcc('[email protected]')
//->replyTo('[email protected]')
//->priority(Email::PRIORITY_HIGH)
->subject($subject)
->html($this->render('Security/email_create.html.twig',
array('usuario' => $user, 'url' => $url))->getContent());
$this->mailer->send($email);
} catch (\Exception $exc)
{
$texto = $this->translator->trans('seguridad.mail.error.conexion', array());
$this->logger->error('WWWemail error: '.$exc->getMessage());
$this->session->getFlashBag()->set('danger', $texto);
return false;
}
return true;
}
public function salvaReservistaAction()
{
$data = $this->request->get('reservista');
$ret = array('ok'=>true);
$reservista = $this->salvaReservista($data);
$this->creaUsuario($reservista);
$ret['id'] = $reservista->getId();
$data = new Response(json_encode($ret));
$data->headers->set('Content-Type', 'application/json');
return $data;
}
private function salvaReservista($data)
{
$em = $this ->em;
$reservista = $em->getRepository('App\\Entity\\Reservista')->findOneBy(array('identificacion'=>$data['cedula']));
if (!$reservista)
{
$reservista= new Reservista();
$reservista->setIdentificacion($data['cedula']);
$reservista->setNombres($data['nombres']);
$reservista->setFechaRegistro(new \DateTime());
if($data['fechaNacimiento'])
$reservista->setFechaNacimiento(\DateTime::createFromFormat('d/m/Y', $data['fechaNacimiento']));
$reservista->setPaisNacimiento($data['paisNacimiento']);
if (isset($data['parroquiaNacimiento']) && $data['parroquiaNacimiento'])
{
/*$parroquia = $em->getRepository('App\\Entity\\NmclDominioLocalizacion')
->createQueryBuilder('r')
->leftJoin('r.nivelLocalizacion','nivel')
->leftJoin('nivel.localizacion','localizacion')
->where('localizacion.id=1')
->andWhere('nivel.nivel=4')
->andWhere('upper(r.valor)=:VALOR')
->setParameter('VALOR',strtoupper($data['parroquiaNacimiento']))
->getQuery()->getOneOrNullResult();
*/
$parroquia = $em->getRepository('App\\Entity\\NmclDominioLocalizacion')
->createQueryBuilder('r')
->leftJoin('r.nivelLocalizacion','nivel')
->leftJoin('nivel.localizacion','localizacion')
->leftJoin('r.dominioPadre','dominioPadre')
->where('localizacion.id=1')
->andWhere('nivel.nivel=4')
->andWhere('upper(r.valor)=:VALOR')
->setParameter('VALOR',strtoupper($data['provinciaNacimiento']))
->andWhere('upper(dominioPadre.valor)=:VALOR2')
->setParameter('VALOR2',strtoupper($data['parroquiaNacimiento']))
->getQuery()->getOneOrNullResult();
if($parroquia)
{
$reservista->setLugarNacimiento($parroquia);
}
}
$reservista->setLugarNacimientoStr($data['lugarNacimientoStr']);
}
if (isset($data['estadoCivil']))
$reservista->setEstadoCivil($data['estadoCivil']);
if (isset($data['edad']))
$reservista->setEdad($data['edad']);
if (isset($data['edadString']))
$reservista->setEdadString($data['edadString']);
if (isset($data['instruccion']))
$reservista->setInstruccion($data['instruccion']);
if (isset($data['telefono']))
$reservista->setTelefono($data['telefono']);
if (isset($data['email']))
$reservista->setEmail($data['email']);
if (isset($data['telefonoEmergencias']))
$reservista->setTelefonoEmergencias($data['telefonoEmergencias']);
if (isset($data['estatura']) && $data['estatura'])
$reservista->setEstatura($data['estatura']);
if (isset($data['sexo']))
$reservista->setSexo($data['sexo']);
if (isset($data['fotoCedula']))
$reservista->setFotoCedula($data['fotoCedula']);
if (isset($data['grado']) && $data['grado'])
{
$grado = $em->getRepository('App\\Entity\\NmclGrado')->find($data['grado']);
$reservista->setGrado($grado);
}
if (isset($data['fuerza']) && $data['fuerza'])
{
$fuerza = $em->getRepository('App\\Entity\\NmclFuerza')->find($data['fuerza']);
$reservista->setFuerza($fuerza);
}
if (isset($data['arma']) && $data['arma'])
{
$arma = $em->getRepository('App\\Entity\\NmclArma')->find($data['arma']);
if($arma)
$reservista->setArma($arma);
}
$em->persist($reservista);
$em->flush();
return $reservista;
}
public function salvaReservistaProcesoAction()
{
$data = $this->request->get('form');
$ret = array('ok'=>true);
$ret['id'] = $this->salvaReservistaProceso($data);
$data = new Response(json_encode($ret));
$data->headers->set('Content-Type', 'application/json');
return $data;
}
private function salvaReservistaProceso(&$data)
{
$em = $this ->em;
$reservista = $em->getRepository('App\\Entity\\Reservista')->findOneBy(array('identificacion'=>$data['cedula']));
$procesoActivo = $em->getRepository('App\\Entity\\ProcesoRegistroReservistas')
->createQueryBuilder('p')
->where('p.activo=true')
->getQuery()->getOneOrNullResult();
$reservistaProceso = $em->getRepository('App\\Entity\\ReservistaProceso')
->findOneBy(array('reservista'=>$reservista->getId(), 'procesoRegistro'=>$procesoActivo->getId()));
if (!$reservistaProceso)
{
$reservistaProceso= new ReservistaProceso();
$reservistaProceso->setReservista($reservista);
$reservistaProceso->setFechaRegistro(new \DateTime());
$reservistaProceso->setProcesoRegistro($procesoActivo);
}
if (isset($data['centroCapacitarse'])){
$this->logger->info('********* data[centroCapacitarse]: '. $data['centroCapacitarse']);
$centro =$em->getRepository('App\\Entity\\CentroMovilizacion')->find($data['centroCapacitarse']);
if($centro)
$reservistaProceso->setCentroMovilizacion($centro);
}else{
$this->logger->info('********* data[centroCapacitarse]: NO LLEGA' );
}
if (isset($data['fechaConsultaAntecedentes']))
$reservistaProceso->setFechaConsultaAntecedentes($data['fechaConsultaAntecedentes']);
if (isset($data['fechaConsultaEstudios']))
$reservistaProceso->setFechaConsultaEstudios($data['fechaConsultaEstudios']);
if (isset($data['geometria']))
$reservistaProceso->setGeometria($data['geometria']);
if (isset($data['residenciaEcuador']) && $data['residenciaEcuador'])
{
$reservistaProceso->setPaisResidencia('Ecuador');
if (isset($data['callePrincipal']))
$reservistaProceso->setCallePrincipalResidencia($data['callePrincipal']);
if (isset($data['calleSecundaria']))
$reservistaProceso->setCalleSecundariaResidencia($data['calleSecundaria']);
if (isset($data['nroCasa']))
$reservistaProceso->setNumeroCasa($data['nroCasa']);
if (isset($data['parroquiaResidencia']))
{
$localizacion =$em->getRepository('App\\Entity\\NmclDominioLocalizacion')->find($data['parroquiaResidencia']);
$reservistaProceso->setLugarResidencia($localizacion);
}
}
else
{
if (isset($data['paisResidencia']))
$reservistaProceso->setPaisResidencia($data['paisResidencia']);
}
if (isset($data['referenciaResidencia']))
$reservistaProceso->setReferencias($data['referenciaResidencia']);
if (isset($data['causa']) && $data['causa'])
$reservistaProceso->setCausaRechazo($data['causa']);
if (isset($data['volverPresentarse']))
$reservistaProceso->setVolverPresentarse($data['volverPresentarse']);
if (isset($data['idoneo']))
$reservistaProceso->setIdoneo($data['idoneo']);
if (isset($data['fechaAsignacion']))
{
$reservistaProceso->setFechaAsignacion(new \DateTime($data['fechaAsignacion']));
}
if (isset($data['fechaResultado']))
$reservistaProceso->setFechaResultado($data['fechaResultado']);
if (isset($data['resultadosAntecedentes']))
$reservistaProceso->setResultadosAntecedentes($data['resultadosAntecedentes']);
if (isset($data['resultadosEstudios']))
$reservistaProceso->setResultadosEstudios($data['resultadosEstudios']);
$em->persist($reservistaProceso);
$em->flush();
return $reservistaProceso->getId();
}
public function resultadoSalvarAction()
{
$em = $this ->em;
$resultado = $this->request->get('resultado');
$reservistaProceso = $em->getRepository('App\\Entity\\ReservistaProceso')->find($resultado['reservistaProceso']);
$reservista = $reservistaProceso->getReservista();
$proceso = $reservistaProceso->getProcesoRegistro();
if ($resultado['resultado']=='idoneo')
{
$reservistaProceso->setIdoneo(true);
$reservistaProceso->setCausaRechazo(null);
$reservistaProceso->setFechaResultado(new \DateTime());
$em->persist($reservistaProceso);
$em->flush();
}
else
{
$reservistaProceso->setIdoneo(false);
$reservistaProceso->setCausaRechazo($resultado['causa']);
$reservistaProceso->setObservaciones($resultado['observaciones']);
$reservistaProceso->setVolverPresentarse($resultado['volver']);
$reservistaProceso->setFechaResultado(new \DateTime());
$em->persist($reservistaProceso);
$em->flush();
}
$data = array('ok'=>true);
$data = new Response(json_encode($data));
$data->headers->set('Content-Type', 'application/json');
return $data;
}
public function resultadoSalvarVacunacionAction()
{
$em = $this ->em;
$resultado = $this->request->get('resultado');
$reservistaProceso = $em->getRepository('App\\Entity\\ReservistaProceso')->find($resultado['reservistaProceso']);
$reservista = $reservistaProceso->getReservista();
$proceso = $reservistaProceso->getProcesoRegistro();
if ($resultado['resultado']=='valido')
{
$reservistaProceso->setCertificadoVacunacionOk(true);
$em->persist($reservistaProceso);
$em->flush();
}
else
{
$reservistaProceso->setIdoneo(false);
$reservistaProceso->setCausaRechazo(CausaNoIdoneoEnum::VACUNACION);
$reservistaProceso->setObservaciones($resultado['observaciones']);
$reservistaProceso->setVolverPresentarse($resultado['volver']);
$reservistaProceso->setFechaResultado(new \DateTime());
$em->persist($reservistaProceso);
$em->flush();
}
$data = array('ok'=>true);
$data = new Response(json_encode($data));
$data->headers->set('Content-Type', 'application/json');
return $data;
}
public function showPDFAction($idReservista, $template)
{
$entity = $this->em->getRepository('App\\Entity\\Reservista')->find($idReservista);
if (!$entity)
throw new \RuntimeException($this->translator->trans(
'error.instance_not_found',
array('%classname%' => $this->routeClassName.'/'.$this->className,
'%id%' => $id),
'crud'));
return $this->render($template, ['entity'=>$entity]);
}
}