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; }
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(); } }
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(); }
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"); }
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(); }
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(); }
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(); }
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(); }
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}"; }
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(); }
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; } }
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; }