Exemplo n.º 1
0
        private async void EnviarRespostas()
        {
            await Task.Run(async() =>
            {
                if (UtilAcessibilidade.VerificaAcessoInternet(this))
                {
                    ProgressDialog loading = null;

                    RunOnUiThread(() =>
                    {
                        loading = ProgressDialog.Show(this, "Enviando coletas realizadas", "Isso pode demorar um pouco.\nFavor aguardar!", true);
                    });


                    var respostasDB = UtilDataBase.GetItems(QuestionarioDB.TableName);

                    var questionariosInseridos = new List <ColetaEntradaDTO>();


                    var registro = new QuestionarioDB();


                    var request = new ColetaEntradaDTO();

                    string guid   = string.Empty;
                    var respostas = new List <RespostaDto>();

                    foreach (DataRow item in respostasDB.Rows)
                    {
                        registro.ConvertDr(item);

                        if (guid != registro.Guid)
                        {
                            if (respostas.Count > 0)
                            {
                                request.Respostas = respostas;
                                await WebService.PostSemSaida <ColetaEntradaDTO>(request, CaminhoWebService.RESPOSTAS, Aplicacao.Token);
                                respostas = new List <RespostaDto>();
                            }

                            request = new ColetaEntradaDTO()
                            {
                                Data      = Convert.ToDateTime(registro.Data),
                                Latitude  = Convert.ToDouble(registro.Latitude),
                                Longitude = Convert.ToDouble(registro.Longitude),
                            };
                        }

                        respostas.Add(new RespostaDto()
                        {
                            IdOpcaoResposta = registro.IdResposta > 0 ? (int?)registro.IdResposta : null,
                            IdPergunta      = registro.IdPergunta,
                            Valor           = registro.Resposta
                        });


                        guid = registro.Guid;
                    }

                    if (respostas.Count > 0)
                    {
                        request.Respostas = respostas;
                        await WebService.PostSemSaida <ColetaEntradaDTO>(request, CaminhoWebService.RESPOSTAS, Aplicacao.Token);
                        respostas = new List <RespostaDto>();
                    }

                    UtilDataBase.Delete(QuestionarioDB.TableName);

                    if (loading.IsShowing && loading != null)
                    {
                        loading.Dismiss();
                    }

                    RunOnUiThread(() =>
                    {
                        Toast.MakeText(this, "Coletas sincronizadas com sucesso!", ToastLength.Long).Show();
                        ValidarExibicaoSicronizarColeta();
                    });
                }
                else
                {
                    Modal.ExibirModal(this, GetString(Resource.String.ConexaoInternetTitulo), "", GetString(Resource.String.ConexaoInternetMensagem));
                }
            });
        }