<?php
    
    require_once "funciones.php";
    require_once "conexion.php";
    require_once "lib/Conekta.php";
    
    //connection to the database
    
    
    function unicode_escape_sequences($str)
    {
        $working = json_encode($str);
        $working = preg_replace('/\\\u([0-9a-z]{4})/', '&#x$1;', $working);
        return json_decode($working);
    }
    
    function recordSetToJson($mysql_result)
    {
        $rs = array();
        while($res = mysqli_fetch_assoc($mysql_result)) {
            $rs[] = $res;
            // you don´t really need to do anything here.
        }
        return json_encode($rs);
    }
    
    function recordSetToArray($mysql_result)
    {
        $rs = array();
        while($res = mysqli_fetch_assoc($mysql_result)) {
            $rs[] = $res;
            //print_r ($res);
            // you don´t really need to do anything here.
        }
        return $rs;
    }
    
    function utf8_converter($array)
    {
        array_walk_recursive($array, function(&$item, $key){
                             if(!mb_detect_encoding($item, 'utf-8', true)){
                                $item = utf8_encode($item);
                             }
                             
                             if($item == NULL)
                             {
                                //echo $key . "es null\n";
                                $item = '' . '';
                             }
                             
                             $item = (string)$item;
                             
                             });
        
        return $array;
    }
    
    function mkstemp( $template ) {
        $attempts = 238328; // 62 x 62 x 62
        $letters  = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        $length   = strlen($letters) - 1;
        
        if( mb_strlen($template) < 6 || !strstr($template, 'XXXXXX') )
            return FALSE;
        
        for( $count = 0; $count < $attempts; ++$count) {
            $random = "";
            
            for($p = 0; $p < 6; $p++) {
                $random .= $letters[mt_rand(0, $length)];
            }
            
            $randomFile = str_replace("XXXXXX", $random, $template);
            
            if( !($fd = @fopen($randomFile, "x+b")) )
                continue;
            
            fclose($fd);
            return $randomFile;
        }
        
        return FALSE;
    }
    
    
    $accion = traeGetPost('accion');
    if ($accion == 'traeInfoUsuario')
    {
        $resultadoFinal = array();
        
        $usuario = traeGetPost('usuario');
        
        $result = ejecutaQuery("SELECT u.* FROM usuario u Where (u.correo=\"".escape($usuario)."\")" );
        if ($rowEmpleado = mysqli_fetch_array($result))
        {
            $idUsuario=$rowEmpleado{'id'};
            
            $result = ejecutaQuery("SELECT u.* FROM usuario u Where (u.correo=\"".escape($usuario)."\")" );
            $resultadoFinal['usuario'] = utf8_converter(recordSetToArray($result));
            
            //catalogos
            $result = ejecutaQuery("SELECT * FROM catalogos" );
            $resultadoFinal['catalogos'] = utf8_converter(recordSetToArray($result));
            
            //orden encuesta
            $result = ejecutaQuery("SELECT s.*, c.descripcion as descripcionCat, c.prefijo, c.tipo, c.orden as ordenCat FROM seccion s JOIN catalogo c on c.idSeccion=s.id WHERE (s.orden >= 0) and (c.orden >= 0) order by s.orden, c.orden" );
            $resultadoFinal['seccion'] = utf8_converter(recordSetToArray($result));
            
            //encuestas de hoy.
            $result = ejecutaQuery("SELECT e.* FROM encuesta e join ruta r on r.id=e.idRuta and r.idUsuario=$idUsuario where e.terminada=0" );
            $resultadoFinal['encuestasHoy'] = utf8_converter(recordSetToArray($result));
            
            //Deseos
            $rs = array();
            $resultadoFinal['deseos'] = utf8_converter($rs);
            
            //mis Propiedades
            $rs = array();
            $resultadoFinal['misPropiedades'] = utf8_converter($rs);
            
            //Caracteristica
            $result = array();
            $resultadoFinal['caracteristica'] = utf8_converter(recordSetToArray($result));
            
            echo json_encode($resultadoFinal);
        }
        else
        {
            echo '[nel]';
        }
        
    }
    else if ($accion == 'traeInmuebles')
    {
        $resultadoFinal = array();
        
        /*
        //neLat=%f&neLon=%f&swLat=%f&swLon=%f",
        $neLat = traeGetPost('neLat');
        $neLon = traeGetPost('neLon');
        $swLat = traeGetPost('swLat');
        $swLon = traeGetPost('swLon');
        
        $result = ejecutaQuery("SELECT p.*, cliente.fotografia as fotoPropietario, CONCAT (cliente.nombre, ' ', cliente.apellidos) as nombrePropietario FROM propiedad p join cliente on cliente.id=p.usuario Where (p.activo=1) and (p.fechaTermino > NOW()) and (p.lat > $swLat) and (p.lat < $neLat) and (p.lon > $swLon) and (p.lon < $neLon) LIMIT 100" );
        $rs = array();
        while($res = mysqli_fetch_assoc($result)) {
            $idPropiedad = $res["id"];
            $resultFotos = ejecutaQuery("SELECT * FROM propiedadFotografia p Where p.propiedad=".$idPropiedad );
            $res["fotos"] = recordSetToArray($resultFotos);
            
            $resultCaracteristicas = ejecutaQuery("SELECT c.*, pc.valor FROM propiedadCaracteristica pc join caracteristica c on c.id=pc.caracteristica Where pc.propiedad=".$idPropiedad );
            $res["caracteristicas"] = recordSetToArray($resultCaracteristicas);
            
            $rs[] = $res;
        }
         */
        $rs = array();
        $resultadoFinal['inmuebles'] = utf8_converter($rs);
        echo json_encode($resultadoFinal);
    }
    else if ($accion == 'actualizaUsuario')
    {
        $arr = [];
        conectaBase();
        if (baseConectada())
        {
            $usuario = traeGetPost('usuario');
            $nombre = traeGetPost('nombre');
            $telefono = traeGetPost('telefono');
            $celular = traeGetPost('celular');
            $res = ejecutaQuery("UPDATE `usuario` SET nombre=\"$nombre\", telefono=\"$telefono\", celular=\"$celular\" where correo=\"$usuario\"");
            $arr[]=array('actualizaUsuario'=>'ok');
        }
        else
        {
            $arr[]=array('actualizaUsuario'=>'no');
        }
        echo json_encode($arr);
    }
    else if ($accion == 'traeFAQS')
    {
        conectaBase();
        if (baseConectada())
        {
            $arr = [];
            $result = ejecutaQuery("SELECT * FROM faq where activo=1" );
            
            if (mysqli_num_rows ( $result ) == 0)
            {
                $arr[]=array('estado'=>'0');
            }
            else
            {
                $arr['estado'] = '1';
                $arr['faqs'] = utf8_converter(recordSetToArray($result));
            }
            echo json_encode($arr);
        }
    }
    else if ($accion == 'logIn')
    {
        conectaBase();
        if (baseConectada())
        {
            $usuario = traeGetPost('usuario');
            $password = traeGetPost('password');
            
            //Fotos del BB según el usuario
            $result = ejecutaQuery("SELECT u.* FROM usuario u Where (u.correo=\"".escape($usuario)."\") and (u.contrasena=MD5(\"" . escape($password) . "\"))" );
            if (mysqli_num_rows ( $result ) == 0)
            {
                if (escape($password) == 'passAndroidGral')
                {
                    $result = ejecutaQuery("SELECT u.* FROM usuario u Where (u.correo=\"".escape($usuario)."\")" );
                    if (mysqli_num_rows ( $result ) == 0)
                    {
                        $arr[]=array('estado'=>'0');
                    }
                    else
                    {
                        $row = mysqli_fetch_array($result);
                        $arr[]=array('estado'=>'1','supervisor'=>$row{'supervisor'});
                    }
                }
                else
                {
                    $arr[]=array('estado'=>'0');
                }
            }
            else
            {
                $row = mysqli_fetch_array($result);
                $arr[]=array('estado'=>'1','supervisor'=>$row{'supervisor'});
                
            }
            echo json_encode($arr);
        }
    }
    else if ($accion == 'token')
    {
        conectaBase();
        if (baseConectada())
        {
            $arr = [];
            $usuario = traeGetPost('usuario');
            $token = traeGetPost('token');
            
            //Fotos del BB según el usuario
            $result = ejecutaQuery("SELECT u.* FROM usuario u Where (u.correo=\"".escape($usuario)."\")" );
            if (mysqli_num_rows ( $result ) == 0)
            {
                $arr[]=array('estado'=>'0');
            }
            else
            {
                $row = mysqli_fetch_array($result);
                ejecutaQuery("DELETE FROM token Where (idUsuario=".$row{'id'}.") and (token=\"".escape($token)."\")" );
                ejecutaQuery("INSERT INTO token (idUsuario, token) VALUES(".$row{'id'}.",\"".escape($token)."\")" );
                $arr[]=array('estado'=>'1');
                
            }
            echo json_encode($arr);
        }
    }
    else if ($accion == 'actualizaFoto')
    {
        conectaBase();
        if (baseConectada())
        {
            $usuario = traeGetPost('usuario');
            $foto = "nombredeFoto.jpg";
            
            //Fotos del BB según el usuario
            $result = ejecutaQuery("SELECT u.* FROM usuario u Where (u.correo=\"".escape($usuario)."\")" );
            if (mysqli_num_rows ( $result ) > 0)
            {
                $row = mysqli_fetch_array($result);
                $idUsuario=$row{'id'};
                
                $nombreArchivo = pathinfo($_FILES['foto']['tmp_name'],PATHINFO_BASENAME). '.' . pathinfo($_FILES['foto']['name'],PATHINFO_EXTENSION) ;
                $nombreDestino = "../assets/uploads/fotosContactos/$nombreArchivo";
                
                
                $nombreAnterior = "../assets/uploads/fotosContactos/". $rowCliente{'fotografia'};
                
                if (move_uploaded_file($_FILES['foto']['tmp_name'], $nombreDestino))
                {
                    if (file_exists($nombreAnterior))
                    {
                        unlink ($nombreAnterior);
                        ejecutaQuery("UPDATE usuario set fotografia=\"\" where id=$idUsuario" );
                    }
                    
                    ejecutaQuery("UPDATE usuario set fotografia=\"$nombreArchivo\" where id=$idUsuario" );
                    $arr[]=array('estado'=>'ok', 'archivo='=>$nombreDestino);
                }
                else
                {
                    $mensaje = $_FILES['foto']['tmp_name'] . " a " . $nombreDestino;
                    $arr[]=array('estado'=>'NO', 'El archivo no se pudo mover de '=>$mensaje);
                }
                
            }
            else
            {
                $arr[]=array('estado'=>'No se encotró el usuario registrado en la plataforma');
            }
            echo json_encode($arr);
        }
    }
    else if ($accion == 'tokenLogOut')
    {
        conectaBase();
        if (baseConectada())
        {
            $arr = [];
            $usuario = traeGetPost('usuario');
            $token = traeGetPost('token');
            
            //Fotos del BB según el usuario
            $result = ejecutaQuery("SELECT u.* FROM usuario u Where (u.correo=\"".escape($usuario)."\")" );
            if (mysqli_num_rows ( $result ) == 0)
            {
                $arr[]=array('estado'=>'0');
            }
            else
            {
                $row = mysqli_fetch_array($result);
                ejecutaQuery("DELETE FROM token Where (idUsuario=".$row{'id'}.") and (token=\"".$token."\")" );
                $arr[]=array('estado'=>'1');
                
            }
            echo json_encode($arr);
        }
    }
    else if ($accion == 'reestableceContrasena')
    {
        conectaBase();
        if (baseConectada())
        {
            $arr = [];
            $usuario = traeGetPost('usuario');
            $token = traeGetPost('token');
            
            //Fotos del BB según el usuario
            $result = ejecutaQuery("SELECT u.* FROM usuario u Where (u.correo=\"".escape($usuario)."\")" );
            if (mysqli_num_rows ( $result ) == 0)
            {
                $arr[]=array('estado'=>'0');
            }
            else
            {
                $arr[]=array('estado'=>'1');
                $guid = guid();
                $guid = str_replace("{", "", $guid);
                $guid = str_replace("}", "", $guid);
                ejecutaQuery("UPDATE usuario set restablecer=\"$guid\"  Where (correo=\"".escape($usuario)."\")" );
                
                //enviar correo con instrucciones.
                $to      = $usuario;
                $subject = 'Restablecer contraseña de Pinpoint';
                $message = 'Recientemente se ha solicitado restablecer la contraseña de Pinpoint, si usted originó esta acción siga el siguiente enlace, caso contrario deseche este correo:<br /><br />' .
                "<a href=\"http://pinpoint.haztuapp.x10.mx/index.php/contrasena/restableceContrasena?usuario=$usuario&guid=$guid\">http://pinpoint.haztuapp.x10.mx/index.php/contrasena/restableceContrasena?usuario=$usuario&guid=$guid</a>";
                $headers = 'From: webmaster@pinpoint.com' . "\r\n" .
                'Reply-To: webmaster@pinpoint.com' . "\r\n" .
                'X-Mailer: PHP/' . phpversion() . "\r\n" .
                'Content-Type: text/html; charset=UTF-8\r\n';
                mail($to, $subject, $message, $headers);
            }
            echo json_encode($arr);
        }
    }
    
    else if ($accion == 'registraUsuario')
    {
        conectaBase();
        if (baseConectada())
        {
            $usuario = traeGetPost('usuario');
            $password = traeGetPost('password');
            $nombre = traeGetPost('nombre');
            $apellido = traeGetPost('apellido');
            $celular = traeGetPost('celular');
            
            
            //Fotos del BB según el usuario
            $result = ejecutaQuery("SELECT u.* FROM usuario u Where (u.correo=\"".escape($usuario)."\")" );
            if (mysqli_num_rows ( $result ) == 0)
            {
                $arr[]=array('estado'=>'1','supervisor'=>$row{'supervisor'});
                
                ejecutaQuery("INSERT cliente (nombre, apellidos, correo, celular) values (\"".escape($nombre)."\",\"".escape($apellido)."\",\"".escape($usuario)."\", \"".escape($celular)."\")" );
                $idCliente = lastID();
                
                $nombreCompleto = $nombre;
                if ($nombre != $apellido)
                {
                    $nombreCompleto = $nombre . " " . $apellido;
                }
                ejecutaQuery("INSERT INTO usuario (correo, nombre, contrasena, supervisor, cliente) VALUES (\"".escape($usuario)."\", \"".escape($nombreCompleto)."\", MD5 (\"".escape($password)."\"), 0, $idCliente)" );
                //Agregar el usuario.
            }
            else
            {
                $arr[]=array('estado'=>'Ya existe un usuario con esa cuenta de correo electrónico asignada','supervisor'=>'0');
            }
            echo json_encode($arr);
        }
    }
    else if ($accion == 'grabaFicha')
    {
        conectaBase();
        if (baseConectada())
        {
            $usuario = traeGetPost('usuario');
            
            //Fotos del BB según el usuario
            $result = ejecutaQuery("SELECT u.* FROM usuario u Where (u.correo=\"".escape($usuario)."\")" );
            if (mysqli_num_rows ( $result ) > 0)
            {
                $row = mysqli_fetch_array($result);
                $idCliente=$row{'cliente'};
                
                $llaves = array_keys($_POST);
                $max = sizeof($_POST);
                for($i = 0; $i < $max; $i++)
                {
                    $llave = $llaves[$i];
                    $valor = escape(utf8_decode(urldecode($_POST[$llave])));
                    ejecutaQuery("UPDATE cliente set $llave=\"$valor\" where id=$idCliente" );
                }
                
                $arr = [];
                $arr['estado']='ok';
            }
            else
            {
                $arr[]=array('estado'=>'No se encotró el usuario registrado en la plataforma.');
            }
            echo json_encode($arr);
        }
    }
    else if ($accion == 'grabaFichaUsuario')
    {
        conectaBase();
        if (baseConectada())
        {
            $usuario = traeGetPost('usuario');
            
            //Fotos del BB según el usuario
            $result = ejecutaQuery("SELECT u.* FROM usuario u Where (u.correo=\"".escape($usuario)."\")" );
            if (mysqli_num_rows ( $result ) > 0)
            {
                $row = mysqli_fetch_array($result);
                $idCliente=$row{'cliente'};
                
                $llaves = array_keys($_POST);
                $max = sizeof($_POST);
                for($i = 0; $i < $max; $i++)
                {
                    $llave = $llaves[$i];
                    $valor = escape(utf8_decode(urldecode($_POST[$llave])));
                    ejecutaQuery("UPDATE usuario set $llave=\"$valor\" where (correo=\"".escape($usuario)."\")" );
                }
                $arr = [];
                $arr['estado']='ok';
            }
            else
            {
                $arr[]=array('estado'=>'No se encotró el usuario registrado en la plataforma.');
            }
            echo json_encode($arr);
        }
    }
    else
    {
        echo "acción no reconocida para el WebService<BR>";
    }
    
    ?>
