private void btnValidar_Clicked(object sender, EventArgs e) { bool validado = Current.txtValidar.Text.ToUpper() == CodigoValidar; UsuarioSQL.UsuarioLogin.Validado = validado; UsuarioSQL.GuardarUsuario(UsuarioSQL.UsuarioLogin); string sino = validado ? "SI" : "NO"; LabelInfo.Text = $"El código de validación {sino} es correcto."; txtValidar.Focus(); }
async private void btnRegistrar_Clicked(object sender, EventArgs e) { if (string.IsNullOrEmpty(Email.Text) || string.IsNullOrEmpty(Password.Text) || string.IsNullOrEmpty(Nombre.Text)) { // se deben indicar los tres valores LabelInfo.Text = "Debes indicar los tres valores solicitados."; LabelInfo.IsVisible = true; if (string.IsNullOrEmpty(Email.Text)) { Email.Focus(); } else if (string.IsNullOrEmpty(Password.Text)) { Password.Focus(); } else if (string.IsNullOrEmpty(Nombre.Text)) { Nombre.Focus(); } } else { // Comprobar si ya existe ese usuario if (UsuarioSQL.Existe(Email.Text)) { LabelInfo.Text = "Debes indicar una cuenta de correo no registrada."; LabelInfo.IsVisible = true; Email.Focus(); return; } // registrarlo var usuario = new UsuarioSQL(); usuario.Email = Email.Text; usuario.Nombre = Nombre.Text; UsuarioSQL.GuardarUsuario(usuario, Password.Text); // Enviarlo a Login await Navigation.PushAsync(new Login(new MainMenu())); } }
async private void btnAplicar_Clicked(object sender, EventArgs e) { if (UsuarioSQL.UsuarioLogin is null || UsuarioSQL.UsuarioLogin.ID == 0 || UsuarioSQL.UsuarioLogin.Email == "prueba") { await Navigation.PushAsync(new Login(Current)); return; } App.RecordarPassword = chkRecordarPassword.IsToggled; App.RecordarUsuario = chkRecordarUsuario.IsToggled; App.IniciarConUsuario = chkIniciarConUsuario.IsToggled; // Las notas siempre estarán sincronizadas App.SincronizarAuto = true; App.Notificar = chkNotificar.IsToggled; App.UltimoUsuario = LabelUsuario.Text; App.UsarNotasLocal = chkUsarLocal.IsToggled; if (App.RecordarPassword) { App.UltimoPassword = UsuarioSQL.UsuarioLogin.Password; } else { App.UltimoPassword = ""; } // Solo asignar/guardar si se ha podido cambiar (26/May/21) if (UsuarioSQL.UsuarioLogin.Pagos >= 25) { UsuarioSQL.UsuarioLogin.UsarNotasMax = chkUsarNotasMax.IsToggled; UsuarioSQL.GuardarUsuario(UsuarioSQL.UsuarioLogin); } App.GuardarConfig(); // Volver a la anterior await Current.Navigation.PopAsync(); }
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(); }
//private void btnPrivacidad_Clicked(object sender, EventArgs e) //{ // _ = App.MostrarPoliticaPrivacidad(); //} async void OnSaveButtonClicked(object sender, EventArgs e) { LabelAviso.IsVisible = false; var usuario = (UsuarioSQL)BindingContext; // no guardar el email en blanco if (string.IsNullOrEmpty(Email.Text)) { LabelAviso.Text = "El Email no puede estar en blanco."; LabelAviso.IsVisible = true; Email.Focus(); return; } if (string.IsNullOrEmpty(Nombre.Text)) { LabelAviso.Text = "El Nombre no puede estar en blanco."; LabelAviso.IsVisible = true; Nombre.Focus(); return; } if (ClaveSHA.Text.ToUpper() != _usuario.ClaveSHA) { LabelAviso.Text = "La clave SHA no es modificable."; LabelAviso.IsVisible = true; ClaveSHA.Text = _usuario.ClaveSHA; ClaveSHA.Focus(); return; } // Si cambia de email no se guardan los cambios. if (usuario.Email.ToLower() != _usuario.Email.ToLower()) { var sb = new StringBuilder(); sb.AppendLine($"Hola {_usuario.Nombre},"); sb.AppendLine($"Has solicitado cambiar el email usado en el programa: '{_usuario.Email}',"); sb.AppendLine($"por otro diferente: '{usuario.Email}'."); sb.AppendLine(); sb.AppendLine("Si no has sido tú, seguramente deberías cambiar el password porque alguien ha accedido con tus datos."); sb.AppendLine(); sb.AppendLine("Si has sido tú, te mando otro mensaje a la nueva cuenta que quieres usar."); sb.AppendLine("Por favor, confirma (respondiendo a los dos mensajes) que es correcto ese cambio."); sb.AppendLine("También indicame el nuevo password a usar cuando respondas al mensaje recibido en la nueva cuenta de email."); sb.AppendLine("Después podrás cambiarlo usando esta misma página del Perfil del usuario."); sb.AppendLine(); sb.AppendLine("Gracias."); sb.AppendLine("Guillermo"); sb.AppendLine("---------"); sb.AppendLine($"{App.AppName} {App.AppVersion}"); await App.SendEmail("Cambio de email", sb.ToString(), _usuario.Email); sb.Clear(); sb.AppendLine($"Hola {_usuario.Nombre},"); sb.AppendLine($"El usuario de la aplicación {App.AppName} con email '{_usuario.Email}' ha solicitado cambiar el email"); sb.AppendLine($"por este al que te mando este correo: '{usuario.Email}'."); sb.AppendLine(); sb.AppendLine("Si no has sido tú, por favor, indícamelo y procederé como vea conveniente."); sb.AppendLine(); sb.AppendLine("Si has sido tú, te he mandado otro mensaje a la cuenta desde la que has solicitado el cambio."); sb.AppendLine("Por favor, confirma (respondiendo a los dos mensajes) que es correcto ese cambio."); sb.AppendLine("También indicame aquí el nuevo password a usar."); sb.AppendLine("Después podrás cambiarlo usando esta misma página del Perfil del usuario."); sb.AppendLine(); sb.AppendLine("Gracias."); sb.AppendLine("Guillermo"); sb.AppendLine("---------"); sb.AppendLine($"{App.AppName} {App.AppVersion}"); await App.SendEmail("Cambio de email", sb.ToString(), usuario.Email); btnGuardar.IsEnabled = false; LabelAviso.Text = "Has indicado un nuevo email. No se guardan los cambios. Responde a los 2 emails enviados. Gracias."; LabelAviso.IsVisible = true; Email.Focus(); } else { // Guardar los cambios y asignar el usuario actual con los nuevos datos. if (Password.Text.Any()) { // Cambiar el password y guardar la nueva clave SHA usuario.ClaveSHA = UsuarioSQL.GenerarClaveSHA1(usuario.Email, Password.Text); usuario.Password = Password.Text; App.UltimoPassword = usuario.Password; } UsuarioSQL.GuardarUsuario(usuario); UsuarioSQL.UsuarioLogin = usuario; App.UltimoUsuario = usuario.Email; LabelAviso.Text = "Se han guardado correctamente los nuevos datos."; LabelAviso.IsVisible = true; } }
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; } }