/// <summary>
        /// Obtiene el token del usuario.
        /// </summary>
        public void GetToken()
        {
            // Obtiene token guardado en local
            token = UserDataDefaults.GetToken();

            // Comprueba
            if (string.IsNullOrWhiteSpace(token))
            {
                GetTokenFromServer();
            }
        }
        /// <summary>
        /// Obtiene el token del servidor.
        /// </summary>
        public void GetTokenFromServer()
        {
            // Obtengo datos usuario
            string[] userData = UserDataDefaults.GetLoginData();

            // Preparo conexion
            if (userData != null)
            {
                // URI
                URIData uri = new URIData(uris[(int)URIS.GetToken].Url, uris[(int)URIS.GetToken].Method, uris[(int)URIS.GetToken].Accept, uris[(int)URIS.GetToken].ContentType, uris[(int)URIS.GetToken].Auth);

                // Action
                Action <bool, string> complete = null;

                // Inicializo
                token = "";

                // Añado datos
                uri.AddData(userData);

                // Action
                complete += (arg1, arg2) =>
                {
                    // Compruebo conexion
                    if (arg1)
                    {
                        // Compruebo datos
                        if (!string.IsNullOrWhiteSpace(arg2))
                        {
                            // Guardo token
                            token = arg2;

                            // Guardo token en local
                            UserDataDefaults.SetToken(arg2);
                        }
                    }
                    lock (l)
                    {
                        Monitor.Pulse(l);
                    }
                };

                // Obtengo datos del servidor
                Connection(uri, complete);

                // Espero a que finalice
                lock (l)
                {
                    Monitor.Wait(l);
                }
            }
        }
Beispiel #3
0
        /// <summary>
        /// Obtiene las tareas de la base de datos.
        /// </summary>
        /// <returns>Tareas.</returns>
        public Tarea[] GetTareas()
        {
            // Tareas
            List <Tarea> tareas = new List <Tarea>();

            // Obtengo preferencias
            Preferencias p = UserDataDefaults.GetPreferences();

            // Consulta
            string c         = "SELECT * FROM tarea";
            bool   flagWhere = false;

            // Mostrar
            switch (p.Mostrar)
            {
            case 1:     // Realizadas
                c        += " WHERE EXISTS(SELECT NULL FROM tarea_realizada WHERE ID_TAREA = tarea.ID)";
                flagWhere = true;
                break;

            case 2:     // Sin realizar
                c        += " WHERE NOT EXISTS(SELECT NULL FROM tarea_realizada WHERE ID_TAREA = tarea.ID)";
                flagWhere = true;
                break;
            }

            // Tipo
            switch (p.Tipo)
            {
            case 1:     // Urgente
                if (flagWhere)
                {
                    c += " AND EXISTS(SELECT TRUE FROM tarea WHERE URGENTE = 1 OR OP2 = 1)";
                }
                else
                {
                    c += " WHERE EXISTS(SELECT TRUE FROM tarea WHERE URGENTE = 1 OR OP2 = 1)";
                }
                break;

            case 2:     // Normal
                if (flagWhere)
                {
                    c += " AND EXISTS(SELECT TRUE FROM tarea WHERE URGENTE = 0 AND OP2 = 0)";
                }
                else
                {
                    c += " WHERE EXISTS(SELECT TRUE FROM tarea WHERE URGENTE = 0 AND OP2 = 0)";
                }
                break;
            }

            // Orden
            c += " ORDER BY CREACION " + (p.Orden == 0 ? "ASC;" : "DESC;");

            // Conexion
            try
            {
                // Bloqueo
                lock (l)
                {
                    // Abro conexion
                    connection.Open();

                    // Crea consulta
                    using (SqliteCommand cmd = connection.CreateCommand())
                    {
                        cmd.CommandText = c;
                        cmd.CommandType = CommandType.Text;

                        // Realiza consulta
                        using (SqliteDataReader reader = cmd.ExecuteReader())
                        {
                            // Lee datos
                            while (reader.Read())
                            {
                                tareas.Add(new Tarea
                                {
                                    ID_Tarea = (int)reader[0],
                                    Cliente  = new Cliente {
                                        ID_Cliente = (int)reader[1]
                                    },
                                    Tipo      = (int)reader[2] == 1,
                                    Direccion = new Direccion {
                                        ID_Direccion = (int)reader[3]
                                    },
                                    Urgente        = (int)reader[4] == 1,
                                    OP2            = (int)reader[5] == 1,
                                    Notas          = (string)reader[6],
                                    Fecha_creacion = DatetimeToTimestamp((DateTime)reader[7])
                                });
                            }
                        }
                    }
                }
            }
            catch (Exception)
            {
                return(null);
            }

            // Cierro conexion
            connection.Close();

            // Devuelvo tareas
            return(tareas.Count == 0 ? null : tareas.ToArray());
        }