예제 #1
0
        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();
        }
예제 #2
0
        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()));
            }
        }
예제 #3
0
        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();
        }
예제 #4
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();
        }
예제 #5
0
        //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;
            }
        }
예제 #6
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;
            }
        }