예제 #1
0
        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");
                }
            }
        }