public static async Task <MapaAcompanhaPage> gerarMapaAcompanhamento(PedidoInfo pedido)
        {
            if (!GPSUtils.UsaLocalizacao)
            {
                await App.Current.MainPage.DisplayAlert("Erro", "App não configurado para usar GPS.", "Entendi");

                return(null);
            }
            if (!await GPSUtils.Current.inicializar())
            {
                await App.Current.MainPage.DisplayAlert("Erro", "Ative seu GPS.", "Entendi");

                return(null);
            }
            var mapaAcompanha = new MapaAcompanhaPage
            {
                Title = "Acompanhar",
            };

            mapaAcompanha.Appearing += (sender, e) => {
                AcompanhaPageAtual = mapaAcompanha;
            };
            mapaAcompanha.Disappearing += (sender, e) => {
                AcompanhaPageAtual = null;
            };
            return(mapaAcompanha);
        }
Beispiel #2
0
        private static async void atualizarMapa(MapaAcompanhaPage acompanhaPage, FreteInfo frete)
        {
            var regraFrete = FreteFactory.create();
            var retorno    = await regraFrete.atualizar(frete.Id);

            if (retorno != null)
            {
                Device.BeginInvokeOnMainThread(() =>
                {
                    var mapaRota = new MapaRotaInfo
                    {
                        Distancia    = retorno.Distancia,
                        DistanciaStr = retorno.DistanciaStr,
                        Tempo        = retorno.Tempo,
                        TempoStr     = retorno.TempoStr,
                        PolylineStr  = retorno.Polyline,
                        PosicaoAtual = new Mapa.Model.LocalInfo
                        {
                            Latitude  = retorno.Latitude,
                            Longitude = retorno.Longitude
                        },
                        Polyline = MapaUtils.decodePolyline(retorno.Polyline)
                    };
                    if (string.IsNullOrEmpty(retorno.Polyline))
                    {
                        mapaRota.Polyline = new List <Position>();
                        foreach (var local in frete.Locais)
                        {
                            mapaRota.Polyline.Add(new Position(local.Latitude, local.Longitude));
                        }
                    }
                    acompanhaPage.atualizarMapa(mapaRota);
                });
            }
        }
Beispiel #3
0
        public static void acompanharComoCliente(FreteInfo frete)
        {
            var regraFrete = FreteFactory.create();

            regraFrete.gravarAtual(frete);

            var situacoes = new List <FreteSituacaoEnum>()
            {
                FreteSituacaoEnum.PegandoEncomenda,
                FreteSituacaoEnum.Entregando
            };

            var acompanhaPage = new MapaAcompanhaPage
            {
                Title          = "Acompanhar viagem",
                Duracao        = frete.Duracao,
                DuracaoVisivel = situacoes.Contains(frete.Situacao)
            };

            acompanhaPage.Appearing    += acompanhaAppearing;
            acompanhaPage.Disappearing += (sender, e) => {
                CaronaUtils.Acompanhando = false;
            };
            ((RootPage)App.Current.MainPage).PushAsync(acompanhaPage);
        }
        public static async void finalizarAcompanhamento()
        {
            var regraPedido = PedidoFactory.create();
            await regraPedido.limparAtual();

            AcompanhaPageAtual = null;
            GPSUtils.Current.aoAtualizarPosicao -= atualizarPosicao;
            await GPSUtils.Current.finalizar();
        }
Beispiel #5
0
        private static bool executarAcompanhamento(MapaAcompanhaPage acompanhaPage)
        {
            var regraFrete = FreteFactory.create();
            var frete      = regraFrete.pegarAtual();

            if (frete == null)
            {
                return(false);
            }
            atualizarMapa(acompanhaPage, frete);
            return(CaronaUtils.Acompanhando);
        }