Example #1
0
        protected override void OnAppearing()
        {
            base.OnAppearing();

            Exitosos.Text = "0";
            try
            {
                Nombre.Text = SecureStorage.GetAsync("nombre_secure_storage").Result;
            }
            catch (Exception ex)
            {
                Application.Current.MainPage.DisplayAlert(
                    "Error",
                    ex.Message,
                    "Aceptar");
            }

            try
            {
                //Obtencion de los promovidos segun usuario
                using (SQLiteConnection conn = new SQLiteConnection(App.DatabaseLocation))
                {
                    //Obtencion de los promovidos segun usuario
                    conn.CreateTable <Afiliado>();
                    var list = conn.Table <Afiliado>().Where(a => a.IdUsuario.Equals(Settings.IdUsuario)).ToList();
                    Lista.ItemsSource = list;
                }

                //Cambio en el campo exitosos en XAML
                using (SQLiteConnection conn = new SQLiteConnection(App.DatabaseLocation))
                {
                    //Obtencion de la cantidad de casos exitosos del usuario
                    conn.CreateTable <UsuarioSincronizado>();
                    UsuarioSincronizado usuarioSincronizado = conn.Table <UsuarioSincronizado>().Where(a => a.IdUsuario.Equals(Settings.IdUsuario)).FirstOrDefault();

                    //Verificacion de la existencia de al menos un caso de exito del usuario
                    if (usuarioSincronizado != null)
                    {
                        Exitosos.Text = usuarioSincronizado.Exitosos.ToString();
                    }
                }
            }
            catch (Exception e)
            {
                Application.Current.MainPage.DisplayAlert(
                    "Error",
                    e.Message,
                    "Aceptar");
            }
        }
Example #2
0
        private async void ListView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
        {
            var item = e.SelectedItem as InicioPageMasterMenuItem;

            if (item == null)
            {
                return;
            }

            if (item.Id == 0)
            {
                using (SQLiteConnection conn = new SQLiteConnection(App.DatabaseLocation))
                {
                    if (conn.Table <Afiliado>().ToList().Count.Equals(0))
                    {
                        ((ListView)sender).SelectedItem = null;
                        await Application.Current.MainPage.DisplayAlert(
                            "Error",
                            "No existen afiliados para sincronizar",
                            "Aceptar");

                        return;
                    }
                }

                //Preguntar al usuario si desea sincronizar
                var respuesta = await Application.Current.MainPage.DisplayAlert(
                    "ATENCIÓN",
                    "¿Desea Sincronizar la información?",
                    "Aceptar",
                    "Cancelar");

                //Setear vacio el item selected
                ((ListView)sender).SelectedItem = null;

                if (respuesta)
                {
                    //Activar el ActiviyIndicator
                    MasterPage.ActivityIndicator.IsRunning = true;
                    MasterPage.ActivityIndicator.IsVisible = true;

                    //Solicitar conexión con el servidor
                    var connection = await this.apiService.CheckConnection();

                    if (!connection.IsSuccess)
                    {
                        //Desactivar el ActivityIndicator
                        MasterPage.ActivityIndicator.IsRunning = false;
                        MasterPage.ActivityIndicator.IsVisible = false;

                        await Application.Current.MainPage.DisplayAlert(
                            "Error",
                            connection.Message,
                            "Aceptar");

                        return;
                    }
                    else
                    {
                        //Inicializar el objeto de enviado
                        Send Objeto = new Send();

                        try
                        {
                            using (SQLiteConnection conn = new SQLiteConnection(App.DatabaseLocation))
                            {
                                //Obtener todos los afiliados por usuario
                                var afiliados = conn.Table <Afiliado>().Where(a => a.IdUsuario.Equals(Settings.IdUsuario)).ToList();

                                List <AfiliadoSend> afiliadosSend = new List <AfiliadoSend>();

                                foreach (var afiliado in afiliados)
                                {
                                    AfiliadoSend afiliadoSend = new AfiliadoSend()
                                    {
                                        Nombre              = afiliado.Nombre,
                                        NombreSegundo       = afiliado.NombreSegundo,
                                        ApellidoPat         = afiliado.ApellidoPat,
                                        ApellidoMat         = afiliado.ApellidoMat,
                                        Sexo                = afiliado.Sexo,
                                        Edad                = afiliado.Edad,
                                        EstadoCivil         = afiliado.EstadoCivil,
                                        Domicilio           = afiliado.Domicilio,
                                        Municipio           = afiliado.Municipio,
                                        Region              = afiliado.Region,
                                        Zona                = afiliado.Zona,
                                        Seccion             = afiliado.Seccion,
                                        Casilla             = afiliado.Casilla,
                                        Promotor            = afiliado.Promotor,
                                        Comunidad           = afiliado.Comunidad,
                                        TelefonoFijo        = afiliado.TelefonoFijo,
                                        TelefonoCelular     = afiliado.TelefonoCelular,
                                        TelefonoAlter       = afiliado.TelefonoAlter,
                                        Ocupacion           = afiliado.Ocupacion,
                                        Escolaridad         = afiliado.Escolaridad,
                                        Email               = afiliado.Email,
                                        NumIne              = afiliado.NumIne,
                                        ClaveIne            = afiliado.ClaveIne,
                                        Curp                = afiliado.Curp,
                                        Facebook            = afiliado.Facebook,
                                        Observaciones       = afiliado.Observaciones,
                                        Foto                = afiliado.Foto,
                                        CredencialFrontal   = afiliado.CredencialFrontal,
                                        CredencialPosterior = afiliado.CredencialPosterior
                                    };

                                    //Agregar un afiliado nuevo a la lista de envio
                                    afiliadosSend.Add(afiliadoSend);
                                }
                                //Agregar la lista de afiliados al objeto a enviar
                                Objeto.Afiliados = afiliadosSend;
                            }
                        }
                        catch (Exception)
                        {
                            throw;
                        }

                        //Crear un nuevo usuario para enviar
                        UsuarioSend usuarioSend = new UsuarioSend()
                        {
                            IdUsuario = Settings.IdUsuario
                        };

                        //Agregar el usuario a enviar al objeto a enviar
                        Objeto.UsuarioSend = usuarioSend;

                        //Enviar los afiliados y el usuario
                        var response = await this.apiService.Post <Send>("https://" + Settings.Servidor + "/controladores/", "promovidos.controlador.php", Objeto);

                        //Obtencion de respuesta del servidor
                        var objetoResult = (Result)response.Result;

                        using (SQLiteConnection conn = new SQLiteConnection(App.DatabaseLocation))
                        {
                            //Obtención de el numero de casos exitosos que hay en servidor
                            UsuarioSincronizado usuario = new UsuarioSincronizado()
                            {
                                Exitosos  = Int32.Parse(objetoResult.Exitosos.TotalExitosos),
                                IdUsuario = Int32.Parse(Settings.IdUsuario)
                            };
                            conn.InsertOrReplace(usuario);
                        }

                        DetailPage.Label.Text           = objetoResult.Exitosos.TotalExitosos.ToString();
                        DetailPage.ListView.ItemsSource = new List <Afiliado>();

                        //Resultado esperando promovidos repetidos
                        if (objetoResult.Fallidos.Count > 0)
                        {
                            string promovidosFallidos = string.Empty;

                            //Agregando a una cadena el nombre y la curp de los promovidos repetidos
                            foreach (var itemResult in objetoResult.Fallidos)
                            {
                                promovidosFallidos += string.Format("Nombre: {0}\nCURP: {1}\n\n", itemResult.NombreCompleto, itemResult.Curp);
                            }

                            //Eliminacion de los afiliados en la base de datos interna
                            try
                            {
                                using (SQLiteConnection conn = new SQLiteConnection(App.DatabaseLocation))
                                {
                                    conn.DropTable <Afiliado>();
                                }
                            }
                            catch (Exception ex)
                            {
                                await Application.Current.MainPage.DisplayAlert(
                                    "ERROR",
                                    ex.Message,
                                    "Aceptar");
                            }

                            //Desactivacion del ActivityIndicator
                            MasterPage.ActivityIndicator.IsRunning = false;
                            MasterPage.ActivityIndicator.IsVisible = false;

                            await Application.Current.MainPage.DisplayAlert(
                                "EXITO",
                                "Se sincronizó exitosamente la \ncantidad de: " + objetoResult.Exitosos.ExitososAlMomento +
                                " y cuenta con: " + objetoResult.Exitosos.TotalExitosos + " promovidos\n\n" +
                                "Sin embargo solo los siguientes\nno pudieron ser sincronizados:\n\n" + promovidosFallidos,
                                "Aceptar");
                        }
                        //Resultado no esperando promovidos repetidos
                        else
                        {
                            //Eliminacion de los afiliados en la base de datos interna
                            try
                            {
                                using (SQLiteConnection conn = new SQLiteConnection(App.DatabaseLocation))
                                {
                                    conn.DropTable <Afiliado>();
                                }
                            }
                            catch (Exception ex)
                            {
                                await Application.Current.MainPage.DisplayAlert(
                                    "ERROR",
                                    ex.Message,
                                    "Aceptar");
                            }

                            //Desactivacion del ActivityIndicator
                            MasterPage.ActivityIndicator.IsRunning = false;
                            MasterPage.ActivityIndicator.IsVisible = false;

                            await Application.Current.MainPage.DisplayAlert(
                                "EXITO",
                                "Se sincronizó exitosamente la \ncantidad de: " + objetoResult.Exitosos.ExitososAlMomento +
                                " y cuenta con: " + objetoResult.Exitosos.TotalExitosos + " promovidos\n",
                                "Aceptar");
                        }
                    }
                }
            }
            //Cerrar Sesión
            else if (item.Id == 1)
            {
                //Consulta para saber si desea cerrar sesión
                var respuesta = await Application.Current.MainPage.DisplayAlert(
                    "ATENCIÓN",
                    "¿Desea Cerrar Sesión?",
                    "Aceptar",
                    "Cancelar");

                //Resetear el item seleccionado
                ((ListView)sender).SelectedItem = null;

                //Eliminar las persistencias usadas
                Settings.IdUsuario = string.Empty;
                Settings.Id        = string.Empty;
                try
                {
                    await SecureStorage.SetAsync("nombre_secure_storage", string.Empty);
                }
                catch (Exception ex)
                {
                    await Application.Current.MainPage.DisplayAlert(
                        "Error",
                        ex.Message,
                        "Aceptar");
                }
                //Settings.Nombre = string.Empty;

                //Cambio de pagina
                if (respuesta)
                {
                    Application.Current.MainPage = new NavigationPage(new LoginPage());
                }
            }
        }