<?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 objetosControlador extends Controlador
{//adición fts_Franklin
    private $atObjetosModelo;

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

    }

    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-methods.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');



        $movimientos = $this->atObjetosModelo->metListarMovimientos();

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

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





        $this->atVista->metRenderizar('listado');
        /*echo '<pre>';
        print_r($movimientos);
        echo '</pre>';*/
    }
    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 metOpenMovimiento($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);


        $id = $_POST['id'];
        if($opcion == 'nuevo'){



        }elseif ($opcion == 'ver' || $opcion == 'modificar'){
            $movimientoEncontrada = $this->atObjetosModelo->metGetMovimientoObjeto($id);

            foreach ($movimientoEncontrada as $mov){
                $arrayCaracteristica= explode(",", $mov['nombre_caracteristica']);

                foreach ($arrayCaracteristica as $carac){
                    $partes = explode("-", $carac);
                    $caracteristica[] = array(
                        "pk_caracteristica" => $partes[0],
                        "nombre_caracteristica" => $partes[1],
                        "valor_caracteristica" => $partes[2],
                    );

                }
                $objeto[] = array(
                    'pk_num_objeto' => $mov['pk_num_objeto'],
                    'tipo_objeto' => $mov['tipo_objeto'],
                    'nombre' => $mov['nombre_objeto'],
                    'caracteristicas' => $caracteristica
                );$caracteristica=null;


                $arrayMovimiento[] = array(
                    'pk_num_movimiento' => $mov['pk_num_movimiento'],
                    'persona_emisor' => $mov['persona_emisor'],
                    'persona_portador' => $mov['persona_portador'],
                    'descripcion' => $mov['descripcion_movimiento'],
                    'descripcion_salida' => $mov['descripcion_salida'],
                    'estado' => $mov['estado'],
                    'fecha_creacion' => $mov['fecha_creacion'],
                    'objetos' => $objeto
                );$objeto=null;
            }

            $this->atVista->assign('movimientos', $arrayMovimiento);


        }
        $tipoCaracteristicasObjeto = $this->atObjetosModelo->metListarCaracteristicasObjeto();
        $tipoObjeto = $this->atObjetosModelo->metListarTipoObjeto();

        $this->atVista->assign('tipos_caracteristicas', $tipoCaracteristicasObjeto);
        $this->atVista->assign('tipos_objeto', $tipoObjeto);
        $this->atVista->assign('opcion', $opcion);
        $this->atVista->metRenderizar('crearModificar', 'modales');


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

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

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

    function metInsetEntradaObjeto(){
            $info_persona = json_decode($_POST['persona'],true);
        $info_persona = $info_persona[0];

            $objetos = json_decode($_POST['objetos'],true);
            $observacion_general= $_POST['observacion_general'];



            $ingresar = $this->atObjetosModelo->metInsertEntrada(
                $info_persona,
                $objetos,
                $observacion_general
            );

           echo $ingresar;

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

}
    function metInsetSalidaObjeto(){

            $arrayMovimientos = json_decode($_POST['arrayMovimientos'],true);
           // $arrayMovimientos = $arrayMovimientos[0];
            $observacion_salida= $_POST['observacion'];

           var_dump($arrayMovimientos);

            $salida = $this->atObjetosModelo->metInsertSalida(
                $arrayMovimientos,
                $observacion_salida
            );

           echo $salida;


}

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);

    //echo $_POST['lugares_revisados'];
    //echo $lugares_revisados;
    //echo $lugares;

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

    return $insertRecorrido;

}








    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, 
                    pa_c008_tipo_objeto.descripcion as tipo_objeto,
                    objeto.descripcion,
					GROUP_CONCAT(concat('#',caracteristica.pk_num_caracteristica,'=',caracteristica.descripcion,' ',asignacion.descripcion,' ')) AS caracteristica,        
                    pa_c008_tipo_objeto.pk_num_tipo_objeto,
					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_pab013_objeto
                left join pa_c004_caracteristica_objeto as caracteristica on asignacion.fk_pac004_caracteristica = caracteristica.pk_num_caracteristica
                left join pa_c008_tipo_objeto on objeto.fk_pac008_tipo_objeto = pa_c008_tipo_objeto.pk_num_tipo_objeto
                where (objeto.estado = 'Activo' and asignacion.estado = 'Activo' and caracteristica.estado = 'Activo' )
                
				";



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

        $sql .= 'GROUP BY  objeto.pk_num_objeto, objeto.descripcion ';

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

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

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

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

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

        $busqueda = $this->metObtenerFormulas('search');
        $sql = "SELECT
                    GROUP_CONCAT(DISTINCT movimiento.pk_num_movimiento order by movimiento.pk_num_movimiento asc)  as pk_num_movimiento,
                        movimiento.tipo_movimiento as tipo_movimiento,
                        
                        GROUP_CONCAT(DISTINCT movimiento.fk_pab013_objeto order by movimiento.pk_num_movimiento asc) as pk_num_objeto,
                        
                         GROUP_CONCAT(DISTINCT objeto.descripcion order by movimiento.pk_num_movimiento  asc) as nombre_objeto,
                         
                          GROUP_CONCAT( CONCAT(objeto.pk_num_objeto ,'-',movimiento.pk_num_movimiento,'-', caracteristica.descripcion, '-',asignacionCaracObjeto.descripcion) order by movimiento.pk_num_movimiento,asignacionCaracObjeto.pk_num_caracteristica_objeto asc  )  as caracteristicas,
                            
                        case when concat(persona.ind_nombre1, ' ', persona.ind_apellido1) is not null then concat(persona.ind_nombre1, ' ', persona.ind_apellido1)  else 0 end as persona_portador,
                        case when 	concat(empleadoP.ind_nombre1, ' ', empleadoP.ind_apellido1)  is not null then 	concat(empleadoP.ind_nombre1, ' ', empleadoP.ind_apellido1)  else 0 end as empleado_portador, 
                        movimiento.fk_rhb001_num_empleado_portador,
                        movimiento.fk_a003_num_persona_portador,
                        movimiento.telefono,
                        movimiento.direccion,
                        movimiento.observacion,
                        movimiento.fecha_creacion,
                        movimiento.fecha_modificacion,
                        tipo.descripcion as tipo_objeto
                    
                    
                FROM
                        pa_c007_movimiento_objeto  as movimiento
                left join a003_persona as persona on movimiento.fk_a003_num_persona_portador = persona.pk_num_persona
                left join rh_b001_empleado as empleado on movimiento.fk_rhb001_num_empleado_portador = empleado.pk_num_empleado
                left join a003_persona as empleadoP on empleado.fk_a003_num_persona = empleadoP.pk_num_persona
                left join  pa_b013_objeto as objeto on objeto.pk_num_objeto = movimiento.fk_pab013_objeto
                right join pa_d002_asignacion_caracteristica_objeto as asignacionCaracObjeto on asignacionCaracObjeto.fk_pab013_objeto = objeto.pk_num_objeto
                left join pa_c004_caracteristica_objeto as caracteristica on caracteristica.pk_num_caracteristica = asignacionCaracObjeto.fk_pac004_caracteristica
                left join pa_c008_tipo_objeto as tipo on tipo.pk_num_tipo_objeto = objeto.fk_pac008_tipo_objeto
                
                WHERE movimiento.estado = 'Activo'
                        
				";

        //LIKE '%$busqueda[value]%' OR
        if ($busqueda['value']) {
            $sql .= " AND
                        ( concat(persona.ind_nombre1, ' ', persona.ind_apellido1) LIKE '%$busqueda[value]%' OR
                        concat(empleadoP.ind_nombre1, ' ', empleadoP.ind_apellido1) LIKE '%$busqueda[value]%' OR
                        GROUP_CONCAT( CONCAT(objeto.pk_num_objeto ,'-',caracteristica.pk_num_caracteristica,'-', caracteristica.descripcion, '-',asignacionCaracObjeto.descripcion) LIKE '%$busqueda[value]%' OR
                        movimiento.observacion LIKE '%$busqueda[value]%' OR
                        GROUP_CONCAT(DISTINCT objeto.descripcion) LIKE '%$busqueda[value]%' 
                        ) ";
        }

        $sql .= ' GROUP BY  movimiento.fecha_creacion';

        $campos = array('pk_num_movimiento','pk_num_objeto','tipo_objeto','nombre_objeto','caracteristicas','persona_portador','empleado_portador','observacion');
        $clavePrimaria = 'pk_num_movimiento';

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

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

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

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

    function metEjemplo(){
        $id = $_POST['id'];

        $valor = $this->atObjetosModelo->metListarCaracteristicasObjeto();



        foreach ($valor as $item){
            $test[] = array(
                'x' => $item['descripcion']
        );
        }



     echo json_encode($test);

    }
    public function metJsonDataTablaBuscarPersonas()
    {
        $rol=Session::metObtener('perfil');

        $busqueda = $this->metObtenerFormulas('search');
        $sql = "
                    SELECT
                        persona.pk_num_persona,
                        empleado.pk_num_empleado is not null as isEmployee,
                        empleado.pk_num_empleado,
                        persona.ind_cedula_documento,
                        concat(persona.ind_nombre1, ' ',persona.ind_nombre2) as nombres,
                        concat(persona.ind_apellido1, ' ', persona.ind_apellido2) as apellidos,
                        dependencia.ind_dependencia
                    FROM  rh_b001_empleado as empleado
                    RIGHT  JOIN a003_persona as persona on empleado.fk_a003_num_persona = persona.pk_num_persona
                    LEFT JOIN rh_c076_empleado_organizacion on empleado.pk_num_empleado = rh_c076_empleado_organizacion.fk_rhb001_num_empleado
                    LEFT JOIN a004_dependencia as dependencia on dependencia.pk_num_dependencia = rh_c076_empleado_organizacion.fk_a004_num_dependencia
                    WHERE persona.num_estatus = 1
                   
				";

        if ($busqueda['value']) {
            $sql .= " AND
                        ( concat(persona.ind_nombre1, ' ',persona.ind_nombre2) LIKE '%$busqueda[value]%' 
                            OR
                         concat(persona.ind_apellido1, ' ', persona.ind_apellido2) LIKE '%$busqueda[value]%' 
                           OR
                         concat(persona.ind_nombre1, ' ', persona.ind_apellido1) LIKE '%$busqueda[value]%' 
                         
                        ) ";
        }



            $campos = array('pk_num_persona','isEmployee','pk_num_empleado','ind_cedula_documento','nombres','apellidos','ind_dependencia');

        $clavePrimaria = 'pk_num_persona';

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

    }

}