<?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 listaMensajes()
    {
        conectaBase();
        if (baseConectada())
        {
            $arr = [];
            $usuario = traeGetPost('usuario');
            
            //Fotos del BB según el usuario
            $result = ejecutaQuery("SELECT u.* FROM usuario u Where (u.correo=\"".escape($usuario)."\") and (u.supervisor<>1)" );
            if (mysqli_num_rows ( $result ) > 0)
            {
                $rowDestino = mysqli_fetch_array($result);
                $idDestino = $rowDestino{'id'};
                
                //$qry = "SELECT c.*, u.correo as correoOrigen, cont.nombre as nombreOrigen, ud.correo as correoDestino, contd.nombre as nombreDestino FROM chat c join usuario u on u.id=c.usuarioOrigen LEFT JOIN contacto cont on cont.id=u.contacto join usuario ud on ud.id=c.usuarioDestino LEFT JOIN contacto contd on contd.id=ud.contacto WHERE (((usuarioDestino=$idOrigen) and (leido=0)) or ((usuarioOrigen=$idOrigen) and (leidoOrigen=0)))";
                
                $qry = "SELECT c.*, u.id as usuarioOrigen, u.correo as correoOrigen, u.nombre as nombreOrigen, dest.id as usuarioDestino, dest.correo as correoDestino, dest.nombre as nombreDestino FROM chat c join usuario u on u.id=c.from join usuario dest on dest.id=c.to WHERE ((c.to=$idDestino) and (recd=0))";
                
                $resultChat = ejecutaQuery($qry);
                while ($row = mysqli_fetch_array($resultChat)) {
                    $mensaje = $row{'message'};
                    //$iso88591_1 = htmlentities($mensaje,ENT_COMPAT, "UTF-8");
                    $iso88591_1 = mb_convert_encoding($mensaje, 'HTML-ENTITIES', 'UTF-8');
                    
                    $str = unicode_escape_sequences ($mensaje);
                    
                    $str = json_encode ($mensaje);
                    $str = substr($str,1);
                    $str = substr($str,0,strlen($str)-1);
                    
                    $arr[]=array('fecha'=>$row{'sent'},
                                 'usuarioOrigen'=>utf8_encode($row{'usuarioOrigen'}),
                                 'usuarioOrigenCorreo'=>utf8_encode($row{'correoOrigen'}),
                                 'usuarioOrigenNombre'=>utf8_encode($row{'nombreOrigen'}),
                                 'usuarioDestino'=>utf8_encode($row{'usuarioDestino'}),
                                 'usuarioDestinoCorreo'=>utf8_encode($row{'correoDestino'}),
                                 'usuarioDestinoNombre'=>utf8_encode($row{'nombreDestino'}),
                                 'leido'=>$row{'recd'},
                                 'mensaje'=>$str
                                 //'mensaje'=>utf8_decode($row{'message'})
                                 //'mensaje'=>utf8_decode($row{'message'})
                                 //'mensaje'=>htmlspecialchars($mensaje, ENT_QUOTES)
                                 );
                }
                //Marcar como leidos los mensajes.
                ejecutaQuery("UPDATE chat set recd=1 WHERE chat.to=$idDestino and chat.recd=0" );
            }
            echo json_encode($arr);
        }
    }

    function traeCategoria ($categoria)
    {
        $result = ejecutaQuery("SELECT * FROM categoria WHERE tipo='$categoria'");
        $arrTipo = [];
        while ($row = mysqli_fetch_array($result)) {
            
            $arrServicio = [];
            $resultS = ejecutaQuery("SELECT s.* FROM tipoServicio s join tipoServicioXcategoria sXc on s.id=sXc.idTipoServicio WHERE s.activo=1 and sXc.idCategoria=".$row{'id'});
            while ($rowS = mysqli_fetch_array($resultS)) {
                $servicio = array('id'=>$rowS{'id'},
                                  'activoActual'=>$rowS{'activoActual'},
                                  'nombre'=>utf8_encode($rowS{'nombre'}),
                                  'descripcion'=>utf8_encode($rowS{'descripcion'}),
                                  'costo'=>$rowS{'costo'},
                                  'costoMaximo'=>$rowS{'costoMaximo'},
                                  'seRequiereCotizar'=>$rowS{'seRequiereCotizar'},
                                  'imagen'=>dirname(parse_url ( $_SERVER['REQUEST_URI'], PHP_URL_PATH)) . "/../assets/uploads/fotosActividades/".$rowS{'imagen'});
                $arrServicio[]=$servicio;
            }
            
            $foto = array('id'=>$row{'id'},
                          'nombre'=>utf8_encode($row{'nombre'}),
                          'descripcion'=>utf8_encode($row{'descripcion'}),
                          'imagen'=>dirname(parse_url ( $_SERVER['REQUEST_URI'], PHP_URL_PATH)) . "/../assets/uploads/fotosActividades/".$row{'imagen'},
                          'servicios'=>$arrServicio);
            
            
            
            $arrTipo[]=$foto;
        }
        return $arrTipo;
    }
    
    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);
                             }
                             });
        
        return $array;
    }
    
    $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))
        {
            $result = ejecutaQuery("SELECT u.* FROM usuario u Where (u.correo=\"".escape($usuario)."\")" );
            $resultadoFinal['usuario'] = utf8_converter(recordSetToArray($result));
            
            $result = ejecutaQuery("SELECT t.*, s.nombre, s.imagen, s.descripcion FROM venta t left join contacto m on t.contacto=m.id join tipoServicio s on t.servicio = s.id Where (t.usuario=".$rowEmpleado{'id'}.")" );
            $resultadoFinal['venta'] = utf8_converter(recordSetToArray($result));

            $result = ejecutaQuery("SELECT t.*, s.nombre, s.imagen, s.descripcion FROM venta t left join contacto m on t.contacto=m.id join tipoServicio s on t.servicio = s.id Where (t.estado='ABIERTO') and (t.usuario=".$rowEmpleado{'id'}.")" );
            $resultadoFinal['ventaAbierta'] = utf8_converter(recordSetToArray($result));

            $result = ejecutaQuery("SELECT t.*, s.nombre, s.imagen, s.descripcion FROM venta t left join contacto m on t.contacto=m.id join tipoServicio s on t.servicio = s.id Where (t.estado='PAGO_SOLICITADO') and (t.usuario=".$rowEmpleado{'id'}.")" );
            $arreglo = recordSetToArray($result);
            foreach ($arreglo as &$venta) {
                $venta['costo'] = '$ ' . $venta['costo'];
            }
            $resultadoFinal['pagoSolicitado'] = utf8_converter($arreglo);
            //$resultadoFinal['pagoSolicitado'] = utf8_converter(recordSetToArray($result));

            $result = ejecutaQuery("SELECT t.*, s.nombre, s.imagen, s.descripcion FROM venta t left join contacto m on t.contacto=m.id join tipoServicio s on t.servicio = s.id Where ((t.estado='PAGADO') or (t.estado='CANCELADO'))and (t.usuario=".$rowEmpleado{'id'}.")" );
            $resultadoFinal['historia'] = utf8_converter(recordSetToArray($result));
            
            
            /*
            $result = ejecutaQuery("SELECT t.* FROM tarjeta t Where (t.idUsuario=".$rowEmpleado{'id'}.")" );
            $resultadoFinal['tarjeta'] = utf8_converter(recordSetToArray($result));
             
            $result = ejecutaQuery("SELECT t.* FROM domicilio t Where (t.idUsuario=".$rowEmpleado{'id'}.")" );
            $resultadoFinal['domicilio'] = utf8_converter(recordSetToArray($result));
            
            $result = ejecutaQuery("SELECT * FROM cuponUsuario t join cupon c on t.idCupon=c.id Where (t.idUsuario=".$rowEmpleado{'id'}.")" );
            $resultadoFinal['cuponUsuario'] = utf8_converter(recordSetToArray($result));
            
            $result = ejecutaQuery("SELECT * FROM tipoServicio" );
            $resultadoFinal['tipoServicio'] = utf8_converter(recordSetToArray($result));
             */
            
            echo json_encode($resultadoFinal);
        }
        else
        {
            echo '[nel]';
        }
        
    }
    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 == 'solicitaServicio')
    {
        //http://appYuda.myh.x10host.com/webService/webService.php?accion=solicitaServicio&usuario=leonardo@consisarh.com.mx&servicio=3
        
        conectaBase();
        if (baseConectada())
        {
            $usuario = traeGetPost('usuario');
            $servicio = traeGetPost('servicio');
            $calle = utf8_decode(urldecode(traeGetPost('calle')));
            $numeroExterior = utf8_decode(urldecode(traeGetPost('numero')));
            $colonia = utf8_decode(urldecode(traeGetPost('colonia')));
            $referencias = utf8_decode(urldecode(traeGetPost('referencia')));
            $comentarioInicial = utf8_decode(urldecode(traeGetPost('comentarios')));
            
            //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'};
                
                //calle=%@&numero=%@&colonia=%@&referencia=%@&comentarios=
                
                ejecutaQuery("INSERT INTO venta (fecha, usuario, servicio, calle, numeroExterior, colonia, referencias, comentarioInicial, estado) VALUES (CURDATE(), ".$idUsuario.", ".escape($servicio).", \"". escape($calle)."\", \"". escape($numeroExterior)."\", \"". escape($colonia)."\", \"". escape($referencias)."\", \"". escape($comentarioInicial)."\", \"ABIERTO\")" );
                
                
                //Se envia mensaje a los Administradores
                $mensaje = "Nuevo servicio solicitado. Alguien necesita Appyuda.";
                $idOrigen = $idUsuario;
                $idDestino = 0;
                
                $resultAdmins = ejecutaQuery("SELECT u.* FROM usuario u Where supervisor=1" );
                while ($row = mysqli_fetch_array($resultAdmins)) {
                    $idDestino = $row{'id'};
                    ejecutaQuery("INSERT INTO chat(chat.from, chat.to, message, sent, recd) VALUES ($idOrigen, $idDestino, \"" . escape($mensaje) . "\", NOW(), 0)");
                    
                    //Enviar mensaje push.
                    $sqlToken = "SELECT t.* FROM usuario u JOIN token t ON u.id=t.idUsuario WHERE u.id=$idDestino";
                    $queryToken = ejecutaQuery($sqlToken);
                    $token = "";
                    while ($rowToken = mysqli_fetch_array($queryToken)) {
                        if ($token != "")
                            $token = $token . ",";
                        $token = $token . $rowToken['token'];
                    }
                    if ($token != "")
                    {
                        $x = enviaPush($token, $mensaje, "1");
                        //echo "se envio ". $token . " " . $mensaje ;
                    }
                    else
                    {
                        //echo "no se encontró token";
                    }
                }
                $arr[]=array('estado'=>'ok');
            }
            else
            {
                $arr[]=array('estado'=>'No se encotró el usuario registrado en la plataforma');
            }
            echo json_encode($arr);
        }
    }
    else if ($accion == 'pagaServicio')
    {
        //http://appYuda.myh.x10host.com/webService/webService.php?accion=solicitaServicio&usuario=leonardo@consisarh.com.mx&servicio=3
        
        conectaBase();
        if (baseConectada())
        {
            $usuario = traeGetPost('usuario');
            $servicio = traeGetPost('servicio');
            $rating = traeGetPost ('rating');
            $comentario = utf8_decode(urldecode(traeGetPost ('comentario')));
            $tipoPago = traeGetPost ('tipoPago');
            $token= traeGetPost ('token');
            
            //Fotos del BB según el usuario
            $result  = ejecutaQuery("SELECT u.* FROM usuario u Where (u.correo=\"".escape($usuario)."\")" );
            $resultV = ejecutaQuery("SELECT * FROM venta Where id=".$servicio);
            if ((mysqli_num_rows ( $result ) > 0) && (mysqli_num_rows ($resultV ) > 0))
            {
                $row = mysqli_fetch_array($result);
                $rowV = mysqli_fetch_array($resultV);
                $idUsuario=$row{'id'};
                
                //calle=%@&numero=%@&colonia=%@&referencia=%@&comentarios=
                
                $valido = false;
                $error = "";
                if ($tipoPago == 'tarjeta')
                {
                    //SandBox
                    //Conekta::setApiKey("key_NNhsZKe9MaU32aLaVQVqorw");

                    //produccion
                    Conekta::setApiKey("key_VSV5xMkT8yMHo6q1NGyhAMw");
                    
                    try {
                        $charge = Conekta_Charge::create(array(
                                                               "amount"=> ($rowV{'costo'} * 100),
                                                               "currency"=> "MXN",
                                                               "description"=> "AppYuda",
                                                               "reference_id"=> "AppYuda-".$servicio,
                                                               "card"=> $token,
                                                               'details'=> array(
                                                                                 'email'=>$usuario,
                                                                                 'line_items'=> array(
                                                                                                      array(
                                                                                                            'name'=>'Servicio AppYuda-'.$servicio,
                                                                                                            //'sku'=>'cohb_s1',
                                                                                                            'unit_price'=> ($rowV{'costo'} * 100),
                                                                                                            'description'=>'Servicio AppYuda',
                                                                                                            'quantity'=> 1
                                                                                                            )
                                                                                                      )
                                                                                 )
                                                                                                      
                                                               )
                                                         );
                        $valido = true;
                        $error = '' . $charge;
                    } catch (Conekta_Error $e) {
                        $error = 'error ' . $e->getMessage();
                    }
                }
                else if ($tipoPago == 'efectivo')
                {
                    $valido = true;
                }
                else
                {
                    $error = "No se ha reconocido el tipo de pago " . $tipoPago;
                }
                
                if ($valido)
                {
                    ejecutaQuery("UPDATE venta set ESTADO=\"PAGADO\", calificacionRecibida=" . $rating . ", comentarioRecibido=\"" . escape($comentario) . "\", respuestaConekta=CONCAT(respuestaConekta,\"" . escape($error) . "\") WHERE id=".$servicio);
                    try
                    {
                        $arr[]=array('estado'=>'ok','respuesta'=>$error);
                    }
                    catch (Exception $e)
                    {
                        $errMsg = $e->getMessage();
                        $arr[]=array('estado'=>'ok','respuesta'=>$errMsg);
                    }
                }
                else
                {
                    $arr[]=array('estado'=>$error);
                }
            }
            else
            {
                $arr[]=array('estado'=>'No se encotró el usuario registrado en la plataforma');
            }
            echo json_encode($arr);
            //echo '[]';
        }
    }
    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 == 'traeCategorias')
    {
        conectaBase();
        if (baseConectada())
        {
            $arr = [];
            $arr[] = array ('tipo'=>'HOGAR',
                            'categorias'=>traeCategoria ("HOGAR"));
            $arr[] = array ('tipo'=>'URBANO',
                             'categorias'=>traeCategoria ("URBANO"));
            $arr[] = array ('tipo'=>'PROFESIONAL',
                            'categorias'=>traeCategoria ("PROFESIONAL"));
            
            echo json_encode($arr);
        }
        else echo "no se conecto";
    }
    else if ($accion == 'traeTelefonosEmergencia')
    {
        $result = ejecutaQuery("SELECT * FROM emergencias");
        $arrTipo = [];
        while ($row = mysqli_fetch_array($result)) {
            $servicio = array('nombre'=>utf8_encode($row{'nombre'}),
                              'telefono'=>utf8_encode($row{'telefono'}));
            $arrTipo[]=$servicio;
        }
        echo json_encode($arrTipo);
    }
    else if ($accion == 'traeAseguradoras')
    {
        $result = ejecutaQuery("SELECT * FROM aseguradoras");
        $arrTipo = [];
        while ($row = mysqli_fetch_array($result)) {
            $servicio = array('nombre'=>utf8_encode($row{'nombre'}),
                              'telefono'=>utf8_encode($row{'telefono'}));
            $arrTipo[]=$servicio;
        }
        echo json_encode($arrTipo);
    }
    else if ($accion == 'checkIn')
    {
        conectaBase();
        if (baseConectada())
        {
            $usuario = traeGetPost('usuario');
            
            //Fotos del BB según el usuario
            $result = ejecutaQuery("SELECT b.* FROM bebes b join contacto c on ((c.id=b.mama) or (c.id=b.papa)) join usuario u on u.contacto=c.id Where (u.correo=\"".escape($usuario)."\")");
            $arr = [];
            if (mysqli_num_rows ( $result ) == 0)
            {
                $arr[]=array('idBebe'=>-1,'accion'=>'noEncontrado');
            }
            else
            {
                while ($row = mysqli_fetch_array($result)) {
                    //Para cada bb de ese papa hay que hacer checkIn.
                    $checks = ejecutaQuery("SELECT * FROM `check` Where bebe={$row{'id'}} and fecha=CURDATE()");
                    
                    //Grabar el CheckIn
                    if (mysqli_num_rows ( $checks ) == 0)
                    {
                        $res = ejecutaQuery("INSERT INTO `check` (bebe, fecha, checkIn) VALUES ({$row{'id'}}, CURDATE(), DATE_ADD(NOW(), INTERVAL -1 HOUR))");
                        $arr[]=array('idBebe'=>$row{'id'},'accion'=>'checkIn');
                    }
                    else
                    {
                        $res = ejecutaQuery("UPDATE `check` SET checkIn=DATE_ADD(NOW(), INTERVAL -1 HOUR) where bebe={$row{'id'}} and fecha=curdate()");
                        $arr[]=array('idBebe'=>$row{'id'},'accion'=>'Duplicado');
                    }
                    //Se establece la última toma si viene en los parámetros
                    $ultimaToma = traeGetPost ('ultimaToma');
                    if (($ultimaToma) && ($ultimaToma!=''))
                    {
                        $res = ejecutaQuery("UPDATE `check` SET ultimaToma=\"$ultimaToma\" where bebe={$row{'id'}} and fecha=curdate()");
                    }
                    
                    //Se establece los comentarios si viene en los parámetros
                    $ultimaToma = traeGetPost ('comentarios');
                    if (($ultimaToma) && ($ultimaToma!=''))
                    {
                        $res = ejecutaQuery("UPDATE `check` SET comentarios=\"$ultimaToma\" where bebe={$row{'id'}} and fecha=curdate()");
                    }

                    //Mandar el push a administración de checkIn
                    //Se envia mensaje a los Administradores
                    $token = "";
                    $resultAdmins = ejecutaQuery("SELECT u.* FROM usuario u Where supervisor=1 and token <> '' " );
                    while ($rowAdmin = mysqli_fetch_array($resultAdmins)) {
                        if ($token != "")
                            $token = $token . ",";
                        $token = $token . $rowAdmin{'token'};
                    }
                    $resultado = enviaPush($token, 'ChekIn... ya viene ' . $row{'nombre'} . " " . $row{'apellidoPaterno'});                    
                    $arr[]=array('resultado push'=>$resultado);

                }
            }
            echo json_encode($arr);
        }
    }
    else if ($accion == 'checkOut')
    {
        conectaBase();
        if (baseConectada())
        {
            $usuario = traeGetPost('usuario');
            
            //Fotos del BB según el usuario
            $result = ejecutaQuery("SELECT b.* FROM bebes b join contacto c on ((c.id=b.mama) or (c.id=b.papa)) join usuario u on u.contacto=c.id Where (u.correo=\"".escape($usuario)."\")");
            if (mysqli_num_rows ( $result ) == 0)
            {
                $arr[]=array('idBebe'=>-1,'accion'=>'noEncontrado');
            }
            else
            {
                while ($row = mysqli_fetch_array($result)) {
                    //Para cada bb de ese papa hay que hacer checkIn.
                    $checks = ejecutaQuery("SELECT * FROM `check` Where bebe={$row{'id'}} and fecha=CURDATE()");
                    
                    //Grabar el CheckIn
                    if (mysqli_num_rows ( $checks ) == 0)
                    {
                        $res = ejecutaQuery("INSERT INTO `check` (bebe, fecha, checkOut) VALUES ({$row{'id'}}, CURDATE(), DATE_ADD(NOW(), INTERVAL -1 HOUR))");
                        $arr[]=array('idBebe'=>$row{'id'},'accion'=>'checkOut');
                    }
                    else
                    {
                        $res = ejecutaQuery("UPDATE `check` SET checkOut=DATE_ADD(NOW(), INTERVAL -1 HOUR) where bebe={$row{'id'}} and fecha=curdate()");
                        $arr[]=array('idBebe'=>$row{'id'},'accion'=>'Duplicado');
                    }

                    //Mandar el push a administración de checkOut
                    //Se envia mensaje a los Administradores
                    $token = "";
                    $resultAdmins = ejecutaQuery("SELECT u.* FROM usuario u Where supervisor=1 and token <> '' " );
                    while ($rowAdmin = mysqli_fetch_array($resultAdmins)) {
                        if ($token != "")
                            $token = $token . ",";
                        $token = $token . $rowAdmin{'token'};
                    }
                    $resultado = enviaPush($token, 'ChekOut... vienen por ' . $row{'nombre'} . " " . $row{'apellidoPaterno'});
                    $arr[]=array('resultado push'=>$resultado);
                }
            }
            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)
            {
                $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 == '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');
                //enviar correo con instrucciones.                
            }
            echo json_encode($arr);
        }
    }
    
    else if ($accion == 'registraUsuario')
    {
        conectaBase();
        if (baseConectada())
        {
            $usuario = traeGetPost('usuario');
            $password = traeGetPost('password');
            $nombre = traeGetPost('nombre');
            
            
            //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 INTO usuario (correo, nombre, contrasena, supervisor) VALUES (\"".escape($usuario)."\", \"".escape($nombre)."\", MD5 (\"".escape($password)."\"), 0)" );
                //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 == 'chatEnviaMensaje')
    {
        conectaBase();
        if (baseConectada())
        {
            $arr = [];
            $usuario = traeGetPost('usuario');
            $mensaje = traeGetPost('mensaje');
            $destino = traeGetPost('destino');
            
            $mensaje = urldecode($mensaje);
            
            //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
            {
                $rowOrigen = mysqli_fetch_array($result);
                $idOrigen = $rowOrigen{'id'};
                
                $token = "";
                
                if ($destino == "1")
                {
                    //Se envia mensaje a los Administradores
                    $resultAdmins = ejecutaQuery("SELECT u.* FROM usuario u Where supervisor=1" );
                    while ($row = mysqli_fetch_array($resultAdmins)) {
                        //Agregar registros de chat.
                        $idDestino = $row{'id'};
                        ejecutaQuery("INSERT INTO chat(chat.from, chat.to, message, sent, recd) VALUES ($idOrigen, $idDestino, \"" . escape($mensaje) . "\", NOW(), 0)");
                    }
                    
                    //Se envia mensaje a los Administradores
                    $idDestino = 0;
                    $resultAdmins = ejecutaQuery("SELECT u.* FROM usuario u Where supervisor=1" );
                    while ($row = mysqli_fetch_array($resultAdmins)) {
                        $idDestino = $row{'id'};
                        
                        //Enviar mensaje push.
                        $sqlToken = "SELECT t.* FROM usuario u JOIN token t ON u.id=t.idUsuario WHERE u.id=$idDestino";
                        $queryToken = ejecutaQuery($sqlToken);
                        $token = "";
                        while ($rowToken = mysqli_fetch_array($queryToken)) {
                            if ($token != "")
                                $token = $token . ",";
                            $token = $token . $rowToken['token'];
                        }
                        if ($token != "")
                        {
                            $x = enviaPush($token, $mensaje, "1");
                        }
                    }
                }
                else
                {
                    //Es un mensaje que envia el administrador a un usuario
                    ejecutaQuery("INSERT INTO chat(chat.from, chat.to, message, sent, recd) VALUES ($idOrigen, $destino, \"" . escape($mensaje) . "\", NOW(), 0)");
                    /*
                    $resultAdmins = ejecutaQuery("SELECT u.* FROM usuario u Where (token <> '') and (u.correo=\"".escape($destino)."\")" );
                    while ($row = mysqli_fetch_array($resultAdmins)) {
                        if ($token != "")
                            $token = $token . ",";
                        $token = $token . $row{'token'};
                        //Agregar registros de chat.
                        $idDestino = $row{'id'};
                        ejecutaQuery("INSERT INTO chat(fecha, usuarioOrigen, usuarioDestino, leido, mensaje) VALUES (DATE_ADD(NOW(), INTERVAL -1 HOUR),$idOrigen,$idDestino,0," .
                                     "\"" . escape ($mensaje) . "\")" );
                    }
                     */
                    //ejecutaQuery("INSERT INTO chat(fecha, usuarioOrigen, usuarioDestino, leido, mensaje) VALUES (DATE_ADD(NOW(), INTERVAL -1 HOUR),$idOrigen,$idDestino,0," .
                    //             "\"" . escape ($mensaje) . "\")" );
                }
                $arr[]=array('estado'=>'1', 'mensaje'=>$mensaje, 'tokens'=>$token);
            }
            //listaMensajes();
            echo json_encode($arr);
        }
    }
    else if ($accion == 'chatListaMensajes')
    {
        listaMensajes();
    }
    else if ($accion == 'listaUsuarios')
    {
        conectaBase();
        if (baseConectada())
        {
            $arr = [];
            //Fotos del BB según el usuario
            $usuario = traeGetPost('usuario');
            $resultUsuario = ejecutaQuery("SELECT u.* FROM usuario u Where (u.correo=\"".escape($usuario)."\")" );
            if (mysqli_num_rows ( $resultUsuario ) == 0)
            {
            }
            else
            {
                $rowUsuario = mysqli_fetch_array($resultUsuario);
                $result = 0;
                if ($rowUsuario{'supervisor'} == 1)
                {
                    $result = ejecutaQuery("SELECT u.id, u.correo, c.nombre FROM usuario u join contacto c on c.id=u.contacto WHERE (u.token <> '') and (u.token <> '(null)')" );
                }
                else
                {
                    $result = ejecutaQuery("SELECT u.id, u.correo, c.nombre FROM usuario u join contacto c on c.id=u.contacto WHERE (u.supervisor=1) and (u.token <> '') and (u.token <> '(null)')" );
                }
                
                if (mysqli_num_rows ( $result ) > 0)
                {
                    while ($row = mysqli_fetch_array($result)) {
                        $arr[]=array('id'=>$row{'id'},
                                     'nombre'=>utf8_encode($row{'nombre'}),
                                     'correo'=>utf8_encode($row{'correo'}));
                    }
                }
            }
            echo json_encode($arr);
        }
    }
    else if ($accion == 'subeFoto')
    {
        //$uploaddir = './../assets/uploads/fotosMultimedia/';
        $uploaddir = '/home/myhx10ho/public_html/assets/uploads/fotosMultimedia/';
        
        $file = basename($_FILES['userfile']['name']);
        $uploadfile = $uploaddir . $file;
        
        $archivo = $_FILES['userfile']['tmp_name'];
        $archivo = explode ('/', $archivo);
        $archivo = end ($archivo) . '.jpg';
        $nombreTemporal = $uploaddir . $archivo;
        $usuario = traeGetPost('usuario');
        
        echo "Se recibió el archivo $uploadfile como $nombreTemporal con el usuario $usuario<BR>";
        var_dump ($_FILES);
        
        if (move_uploaded_file($_FILES['userfile']['tmp_name'], $nombreTemporal)) {
            //agregar en el catálogo multimedia la foto.
            echo "Ahora la imagen está en $nombreTemporal<BR>";
            ejecutaQuery("INSERT INTO multimedia(fotografia, general) VALUES (\"" . $archivo . "\", 1)" );
        }
        else
        {
            echo "no se pudo mover la imagen a $nombreTemporal<BR>";
        }
    }
    else if ($accion == 'subeVideo')
    {
        //$uploaddir = './../assets/uploads/fotosMultimedia/';
        $uploaddir = '/home/myhx10ho/public_html/assets/uploads/fotosMultimedia/';
        
        $file = basename($_FILES['userfile']['name']);
        $uploadfile = $uploaddir . $file;
        
        $archivo = $_FILES['userfile']['tmp_name'];
        $archivo = explode ('/', $archivo);
        $archivo = end ($archivo) . '.mov';
        $nombreTemporal = $uploaddir . $archivo;
        $usuario = traeGetPost('usuario');
        
        echo "Se recibió el archivo $uploadfile como $nombreTemporal con el usuario $usuario<BR>";
        var_dump ($_FILES);
        
        if (move_uploaded_file($_FILES['userfile']['tmp_name'], $nombreTemporal)) {
            //agregar en el catálogo multimedia la foto.
            echo "Ahora la imagen está en $nombreTemporal<BR>";
            ejecutaQuery("INSERT INTO multimedia(fotografia, general) VALUES (\"" . $archivo . "\", 1)" );
        }
        else
        {
            echo "no se pudo mover la imagen a $nombreTemporal<BR>";
        }
    }
    else
    {
        echo "acción no reconocida para el WebService<BR>";
    }
    
    ?>