Exemplo n.º 1
0
        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;
            }
        }