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"); } }
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()); } } }