src/Controller/ReservistasController.php line 266

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Component\HttpFoundation\Response;
  4. use App\Entity\Reservista;
  5. use App\Entity\NmclDominioLocalizacion;
  6. use App\Enum\CausaNoIdoneoEnum;
  7. use App\Entity\ReservistaProceso;
  8. use App\Entity\SeguridadUsuario;
  9. use App\Entity\SeguridadConfiguracion;
  10. use Symfony\Component\Mime\Email;
  11. use App\Entity\SeguridadCodigoActivacion;
  12. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  13. class ReservistasController extends RegistrantesController
  14. {
  15.     protected $procesoActivo null;
  16.     
  17.     public function registroLineaAction()
  18.     {
  19.         $em $this ->em;
  20.         
  21.         $allow=true;
  22.         $msg='';
  23.         if (!$this->procesoActivo)
  24.         {
  25.             $this->procesoActivo $em->getRepository('App\\Entity\\ProcesoRegistroReservistas')
  26.                                                 ->createQueryBuilder('p')
  27.                                                 ->where('p.activo=true')
  28.                                                 ->getQuery()->getOneOrNullResult();
  29.         }
  30.         $procesoActivo $this->procesoActivo;
  31.         if (!$procesoActivo)
  32.         {
  33.             $allow=false;
  34.             $msg 'No hay ningĂșn proceso activo para el registro';
  35.         }
  36.         else
  37.         {
  38.             $hoy = new \DateTime();
  39.             if ($hoy<$procesoActivo->getFechaInicioRegistro() || $hoy>$procesoActivo->getFechaFinRegistro())
  40.             {
  41.                 $allow=false;
  42.                 $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');
  43.             }
  44.         }
  45.         
  46.         if (!$allow)
  47.         {
  48.             return $this->render('Aspirantes/registroenlinea.html.twig'
  49.                 array('allow'=>$allow'msg'=>$msg'tiempoTest'=>0'distintivo'=>''));
  50.         }    
  51.         
  52.         $regiones $em->getRepository('App\\Entity\\NmclDominioLocalizacion')
  53.                                                 ->createQueryBuilder('r')
  54.                                                 ->leftJoin('r.nivelLocalizacion','nivel')
  55.                                                 ->leftJoin('nivel.localizacion','localizacion')
  56.                                                 ->where('localizacion.id=1')
  57.                                                 ->andWhere('nivel.nivel=1')
  58.                                                 ->orderBy('r.valor')
  59.                                                 ->getQuery()->getResult();
  60.         
  61.         $provincias $em->getRepository('App\\Entity\\NmclDominioLocalizacion')
  62.                                                 ->createQueryBuilder('r')
  63.                                                 ->leftJoin('r.nivelLocalizacion','nivel')
  64.                                                 ->leftJoin('nivel.localizacion','localizacion')
  65.                                                 ->where('localizacion.id=1')
  66.                                                 ->andWhere('nivel.nivel=2')
  67.                                                 ->orderBy('r.valor')
  68.                                                 ->getQuery()->getResult();
  69.         
  70.         $cantones $em->getRepository('App\\Entity\\NmclDominioLocalizacion')
  71.                                                 ->createQueryBuilder('r')
  72.                                                 ->leftJoin('r.nivelLocalizacion','nivel')
  73.                                                 ->leftJoin('nivel.localizacion','localizacion')
  74.                                                 ->where('localizacion.id=1')
  75.                                                 ->andWhere('nivel.nivel=3')
  76.                                                 ->orderBy('r.valor')
  77.                                                 ->getQuery()->getResult();
  78.         
  79.         $parroquias $em->getRepository('App\\Entity\\NmclDominioLocalizacion')
  80.                                                 ->createQueryBuilder('r')
  81.                                                 ->leftJoin('r.nivelLocalizacion','nivel')
  82.                                                 ->leftJoin('nivel.localizacion','localizacion')
  83.                                                 ->where('localizacion.id=1')
  84.                                                 ->andWhere('nivel.nivel=4')
  85.                                                 ->orderBy('r.valor')
  86.                                                 ->getQuery()->getResult();
  87.         
  88.         $grados $em->getRepository('App\\Entity\\NmclGrado')->findAll();
  89.         $fuerzas $em->getRepository('App\\Entity\\NmclFuerza')->findAll();
  90.         $armas $em->getRepository('App\\Entity\\NmclArma')->findAll();
  91.         
  92.         
  93.         $centrosMovilizacion $em->getRepository('App\\Entity\\CentroMovilizacion')
  94.                                                 ->createQueryBuilder('r')                                              
  95.                                                 ->where('r.activo = true')
  96.                                                 ->orderBy('r.nombre')
  97.                                                 ->getQuery()->getResult();
  98.         
  99.         
  100.         return $this->render('Reservistas/registroenlinea.html.twig'
  101.                 array('allow'=>$allow'regiones'=>$regiones'provincias'=>$provincias,
  102.                     'cantones'=>$cantones,'parroquias'=>$parroquias,'centrosMovilizacion'=>$centrosMovilizacion,
  103.                     'grados'=>$grados'fuerzas' => $fuerzas'armas' => $armas,
  104.                     'distintivo'=>''));
  105.     }
  106.     
  107.     public function verificaIdentidadAction($identificacion)
  108.     {
  109.         $data = array('ok'=>true'idoneo'=>true);
  110.         $em $this ->em;
  111.         if (!$this->procesoActivo)
  112.         {
  113.             $this->procesoActivo $em->getRepository('App\\Entity\\ProcesoRegistroReservistas')
  114.                                                 ->createQueryBuilder('p')
  115.                                                 ->where('p.activo=true')
  116.                                                 ->getQuery()->getOneOrNullResult();
  117.         }
  118.         $procesoActivo $this->procesoActivo;
  119.         $data['procesoId'] = $procesoActivo->getId();
  120.         
  121.                
  122.         
  123.         $url 'http://200.6.25.31/api/v1/PROC_GET_RESERVISTA_FORM/'//$ws_dynamo.'/RutaPorcOffline/'.$ruta->getId();
  124.         $params = array('cedula'=>$identificacion);
  125.         $ret $this->puedeRegistrarse('POST'$url$identificacion$params);
  126.          
  127.         
  128.         $data['idoneo'] = $ret['ok'];  
  129.         if ($ret['ok'])
  130.         {
  131.                         
  132. //            $data['idoneo'] = true;   //WILLY: Usar esta linea para probar sin usar los servicios
  133.             //$data['msg'] = $ret['msg'];            
  134.                     
  135.             $reservista = isset($ret['reservista']) ? $ret['reservista'] : null;
  136.             if ($reservista)
  137.             {
  138.                 $data['reservistaID']=$reservista->getId();
  139.                 $data['cedula']=$reservista->getIdentificacion();
  140.                 $data['nombres']=$reservista->getNombres(); 
  141.                 $data['apellidoP']=$reservista->getApellidoPaterno(); 
  142.                 $data['apellidoM']=$reservista->getApellidoMaterno();
  143.                 $data['edad']=$reservista->getEdad();
  144.                 $data['edadString']=$reservista->getEdadString();
  145.                 $data['sexo']=$reservista->getSexo();
  146.                 $data['estadoCivil']=$reservista->getEstadoCivil();
  147.                 $data['estatura']=$reservista->getEstatura();
  148.                 $data['telefono']=$reservista->getTelefono();
  149.                 $data['telefonoEmergencias']=$reservista->getTelefonoEmergencias();
  150.                 $data['email']=$reservista->getEmail();            
  151.                 $data['fechaNacimiento']=$reservista->getFechaNacimiento()->format('d/m/Y');
  152.                 $data['paisNacimiento']=$reservista->getPaisNacimiento();
  153.                 $data['telefono']=$reservista->getTelefono();
  154.                 if ($reservista->getLugarNacimiento())
  155.                 {
  156.                     $data['parroquiaNacimiento']=$reservista->getLugarNacimiento();
  157.                     $data['cantonNacimiento']=$data['parroquiaNacimiento']->getDominioPadre();
  158.                     $data['provinciaNacimiento']=$data['cantonNacimiento']->getDominioPadre();
  159.                     $data['regionNacimiento']=$data['provinciaNacimiento']->getDominioPadre();
  160.                     $data['parroquiaNacimiento']=$data['parroquiaNacimiento']->__toString();
  161.                     $data['cantonNacimiento']=$data['cantonNacimiento']->__toString();
  162.                     $data['provinciaNacimiento']=$data['provinciaNacimiento']->__toString();
  163.                     $data['regionNacimiento']=$data['regionNacimiento']->__toString();
  164.                 }
  165.                 
  166.                 
  167.                 $procesoActivo $em->getRepository('App\\Entity\\ProcesoRegistroReservistas')
  168.                                     ->createQueryBuilder('p')
  169.                                     ->where('p.activo=true')
  170.                                     ->getQuery()->getOneOrNullResult();
  171.                 $reservistaProceso $em->getRepository('App\\Entity\\ReservistaProceso')
  172.                         ->findOneBy(array('reservista'=>$reservista->getId(), 'procesoRegistro'=>$procesoActivo->getId()));
  173.                 if($reservistaProceso){
  174.                    
  175.                     
  176.                     $data['centroCapacitarse']=$reservistaProceso->getCentroMovilizacion();
  177.                     
  178.                     /*
  179.                     if($reservistaProceso->getPaisResidencia()=='Ecuador'){
  180.                         $data['residenciaEcuador']=true;
  181.                         $data['callePrincipal']=$reservistaProceso->getCallePrincipalResidencia();
  182.                         $data['calleSecundaria']=$reservistaProceso->getCalleSecundariaResidencia();
  183.                         $data['nroCasa']=$reservistaProceso->getNumeroCasa();
  184.                         $data['parroquiaResidencia']=$reservistaProceso->getLugarResidencia();
  185.                         
  186.                     }else{
  187.                         
  188.                         $data['residenciaEcuador']=false;
  189.                         $data['paisResidencia']=$reservistaProceso->getPaisResidencia();
  190.                         $data['referenciaResidencia']=$reservistaProceso->getReferencias();
  191.                     }   */                                                                        
  192.                 }        
  193.                 
  194.             }
  195.             else{
  196.                 
  197.                 $reservistaVerificado = isset($ret['reservistaVerificado']) ? $ret['reservistaVerificado'] : null;
  198.                 
  199.                 if($reservistaVerificado){
  200.                                      
  201.                     if($reservistaVerificado['C_GENERO']=='M')
  202.                         $data['sexo']='Masculino';
  203.                     else
  204.                         $data['sexo']='Femenino';
  205.                     
  206.                     $data['telefono']=$reservistaVerificado['VC_TELEFONOCELULAR'];
  207.                     $data['telefonoEmergencias']=$reservistaVerificado['VC_TELEFONOEMERGENCIA'];
  208.                     $data['email']=$reservistaVerificado['VC_EMAIL'];
  209.                     $data['estatura']=$reservistaVerificado['F_ESTATURA'];
  210.                     
  211.                     $data['gradoMilitar']=$reservistaVerificado['I_PK_GRADOMILITAR'];
  212.                     $data['ramaGradoMilitar']=$reservistaVerificado['RAMA_GRADO_MILITAR'];
  213.                     $data['tipoMilitar']=$reservistaVerificado['I_PK_TIPOMILITAR'];
  214.                     $data['arma']=$reservistaVerificado['I_PK_ARMA'];
  215.                     $data['tipoArma']=$reservistaVerificado['I_FK_TIPOARMA'];
  216.                     $data['idUnidad']=$reservistaVerificado['I_PK_UNIDAD'];
  217.                     
  218.                     $data['unidad']=$reservistaVerificado['VC_UNIDAD'];
  219.                     $data['tallaRopa']=$reservistaVerificado['I_TALLAROPA'];
  220.                     $data['tallaZapato']=$reservistaVerificado['I_ZAPATO'];
  221.                     $data['tallaCabeza']=$reservistaVerificado['I_CABEZA'];
  222.                     $data['fechaLicenciamiento']=$reservistaVerificado['D_FECHALICENCIAMIENTO'];
  223.                     $data['tipoSangre']=$reservistaVerificado['VC_TIPOSANGRE'];
  224.                     
  225.                 }
  226.                 
  227.                 
  228.             }
  229.         } 
  230.         else
  231.         {
  232.             $data['ok'] = false;
  233.             $data['causa'] = 'ERROR EN CONEXION';
  234.             $data['msg'] = $ret['msg'];
  235.         }
  236.         
  237.         if ($data['idoneo'])
  238.         {
  239.             if ($this->verificaIdentidad($data$identificacion$procesoActivo->getFechaInicioRegistro()))
  240.             { 
  241.                 $reservista $this->salvaReservista($data);
  242.                 $data['reservistaID'] = $reservista->getId();
  243.                 
  244.                 if (!$this->edadValida($data['fechaNacimiento'], $procesoActivo))
  245.                 {
  246.                     $data['idoneo'] = false;
  247.                     $data['causa'] = CausaNoIdoneoEnum::EDAD;
  248.                     $data['volverPresentarse']='PROXIMO';
  249.                     $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();
  250.                     $data['fechaResultado'] = new \DateTime();
  251.                 }
  252.                 $this->salvaReservistaProceso($data);
  253.             }
  254.                     
  255.         }
  256.         $data = new Response(json_encode($data));
  257.         $data->headers->set('Content-Type''application/json');
  258.         return $data;
  259.     }
  260.     
  261.     public function verificaAntecedentesAction($identificacion)
  262.     {
  263.         $data = array('ok'=>true'idoneo'=>true'cedula'=>$identificacion);
  264.         $em $this ->em;
  265.         if (!$this->procesoActivo)
  266.         {
  267.             $this->procesoActivo $em->getRepository('App\\Entity\\ProcesoRegistroReservistas')
  268.                                                 ->createQueryBuilder('p')
  269.                                                 ->where('p.activo=true')
  270.                                                 ->getQuery()->getOneOrNullResult();
  271.         }
  272.         /*** BEGIN CONSULTAR SERVICIO WEB POLICIA NACIONAL ***/
  273.         $data['ok']=true;  //se pudo comunicar con el ws
  274.         $data['idoneo']=true;  //no tiene antecedentes
  275.         $data['antecedente'] =0//NO tiene problemas                       
  276. //            $this->callPolice($identificacion, $data, false);    //WILLY  usar esta linea para probar sin consumir el servicio
  277.         $this->callPolice($identificacion$data);
  278.         if ($data['ok'])
  279.         {
  280.             $data['fechaConsultaAntecedentes'] = new \DateTime();
  281.             if (!$data['idoneo'])
  282.             {
  283.                 $data['resultadosAntecedentes'] = json_encode($data['antecedente']);
  284.                 $data['causaRechazo'] = CausaNoIdoneoEnum::POLICIA;
  285.                 $data['fechaResultado'] = new \DateTime();
  286.                 $data['volverPresentarse']='PROXIMO';
  287.             }
  288.             $this->salvaReservistaProceso($data);
  289.             unset($data['resultadosAntecedentes']);
  290.             unset($data['fechaConsultaAntecedentes']);
  291.             unset($data['causaRechazo']);
  292.             unset($data['fechaResultado']);
  293.             unset($data['volverPresentarse']);
  294.         }
  295.         else
  296.         {
  297.             $data['msg']=$this->translator->trans('noidoneo.causa.network.policia');
  298.         }
  299.         $data = new Response(json_encode($data));
  300.         $data->headers->set('Content-Type''application/json');
  301.         return $data;
  302.     }
  303.     
  304.     public function verificaEstudiosAction($identificacion)
  305.     {
  306.         $data = array('ok'=>true'cedula'=>$identificacion);
  307.         /*** BEGIN CONSULTAR SERVICIO WEB MIN EDUCACION ***/
  308.         $data['ok']=true;  //se pudo comunicar con el ws
  309.         $data['estudios'] = array();        
  310.         //$data['estudios'][]=array('anno'=>2013, 'institucion'=>'Colegio XXX', 'titulo'=>'Ingenieron mecĂĄnico'); 
  311.         /*** END CONSULTAR SERVICIO WEB MIN EDUCACION ***/
  312.         
  313. //        $this->callMinEducacion($identificacion, $data, false);    //WILLY usar esta lĂ­nea para probar sin consumir el servicio
  314.         $this->callMinEducacion($identificacion$data);
  315.         
  316.         if ($data['ok'])
  317.         {
  318.             $data['resultadosEstudios'] = json_encode($data['estudios']);
  319.             $data['fechaConsultaEstudios'] = new \DateTime();
  320.             $this->salvaReservistaProceso($data);
  321.             unset($data['resultadosEstudios']);
  322.             unset($data['fechaConsultaEstudios']);
  323.         }
  324.         else
  325.         {
  326.             $data['msg']=$this->translator->trans('noidoneo.causa.network.educacion');
  327.         }                              
  328.         $data = new Response(json_encode($data));
  329.         $data->headers->set('Content-Type''application/json');
  330.         return $data;
  331.     }
  332.     
  333.     private function puedeRegistrarse($method$url$identificacion$params=null)
  334.     {
  335.         $em $this->em;
  336.         $res = [
  337.             'ok' => false,
  338.             'causa' => null,
  339.             'msg' => null,
  340.         ];
  341.         
  342.         $reservista $em->getRepository('App\\Entity\Reservista')->findOneBy(array('identificacion'=>$identificacion));
  343.         
  344.         if($reservista){
  345.             
  346.             $res = [
  347.             'ok' => true,
  348.             'causa' => null,
  349.             'msg' => null,
  350.             ];
  351.             
  352.             $res['reservista'] = $reservista;
  353.             //$this->logger->error('WWW ya estĂĄ registrado'.$identificacion);
  354.             
  355.         }else{
  356.             
  357.             /*$reservistaVerificado = $em->getRepository('App\\Entity\\ReservistaVerificado')->findOneBy(array('identificacion'=>$identificacion));
  358.             $ret['reservistaVerificado'] = $reservistaVerificado ? $reservistaVerificado : null;      
  359.             if ($reservistaVerificado)
  360.             {                        
  361.                 $reservista = $em->getRepository('App\\Entity\Reservista')->findOneBy(array('identificacion'=>$identificacion));
  362.                 $ret['reservista'] = $reservista ? $reservista : null;             
  363.             }
  364.             else
  365.             {
  366.                 $ret['ok'] = false;
  367.                 $ret['causa'] = CausaNoIdoneoEnum::NO_RESERVISTA;
  368.                 $ret['msg']='No hay un reservista registrado con la indentificaciĂłn proporcionada';
  369.             }*/
  370.             try {
  371.                 
  372.                 
  373.                 $this->logger->error('WWW no ya estĂĄ registrado');
  374.                 
  375.                 $header = [
  376.                     'accept: application/json',
  377.                     'Content-Type: application/json',
  378.         //            'Content-Length: ' . strlen($data),
  379.         //           'Authorization: Bearer '.$token,
  380.                 ];
  381.                 if ($params && is_array($params))
  382.                 {
  383.                     $params json_encode($params);
  384.                 }
  385.                 $handle curl_init();
  386.                 curl_setopt($handleCURLOPT_RETURNTRANSFERtrue);
  387.                 switch (strtoupper($method))
  388.                 {
  389.                     case "GET":
  390.                             curl_setopt($handleCURLOPT_HTTPGETtrue);
  391.                             curl_setopt($handleCURLOPT_FOLLOWLOCATIONtrue);                
  392.                         break;
  393.                     case "POST":
  394.                             curl_setopt($handleCURLOPT_POSTtrue);
  395.                             curl_setopt($handleCURLOPT_POSTFIELDS$params);
  396.         //                    $header[] = 'Content-Type: application/json';
  397.                         break;
  398.                     case "PUT":
  399.                             curl_setopt($handleCURLOPT_CUSTOMREQUEST'PUT');
  400.                             curl_setopt($handleCURLOPT_POSTFIELDS$params);
  401.                         break;
  402.                     case "DELETE":
  403.                             curl_setopt($handleCURLOPT_CUSTOMREQUEST'DELETE');
  404.                             if ($params)
  405.                             {
  406.                                 curl_setopt($handleCURLOPT_POSTFIELDShttp_build_query($params));
  407.         //                        $url = sprintf("%s?%s", $url, http_build_query($params));
  408.         //                        $header[] = 'Content-Type: application/x-www-form-urlencoded';
  409.                             }
  410.                         break;
  411.                 }
  412.                 curl_setopt($handleCURLOPT_URL$url);
  413.                 curl_setopt($handleCURLOPT_HTTPHEADER$header);
  414.                 $response curl_exec($handle);
  415.                 $httpCode curl_getinfo($handleCURLINFO_HTTP_CODE);
  416.                 //$output->writeln('*********************url' . $url);
  417.                 //$output->writeln('*********************httpCodeDYNAMO' . $httpCode);
  418.                 //$output->writeln('*********************responseDYNAMO' . json_encode($response));
  419.                 $this->logger->error('WWW respuesta ws '.json_encode($response));
  420.                 $res=['ok'=>true];
  421.                 if(!$response || $httpCode != 200){
  422.                     $res['ok']=false;
  423.                     $ret['causa'] = CausaNoIdoneoEnum::NO_RESERVISTA;
  424.                     $ret['msg']='No hay un reservista registrado con la indentificaciĂłn proporcionada';
  425.                     $res['httpCode']=$httpCode;
  426.                     $res['info'] = 'Error: '.$httpCode.'-'.$response.curl_error($handle).$url;
  427.                     return $res;
  428.                 }
  429.                 else
  430.                 {
  431.                     $res = [
  432.                         'ok' => true,
  433.                         'causa' => null,
  434.                         'msg' => null,
  435.                     ];
  436.                     $response json_decode($responsetrue);
  437.                     $res['reservistaVerificado'] = $response['data'];
  438.                 }
  439.             } catch(\Exception $exc) {
  440.                $res=array('ok'=>false,'info'=>'Error al consultar'.$exc'causa' => CausaNoIdoneoEnum::NO_RESERVISTA'msg'=>'No existe un reservista registrado con la indentificaciĂłn proporcionada');
  441.             }
  442.         }
  443.              
  444.         return $res;
  445.     }
  446.     
  447.     private function edadValida($fechaNacimiento$proceso)
  448.     {
  449.         $fechaNacimiento explode('/'$fechaNacimiento);
  450.         $fechaNacimiento $fechaNacimiento[2];
  451.         return ($proceso->getAnnoDesde()<=$fechaNacimiento && $fechaNacimiento<=$proceso->getAnnoHasta());
  452.     }
  453.     
  454.     public function registroSalvarAction()
  455.     {
  456.         try
  457.         {
  458.             $data $this->request->get('form');
  459.         
  460.             $id $this->salvaReservistaProceso($data);
  461.         
  462.             $data = array('ok'=>true'id'=>$id);
  463.         }
  464.         catch (\RuntimeException $e)
  465.         {
  466.             $data = array('ok'=>false'msg'=>'No se pudo grabar la operaciĂłn. Intente nuevamente mĂĄs tarde.');
  467.         }
  468.         
  469.         $data = new Response(json_encode($data));
  470.         $data->headers->set('Content-Type''application/json');
  471.         return $data;
  472.     }
  473.     protected function creaUsuario($reservista)
  474.     {
  475.         $newUser false;
  476.         $userName $reservista->getIdentificacion();
  477.         $usuario $this->em->getRepository('App\\Entity\\SeguridadUsuario')->findOneBy(['username'=>$userName]);
  478.         if (!$usuario)
  479.         {
  480.             $newUser true;
  481.             $usuario = new SeguridadUsuario();
  482.             $usuario->setActivo(false);
  483. //            $usuario->setDireccion($reservista->getDireccion());
  484.             $usuario->setEliminado(false);
  485.             $usuario->setEmail($reservista->getEmail());
  486.             $usuario->setFechaRegistro(new \DateTime());
  487.             $usuario->setFoto($reservista->getFoto());
  488.             $usuario->setIntentosFallidos(0);
  489. //            $usuario->setMovil($reservista->getMovil());
  490.             $usuario->setNombres($reservista->getNombreCompleto());
  491.             $usuario->setPrimerIngreso(TRUE);            
  492.             $usuario->setTelefono($reservista->getTelefono());
  493.             $usuario->setUsername($reservista->getIdentificacion());
  494.         }
  495.         if (!$usuario->isRoleAssigned('ROLE_RESERVISTA'))
  496.         {
  497.             $rol $this->em->getRepository('App\\Entity\\SeguridadRol')->findOneBy(['nombre'=>'ROLE_RESERVISTA']);
  498.             if ($rol)
  499.             {
  500.                 $usuario->addAssignedRoles($rol);
  501.             }
  502.         }
  503.         $this->em->persist($usuario);
  504.         $this->em->flush();
  505.         if ($newUser)
  506.         {
  507.             //enviar mail de activaciĂłn
  508.             $parameterActiveConfiguration $this->getParameter('SECURITY_CONF');
  509.             $configuracionSeguridad $this->em->getRepository(SeguridadConfiguracion::class)->getActiveConfiguration($parameterActiveConfiguration);
  510.             if ($configuracionSeguridad &&$configuracionSeguridad->getCodigoActivacion())
  511.             {
  512.                 $this->sendActivationCode($usuario$configuracionSeguridad);
  513.             }
  514.         }
  515.     }
  516.     
  517.     protected function sendActivationCode(SeguridadUsuario $user$configuracionSeguridad)
  518.     {
  519.         $token md5(uniqid());
  520.         $fecha = new \DateTime();
  521.         $codigo = new SeguridadCodigoActivacion();
  522.         $codigo->setCodigo($token);
  523.         $codigo->setUsuario($user);
  524.         $codigo->setFechaEnvio($fecha);
  525.         
  526.         $vigenciaCodigo $configuracionSeguridad->getVigenciaCodigo();
  527.         if ($vigenciaCodigo>0)
  528.         {
  529.             $fechaMaxActivacion = clone $fecha;                    
  530.             $fechaMaxActivacion->add(new \DateInterval('PT'.$vigenciaCodigo.'H'));                    
  531.             $codigo->setFechaVigencia($fechaMaxActivacion);
  532.         } 
  533.         $this->em->persist($codigo);
  534.         $this->em->flush();
  535.         $url $this->generateUrl('usuario_register_activation', array('token' => $token), UrlGeneratorInterface::ABSOLUTE_URL);
  536.         try
  537.         {
  538.             $subject $this->translator->trans('seguridad.mail.sender', array()).' - '.$this->translator->trans('seguridad.activacion.subject', array());
  539.             $email = new Email();
  540.             $email->from($this->getParameter('mailer_from'))
  541.                 ->to($user->getEmail())
  542.                 //->cc('[email protected]')
  543.                 //->bcc('[email protected]')
  544.                 //->replyTo('[email protected]')
  545.                 //->priority(Email::PRIORITY_HIGH)
  546.                 ->subject($subject)
  547.                 ->html($this->render('Security/email_create.html.twig',
  548.                         array('usuario' => $user'url' => $url))->getContent());
  549.             $this->mailer->send($email);
  550.         } catch (\Exception $exc)
  551.         {
  552.             $texto $this->translator->trans('seguridad.mail.error.conexion', array());
  553.             $this->logger->error('WWWemail error: '.$exc->getMessage());
  554.             $this->session->getFlashBag()->set('danger'$texto);
  555.             return false;
  556.         }
  557.         return true;
  558.     }
  559.     
  560.     public function salvaReservistaAction()
  561.     {
  562.         $data $this->request->get('reservista');
  563.         $ret = array('ok'=>true);
  564.         $reservista $this->salvaReservista($data);
  565.         $this->creaUsuario($reservista);
  566.         $ret['id'] = $reservista->getId();
  567.         
  568.         $data = new Response(json_encode($ret));
  569.         $data->headers->set('Content-Type''application/json');
  570.         return $data;
  571.     }
  572.     
  573.     private function salvaReservista($data)
  574.     {
  575.         $em $this ->em;
  576.         $reservista $em->getRepository('App\\Entity\\Reservista')->findOneBy(array('identificacion'=>$data['cedula']));
  577.         
  578.         if (!$reservista)
  579.         {
  580.             $reservista= new Reservista();
  581.             $reservista->setIdentificacion($data['cedula']);
  582.             $reservista->setNombres($data['nombres']);
  583.             $reservista->setFechaRegistro(new \DateTime());
  584.             if($data['fechaNacimiento'])
  585.                 $reservista->setFechaNacimiento(\DateTime::createFromFormat('d/m/Y'$data['fechaNacimiento']));           
  586.             $reservista->setPaisNacimiento($data['paisNacimiento']);
  587.             if (isset($data['parroquiaNacimiento']) && $data['parroquiaNacimiento'])
  588.             {
  589.                 /*$parroquia = $em->getRepository('App\\Entity\\NmclDominioLocalizacion')
  590.                         ->createQueryBuilder('r')
  591.                         ->leftJoin('r.nivelLocalizacion','nivel')
  592.                         ->leftJoin('nivel.localizacion','localizacion')
  593.                         ->where('localizacion.id=1')
  594.                         ->andWhere('nivel.nivel=4')
  595.                         ->andWhere('upper(r.valor)=:VALOR')
  596.                         ->setParameter('VALOR',strtoupper($data['parroquiaNacimiento']))
  597.                         ->getQuery()->getOneOrNullResult();
  598.                 */
  599.                 $parroquia $em->getRepository('App\\Entity\\NmclDominioLocalizacion')
  600.                                                 ->createQueryBuilder('r')
  601.                                                 ->leftJoin('r.nivelLocalizacion','nivel')
  602.                                                 ->leftJoin('nivel.localizacion','localizacion')
  603.                                                 ->leftJoin('r.dominioPadre','dominioPadre')
  604.                                                 ->where('localizacion.id=1')
  605.                                                 ->andWhere('nivel.nivel=4')
  606.                                                 ->andWhere('upper(r.valor)=:VALOR')
  607.                                                 ->setParameter('VALOR',strtoupper($data['provinciaNacimiento']))
  608.                                                 ->andWhere('upper(dominioPadre.valor)=:VALOR2')
  609.                                                 ->setParameter('VALOR2',strtoupper($data['parroquiaNacimiento']))
  610.                                                 ->getQuery()->getOneOrNullResult();     
  611.                 if($parroquia)
  612.                 {
  613.                     $reservista->setLugarNacimiento($parroquia);               
  614.                 }
  615.             }
  616.             $reservista->setLugarNacimientoStr($data['lugarNacimientoStr']);            
  617.             
  618.         }    
  619.         if (isset($data['estadoCivil']))
  620.             $reservista->setEstadoCivil($data['estadoCivil']);
  621.         if (isset($data['edad']))
  622.             $reservista->setEdad($data['edad']);
  623.         if (isset($data['edadString']))
  624.             $reservista->setEdadString($data['edadString']);
  625.         if (isset($data['instruccion']))
  626.             $reservista->setInstruccion($data['instruccion']);
  627.         if (isset($data['telefono']))
  628.             $reservista->setTelefono($data['telefono']);        
  629.         if (isset($data['email']))
  630.             $reservista->setEmail($data['email']);
  631.         if (isset($data['telefonoEmergencias']))
  632.             $reservista->setTelefonoEmergencias($data['telefonoEmergencias']);
  633.         if (isset($data['estatura']) && $data['estatura'])
  634.             $reservista->setEstatura($data['estatura']);
  635.         if (isset($data['sexo']))
  636.             $reservista->setSexo($data['sexo']);          
  637.         if (isset($data['fotoCedula']))
  638.             $reservista->setFotoCedula($data['fotoCedula']);    
  639.                 
  640.         if (isset($data['grado']) && $data['grado'])
  641.         {
  642.             $grado $em->getRepository('App\\Entity\\NmclGrado')->find($data['grado']);
  643.             $reservista->setGrado($grado);
  644.         }
  645.         if (isset($data['fuerza']) && $data['fuerza'])
  646.         {
  647.             $fuerza $em->getRepository('App\\Entity\\NmclFuerza')->find($data['fuerza']);
  648.             $reservista->setFuerza($fuerza);
  649.         }
  650.         if (isset($data['arma']) && $data['arma'])
  651.         {
  652.             $arma $em->getRepository('App\\Entity\\NmclArma')->find($data['arma']);
  653.             if($arma)
  654.                 $reservista->setArma($arma);
  655.         }
  656.         
  657.         $em->persist($reservista);
  658.         $em->flush();
  659.         return $reservista;
  660.     }
  661.     
  662.     public function salvaReservistaProcesoAction()
  663.     {
  664.         $data $this->request->get('form');
  665.         $ret = array('ok'=>true);
  666.         $ret['id'] = $this->salvaReservistaProceso($data);
  667.         
  668.         
  669.         $data = new Response(json_encode($ret));
  670.         $data->headers->set('Content-Type''application/json');
  671.         return $data;
  672.     }
  673.     
  674.     private function salvaReservistaProceso(&$data)
  675.     {
  676.         $em $this ->em;
  677.         $reservista $em->getRepository('App\\Entity\\Reservista')->findOneBy(array('identificacion'=>$data['cedula']));
  678.         $procesoActivo $em->getRepository('App\\Entity\\ProcesoRegistroReservistas')
  679.                                     ->createQueryBuilder('p')
  680.                                     ->where('p.activo=true')
  681.                                     ->getQuery()->getOneOrNullResult();
  682.         $reservistaProceso $em->getRepository('App\\Entity\\ReservistaProceso')
  683.                 ->findOneBy(array('reservista'=>$reservista->getId(), 'procesoRegistro'=>$procesoActivo->getId()));
  684.         
  685.         if (!$reservistaProceso)
  686.         {
  687.             $reservistaProceso= new ReservistaProceso();
  688.             $reservistaProceso->setReservista($reservista);
  689.             $reservistaProceso->setFechaRegistro(new \DateTime());
  690.             $reservistaProceso->setProcesoRegistro($procesoActivo);
  691.         }
  692.         
  693.         
  694.         if (isset($data['centroCapacitarse'])){
  695.             
  696.             $this->logger->info('********* data[centroCapacitarse]: '$data['centroCapacitarse']); 
  697.             
  698.             $centro =$em->getRepository('App\\Entity\\CentroMovilizacion')->find($data['centroCapacitarse']);
  699.             if($centro)
  700.                 $reservistaProceso->setCentroMovilizacion($centro);
  701.             
  702.             
  703.         }else{
  704.              $this->logger->info('********* data[centroCapacitarse]: NO LLEGA' ); 
  705.             
  706.             
  707.         }
  708.         
  709.         if (isset($data['fechaConsultaAntecedentes']))
  710.             $reservistaProceso->setFechaConsultaAntecedentes($data['fechaConsultaAntecedentes']);
  711.         if (isset($data['fechaConsultaEstudios']))
  712.             $reservistaProceso->setFechaConsultaEstudios($data['fechaConsultaEstudios']);
  713.         if (isset($data['geometria']))
  714.             $reservistaProceso->setGeometria($data['geometria']);
  715.         if (isset($data['residenciaEcuador']) && $data['residenciaEcuador'])
  716.         {
  717.             $reservistaProceso->setPaisResidencia('Ecuador');
  718.             if (isset($data['callePrincipal']))
  719.                 $reservistaProceso->setCallePrincipalResidencia($data['callePrincipal']);
  720.             if (isset($data['calleSecundaria']))
  721.                 $reservistaProceso->setCalleSecundariaResidencia($data['calleSecundaria']);
  722.             if (isset($data['nroCasa']))
  723.                 $reservistaProceso->setNumeroCasa($data['nroCasa']);
  724.             if (isset($data['parroquiaResidencia']))
  725.             {
  726.                 $localizacion =$em->getRepository('App\\Entity\\NmclDominioLocalizacion')->find($data['parroquiaResidencia']);
  727.                 $reservistaProceso->setLugarResidencia($localizacion);
  728.             }
  729.         }
  730.         else
  731.         {
  732.             if (isset($data['paisResidencia']))
  733.                 $reservistaProceso->setPaisResidencia($data['paisResidencia']);
  734.         }
  735.         if (isset($data['referenciaResidencia']))
  736.             $reservistaProceso->setReferencias($data['referenciaResidencia']);
  737.         
  738.         if (isset($data['causa']) && $data['causa'])
  739.             $reservistaProceso->setCausaRechazo($data['causa']);
  740.         if (isset($data['volverPresentarse']))
  741.             $reservistaProceso->setVolverPresentarse($data['volverPresentarse']);
  742.         if (isset($data['idoneo']))
  743.             $reservistaProceso->setIdoneo($data['idoneo']);
  744.         if (isset($data['fechaAsignacion']))
  745.         {
  746.             $reservistaProceso->setFechaAsignacion(new \DateTime($data['fechaAsignacion']));
  747.         }
  748.         if (isset($data['fechaResultado']))
  749.             $reservistaProceso->setFechaResultado($data['fechaResultado']);
  750.         if (isset($data['resultadosAntecedentes']))
  751.             $reservistaProceso->setResultadosAntecedentes($data['resultadosAntecedentes']);
  752.         if (isset($data['resultadosEstudios']))
  753.             $reservistaProceso->setResultadosEstudios($data['resultadosEstudios']);
  754.         
  755.         $em->persist($reservistaProceso);
  756.         $em->flush();
  757.         return $reservistaProceso->getId();
  758.     }
  759.     
  760.     public function resultadoSalvarAction()
  761.     {
  762.         $em $this ->em;
  763.         $resultado $this->request->get('resultado');
  764.         $reservistaProceso $em->getRepository('App\\Entity\\ReservistaProceso')->find($resultado['reservistaProceso']);
  765.         $reservista $reservistaProceso->getReservista();
  766.         $proceso $reservistaProceso->getProcesoRegistro();
  767.         if ($resultado['resultado']=='idoneo')
  768.         {
  769.             $reservistaProceso->setIdoneo(true);
  770.             $reservistaProceso->setCausaRechazo(null);
  771.             $reservistaProceso->setFechaResultado(new \DateTime());
  772.             $em->persist($reservistaProceso);
  773.             $em->flush();
  774.         }
  775.         else
  776.         {
  777.             $reservistaProceso->setIdoneo(false);
  778.             $reservistaProceso->setCausaRechazo($resultado['causa']);                                            
  779.             $reservistaProceso->setObservaciones($resultado['observaciones']);                                            
  780.             $reservistaProceso->setVolverPresentarse($resultado['volver']);                                            
  781.             $reservistaProceso->setFechaResultado(new \DateTime());
  782.             $em->persist($reservistaProceso);
  783.             $em->flush();
  784.         }
  785.         $data = array('ok'=>true);
  786.         $data = new Response(json_encode($data));
  787.         $data->headers->set('Content-Type''application/json');
  788.         return $data;
  789.     }
  790.     
  791.     public function resultadoSalvarVacunacionAction()
  792.     {
  793.         $em $this ->em;
  794.         $resultado $this->request->get('resultado');
  795.         $reservistaProceso $em->getRepository('App\\Entity\\ReservistaProceso')->find($resultado['reservistaProceso']);
  796.         $reservista $reservistaProceso->getReservista();
  797.         $proceso $reservistaProceso->getProcesoRegistro();
  798.         if ($resultado['resultado']=='valido')
  799.         {
  800.             $reservistaProceso->setCertificadoVacunacionOk(true);
  801.             $em->persist($reservistaProceso);
  802.             $em->flush();
  803.         }
  804.         else
  805.         {
  806.             $reservistaProceso->setIdoneo(false);
  807.             $reservistaProceso->setCausaRechazo(CausaNoIdoneoEnum::VACUNACION);                                            
  808.             $reservistaProceso->setObservaciones($resultado['observaciones']);
  809.             $reservistaProceso->setVolverPresentarse($resultado['volver']);                                            
  810.             $reservistaProceso->setFechaResultado(new \DateTime());
  811.             $em->persist($reservistaProceso);
  812.             $em->flush();
  813.         }
  814.         $data = array('ok'=>true);
  815.         $data = new Response(json_encode($data));
  816.         $data->headers->set('Content-Type''application/json');
  817.         return $data;
  818.     }
  819.     
  820.     public function showPDFAction($idReservista$template)
  821.     {
  822.         $entity $this->em->getRepository('App\\Entity\\Reservista')->find($idReservista);
  823.         if (!$entity
  824.           throw new \RuntimeException($this->translator->trans(
  825.                                                      'error.instance_not_found',
  826.                                                      array('%classname%' => $this->routeClassName.'/'.$this->className,
  827.                                                            '%id%'        => $id),
  828.                                                      'crud'));
  829.         return $this->render($template, ['entity'=>$entity]);        
  830.         
  831.     }        
  832.        
  833. }