private async void BtnLogin_Clicked(object sender, EventArgs e) { if (!Conexion.AccesoInternet())//Verifica la conexión a Internet { await DisplayAlert("Conexión", "No tienes conexión a Internet", "OK"); } else { try { if (!string.IsNullOrEmpty(Usuario.Text) && (!string.IsNullOrEmpty(Pass.Text))) { Conecta userPass = new Conecta(); lblLoadingText.Text = "Autentificando usuario..."; popupLoadingView.IsVisible = true; Variables.CodigoPersonal = Convert.ToInt32(Usuario.Text); Variables.ClavePersonal = Pass.Text; await logotipo.RotateTo(360, 5000); if (CargarDatos.IsToggled == true) //Si el option esta activado. Entra { if (Variables.ServerUrl != null) //Si ServerUrl esta vacío es la primera vez esta recién instalada { if (await userPass.Acredita(Convert.ToInt32(Usuario.Text), Pass.Text)) //Verifica la autenticación { Variables.CodigoPersonal = Convert.ToInt32(Usuario.Text); Variables.ClavePersonal = Pass.Text; popupLoadingView.IsVisible = false; // Comprueba si hay partes cerrados pendientes de enviar. if (CompruebaTerminados() == true) { await DisplayAlert("Aviso", "Hay partes cerrados pendientes de enviar. Envie los partes cerrados para poder descargar", "OK"); await logotipo.RotateTo(360, 5000); popupLoadingView.IsVisible = true; await Navigation.PushModalAsync(new NavigationPage(new Principal_Listado())); } else { //Si las credenciales son correctas, todos los partes estan cerrados se procede a descarga completa o parcial. lblLoadingText.Text = "Descargando datos..."; popupLoadingView.IsVisible = true; await logotipo.RotateTo(360, 5000); //Cada vez que se loguea borra las tablas siguientes //Excepto cuando haya partes pendientes de enviar var enviadoapp = PartesSinEnviar(); if (enviadoapp == false) { datos.BorrarSat <SAT>(); datos.BorrarSatLineas <SAT_Lineas>(); datos.BorrarSatEquipo <SAT_Equipo>(); datos.BorrarClientes <Cliente>(); datos.BorrarClienteMaquinas <Cliente_Maquina>(); datos.BorrarDireccionCliente <Direccion_Cliente>(); datos.BorrarMaquinas <Maquinas>(); } //Recuperamos la configuración para bloquear o no la modificación del parte cuando se cierre var configuraciones = datos.GetAll <Conexiones>(); foreach (var b in configuraciones) { Variables.BloqueaParte = b.Bloquea_Parte; } // Procede a descargar las tablas. SincronizarDatos(Convert.ToInt32(Usuario.Text), Pass.Text); } } else { await DisplayAlert("Login", "!!! Las credenciales no son correctas !!!", "OK"); lblLoadingText.Text = ""; } } else { await DisplayAlert("Aviso", "! Si es la primera vez que inicia sesión, configure servidor y puerto !", "OK"); } } else //Si el boton option esta desactivado. También Verifica la autenticación { if (Variables.ServerUrl != null) //Si ServerUrl esta vacío es la primera vez esta recién instalada { if (await userPass.Acredita(Convert.ToInt32(Usuario.Text), Pass.Text)) { var configuraciones = datos.GetAll <Conexiones>(); foreach (var b in configuraciones) { Variables.BloqueaParte = b.Bloquea_Parte; } var valores = datos.GetAll <Valores_SAT>().FirstOrDefault(); if (valores != null) //Mientras no hayan datos en la DB se controla el error de null { Variables.ArticuloVarios = valores.SAT_ArticuloVarios; Variables.RevisaParte = valores.SAT_RevisarParteAPP; Variables.CodigoPersonal = Convert.ToInt32(Usuario.Text); } //Muestra la vista de los partes. lblLoadingText.Text = ""; await Navigation.PushModalAsync(new NavigationPage(new Principal_Listado())); } else { await DisplayAlert("Login", "!!! Las credenciales no son correctas !!!", "OK"); lblLoadingText.Text = ""; } } else { await DisplayAlert("Aviso", "Si es la primera vez que inicia sesion debe descargar los partes", "OK"); } } } else { lblLoadingText.IsVisible = true; await DisplayAlert("Login", "!!! Introduzca un usuario y su contraseña !!!", "OK"); lblLoadingText.Text = ""; } } catch (Exception ex) { await DisplayAlert("Error", ex.Message, "OK"); } } }