Example #1
0
        private void btnCopiarNotasMax2Notas_Clicked(object sender, EventArgs e)
        {
            // Copiar las notas de la tabla NotasMax a la normal (Notas).
            var    id = UsuarioSQL.UsuarioLogin.ID;
            string sel;

            if (chkArchivadas.IsToggled && chkEliminadas.IsToggled)
            {
                sel = "Archivada = 1 AND Eliminada = 1";
            }
            else if (chkArchivadas.IsToggled)
            {
                sel = "Archivada = 1 AND Eliminada = 0";
            }
            else if (chkEliminadas.IsToggled)
            {
                sel = "Archivada = 0 AND Eliminada = 1";
            }
            else
            {
                sel = "Archivada = 0 AND Eliminada = 0";
            }
            var col = NotaSQL.CopiarNotasMax2Notas2048(id, sel);

            if (col.StartsWith("ERROR") == false)
            {
                LabelError.BackgroundColor = Color.Green;
            }
            LabelError.Text      = col;
            LabelError.IsVisible = true;
        }
Example #2
0
        private void AsignarBúsqueda()
        {
            // Solo si hay texto en buscar
            if (txtBuscar.Text.Any() || txtBuscarGrupo.Text.Any())
            {
                List <NotaSQL> notas;
                if (App.UsarNotasLocal)
                {
                    notas = App.Database.BuscarNotas(txtBuscar.Text, txtBuscarGrupo.Text);
                }
                else
                {
                    notas = NotaSQL.NotasBuscar(UsuarioSQL.UsuarioLogin.ID, txtBuscar.Text, txtBuscarGrupo.Text,
                                                chkFavorita.IsToggled, chkArchivada.IsToggled,
                                                chkEliminada.IsToggled, chkNotificar.IsToggled);
                }

                listView.ItemsSource = notas;
                var plural = notas.Count() == 1 ? "" : "s";
                LabelInfo.Text = $"Hallada{plural} {notas.Count()} nota{plural}.";
            }
            else
            {
                listView.ItemsSource = null;
                LabelInfo.Text       = "No se ha indicado nada que buscar.";
                txtBuscar.Focus();
            }
        }
Example #3
0
        private void MostrarNotasSincronizadas()
        {
            if (UsuarioSQL.UsuarioLogin.ID > 0 && UsuarioSQL.UsuarioLogin.ID < App.MaxIDUsuario)
            {
                conUsuarioRemoto = true;
            }
            else
            {
                conUsuarioRemoto = false;
            }

            // Esto es lo que hacía antes.
            //CopiarTodasLocal2Remoto();

            colLocalNoSinc = App.Database.NotasNoSincronizadas();
            var localNoSinc = colLocalNoSinc.Count();

            LabelLocalNoSinc.Text = localNoSinc.ToString();
            if (conUsuarioRemoto)
            {
                colRemotaNoSinc = NotaSQL.NotasNoSincronizadas(UsuarioSQL.UsuarioLogin.ID);
            }
            else
            {
                colRemotaNoSinc      = new List <NotaSQL>();
                LabelError.Text      = "No hay usuario remoto logueado.";
                LabelError.IsVisible = true;
            }
            var remotaNoSinc = colRemotaNoSinc.Count();

            LabelRemotaNoSinc.Text = remotaNoSinc.ToString();
        }
Example #4
0
        private void ContentPage_Appearing(object sender, EventArgs e)
        {
            LabelStatus.Text    = App.StatusInfo;
            btnInicio.IsVisible = (DeviceInfo.Platform == DevicePlatform.UWP);

            var id = UsuarioSQL.UsuarioLogin.ID;

            LabelNotas2048.Text = NotaSQL.CountNotas2048(id).ToString("#,##0");
            LabelNotasMax.Text  = NotaSQL.CountNotasMax(id).ToString("#,##0");
        }
Example #5
0
        async private void btnSincRemoto_Clicked(object sender, EventArgs e)
        {
            // Sinconizar las notas no sincronizadas de la base remota con la local.
            if (colRemotaNoSinc is null || colRemotaNoSinc.Count() == 0)
            {
                LabelError.Text      = "O no hay conexión a la base remota o no hay notas que sincronizar.";
                LabelError.IsVisible = true;
                return;
            }
            var total = 0;

            foreach (var nota in colRemotaNoSinc)
            {
                var note = new Nota();

                // comprobar que la nota remota no tenga asignado el ID de la nota local
                if (nota.idNota != 0)
                {
                    note = await App.Database.GetNoteAsync(nota.idNota);
                }
                if (note.ID == 0)
                {
                    note = new Nota
                    {
                        Archivada    = nota.Archivada,
                        Eliminada    = nota.Eliminada,
                        Favorita     = nota.Favorita,
                        Grupo        = nota.Grupo,
                        Modificada   = nota.Modificada,
                        Notificar    = nota.Notificar,
                        Sincronizada = true,
                        Texto        = nota.Texto,
                        idNota       = nota.ID
                    };
                }
                await App.Database.SaveNoteAsync(note);

                nota.Sincronizada = true;
                nota.idNota       = note.ID;
                NotaSQL.GuardarNota(nota);

                total++;
            }
            var plural = total == 1 ? "" : "s";

            LabelError.Text            = $"Se han sicronizado {total} nota{plural} de la base remota en la base local.";
            LabelError.BackgroundColor = Color.Green;
            LabelError.IsVisible       = true;

            MostrarNotasSincronizadas();
        }
Example #6
0
        public MainMenu()
        {
            InitializeComponent();
            Current = this;


            // si se deben mostrar las notas a notificar
            if (App.Notificar)
            {
                // Comprobar si hay notas a notificar
                var colNotificar = NotaSQL.Buscar(UsuarioSQL.UsuarioLogin.ID, "Notificar = 1 AND Eliminada = 0");
                if (colNotificar.Count() != 0)
                {
                    // Mostrar la ventana de las notas marcadas para notificar
                    Navigation.PushAsync(new NotasMostrar(NotasDatosMostrar.Notificar));
                }
            }
            MyMenu();
        }
Example #7
0
        async private void btnResetSinc_Clicked(object sender, EventArgs e)
        {
            var colLocalSinc = App.Database.NotasSincronizadas();

            LabelError.Text            = $"Notas sincronizadas: locales: {colLocalSinc.Count()}";
            LabelError.BackgroundColor = Color.Green;
            List <NotaSQL> colRemotaSinc = new List <NotaSQL>();

            if (conUsuarioRemoto)
            {
                colRemotaSinc    = NotaSQL.NotasSincronizadas(UsuarioSQL.UsuarioLogin.ID);
                LabelError.Text += $", remotas: {colRemotaSinc.Count()}.";
            }
            else
            {
                LabelError.Text           += ". No hay usuario logueado, por tanto, no se resetean las notas remotas.";
                LabelError.BackgroundColor = Color.Red;
            }
            LabelError.Text     += "\n\rSincronizando...";
            LabelError.IsVisible = true;

            int tLocal = 0, tRemoto = 0;

            for (var i = 0; i < colLocalSinc.Count; i++)
            {
                tLocal++;
                colLocalSinc[i].Sincronizada = false;
                colLocalSinc[i].idNota       = 0;
                await App.Database.SaveNoteAsync(colLocalSinc[i]);
            }
            for (var i = 0; i < colRemotaSinc.Count; i++)
            {
                tRemoto++;
                colRemotaSinc[i].Sincronizada = false;
                colRemotaSinc[i].idNota       = 0;
                NotaSQL.GuardarNota(colRemotaSinc[i]);
            }
            LabelError.Text            = $"Marcadas como no sincronizadas: {tLocal} {tLocal.Plural("local", true)} y {tRemoto} {tRemoto.Plural("remota")}.";
            LabelError.BackgroundColor = Color.Green;
            LabelError.IsVisible       = true;

            MostrarNotasSincronizadas();
        }
Example #8
0
        async private void ContentPage_Appearing(object sender, EventArgs e)
        {
            LabelStatus.Text = App.StatusInfo;

            if (UsuarioSQL.UsuarioLogin is null || UsuarioSQL.UsuarioLogin.ID == 0 || UsuarioSQL.UsuarioLogin.Email == "prueba")
            {
                await Navigation.PushAsync(new Login(Current));

                return;
            }
            // Solo las notas que no estén archivadas ni eliminadas
            if (App.UsarNotasLocal)
            {
                colNotas = App.Database.Notas(App.Database.NotasUsuarioAsync(archivadas: false, eliminadas: false));
            }
            else
            {
                colNotas = NotaSQL.NotasUsuario(UsuarioSQL.UsuarioLogin.ID, archivadas: false, eliminadas: false);
            }

            listView.ItemsSource = colNotas;
            TituloNotas();
        }
Example #9
0
        async private void ContentPage_Appearing(object sender, EventArgs e)
        {
            LabelStatus.Text = App.StatusInfo;

            if (UsuarioSQL.UsuarioLogin is null || UsuarioSQL.UsuarioLogin.ID == 0 || UsuarioSQL.UsuarioLogin.Email == "prueba")
            {
                await Navigation.PushAsync(new Login(this));

                return;
            }
            var sDatos = "archivada";

            switch (DatosMostrar)
            {
            case NotasDatosMostrar.Archivadas:
                sDatos = "archivada";

                // Solo las notas archivadas y no eliminadas
                if (App.UsarNotasLocal)
                {
                    colNotas = App.Database.NotasArchivadas();
                }
                else
                {
                    colNotas = NotaSQL.NotasUsuario(UsuarioSQL.UsuarioLogin.ID, archivadas: true);
                }

                break;

            case NotasDatosMostrar.Eliminadas:
                sDatos = "eliminada";

                // Solo las notas eliminadas
                if (App.UsarNotasLocal)
                {
                    colNotas = App.Database.NotasEliminadas();
                }
                else
                {
                    colNotas = NotaSQL.NotasUsuario(UsuarioSQL.UsuarioLogin.ID, eliminadas: true);
                }

                break;

            case NotasDatosMostrar.Favoritas:
                sDatos = "favorita";

                // Solo las notas favoritas
                if (App.UsarNotasLocal)
                {
                    colNotas = App.Database.NotasFavoritas();
                }
                else
                {
                    colNotas = NotaSQL.NotasFavoritas(UsuarioSQL.UsuarioLogin.ID);
                }

                break;

            case NotasDatosMostrar.Notificar:
                sDatos = "a notificar.";

                // Las notas a notificar que no estén eliminadas
                if (App.UsarNotasLocal)
                {
                    colNotas = App.Database.NotasNotificar();
                }
                else
                {
                    colNotas = NotaSQL.Buscar(UsuarioSQL.UsuarioLogin.ID, "Notificar = 1 AND Eliminada = 0");
                }

                break;

            case NotasDatosMostrar.Local:
                sDatos = "de la base local.";

                colNotas = App.Database.NotasTodas();
                break;

            default:
                break;
            }
            listView.ItemsSource = colNotas;

            var plural  = colNotas.Count() == 1 ? "" : "s";
            var plural2 = plural + ".";

            if (sDatos.EndsWith("."))
            {
                plural2 = "";
            }

            //LabelInfo.Text = $"{UsuarioSQL.UsuarioLogin.Email} con {colNotas.Count()} nota{plural} archivada{plural}.";
            LabelInfo.Text = $"{UsuarioSQL.UsuarioLogin.Email} con {colNotas.Count()} nota{plural} {sDatos}{plural2}";
        }
Example #10
0
        async void OnSaveButtonClicked(object sender, EventArgs e)
        {
            var nota = (NotaSQL)BindingContext;

            // no guardar notas en blanco
            if (string.IsNullOrEmpty(nota.Texto))
            {
                await Navigation.PopAsync();

                return;
            }

            nota.Modificada = DateTime.UtcNow;
            nota.Archivada  = chkArchivada.IsToggled;
            nota.Favorita   = chkFavorita.IsToggled;
            nota.Eliminada  = chkEliminada.IsToggled;
            nota.Notificar  = chkNotificar.IsToggled;
            nota.Grupo      = txtGrupo.Text;

            // Guardar el último grupo usado
            App.UltimoGrupo = nota.Grupo;

            var note = nota.ComoNotaLocal();

            if (App.UsarNotasLocal || DatosMostrar == NotasDatosMostrar.Local)
            {
                note.ID = nota.ID;
                await App.Database.SaveNoteAsync(note);
            }
            else
            {
                NotaSQL.GuardarNota(nota);

                // Guardar los datos del usuario
                UsuarioSQL.UsuarioLogin.UltimoAcceso    = DateTime.UtcNow;
                UsuarioSQL.UsuarioLogin.VersionPrograma = $"{App.AppName} {App.AppVersion}";
                UsuarioSQL.GuardarUsuario(UsuarioSQL.UsuarioLogin);
            }

            //
            // Por comprobar
            //

            // Si la nota no es nueva, sincronizar el contenido

            // Si la nota es nueva, crear una nota en la otra base de datos

            if (App.HayConexionInternet())
            {
                // Sincronizar la nota
                if (App.UsarNotasLocal || DatosMostrar == NotasDatosMostrar.Local)
                {
                    // Se ha guardado como nota local
                    if (note.idNota != 0)
                    {
                        nota = NotaSQL.Nota(note.idNota);
                    }
                    else
                    {
                        nota = new NotaSQL();
                    }

                    if (nota.ID == 0)
                    {
                        nota = new NotaSQL
                        {
                            Archivada    = note.Archivada,
                            Eliminada    = note.Eliminada,
                            Favorita     = note.Favorita,
                            Grupo        = note.Grupo,
                            Modificada   = note.Modificada,
                            Notificar    = note.Notificar,
                            Sincronizada = note.Sincronizada,
                            Texto        = note.Texto,
                            idNota       = note.ID
                        };
                    }
                    else
                    {
                        nota = note.ComoNotaRemota();
                    }
                    nota.idNota       = note.ID;
                    nota.Sincronizada = true;
                    NotaSQL.GuardarNota(nota);
                    note.idNota       = nota.ID;
                    note.Sincronizada = true;
                    await App.Database.SaveNoteAsync(note);
                }
                else
                {
                    // Se ha guardado como nota remota
                    if (nota.idNota != 0)
                    {
                        note = await App.Database.GetNoteAsync(nota.idNota);
                    }
                    else
                    {
                        note = new Nota();
                    }

                    if (note.ID == 0)
                    {
                        note = new Nota
                        {
                            Archivada    = nota.Archivada,
                            Eliminada    = nota.Eliminada,
                            Favorita     = nota.Favorita,
                            Grupo        = nota.Grupo,
                            Modificada   = nota.Modificada,
                            Notificar    = nota.Notificar,
                            Sincronizada = nota.Sincronizada,
                            Texto        = nota.Texto,
                            idNota       = nota.ID
                        };
                    }
                    else
                    {
                        note = nota.ComoNotaLocal();
                    }
                    note.idNota       = nota.ID;
                    note.Sincronizada = true;
                    await App.Database.SaveNoteAsync(note);

                    nota.idNota       = note.ID;
                    nota.Sincronizada = true;
                    NotaSQL.GuardarNota(nota);
                }
            }
            await Navigation.PopAsync();

            NotasActivas.TituloNotas();
        }
Example #11
0
        async private void btnAcceder_Clicked(object sender, EventArgs e)
        {
            LabelInfo.IsVisible = false;

            //App.UsarNotasMaxConfig = false;

            if (UsuarioSQL.ComprobarContraseña(email.Text, password.Text))
            {
                // Guardar el último usuario que accede
                App.UltimoUsuario  = UsuarioSQL.UsuarioLogin.Email;
                App.UltimoPassword = UsuarioSQL.UsuarioLogin.Password;
                // Usar las opciones indicadas                      (26/May/21)
                App.RecordarPassword = chkRecordarPassword.IsToggled;
                App.RecordarUsuario  = chkRecordarUsuario.IsToggled;

                // si es el usuario de prueba, no hacer nada.
                if (UsuarioSQL.UsuarioLogin.Email.ToLower() == "prueba")
                {
                    LabelInfo.Text = "Has indicado el usuario de prueba. " +
                                     "Te recuerdo que estas notas estarán visibles a todos los que entren con estas credenciales.";
                    LabelInfo.IsVisible = true;
                    return;
                }
                // Avisar si no está validado
                if (!UsuarioSQL.UsuarioLogin.Validado)
                {
                    await App.CodigoValidación(UsuarioSQL.UsuarioLogin.Email);

                    var    minutos = 60 - DateTime.UtcNow.Minute;
                    string plural  = (minutos == 1) ? "" : "s";
                    LabelInfo.Text = "Aún no has validado tu email. " +
                                     "Te he enviado un correo con el código de validación. " +
                                     $"Úsalo en la página de validar antes de {minutos} minuto{plural}. Gracias.";
                    LabelInfo.IsVisible = true;
                }
                else
                {
                    // Guardar los datos de último acceso, etc.
                    UsuarioSQL.UsuarioLogin.UltimoAcceso    = DateTime.UtcNow;
                    UsuarioSQL.UsuarioLogin.VersionPrograma = $"{App.AppName} {App.AppVersion}";
                    // Por si accede después de usar el usuario local (23/May/21)
                    App.UsarNotasLocal = false;
                    UsuarioSQL.GuardarUsuario(UsuarioSQL.UsuarioLogin);

                    // si se deben mostrar las notas a notificar
                    if (App.Notificar)
                    {
                        // Comprobar si hay notas a notificar
                        var colNotificar = NotaSQL.Buscar(UsuarioSQL.UsuarioLogin.ID, "Notificar = 1 AND Eliminada = 0");
                        if (colNotificar.Count() == 0)
                        {
                            App.GuardarConfig();
                            VolverAMain();
                            return;
                        }
                        // Mostrar la ventana de las notas marcadas para notificar
                        await Navigation.PushAsync(new NotasMostrar(NotasDatosMostrar.Notificar));

                        //return;
                    }
                }
                App.GuardarConfig();
                VolverAMain();
            }
            else
            {
                LabelInfo.Text      = "El usuario y/o el password no son correctos.";
                LabelInfo.IsVisible = true;
                email.Focus();
                return;
            }
        }
Example #12
0
        async public static void TituloNotas()
        {
            string s       = "";
            var    total   = 0;
            var    nGrupos = 0;

            if (App.UsarNotasLocal)
            {
                total = await App.Database.CountAsync();

                nGrupos = App.Database.Grupos().Count();
            }
            else
            {
                total   = NotaSQL.Count(UsuarioSQL.UsuarioLogin.ID);
                nGrupos = NotaSQL.Grupos(UsuarioSQL.UsuarioLogin.ID).Count();
            }

            string sGrupo;

            //if (total == 0)
            //    s = "ninguna nota";
            //else if (total == 1)
            //    s = "1 nota";
            //else
            //    s = $"{total} notas";

            //if (nGrupos == 0)
            //    sGrupo = "sin grupos";
            //else if (nGrupos == 1)
            //    sGrupo = "en 1 grupo";
            //else
            //    sGrupo = $"en {nGrupos} grupos";

            //s = $"{UsuarioSQL.UsuarioLogin.Email} - con {s} {sGrupo}.";

            if (total == 0 && nGrupos == 0)
            {
                s      = "sin notas ni grupos";
                sGrupo = "";
            }
            else
            {
                s = "con ";

                if (total == 0)
                {
                    s = "sin notas";
                }
                else if (total == 1)
                {
                    s += "1 nota";
                }
                else
                {
                    s += $"{total} notas";
                }

                if (nGrupos == 0)
                {
                    sGrupo = " y sin grupos";
                }
                else if (nGrupos == 1)
                {
                    sGrupo = " en 1 grupo";
                }
                else
                {
                    sGrupo = $" en {nGrupos} grupos";
                }
            }
            s = $"{UsuarioSQL.UsuarioLogin.Email} - {s}{sGrupo}.";

            //Current.Title = $"{App.AppName} {App.AppVersion}";
            Current.LabelInfo.Text = s;
        }