コード例 #1
0
        private async void RecusarChamada()
        {
            if (!_isPendencia)
            {
                ValidaTempoEspera();
            }
            if (_expirouTempo && !_isPendencia)
            {
                await NavigationService.NavigateAsync("/NavigationPage/Home", useModalNavigation : true);
            }
            try
            {
                UserDialogs.Instance.ShowLoading("Processando...");

                CancelarChamadaParam param = new CancelarChamadaParam();
                param.chamada           = chamada;
                param.codChamadaVeiculo = chamada.codChamadaVeiculo;
                param.dataCancelamento  = DateTime.Now;
                param.codVeiculo        = CrossSettings.Current.Get <RetornoVeiculosMotorista>("VeiculoSelecionado").codVeiculo;

                var json    = JsonConvert.SerializeObject(param);
                var content = new StringContent(json, Encoding.UTF8, "application/json");

                CrossSettings.Current.Remove("ChamadaParaResposta");
                var response = await IniciarCliente(true).PostAsync("motorista/cancelarChamada", content);

                var navParam = new NavigationParameters();
                if (!_isPendencia)
                {
                    CrossSettings.Current.Set("RecusouChamada", true);
                }
                else
                {
                    CrossSettings.Current.Set("RecusouChamadaPendente", true);
                }

                if (response.IsSuccessStatusCode)
                {
                    // CrossSettings.Current.Remove("ChamadaParaResposta");
                    await DialogService.DisplayAlertAsync("Aviso", "Corrida recusada.", "OK");

                    await NavigationService.NavigateAsync("//NavigationPage/Home");
                }
                else
                {
                    await DialogService.DisplayAlertAsync("Aviso", response.Content.ReadAsStringAsync().Result, "OK");

                    await NavigationService.NavigateAsync("//NavigationPage/Home");
                }
            }
            catch (AccessViolationException e)
            {
                await DialogService.DisplayAlertAsync("Aviso", e.Message, "OK");
            }
            catch (Exception e)
            {
                Crashes.TrackError(e);
                await DialogService.DisplayAlertAsync("Aviso", "Falha ao recusar corrida", "OK");
            }
            finally
            {
                UserDialogs.Instance.HideLoading();
            }


            //CrossSettings.Current.Remove("ChamadaParaResposta");
            //await NavigationService.NavigateAsync("//NavigationPage/Home");
        }
コード例 #2
0
        private async void CancelarFinalizarCorrida()
        {
            Plugin.Geolocator.Abstractions.Position pos = await GetCurrentPosition();

            CrossSettings.Current.Set("UltimaLocalizacaoValida", pos);
            if (TextoBotaoFinal.Equals("Cancelar"))
            {
                var resposta = await UserDialogs.Instance.ConfirmAsync("Cancelar Chamada?", "Cancelamento", "Sim", "Não");

                if (resposta)
                {
                    try
                    {
                        UserDialogs.Instance.ShowLoading("Processando...");

                        CancelarChamadaParam param = new CancelarChamadaParam();
                        param.chamada           = Chamada;
                        param.latitudeAtual     = pos.Latitude.ToString();
                        param.longitudeAtual    = pos.Longitude.ToString();
                        param.codChamadaVeiculo = Chamada.codChamadaVeiculo;
                        param.dataCancelamento  = DateTime.Now;
                        param.codVeiculo        = CrossSettings.Current.Get <RetornoVeiculosMotorista>("VeiculoSelecionado").codVeiculo;

                        var json    = JsonConvert.SerializeObject(param);
                        var content = new StringContent(json, Encoding.UTF8, "application/json");


                        var response = await IniciarCliente(true).PostAsync("motorista/cancelarChamada", content);

                        if (response != null)
                        {
                            if (response.IsSuccessStatusCode)
                            {
                                CrossSettings.Current.Remove("ChamadaAceita");
                                await DialogService.DisplayAlertAsync("Aviso", "Corrida cancelada.", "OK");

                                await NavigationService.NavigateAsync("/NavigationPage/Home", useModalNavigation : true);
                            }
                            else
                            {
                                AdicionarInfoPendente(json, "cancelarChamada");
                                CrossSettings.Current.Remove("ChamadaAceita");
                                await DialogService.DisplayAlertAsync("Aviso", "Corrida cancelada.", "OK");

                                await NavigationService.NavigateAsync("/NavigationPage/Home", useModalNavigation : true);

                                // await DialogService.DisplayAlertAsync("Aviso", response.Content.ReadAsStringAsync().Result, "OK");
                            }
                        }
                    }
                    catch (AccessViolationException e)
                    {
                        await DialogService.DisplayAlertAsync("Aviso", e.Message, "OK");
                    }
                    catch (Exception e)
                    {
                        Crashes.TrackError(e);
                        await DialogService.DisplayAlertAsync("Aviso", "Falha ao cancelar corrida", "OK");
                    }
                    finally
                    {
                        UserDialogs.Instance.HideLoading();
                    }
                }
            }
            else
            {
                try
                {
                    UserDialogs.Instance.ShowLoading("Processando...");
                    Chamada chamadaFinal = CrossSettings.Current.Get <Chamada>("ChamadaEmCorrida");


                    //  MessagingCenter.Unsubscribe<ViewModelBase>(this, "MudancaValor");

                    MessagingCenter.Unsubscribe <ViewModelBase>(this, "MudancaPosicao");

                    // Plugin.Geolocator.Abstractions.Position pos = await GetCurrentPosition();
                    chamadaFinal.latitudeFinalCorrida  = pos.Latitude.ToString();
                    chamadaFinal.longitudeFinalCorrida = pos.Longitude.ToString();

                    chamadaFinal.dataFimCorrida = DateTime.Now;

                    CancelarChamadaParam param = new CancelarChamadaParam();

                    chamadaFinal.valorFinalAjustado = float.Parse(chamadaFinal.valorFinal).ToString("N2");
                    param.chamada           = chamadaFinal;
                    param.latitudeAtual     = pos.Latitude.ToString();
                    param.longitudeAtual    = pos.Longitude.ToString();
                    param.codChamadaVeiculo = chamadaFinal.codChamadaVeiculo;
                    param.codVeiculo        = CrossSettings.Current.Get <RetornoVeiculosMotorista>("VeiculoSelecionado").codVeiculo;

                    CrossSettings.Current.Remove("ChamadaEmCorrida");

                    var json    = JsonConvert.SerializeObject(param);
                    var content = new StringContent(json, Encoding.UTF8, "application/json");


                    var response = await IniciarCliente(true).PostAsync("motorista/finalizarCorrida", content);

                    // var response = await ChamarServicoPost(true, "finalizarCorrida", content);

                    if (response != null)
                    {
                        if (response.IsSuccessStatusCode)
                        {
                            await DialogService.DisplayAlertAsync("Aviso", "Corrida finalizada.\nValor Final : R$" + param.chamada.valorFinalAjustado, "OK");

                            await NavigationService.NavigateAsync("/NavigationPage/Home", useModalNavigation : true);
                        }
                        else
                        {
                            await DialogService.DisplayAlertAsync("Aviso", response.Content.ReadAsStringAsync().Result, "OK");
                        }
                    }
                }
                catch (Exception e)
                {
                    Crashes.TrackError(e);
                    await DialogService.DisplayAlertAsync("Aviso", "Falha ao finalizar corrida", "OK");
                }
                finally
                {
                    UserDialogs.Instance.HideLoading();
                }
            }
        }