public async void AcaoSincronizar(object sender, EventArgs args) { try { try { (sender as Button).IsEnabled = false; activityIndicator.IsVisible = true; await Task.Delay(500); AcessoBanco banco = new AcessoBanco(); string usuario = Session.Instance.UsuarioLogado.IdAspNetUser; List <long> questionarios = UsuarioServico.PegarQuestionariosUsuario(usuario); banco.GravarQuestionariosUsuario(usuario, questionarios); foreach (var item in questionarios) { if (!banco.ExisteQuestionario(item)) { RespostaQuestionarioForm rqf = UsuarioServico.BaixarQuestionario(item); banco.GravarQuestionario(rqf); } } List <Municipio> municipios = UsuarioServico.BaixarMunicipios(); foreach (var item in municipios) { banco.GravarMunicipio(item); } List <AlternativaICQ> alteranativas = UsuarioServico.BaixarAlternativas(); foreach (var item in alteranativas) { banco.GravarAlternativa(item); } List <OpcaoTipoResposta> opcoes = UsuarioServico.BaixarOpcoes(); foreach (var item in opcoes) { banco.GravarOpcao(item); } List <QuestionarioRespondido> pendentes = banco.ListarRespostasNaoEnvidas(); foreach (var item in pendentes) { RespostaQuestionarioForm formTmp = JsonConvert.DeserializeObject <RespostaQuestionarioForm>(item.Formulario); if (UsuarioServico.TransmitirResposta(formTmp)) { banco.MarcarRespostaComoEnviada(item.Id); } } lblUltimaSincronizacao.Text = banco.GravarUltimaSincronizacao(usuario).ToString("dd/MM/yyyy HH:mm:ss"); activityIndicator.IsVisible = false; await DisplayAlert("Sincronização", "Efetuada com Sucesso!", "OK"); } catch (Exception e) { activityIndicator.IsVisible = false; await DisplayAlert("Falha na Sincronização", e.Message, "OK"); } } finally { (sender as Button).IsEnabled = true; } }