<?php
/****************************************************************************************
 * DEV: CONTRALORIA DE ESTADOS
 * PROYECTO: SISTEMA INTEGRAL ADMINISTRATIVO DE CONTRALORIAS DE ESTADOS
 * MODULO: Parque Automotor
 * PROCESO: Listado de revisiones de vehículos
 * PROGRAMADORES:
 * | # |          NOMBRES Y APELLIDOS           |               CORREO                |          TELEFONO              |
 * | 1 |           José Pereda                  |dt.ait.programador2@cgesucre.gob.ve  |         04248040078            |
 * |   |                                        |                                     |                                |
 * |___|________________________________________|_____________________________________|________________________________|
 *
 * VERSION
 *
 * |          PROGRAMADOR                  |          FECHA          |       VERSION      |
 * |               #1                      |        09-07-2015       |         1.0        |
 * |                                       |                         |                    |
 * |_______________________________________|_________________________|____________________|
 *
 *****************************************************************************************/

class recorridoControlador extends Controlador
{
    private $atRecorridoModelo;

    public function __construct()
    {
        parent::__construct();
        Session::metAcceso();
        $this->atRecorridoModelo = $this->metCargarModelo('recorrido');

    }
	



    public function metIndex()
    {
        $complementosCss = array(
            'DataTables/jquery.dataTables',
            'DataTables/extensions/dataTables.colVis941e',
            'DataTables/extensions/dataTables.tableTools4029',
            'select2/select201ef',
            'jquery-ui-selectable/jquery-ui',
        );
        $complementosJs = array(
            'select2/select2.min',
            'DataTables/datatable',
            'mask/jquery.mask',
            'wizard/jquery.bootstrap.wizard.min',
            'jquery-ui-selectable/jquery-ui',);
        $js[] = 'materialSiace/core/demo/DemoTableDynamic';
        $js[] = 'Scripts/Form';

        $this->atVista->metCargarCssComplemento($complementosCss);
        $this->atVista->metCargarJsComplemento($complementosJs);
        $this->atVista->metCargarJs($js);
        $validar = array(
            'jquery-validation/dist/jquery.validate.min',
            'jquery-validation/dist/additional-metholistadods.min'
        );




        $primerDia = new DateTime(); $primerDia->modify('first day of this month'); $primerDia = $primerDia->format('Y-m-d');
        $ultimoDia= new DateTime(); $ultimoDia->modify('last day of this month'); $ultimoDia = $ultimoDia->format('Y-m-d');


        $recorridos = $this->atRecorridoModelo->metListarRecorridos($primerDia,$ultimoDia);

        $this->atVista->assign('recorridos', $recorridos);

        /*$error = error_get_last();
        echo ' | error: ';
        print_r($error);*/

        /*echo '<pre>';
        print_r($objetos);
        echo '</pre>';*/

        $this->atVista->metRenderizar('listado');
    }

    public function metOpenRecorrido($opcion = 'nuevo')
    {
        $complementosCss = array(
            'DataTables/jquery.dataTables',
            'wizard/wizardfa6c',
            'jquery-validation/dist/site-demo',
            'select2/select201ef',
            'bootstrap-datepicker/datepicker',
            'timeLine/timeline',
            'sweet-alert/sweet-alert.min'
        );
        $complementoJs = array(
            'jquery-validation/dist/jquery.validate.min',
            'jquery-validation/dist/additional-methods.min',
            'select2/select2.min',
            'wizard/jquery.bootstrap.wizard.min',
            'bootstrap-datepicker/bootstrap-datepicker',
            'ckeditor/ckeditor',
            'ckeditor/adapters/jquery',

            'sweet-alert/sweet-alert.min'



        );
        $js = array(//'materialSiace/core/demo/DemoTableDynamic',
            'materialSiace/core/demo/DemoFormWizard',
            'materialSiace/core/demo/DemoFormComponents',
            'materialSiace/core/demo/DemoFormEditors',
            'Scripts/Form'
        );
        $js[] = 'Aplicacion/appFunciones';
        $this->atVista->metCargarCssComplemento($complementosCss);
        $this->atVista->metCargarJsComplemento($complementoJs);
        $this->atVista->metCargarJs($js);



        if($opcion == 'nuevo'){



        }elseif ($opcion == 'ver' || $opcion == 'modificar'){

            $recorrido = $this->atRecorridoModelo->metGetRecorridoNew($_POST['id']);



           /*foreach ($recorrido['ubicaciones'] as $ubi){
               if($ubi['estado'] == 'Activo'){
                   $ubis[] = $ubi['pk_num_tipo_ubicacion'];
               }
           }*/
            $ubis = array_column(
                array_filter($recorrido['ubicaciones'], function ($ubi) {
                    return $ubi['estado'] === 'Activo';
                }),
                'pk_num_tipo_ubicacion'
            );


            /*echo '<pre>';
            print_r($recorrido);
            echo '</pre>';*/

           $this->atVista->assign('recorrido', $recorrido);
           $this->atVista->assign('ubis', $ubis);

        }

        $tipoCaracteristicasObjeto = $this->atRecorridoModelo->metListarCaracteristicasObjeto();
        $tipoObjeto = $this->atRecorridoModelo->metListarTipoObjeto();
        $ubicacionesRecorrido = $this->atRecorridoModelo->metListarUbicacionesRecorrido();
        $tiemposRecorrido = $this->atRecorridoModelo->metListarTiemposdeRecorrido();



        /*$error = error_get_last();
        echo ' | error: ';
        print_r($error);*/

         /*echo '<pre>';
           print_r($ubicacionesRecorrido);
         echo '</pre>';*/



        $this->atVista->assign('tipos_caracteristicas', $tipoCaracteristicasObjeto);
        $this->atVista->assign('ubicaciones_recorrido', $ubicacionesRecorrido);
        $this->atVista->assign('tiempos_recorrido', $tiemposRecorrido);
        $this->atVista->assign('opcion', $opcion);
        $this->atVista->assign('disabled', $opcion=='ver'?'disabled':'');

        $this->atVista->metRenderizar('crearModificar', 'modales');
    }

    function metInsertRecorrido(){
        $descripcion_Recorrido =$_POST['descripcion_Recorrido'];
        $id_tiempo_recorrido =$_POST['id_tiempo_recorrido'];
        $lugares_revisados =$_POST['lugares_revisados'];

        $lugares = json_decode($lugares_revisados[0], true);

        //var_dump($_POST);

        /*error = error_get_last();
        echo ' | error: ';
        print_r($error);*/



        $insertRecorrido = $this->atRecorridoModelo->metInsertRecorrido(
            $descripcion_Recorrido,
            $id_tiempo_recorrido,
            $lugares)
        ;

        return $insertRecorrido;

    }

    public function metConsultaCne()
    {

        $idCedula=$this->metObtenerInt('idCedula');
        $url="http://www4.cne.gov.ve/web/registro_electoral/ce.php?nacionalidad=V&cedula=$idCedula";
        // Compruebo si existe el modulo de curl
        if(!in_array('curl', get_loaded_extensions())) {
            $validacion['status'] = 'errorCurl';
            echo json_encode($validacion);
            exit;
        }


        $ch = curl_init();
        curl_setopt ($ch, CURLOPT_URL, $url);
// almacene en una variable
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, FALSE);
// Para informar todo lo relacionado al header de la conexion
        curl_setopt($ch, CURLOPT_HEADER, FALSE);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

        $xxx1 = curl_exec($ch);
        curl_close($ch);
// Quitamos todas las etiquetas html existente dentro del retornado
        $page = strip_tags($xxx1);
// Dividimos el resultado en arreglos donde encuentre :
        $info = explode(":", $page);

// Dividimos este un resultado de la cedula en dos para sacar nac y cedula
        $cn=explode('-',substr(trim($info[1]),0,-6));

        if(isset($info[2])){
            $persona = explode(' ',trim($info[2]));
            $rows=count($persona);
            $rows2=count($info);

            // Procedimiento cuando devuelve un nombre completo ejemplo
            //Array ( [0] => ADRIANA [1] => DEL [2] => CARMEN [3] => VAAMONDE [4] => MUÃ‘OZ Estado ) 5

            if($rows==5){
                $nombre1=$persona[0];
                $nombre2=$persona[1].' '.$persona[2];
                $apellido1=$persona[3];
                $apellido2=$persona[4];
                $cual = 1;
                // Procedimiento cuando devuelve los nombre completo de forma normal
            }elseif($rows==4){
                $nombre1=$persona[0];
                $nombre2=$persona[1];
                $apellido1=$persona[2];
                $apellido2=$persona[3];
                $cual = 2;
            }else{
                // Procedimiento cuando solo no esta registrado en el CNE que devuelve arreglos diferente a los demás
                // sobreescribo la variable $info debido que el comportamiento es diferente
                $info = explode(' ',$page);
                $rows2=count($info);
                $ced=substr($info[1],0,-6);
                $nombre1=substr($info[9],0,-7);
                $nombre2=substr($info[11],0,-7);
                $apellido1=substr($info[13],0,-7);
                $apellido2=substr($info[15],0,-7);
                $cual = 3;
            }

            $cantCar = strlen($apellido2);
            $ape2='';
            for ($i=0;$i<$cantCar;$i++){
                if(substr($apellido2,$i,1)!='
'){
                    $ape2.=substr($apellido2,$i,1);
                } else {

                    $i = $cantCar;
                }
            }
            $validacion['nombres'] = $nombre1." ".$nombre2;
            $validacion['apellidos'] = $apellido1." ".$ape2;
            $validacion['status'] = 'correcto';
            $validacion['cual'] = $cual;
            $validacion['ape2'] = $ape2;
            $validacion['info'] = $info;
        } else {
            $validacion['status'] = 'errorIns';
        }



        echo json_encode($validacion);
        exit;



    }


    public function metModificarRecorrido(){
        $descripcion_Recorrido =$_POST['descripcion_Recorrido'];
        $id_tiempo_recorrido =$_POST['id_tiempo_recorrido'];
        $lugares_revisados =$_POST['lugares_revisados'];
        $pk_num_recorrido =$_POST['pk_num_recorrido'];
        $lugares = json_decode($lugares_revisados[0], true);


        $modificar = $this->atRecorridoModelo->metModificarRecorrido(
            $pk_num_recorrido,
            $id_tiempo_recorrido,
            $descripcion_Recorrido,
            $lugares
        );


    }
    

    protected function metFormatoFecha($fecha)
    {
        $resultado=explode("/",$fecha);
        $resultado=$resultado[2]."-".$resultado[1]."-".$resultado[0];
        return $resultado;

    }
    public function metAmpliarFoto()
    {
        $foto = $this->metObtenerTexto('foto');

        $this->atVista->assign('foto',$foto);
        $this->atVista->metRenderizar('foto_vehiculo', 'modales');
    }

    public function metOpenSearchObjeto($origen)
    {
        $js[] = 'Aplicacion/appFunciones';
        $this->atVista->metCargarJs($js);

        $this->atVista->assign('origen', $origen);

        $this->atVista->metRenderizar('objetos', 'modales');
    }
    public function metJsonDataTablaObjeto()
    {
        $rol=Session::metObtener('perfil');

        $busqueda = $this->metObtenerFormulas('search');
        $sql = "select 
                    objeto.pk_num_objeto, 
                    objeto.descripcion,
					GROUP_CONCAT(concat('#',caracteristica.pk_num_caracteristica,'=',caracteristica.descripcion,' ',asignacion.descripcion,' ')) AS caracteristica,        
                    objeto.estado as estado
                from pa_b013_objeto as objeto
                left join pa_d002_asignacion_caracteristica_objeto as asignacion on objeto.pk_num_objeto = asignacion.fk_b013_objeto
                left join pa_c004_caracteristica_objeto as caracteristica on asignacion.fk_c004_caracteristica = caracteristica.pk_num_caracteristica
                where objeto.estado = 'Activo' and asignacion.estado = 'Activo' and caracteristica.estado = 'Activo' 
                GROUP BY  objeto.pk_num_objeto, objeto.descripcion 
				";



        /*if ($busqueda['value']) {
            $sql .= " AND
                        (GROUP_CONCAT(concat(caracteristica.descripcion,': ',asignacion.descripcion,' ')) LIKE '%$busqueda[value]%' OR
                        objeto.descripcion LIKE '%$busqueda[value]%' OR
                        ) ";
        }*/



        $campos = array('pk_num_objeto','descripcion','caracteristica','estado');
        $clavePrimaria = 'pk_num_objeto';

        $this->metDataTabla($sql,$campos,$clavePrimaria);

    }
}