<?php
namespace App\Http\Controllers;


use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
use App\Catalogo;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Libraries\ejLib;
use SimpleXMLElement;
use SoapClient;
class CurpController extends Controller{

    public function __construct() {
        $var = ejLib::getInstance();
        $soapclient = $var->getWs();
        $wsClave = $var->get_wsClave();
    }

    public function curpModal() {
        $var = ejLib::getInstance();
        $soapclient = $var->getWs();
        $wsClave = $var->get_wsClave();

        //$entidades = $soapclient->vCat_Entidades($wsClave);
        $entidades = Catalogo::getSelect('vCat_Entidades', 'descripcio', 'descripcio', 'entidad', 'form-control bold-text');

        $data = [
            'entidades' => $entidades
        ];
        return view('archivo/buscarcurp')->with($data);
    }

    public function getStatusConWS() {
        $var = ejLib::getInstance();
        $soapclient = $var->getWs();
        $wsClave    = $var->get_wsClave();		

        //*************************VALIDAR CONEXION*********************************
        $hayConexion ='';

        /*
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, 'http://wsrenapo.col.gob.mx/curp/');
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); 
       //aumentar el tiempo puede sobrecargar el uso del servidor
        curl_setopt($ch, CURLOPT_HEADER, true);
        curl_setopt($ch, CURLOPT_NOBODY, true);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_MAXREDIRS, 3); 
       //numero de redirecciones que va a seguir
        $data = curl_exec($ch);
        curl_close($ch);
        preg_match_all("/HTTP\/1\.[1|0]\s(\d{3})/",$data,$matches);
 
        $code = end($matches[1]);
     
        if(!$data) { $hayConexion = '0'; } else {
            if($code==200) 
                { $hayConexion = '1'; } elseif($code==404) { $hayConexion = '0'; }
        }*/

        $urlWsCurp  = $var->get_urlWsCurp(); 
		$url = $urlWsCurp."?test=1"; 
       // $data = file_get_contents($url);  
        $ch = curl_init($url/*"https://www.google.com"*/);  
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);  
        curl_exec($ch);  
        $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);  
        curl_close($ch);  
        return ($httpcode>=200 && $httpcode<300) ? 1 : 0;
     
        /*$params = array('http' => array('method' => 'POST','content' => 'x_=0&')); //Constructor de los parámetros en el arreglo
        $ctx = stream_context_create($params); //Creamos un flujo con los parámetros
        $fp = @fopen($url, 'rb', false, $ctx); //Realizamos una consulta a la vista que se necesita enviandole los parámetros en un flujo   
        $hayConexion =  @stream_get_contents($fp);
        
        return $hayConexion;
        */
     
       

    }

    public function getInfoPorCurp() {
        $var = ejLib::getInstance();
        $soapclient = $var->getWs();
        $wsClave = $var->get_wsClave();
        if(isset($_POST['curp']))$curp=strtoupper($_POST['curp']); 

       
        $hayConexion = $this->getStatusConWS();
        
      
        if ($hayConexion== '0'){
            $data = $soapclient->Archivo_getInfCurpPersona($curp, $wsClave);
            $xml  = new SimpleXMLElement(utf8_encode($data));
            
            if($xml->respuesta->error == '1') {
                 $Notif=    array('error' => '1', 'titulo' => 'La CURP no se encuentra en la base de datos', 'detalle' => 'La consulta no arrojó ningún resultado, La CURP no se encuentra en la base de datos');         
                 echo $Notif["detalle"];
                 return;
             } else {  return view('archivo.buscarcurp')->with('result', $xml); }
        }else { 
            $data = $soapclient->Archivo_getInfCurpPersona($curp, $wsClave);

            $xml  = new SimpleXMLElement(utf8_encode($data));
            
            if( $xml->respuesta->error == '1' ) {
              // buscar en ws  
                /* // Código descontinuado
                $url = "http://wsrenapo.col.gob.mx/curp/apiV1/obtener/info?curp={$curp}";
                $rest = curl_init($url);
                curl_setopt($rest, CURLOPT_RETURNTRANSFER,1);
                curl_setopt($rest, CURLOPT_USERPWD, "saeccol:37997184d324fb5921fd4860f8ff94c2");
                $solicitud = curl_exec($rest);
                curl_close($rest);
                $result =  new SimpleXMLElement(utf8_encode($solicitud)); 
                */
				
				$urlWsCurp  = $var->get_urlWsCurp(); 
				$url = $urlWsCurp."?byCurp=1&ssa_curp=$curp";
                  
                $params = array('https' => array('method' => 'POST','content' => 'x_=0&')); //Constructor de los parámetros en el arreglo
                $ctx = stream_context_create($params); //Creamos un flujo con los parámetros
                $fp = @fopen($url, 'rb', false, $ctx); //Realizamos una consulta a la vista que se necesita enviandole los parámetros en un flujo   
                $data = file_get_contents($url);
                
                //$result =  new SimpleXMLElement(@stream_get_contents($fp)); 
                $result =  new SimpleXMLElement(utf8_encode($data)); 
                //print_r($result);
                return view('archivo.buscarcurp')->with('resultWS', $result);

             } else { // pintar resultados de bd local 
                 return view('archivo.buscarcurp')->with('result', $xml);
                } 
         }
       


    }

    public function getCurpPorDatos() {

        $var = ejLib::getInstance();
        $soapclient = $var->getWs();
        $wsClave = $var->get_wsClave();
        if(isset($_POST['nombres']))$nombres=$_POST['nombres']; 
        if(isset($_POST['primerAp']))$primerAp=$_POST['primerAp']; 
        if(isset($_POST['segundoAp']))$segundoAp=$_POST['segundoAp']; 
        if(isset($_POST['fNac']))$fNac=ltrim($_POST['fNac']);
        if(isset($_POST['entidadNac']))$entidadNac=$_POST['entidadNac'];  
        // Archivo_getLstCurpPaciente solo regresa la curp
        // pendiente busqueda local 
     
        $registro = $soapclient->AdministrarCatalogos_get_EntidadPorAbrev($entidadNac, $wsClave);
        $REG  = new SimpleXMLElement(utf8_encode($registro));
       
         $data = $soapclient->Archivo_getLstCurpFull($nombres,$primerAp, $segundoAp, $fNac, $wsClave);
         $xml  = new SimpleXMLElement(utf8_encode($data));
        
        $hayConexion = $this->getStatusConWS();
       

        if($nombres == "" || $primerAp == "" || $fNac =="" ){
            return response()->json(array(
                'error' => 1,
                'mensaje' => 'Parametros incompletos'
            ));
          }  elseif (($xml->respuesta->error == '1') && ($hayConexion == '1')) {



            $nombre =  str_replace(" ","%20",$nombres);
            $apellido1 = str_replace(" ","%20",$primerAp);
            $apellido2 = str_replace(" ","%20",$segundoAp);
            $cveEntidadNac =$REG->respuesta->clavec;
            /*
            $url = "http://wsrenapo.col.gob.mx/curp/index.php/apiV1/obtener/curp?nombre={$nombre}&apellido1={$apellido1}&apellido2={$apellido2}&fnac={$fNac}";
            $rest = curl_init($url);
            curl_setopt($rest, CURLOPT_RETURNTRANSFER,1);
            curl_setopt($rest, CURLOPT_USERPWD, "saeccol:37997184d324fb5921fd4860f8ff94c2");
            $solicitud = curl_exec($rest);
            curl_close($rest);
            $result =  new SimpleXMLElement(utf8_encode($solicitud)); 
            */
           
           //https://sistemassalud.col.gob.mx/curp/?byNombre=1&ssa_nombre=juan&ssa_apellido1=sanchez&ssa_apellido2=reyes&ssa_fnac=28/01/2006&ssa_entidad_nac=CM
			
			$urlWsCurp  = $var->get_urlWsCurp();
			$url = $urlWsCurp."?byNombre=1&ssa_nombre=$nombre&ssa_apellido1=$apellido1&ssa_apellido2=$apellido2&ssa_fnac=$fNac&ssa_entidad_nac=$cveEntidadNac";            
            $params = array('http' => array('method' => 'POST','content' => 'x_=0&')); //Constructor de los parámetros en el arreglo
            $ctx = stream_context_create($params); //Creamos un flujo con los parámetros
            $fp = @fopen($url, 'rb', false, $ctx); //Realizamos una consulta a la vista que se necesita enviandole los parámetros en un flujo   
            // $result =  new SimpleXMLElement(@stream_get_contents($fp));
            
           // print_r($result->REST_Service->status_response);
         
            $data = file_get_contents($url);
            $result =  new SimpleXMLElement(utf8_encode($data)); 
            
           
             if( $result->respuesta->status_response == 'FALSE' ){
                 $Notif=    array('error' => '1', 'titulo' => 'La CURP no se encuentra en la base de datos', 'detalle' => 'La consulta no arrojó ningún resultado, La CURP no se encuentra en la base de datos');         
                 echo $Notif["detalle"];
                 return;
             } else{
                  echo '<h5 class="text-center">RENAPO</h5> <table class="table table-hover" id="tblModalGralesWs" name="tblModalGralesWs">
                        <thead>
                        <tr>
                            <th>Curp</th>
                            <th>Nombre</th>
                            <th>Primer Apellido</th>                        
                            <th>Segundo Apellido</th>
                           
                            <th>Fecha Nacimiento</th>';

                foreach($result->respuesta as $reg){
                    //AdministrarCatalogos_get_EntidadPorAbrev
                    
                    $entidadAbrev = substr($reg->CURP, 11, 2);

                     /*$resulSol = $soapclient->AdministrarCatalogos_get_EntidadPorAbrev($entidadAbrev, $wsClave);
                     $xmlResp  = new SimpleXMLElement(utf8_encode($resulSol));*/
                     if ($reg->sexo == '1'){
                        $idSexo= 1;
                     } elseif($reg->sexo == '2') {$idSexo= 0;}
                    echo ' <tr class="beneficiadoCurpWs" 
                                data-curp="'.$reg->CURP.'" 
                                data-nombre="'.utf8_decode($reg->nombres).'" 
                                data-paterno="'.utf8_decode($reg->apellido1).'" 
                                data-materno="'.utf8_decode($reg->apellido2).'"
                                data-nacimiento="'.$reg->fechaNac.'" 
                                data-entidad_nac="'.$entidadNac.'" 
                                data-sexo="'. $reg->sexo.'" >

                                <td>'.$reg->CURP.'</td>
                                <td>'.utf8_decode($reg->nombres).'</td>
                                <td>'.utf8_decode($reg->apellido1).'</td>
                                <td>'.utf8_decode($reg->apellido2).'</td>                            
                               
                                <td>'.$reg->fechaNac.'</td>
                            </tr>';
                }    
                echo '</table>';      


        }
          } else {
            if($xml->respuesta->error == '1'){
                  $Notif=    array('error' => '1', 'titulo' => 'La CURP no se encuentra en la base de datos', 'detalle' => 'La consulta no arrojó ningún resultado, La CURP no se encuentra en la base de datos');         
                 echo $Notif["detalle"];
                 return;
            }
              echo '<table class="table table-hover" id="tblModalGralesWs" name="tblModalGralesWs">
                        <thead>
                        <tr>
                            <th>Curp</th>
                            <th>Nombre</th>
                            <th>Primer Apellido</th>                        
                            <th>Segundo Apellido</th>
                           
                            <th>Fecha Nacimiento</th>';

                foreach($xml->respuesta as $reg){
                    echo ' <tr class="beneficiadoCurpWs" 
                                data-curp="'.$reg->curp.'" 
                                data-nombre="'.utf8_decode($reg->nombre).'" 
                                data-paterno="'.utf8_decode($reg->primer_ap).'" 
                                data-materno="'.utf8_decode($reg->segundo_ap).'"
                                data-nacimiento="'.$reg->fnac.'" 
                                data-entidad_nac="'.$reg->entidad.'" 
                                data-sexo="'. $reg->sexo.'" >

                                <td>'.$reg->curp.'</td>
                                <td>'.utf8_decode($reg->nombre).'</td>
                                <td>'.utf8_decode($reg->primer_ap).'</td>
                                <td>'.utf8_decode($reg->segundo_ap).'</td>                            
                               
                                <td>'.$reg->fnac.'</td>
                            </tr>';
                }    
                echo '</table>';      
          }
      
    
        
    }

}
