private void inicializarComponente()
        {
            _EnviarProdutoButton           = new PrincipalButton("fa-credit-card", "Pagar com\nCartão");
            _EnviarProdutoButton.AoClicar += async(sender, e) =>
            {
                var ret = await new PagamentoBLL().listarCartao();
                if (ret.Count > 0)
                {
                    // Rodrigo Landim - 16/03
                    //Navigation.PushAsync(new CartaoListaPage(_Info, ret));
                }
                else
                {
                    // Rodrigo Landim - 16/03
                    //Navigation.PushAsync(new CartaoPage(_Info));
                }
            };

            _RastrearMercadoriaButton           = new PrincipalButton("fa-money", "Pagar em\nDinheiro");
            _RastrearMercadoriaButton.AoClicar += async(sender, e) =>
            {
                UserDialogs.Instance.ShowLoading("Enviando...");
                _Info.Situacao = FreteSituacaoEnum.ProcurandoMotorista;
                await FreteFactory.create().alterar(_Info);

                UserDialogs.Instance.HideLoading();
                Navigation.PopToRootAsync();
            };
        }
예제 #2
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);
        }
예제 #3
0
        public async Task continuaPedidoAsync()
        {
            UserDialogs.Instance.ShowLoading("Enviando...");
            try{
                if (validaPedido())
                {
                    var    reader   = new StreamReader(this._Imagem);
                    byte[] bytedata = System.Text.Encoding.UTF8.GetBytes(reader.ReadToEnd());
                    _FreteInfo.FotoBase64 = Convert.ToBase64String(bytedata);
                    _FreteInfo.Observacao = _Observacao.Text;
                    var idProduto = await FreteFactory.create().inserir(_FreteInfo);

                    var retInfo = await FreteFactory.create().pegar(idProduto);

                    UserDialogs.Instance.HideLoading();
                    Navigation.PushAsync(new FreteForm4Page(retInfo));
                }
                else
                {
                    UserDialogs.Instance.HideLoading();
                    DisplayAlert("Atenção", "Dados inválidos, verifique todas as entradas.", "Entendi");
                }
            } catch (Exception e) {
                UserDialogs.Instance.HideLoading();
                UserDialogs.Instance.Alert(e.Message);
            }
        }
예제 #4
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);
                });
            }
        }
예제 #5
0
        private async System.Threading.Tasks.Task aceitaFreteAsync()
        {
            UserDialogs.Instance.ShowLoading("Confirmando...");
            try
            {
                //var ret = await FreteFactory.create().aceitar(true, _Info.IdFrete, new MotoristaBLL().pegarAtual().Id);
                var ret = await FreteFactory.create().aceitar(new AceiteEnvioInfo {
                    IdFrete     = _Info.IdFrete,
                    IdMotorista = new MotoristaBLL().pegarAtual().Id,
                    Aceite      = true
                });

                if (ret.Aceite)
                {
                    UserDialogs.Instance.HideLoading();
                    UserDialogs.Instance.AlertAsync("Frete aceito com sucesso", "Sucesso", "Entendi");
                    Navigation.PopAsync();
                }
                else
                {
                    UserDialogs.Instance.HideLoading();
                    UserDialogs.Instance.AlertAsync(ret.Mensagem, "Falha", "Entendi");
                }
            }
            catch (Exception e)
            {
                UserDialogs.Instance.HideLoading();
                UserDialogs.Instance.AlertAsync("Erro ao confirmar o frete", "Falha", "Entendi");
            }
        }
        private void inicializarComponente()
        {
            _freteListView = new ListView();
            _freteListView.HasUnevenRows       = true;
            _freteListView.RowHeight           = -1;
            _freteListView.SeparatorVisibility = SeparatorVisibility.None;
            _freteListView.SetBinding(ListView.ItemsSourceProperty, new Binding("."));
            _freteListView.ItemTemplate = new DataTemplate(typeof(FreteCell));
            _freteListView.ItemTapped  += async(sender, e) =>
            {
                if (e == null || _Historico)
                {
                    return;
                }

                FreteInfo entrInfo = (FreteInfo)((ListView)sender).SelectedItem;
                if (entrInfo.Situacao == FreteSituacaoEnum.PegandoEncomenda ||
                    entrInfo.Situacao == FreteSituacaoEnum.Entregando ||
                    entrInfo.Situacao == FreteSituacaoEnum.Entregue)
                {
                    var retEntr = await FreteFactory.create().atualizar(entrInfo.Id);

                    if (retEntr.IdMotorista == new UsuarioBLL().pegarAtual().Id)
                    {
                        var retMot = await new MotoristaBLL().listarPedidosAsync();
                        Navigation.PushAsync(new AcompanhaFreteMotoristaPage(retMot));
                    }
                    else
                    {
                        Navigation.PushAsync(new AcompanhaFretePage(retEntr));
                    }
                }
            };
        }
예제 #7
0
        public static async void buscarFreteComoMotorista(bool carregando = true)
        {
            if (carregando)
            {
                UserDialogs.Instance.ShowLoading("carregando...");
            }
            try
            {
                var regraMotorista = MotoristaFactory.create();
                var motorista      = regraMotorista.pegarAtual();
                var regraFrete     = FreteFactory.create();
                var fretes         = await regraFrete.listar(0, 0, FreteSituacaoEnum.ProcurandoMotorista);

                var freteListaPage = new FreteListaPage
                {
                    Title       = "Buscar atendimentos",
                    Fretes      = fretes,
                    FiltroBotao = false,
                    NovoBotao   = false
                };
                if (carregando)
                {
                    UserDialogs.Instance.HideLoading();
                }
                ((RootPage)App.Current.MainPage).PushAsync(freteListaPage);
            }
            catch (Exception e)
            {
                if (carregando)
                {
                    UserDialogs.Instance.HideLoading();
                }
                await UserDialogs.Instance.AlertAsync(e.Message, "Erro", "Entendi");
            }
        }
예제 #8
0
        public async Task <List <FreteInfo> > listarFreteAsync()
        {
            var ret = await FreteFactory.create().listar();

            var regraMotorista = MotoristaFactory.create();
            var motorista      = regraMotorista.pegarAtual();
            var aux            = ret.Where(x => x.IdMotorista == motorista.Id);

            if (aux != null)
            {
                foreach (var entrega in aux)
                {
                    entrega.MostraP = true;
                }
            }
            var auxEstados = new List <FreteLocalInfo>();

            foreach (var entrega in ret)
            {
                foreach (var local in entrega.Locais)
                {
                    auxEstados.Add(local);
                }
            }
            _filtro.Estados = auxEstados.GroupBy(x => x.Uf).Select(y => y.First()).Where(a => a.Uf != null).Select(z => z.Uf).ToList();
            return(ret);
        }
예제 #9
0
        public static async void listarMeuFreteComoMotorista()
        {
            UserDialogs.Instance.ShowLoading("carregando...");
            try
            {
                var regraMotorista = MotoristaFactory.create();
                var motorista      = regraMotorista.pegarAtual();
                var regraFrete     = FreteFactory.create();
                var fretes         = await regraFrete.listar(0, motorista.Id);

                var freteListaPage = new FreteListaPage
                {
                    Title       = "Meus atendimentos",
                    Fretes      = fretes,
                    FiltroBotao = false,
                    NovoBotao   = false
                };
                UserDialogs.Instance.HideLoading();
                ((RootPage)App.Current.MainPage).PushAsync(freteListaPage);
            }
            catch (Exception e)
            {
                UserDialogs.Instance.HideLoading();
                await UserDialogs.Instance.AlertAsync(e.Message, "Erro", "Entendi");
            }
        }
예제 #10
0
        private async System.Threading.Tasks.Task confirmaPegaEntregaAsync()
        {
            UserDialogs.Instance.ShowLoading("Aguarde...");
            try
            {
                var infoEntrega = await FreteFactory.create().pegar(_IdFrete);

                infoEntrega.Situacao = FreteSituacaoEnum.EntregaConfirmada;
                try
                {
                    await FreteFactory.create().alterar(infoEntrega);

                    _Situacao = infoEntrega.Situacao;
                    UserDialogs.Instance.HideLoading();
                    if (_Situacao == FreteSituacaoEnum.EntregaConfirmada)
                    {
                        _AcaoButton.Text      = "Entreguei a encomenda";
                        _AcaoButton.IsEnabled = false;
                        await UserDialogs.Instance.AlertAsync("Entrega confirmada");

                        Navigation.PopToRootAsync();
                    }
                }
                catch (Exception e)
                {
                    UserDialogs.Instance.HideLoading();
                    UserDialogs.Instance.Alert("Ocorreu um erro ao tentar alterar a situação da entrega", "Falha");
                }
            }
            catch (Exception e)
            {
                UserDialogs.Instance.HideLoading();
            }
        }
예제 #11
0
        public static async void atualizarPosicao(GPSLocalInfo local)
        {
            try
            {
                //var regraFrete = FreteFactory.create();
                //var frete = regraFrete.pegarAtual();
                var regraMotorista = MotoristaFactory.create();
                var motorista      = regraMotorista.pegarAtual();

                //if (motorista != null && frete != null)
                if (motorista != null)
                {
                    var retorno = await regraMotorista.atualizar(new MotoristaEnvioInfo
                    {
                        IdMotorista        = motorista.Id,
                        Latitude           = local.Latitude,
                        Longitude          = local.Longitude,
                        CodDisponibilidade = 1
                    });

                    if (AcompanhaPageAtual != null)
                    {
                        var mapaRota = new MapaRotaInfo
                        {
                            Distancia    = retorno.Distancia.HasValue ? retorno.Distancia.Value : 0,
                            DistanciaStr = retorno.DistanciaStr,
                            Tempo        = retorno.Tempo.HasValue ? retorno.Tempo.Value : 0,
                            TempoStr     = retorno.TempoStr,
                            PolylineStr  = retorno.Polyline,
                            PosicaoAtual = new Mapa.Model.LocalInfo
                            {
                                Latitude  = local.Latitude,
                                Longitude = local.Longitude
                            },
                            Polyline = MapaUtils.decodePolyline(retorno.Polyline)
                        };
                        if (string.IsNullOrEmpty(retorno.Polyline) && retorno.IdFrete.HasValue)
                        {
                            var regraFrete = FreteFactory.create();
                            var frete      = await regraFrete.pegar(retorno.IdFrete.Value);

                            mapaRota.Polyline = new List <Position>();
                            foreach (var freteLocal in frete.Locais)
                            {
                                mapaRota.Polyline.Add(new Position(freteLocal.Latitude, freteLocal.Longitude));
                            }
                        }
                        if (AcompanhaPageAtual != null)
                        {
                            AcompanhaPageAtual.atualizarMapa(mapaRota);
                        }
                    }
                }
            }
            catch (Exception erro)
            {
                UserDialogs.Instance.Alert(erro.Message, "Erro", "Entendi");
            }
        }
예제 #12
0
        private async void aceitar(FreteInfo frete)
        {
            var regraMotorista = MotoristaFactory.create();
            var motorista      = regraMotorista.pegarAtual();

            if (motorista == null)
            {
                await UserDialogs.Instance.AlertAsync("Você não é um motorista.", "Erro", "Entendi");

                return;
            }

            var aceitePage = new AceitePage {
                Frete = frete
            };

            aceitePage.AoAceitar += async(sender, f) => {
                UserDialogs.Instance.ShowLoading("aceitando...");
                try
                {
                    var regraFrete = FreteFactory.create();
                    var retorno    = await regraFrete.aceitar(new AceiteEnvioInfo
                    {
                        IdFrete     = frete.Id,
                        IdMotorista = motorista.Id,
                        Aceite      = true
                    });

                    if (retorno != null)
                    {
                        if (retorno.Aceite)
                        {
                            var novoFrete = await regraFrete.pegar(retorno.IdFrete);

                            UserDialogs.Instance.HideLoading();
                            AoAtualizarTela?.Invoke(this, novoFrete);
                        }
                        else
                        {
                            UserDialogs.Instance.HideLoading();
                            await UserDialogs.Instance.AlertAsync(retorno.Mensagem, "Erro", "Entendi");
                        }
                    }
                    else
                    {
                        UserDialogs.Instance.HideLoading();
                    }
                }
                catch (Exception erro)
                {
                    UserDialogs.Instance.HideLoading();
                    await UserDialogs.Instance.AlertAsync(erro.Message, "Erro", "Entendi");
                }
            };
            await Navigation.PushAsync(aceitePage);
        }
        private async void mostraDadosEntrega()
        {
            UserDialogs.Instance.ShowLoading("Carregando...");
            var ret = await FreteFactory.create().pegar(_IdFrete);

            UserDialogs.Instance.HideLoading();
            UserDialogs.Instance.Alert(
                "Usuário: " + ret.Usuario.Nome +
                "\nTelefone: " + ret.Usuario.Telefone +
                "\nObservação: " + ret.Observacao,
                "Dados da entrega", "Fechar");
        }
예제 #14
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);
        }
예제 #15
0
        private void _avaliarClicked(object sender, EventArgs e)
        {
            var regraUsuario = UsuarioFactory.create();
            var usuario      = regraUsuario.pegarAtual();

            var descricao = "";
            var frete     = this.Frete;

            if (frete.IdUsuario == usuario.Id)
            {
                descricao = "Como você avalia o motorista?";
            }
            else if (frete.IdMotorista == usuario.Id)
            {
                descricao = "Como você avalia o cliente?";
            }
            var avaliePage = new AvaliePage
            {
                Descricao = descricao
            };

            avaliePage.AoAvaliar += async(s1, nota) =>
            {
                UserDialogs.Instance.ShowLoading("carregando...");
                try
                {
                    var regraFrete = FreteFactory.create();
                    frete = await regraFrete.pegar(this.Frete.Id);

                    if (frete.IdUsuario == usuario.Id)
                    {
                        frete.NotaMotorista = nota;
                    }
                    else if (frete.IdMotorista == usuario.Id)
                    {
                        frete.NotaFrete = nota;
                    }
                    await regraFrete.alterar(frete);

                    UserDialogs.Instance.HideLoading();
                    await Navigation.PopAsync();

                    AoAtualizarTela?.Invoke(this, frete);
                }
                catch (Exception erro)
                {
                    UserDialogs.Instance.HideLoading();
                    await UserDialogs.Instance.AlertAsync(erro.Message, "Erro", "Entendi");
                }
            };
            Navigation.PushAsync(avaliePage);
        }
        public async Task <List <FreteInfo> > listarFreteAsync()
        {
            var ret = await FreteFactory.create().listar();

            if (_Historico)
            {
                ret = ret.Where(x => x.Situacao == FreteSituacaoEnum.Cancelado || x.Situacao == FreteSituacaoEnum.EntregaConfirmada).ToList();
            }
            else
            {
                ret = ret.Where(x => x.Situacao != FreteSituacaoEnum.Cancelado && x.Situacao != FreteSituacaoEnum.EntregaConfirmada).ToList();
            }
            return(ret);
        }
예제 #17
0
        private void inicializarComponente()
        {
            _EnviarButton = new Button
            {
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.Start,
                Margin            = new Thickness(8, 0),
                Style             = Estilo.Current[Estilo.BTN_PRINCIPAL],
                Text = "Procurar Motorista"
            };
            _EnviarButton.Clicked += async(sender, e) => {
                UserDialogs.Instance.ShowLoading("Enviando...");
                _Info.Situacao = FreteSituacaoEnum.ProcurandoMotorista;
                await FreteFactory.create().alterar(_Info);

                UserDialogs.Instance.HideLoading();
                Navigation.PopToRootAsync();
            };
            _CustomMap = new CustomMap
            {
                MapType           = MapType.Street,
                VerticalOptions   = LayoutOptions.FillAndExpand,
                HorizontalOptions = LayoutOptions.Fill
            };
            var pontos = MapsUtils.DecodePolyline(_Info.Polyline);

            foreach (var ponto in pontos)
            {
                _CustomMap.RouteCoordinates.Add(ponto);
            }
            foreach (var pin in _Info.Locais)
            {
                _CustomMap.Pins.Add(new Pin()
                {
                    Position = new Position(pin.Latitude, pin.Longitude),
                    Label    = getTextItem(pin.Tipo)
                });
            }
            var aux        = _Info.Locais.First();
            var midleLat   = pontos.Average(x => x.Latitude);
            var midleLon   = pontos.Average((x => x.Longitude));
            var degressLat = Math.Abs(pontos.Max(x => x.Latitude) - pontos.Min(x => x.Latitude));
            var degressLon = Math.Abs(pontos.Max(x => x.Longitude) - pontos.Min(x => x.Longitude));

            _CustomMap.MoveToRegion(new MapSpan(new Position(midleLat, midleLon), degressLat + (degressLat * 0.2), degressLon + (degressLon * 0.2)));
        }
예제 #18
0
        private async void alterar(FreteInfo frete)
        {
            UserDialogs.Instance.ShowLoading("carregando...");
            try
            {
                var regraFrete = FreteFactory.create();
                await regraFrete.alterarSituacao(frete.Id, frete.Situacao);

                BindingContext = await regraFrete.pegar(frete.Id);

                UserDialogs.Instance.HideLoading();
                //atualizarTela(this.Frete);
                AoAtualizarTela?.Invoke(this, frete);
            }
            catch (Exception erro)
            {
                UserDialogs.Instance.HideLoading();
                await UserDialogs.Instance.AlertAsync(erro.Message, "Erro", "Entendi");
            }
        }
예제 #19
0
        private async System.Threading.Tasks.Task negaFreteAsync()
        {
            UserDialogs.Instance.ShowLoading("Negando...");
            try
            {
                //var ret = await FreteFactory.create().aceitar(false, _Info.IdFrete, new MotoristaBLL().pegarAtual().Id);
                var ret = await FreteFactory.create().aceitar(new AceiteEnvioInfo
                {
                    IdFrete     = _Info.IdFrete,
                    IdMotorista = new MotoristaBLL().pegarAtual().Id,
                    Aceite      = true
                });

                UserDialogs.Instance.HideLoading();
                Navigation.PopAsync();
            }
            catch (Exception e)
            {
                UserDialogs.Instance.HideLoading();
                AtualizacaoFrete.setConfirm(false);
            }
        }
예제 #20
0
        public async Task iniciaAsync(FreteRetornoInfo info)
        {
            if ((info.Latitude + ";" + info.Longitude) != _LastLatLon)
            {
                Device.BeginInvokeOnMainThread(async() =>
                {
                    if (_FreteInfo == null)
                    {
                        _FreteInfo = await FreteFactory.create().pegar(info.IdFrete);
                    }
                    apresentaInfo(info, new Position(info.Latitude, info.Longitude));
                });

                _LastLatLon = (info.Latitude + ";" + info.Longitude);
            }

            task = Task.Factory.StartNew(async() =>
            {
                await Task.Delay(delay);
                var retInfo = await FreteFactory.create().atualizar(_IdFrete);
                await iniciaAsync(retInfo);
            });
        }
예제 #21
0
        private void inicializarComponente()
        {
            _ObservacaoEntry = new Entry {
                VerticalOptions   = LayoutOptions.Start,
                HorizontalOptions = LayoutOptions.Fill,
                Placeholder       = "Qual a carga?"
            };
            _TipoVeiculoLayout = new StackLayout {
                Orientation       = StackOrientation.Vertical,
                VerticalOptions   = LayoutOptions.Start,
                HorizontalOptions = LayoutOptions.Fill,
                Children          =
                {
                    criarTipoVeiculoEntry()
                }
            };
            _AddTipoVeiculoButton = new Button()
            {
                Text = "Adicionar outro tipo de veículo",
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.Start,
                Style             = Estilo.Current[Estilo.BTN_PRINCIPAL],
                FontSize          = 12
            };
            _AddTipoVeiculoButton.Clicked += (sender, e) => {
                _TipoVeiculoLayout.Children.Add(criarTipoVeiculoEntry());
            };

            _CarroceriaLayout = new StackLayout
            {
                Orientation       = StackOrientation.Vertical,
                VerticalOptions   = LayoutOptions.Start,
                HorizontalOptions = LayoutOptions.Fill,
                Children          =
                {
                    criarCarroceriaEntry()
                }
            };

            _AddCarroceriaButton = new Button()
            {
                Text = "Adicionar outro tipo de carroceria",
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.Start,
                Style             = Estilo.Current[Estilo.BTN_PRINCIPAL],
                FontSize          = 12
            };
            _AddCarroceriaButton.Clicked += (sender, e) => {
                _CarroceriaLayout.Children.Add(criarCarroceriaEntry());
            };

            _PesoEntry = new Entry
            {
                VerticalOptions   = LayoutOptions.Start,
                HorizontalOptions = LayoutOptions.Fill,
                Keyboard          = Keyboard.Numeric,
                Style             = Estilo.Current[Estilo.ENTRY_PADRAO],
                Placeholder       = "Peso em Toneladas"
            };

            _EmBlocoSwitch = new Switch {
                VerticalOptions   = LayoutOptions.Start,
                HorizontalOptions = LayoutOptions.Start,
                IsToggled         = false
            };

            _EmBlocoSwitch.Toggled += (object sender, ToggledEventArgs e) => {
                if (e.Value)
                {
                    _AlturaEntry.IsEnabled       = false;
                    _LarguraEntry.IsEnabled      = false;
                    _ProfundidadeEntry.IsEnabled = false;
                }
                else
                {
                    _AlturaEntry.IsEnabled       = true;
                    _LarguraEntry.IsEnabled      = true;
                    _ProfundidadeEntry.IsEnabled = true;
                }
            };

            _LarguraEntry = new Entry
            {
                VerticalOptions   = LayoutOptions.Start,
                HorizontalOptions = LayoutOptions.Fill,
                Keyboard          = Keyboard.Numeric,
                Style             = Estilo.Current[Estilo.ENTRY_PADRAO],
                Placeholder       = "Largura total (m)"
            };

            _AlturaEntry = new Entry
            {
                VerticalOptions   = LayoutOptions.Start,
                HorizontalOptions = LayoutOptions.Fill,
                Keyboard          = Keyboard.Numeric,
                Style             = Estilo.Current[Estilo.ENTRY_PADRAO],
                Placeholder       = "Altura total (m)"
            };

            _ProfundidadeEntry = new Entry
            {
                VerticalOptions   = LayoutOptions.Start,
                HorizontalOptions = LayoutOptions.Fill,
                Keyboard          = Keyboard.Numeric,
                Style             = Estilo.Current[Estilo.ENTRY_PADRAO],
                Placeholder       = "Comprimento total (m)"
            };

            _LocalRetirada = new StackLayout {
                Orientation       = StackOrientation.Vertical,
                VerticalOptions   = LayoutOptions.Start,
                HorizontalOptions = LayoutOptions.Fill
            };
            if (!_Edit)
            {
                _LocalRetirada.Children.Add(getEnderecoRetirada());
            }

            /*_AdicionarRetirardaButton = new Button
             * {
             *  VerticalOptions = LayoutOptions.Start,
             *  HorizontalOptions = LayoutOptions.Fill,
             *  Style = Estilo.Current[Estilo.BTN_PADRAO],
             *  Text = "Adicionar mais um endereço"
             * };
             * _AdicionarRetirardaButton.Clicked += (sender, e) => {
             *  _LocalRetirada.Children.Add(getEnderecoRetirada());
             * };*/

            _LocalEntrega = new StackLayout
            {
                Orientation       = StackOrientation.Vertical,
                VerticalOptions   = LayoutOptions.Start,
                HorizontalOptions = LayoutOptions.Fill
            };
            if (!_Edit)
            {
                _LocalEntrega.Children.Add(getEnderecoEntrega());
            }

            /*_AdicionarEntregaButton = new Button
             * {
             *  VerticalOptions = LayoutOptions.Start,
             *  HorizontalOptions = LayoutOptions.Fill,
             *  Style = Estilo.Current[Estilo.BTN_PADRAO],
             *  Text = "Adicionar mais um endereço"
             * };
             * _AdicionarEntregaButton.Clicked += (sender, e) => {
             *  _LocalEntrega.Children.Add(getEnderecoEntrega());
             * };*/

            _DataRetirada = new DatePicker
            {
                HorizontalOptions = LayoutOptions.FillAndExpand,
                VerticalOptions   = LayoutOptions.Start,
                Style             = Estilo.Current[Estilo.ENTRY_DATA]
            };
            _HoraRetirada = new TimePicker
            {
                WidthRequest      = 100,
                HorizontalOptions = LayoutOptions.Start,
                VerticalOptions   = LayoutOptions.Start,
                Style             = Estilo.Current[Estilo.ENTRY_TEMPO]
            };

            _DataEntrega = new DatePicker
            {
                HorizontalOptions = LayoutOptions.FillAndExpand,
                VerticalOptions   = LayoutOptions.Start,
                Style             = Estilo.Current[Estilo.ENTRY_DATA]
            };
            _HoraEntrega = new TimePicker
            {
                WidthRequest      = 100,
                HorizontalOptions = LayoutOptions.Start,
                VerticalOptions   = LayoutOptions.Start,
                Style             = Estilo.Current[Estilo.ENTRY_TEMPO]
            };

            _UsaDataEntrega = new Switch
            {
                VerticalOptions   = LayoutOptions.Start,
                HorizontalOptions = LayoutOptions.Start,
                IsToggled         = false
            };
            _UsaDataEntrega.Toggled += (sender, e) => {
                if (e.Value)
                {
                    _ContainerDataEntregaAux.Children.Remove(_ContainerDataEntregaConteudo);
                }
                else
                {
                    _ContainerDataEntregaAux.Children.Add(_ContainerDataEntregaConteudo);
                }
            };

            _PrecoEntry = new Entry
            {
                VerticalOptions   = LayoutOptions.Start,
                HorizontalOptions = LayoutOptions.Fill,
                Keyboard          = Keyboard.Numeric,
                Style             = Estilo.Current[Estilo.ENTRY_PADRAO],
                Placeholder       = "Valor do Frete"
            };

            _ValorACombinar = new Switch
            {
                VerticalOptions   = LayoutOptions.Start,
                HorizontalOptions = LayoutOptions.Start,
                IsToggled         = false
            };

            _ValorACombinar.Toggled += (object sender, ToggledEventArgs e) => {
                if (e.Value)
                {
                    _PrecoEntry.IsEnabled = false;
                }
                else
                {
                    _PrecoEntry.IsEnabled = true;
                }
            };

            _EnviarButton = new Button
            {
                VerticalOptions   = LayoutOptions.Start,
                HorizontalOptions = LayoutOptions.Fill,
                Style             = Estilo.Current[Estilo.BTN_PRINCIPAL],
                Text = !_Edit ? "SALVAR" : "ATUALIZAR"
            };
            _EnviarButton.Clicked += async(sender, e) => {
                var regraEntrega = FreteFactory.create();
                UserDialogs.Instance.ShowLoading("Enviando...");
                try
                {
                    if (!_Edit)
                    {
                        var id_frete = await regraEntrega.inserir(Frete);

                        UserDialogs.Instance.HideLoading();
                        await DisplayAlert("Aviso", "Frete cadastro com sucesso.", "Fechar");
                    }
                    else
                    {
                        await regraEntrega.alterar(Frete);

                        UserDialogs.Instance.HideLoading();
                        await DisplayAlert("Aviso", "Frete atualizado com sucesso.", "Fechar");
                    }


                    await Navigation.PopAsync();
                }
                catch (Exception erro)
                {
                    UserDialogs.Instance.HideLoading();
                    UserDialogs.Instance.ShowError(erro.Message, 8000);
                }
            };
        }
예제 #22
0
        protected async void aceitarClicked(object sender, EventArgs e)
        {
            UserDialogs.Instance.ShowLoading("Efetuando pagamento...");
            try
            {
                var regraMotorista = MotoristaFactory.create();
                var motorista      = regraMotorista.pegarAtual();
                if (motorista == null)
                {
                    UserDialogs.Instance.HideLoading();
                    UserDialogs.Instance.Alert("Você não é um motorista.", "Erro", "Entendi");
                    return;
                }
                var regraCartao = PagamentoCartaoFactory.create();
                var cartoes     = await regraCartao.listar(motorista.Id);

                if (cartoes != null && cartoes.Count > 0)
                {
                    var pagamento      = gerarPagamento(motorista, _frete, cartoes[0]);
                    var regraPagamento = PagamentoFactory.create();
                    var retorno        = await regraPagamento.pagarComToken(pagamento);

                    if (retorno.Situacao == SituacaoPagamentoEnum.Pago)
                    {
                        pagamento = await regraPagamento.pegar(retorno.IdPagamento);

                        var mensagem = "Foram debitados R$ {0} do seu cartão de crédito.";
                        CrossLocalNotifications.Current.Show("Easy Barcos", string.Format(mensagem, pagamento.ValorTotalStr));

                        var regraFrete = FreteFactory.create();
                        _frete = await regraFrete.pegar(_frete.Id);

                        _frete.IdPagamento = pagamento.IdPagamento;
                        await regraFrete.alterar(_frete);

                        UserDialogs.Instance.HideLoading();
                        AoAceitar?.Invoke(this, _frete);
                    }
                    else
                    {
                        UserDialogs.Instance.HideLoading();
                        await DisplayAlert("Erro", retorno.Mensagem, "Entendi");
                    }
                }
                else
                {
                    UserDialogs.Instance.HideLoading();
                    var cartaoPage = new CartaoPage
                    {
                        UsaCredito   = true,
                        UsaDebito    = false,
                        TotalVisivel = true,
                        Pagamento    = gerarPagamento(motorista, _frete)
                    };
                    cartaoPage.AoEfetuarPagamento += async(s2, pagamento) =>
                    {
                        UserDialogs.Instance.ShowLoading("Atualizando frete...");
                        try
                        {
                            var regraFrete = FreteFactory.create();
                            _frete = await regraFrete.pegar(_frete.Id);

                            _frete.IdPagamento = pagamento.IdPagamento;
                            await regraFrete.alterar(_frete);

                            UserDialogs.Instance.HideLoading();
                            AoAceitar?.Invoke(this, _frete);
                        }
                        catch (Exception erro)
                        {
                            UserDialogs.Instance.HideLoading();
                            await UserDialogs.Instance.AlertAsync(erro.Message, "Erro", "Entendi");
                        }
                    };
                    await Navigation.PushAsync(cartaoPage);
                }
            }
            catch (Exception erro)
            {
                UserDialogs.Instance.HideLoading();
                await UserDialogs.Instance.AlertAsync(erro.Message, "Erro", "Entendi");
            }
        }
예제 #23
0
        public static void gerarPagamento(FreteInfo frete, Action <FreteInfo> aoEfetuarPagamento)
        {
            var regraUsuario = UsuarioFactory.create();
            var usuario      = regraUsuario.pegarAtual();
            var pgtoInicial  = new PagamentoInfo
            {
                Cpf       = usuario.CpfCnpj,
                IdUsuario = usuario.Id
            };

            pgtoInicial.Itens.Add(new PagamentoItemInfo
            {
                Descricao  = "Frete",
                Quantidade = 1,
                Valor      = frete.Preco
            });
            var metodoPagamento = new PagamentoMetodoPage
            {
                Pagamento   = pgtoInicial,
                UsaCredito  = true,
                UsaDebito   = false,
                UsaBoleto   = false,
                UsaDinheiro = true
            };

            metodoPagamento.AoEfetuarPagamento += async(sender, pagamento) =>
            {
                frete.IdPagamento = pagamento.IdPagamento;
                UserDialogs.Instance.ShowLoading("Processando pagamento...");
                try
                {
                    var regraFrete = FreteFactory.create();
                    switch (pagamento.Situacao)
                    {
                    case SituacaoPagamentoEnum.Pago:
                        frete.Situacao = FreteSituacaoEnum.ProcurandoMotorista;
                        break;

                    case SituacaoPagamentoEnum.Cancelado:
                        frete.Situacao = FreteSituacaoEnum.Cancelado;
                        break;

                    default:
                        frete.Situacao = FreteSituacaoEnum.AguardandoPagamento;
                        break;
                    }
                    var id_frete = frete.Id;
                    if (id_frete > 0)
                    {
                        await regraFrete.alterar(frete);
                    }
                    else
                    {
                        id_frete = await regraFrete.inserir(frete);
                    }
                    var novoFrete = await regraFrete.pegar(id_frete);

                    UserDialogs.Instance.HideLoading();
                    aoEfetuarPagamento?.Invoke(novoFrete);
                }
                catch (Exception erro)
                {
                    UserDialogs.Instance.HideLoading();
                    await UserDialogs.Instance.AlertAsync(erro.Message, "Erro", "Entendi");
                }
                UserDialogs.Instance.HideLoading();
            };
            ((RootPage)App.Current.MainPage).PushAsync(metodoPagamento);
        }
예제 #24
0
        public async static void inicializar()
        {
            var regraUsuario = UsuarioFactory.create();
            var usuario      = regraUsuario.pegarAtual();

            if (usuario == null)
            {
                return;
            }
            UserDialogs.Instance.ShowLoading("carregando...");
            try
            {
                var regraFrete = FreteFactory.create();
                var fretes     = await regraFrete.listar(usuario.Id, usuario.Id);

                if (fretes.Count() > 0)
                {
                    var frete     = regraFrete.pegarAtual();
                    var situacoes = new List <FreteSituacaoEnum>()
                    {
                        FreteSituacaoEnum.PegandoEncomenda,
                        FreteSituacaoEnum.Entregando
                    };
                    var freteAtual = (
                        from f in fretes
                        where (frete == null || f.Id == frete.Id) && situacoes.Contains(f.Situacao)
                        select f
                        ).FirstOrDefault();
                    if (freteAtual != null)
                    {
                        regraFrete.gravarAtual(freteAtual);
                    }
                    else
                    {
                        regraFrete.limparAtual();
                    }
                }
                else
                {
                    regraFrete.limparAtual();
                }
                var regraMotorista = MotoristaFactory.create();
                var motorista      = regraMotorista.pegarAtual();
                var freteInfo      = regraFrete.pegarAtual();
                if (motorista != null)
                {
                    if (motorista.Situacao == MotoristaSituacaoEnum.AguardandoAprovacao)
                    {
                        UserDialogs.Instance.Alert("Conta de motorista aguardando aprovação!", "Aviso", "Entendi");
                    }
                    else
                    {
                        if (freteInfo != null)
                        {
                            CaronaUtils.acompanharComoMotorista(freteInfo);
                        }
                        else
                        {
                            CaronaUtils.buscarFreteComoMotorista(false);
                        }
                    }
                }
                else
                {
                    if (freteInfo != null)
                    {
                        CaronaUtils.acompanharComoCliente(freteInfo);
                    }
                    else
                    {
                        CaronaUtils.criar();
                    }
                }
                UserDialogs.Instance.HideLoading();
            }
            catch (Exception e)
            {
                UserDialogs.Instance.HideLoading();
                await UserDialogs.Instance.AlertAsync(e.Message, "Erro", "Entendi");
            }
        }
예제 #25
0
        protected override void OnBindingContextChanged()
        {
            base.OnBindingContextChanged();
            var frete = (FreteInfo)BindingContext;

            var regraUsuario = UsuarioFactory.create();
            var usuario      = regraUsuario.pegarAtual();

            var regraMotorista = MotoristaFactory.create();
            var motorista      = regraMotorista.pegarAtual();

            var regraFrete = FreteFactory.create();
            var freteAtual = regraFrete.pegarAtual();

            _mainLayout.Children.Add(new StackLayout
            {
                Orientation       = StackOrientation.Horizontal,
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.Start,
                Spacing           = 5,
                Children          =
                {
                    new IconImage {
                        HorizontalOptions = LayoutOptions.Start,
                        VerticalOptions   = LayoutOptions.Center,
                        //Icon = "fa-truck",
                        Icon         = "fa-ship",
                        IconSize     = 20,
                        WidthRequest = 20,
                        IconColor    = Estilo.Current.PrimaryColor
                    },
                    _SituacaoLabel
                }
            });
            if (frete != null && !string.IsNullOrEmpty(frete.EnderecoDestino))
            {
                _mainLayout.Children.Add(new StackLayout
                {
                    Orientation       = StackOrientation.Horizontal,
                    HorizontalOptions = LayoutOptions.Fill,
                    VerticalOptions   = LayoutOptions.Start,
                    Spacing           = 5,
                    Children          =
                    {
                        new IconImage {
                            HorizontalOptions = LayoutOptions.Start,
                            VerticalOptions   = LayoutOptions.Start,
                            Icon         = "fa-map-marker",
                            IconSize     = 16,
                            WidthRequest = 20,
                            IconColor    = Estilo.Current.PrimaryColor
                        },
                        _OrigemLabel
                    }
                });
            }
            _mainLayout.Children.Add(gerarAtributo(frete));
            if (frete != null && !string.IsNullOrEmpty(frete.Dimensao))
            {
                _mainLayout.Children.Add(new StackLayout
                {
                    Orientation       = StackOrientation.Horizontal,
                    HorizontalOptions = LayoutOptions.Fill,
                    VerticalOptions   = LayoutOptions.Start,
                    Spacing           = 5,
                    Children          =
                    {
                        new IconImage {
                            HorizontalOptions = LayoutOptions.Start,
                            VerticalOptions   = LayoutOptions.Center,
                            Icon         = "fa-arrows-alt",
                            IconSize     = 16,
                            WidthRequest = 20,
                            IconColor    = Estilo.Current.PrimaryColor
                        },
                        _DimensaoLabel
                    }
                });
            }
            if (motorista != null)
            {
                _mainLayout.Children.Add(new StackLayout
                {
                    Orientation       = StackOrientation.Horizontal,
                    HorizontalOptions = LayoutOptions.Fill,
                    VerticalOptions   = LayoutOptions.Start,
                    Spacing           = 5,
                    Children          =
                    {
                        new IconImage {
                            HorizontalOptions = LayoutOptions.Start,
                            VerticalOptions   = LayoutOptions.Center,
                            Icon         = "fa-user",
                            IconSize     = 16,
                            WidthRequest = 20,
                            IconColor    = Estilo.Current.PrimaryColor
                        },
                        new Label     {
                            HorizontalOptions = LayoutOptions.Start,
                            VerticalOptions   = LayoutOptions.Start,
                            FontAttributes    = FontAttributes.Bold,
                            TextColor         = Estilo.Current.PrimaryColor,
                            Text = frete.Usuario.Nome
                        }
                    }
                });
                if (freteAtual != null && freteAtual.Id == frete.Id && frete.IdMotorista == motorista.Id)
                {
                    _mainLayout.Children.Add(new StackLayout
                    {
                        Orientation       = StackOrientation.Horizontal,
                        HorizontalOptions = LayoutOptions.Fill,
                        VerticalOptions   = LayoutOptions.Start,
                        Spacing           = 5,
                        Children          =
                        {
                            new IconImage {
                                HorizontalOptions = LayoutOptions.Start,
                                VerticalOptions   = LayoutOptions.Center,
                                Icon         = "fa-truck",
                                IconSize     = 16,
                                WidthRequest = 20,
                                IconColor    = Estilo.Current.PrimaryColor
                            },
                            new Label     {
                                HorizontalOptions = LayoutOptions.Start,
                                VerticalOptions   = LayoutOptions.Start,
                                FontAttributes    = FontAttributes.Bold,
                                TextColor         = Estilo.Current.PrimaryColor,
                                Text = "Em Andamento"
                            }
                        }
                    });
                }
            }
            else if (frete.IdMotorista > 0)
            {
                _mainLayout.Children.Add(new StackLayout
                {
                    Orientation       = StackOrientation.Horizontal,
                    HorizontalOptions = LayoutOptions.Fill,
                    VerticalOptions   = LayoutOptions.Start,
                    Spacing           = 5,
                    Children          =
                    {
                        new IconImage {
                            HorizontalOptions = LayoutOptions.Start,
                            VerticalOptions   = LayoutOptions.Center,
                            Icon         = "fa-user",
                            IconSize     = 16,
                            WidthRequest = 20,
                            IconColor    = Estilo.Current.PrimaryColor
                        },
                        new Label     {
                            HorizontalOptions = LayoutOptions.Start,
                            VerticalOptions   = LayoutOptions.Start,
                            FontAttributes    = FontAttributes.Bold,
                            TextColor         = Estilo.Current.PrimaryColor,
                            Text = frete.Motorista.Usuario.Nome
                        }
                    }
                });
            }
        }
예제 #26
0
        private void inicializarComponente()
        {
            _PassageiroEntry = new XfxEntry
            {
                VerticalOptions   = LayoutOptions.Start,
                HorizontalOptions = LayoutOptions.Fill,
                Placeholder       = "Qtd. Passageiros",
                Keyboard          = Keyboard.Numeric,
                ErrorDisplay      = ErrorDisplay.None
            };

            _ObservacaoEntry = new XfxEntry
            {
                VerticalOptions   = LayoutOptions.Start,
                HorizontalOptions = LayoutOptions.Fill,
                Placeholder       = "Qual a carga?",
                ErrorDisplay      = ErrorDisplay.None
            };
            _TipoVeiculoLayout = new StackLayout
            {
                Orientation       = StackOrientation.Vertical,
                VerticalOptions   = LayoutOptions.Start,
                HorizontalOptions = LayoutOptions.Fill,
                Children          =
                {
                    criarTipoVeiculoEntry()
                }
            };

            _UsaCargaSwitch = new Switch
            {
                VerticalOptions   = LayoutOptions.Start,
                HorizontalOptions = LayoutOptions.Start,
                IsToggled         = false
            };
            _UsaCargaSwitch.Toggled += (sender, e) =>
            {
                _cargaStackLayout.Children.Clear();
                if (e.Value)
                {
                    _cargaStackLayout.Children.Add(new Label {
                        HorizontalOptions = LayoutOptions.Fill,
                        VerticalOptions   = LayoutOptions.Start,
                        Style             = Estilo.Current[Estilo.TITULO2],
                        Text = "Informações de carga:"
                    });
                    _cargaStackLayout.Children.Add(_PesoEntry);
                    _cargaStackLayout.Children.Add(_AlturaEntry);
                    _cargaStackLayout.Children.Add(_ProfundidadeEntry);
                    _cargaStackLayout.Children.Add(_LarguraEntry);
                }
            };

            _cargaStackLayout = new StackLayout
            {
                Orientation       = StackOrientation.Vertical,
                VerticalOptions   = LayoutOptions.Start,
                HorizontalOptions = LayoutOptions.Fill
            };

            _PesoEntry = new XfxEntry
            {
                VerticalOptions   = LayoutOptions.Start,
                HorizontalOptions = LayoutOptions.Fill,
                Keyboard          = Keyboard.Numeric,
                Style             = Estilo.Current[Estilo.ENTRY_PADRAO],
                Placeholder       = "Peso em Toneladas",
                ErrorDisplay      = ErrorDisplay.None
            };

            _LarguraEntry = new XfxEntry
            {
                VerticalOptions   = LayoutOptions.Start,
                HorizontalOptions = LayoutOptions.Fill,
                Keyboard          = Keyboard.Numeric,
                Style             = Estilo.Current[Estilo.ENTRY_PADRAO],
                Placeholder       = "Largura total (m)",
                ErrorDisplay      = ErrorDisplay.None
            };

            _AlturaEntry = new XfxEntry
            {
                VerticalOptions   = LayoutOptions.Start,
                HorizontalOptions = LayoutOptions.Fill,
                Keyboard          = Keyboard.Numeric,
                Style             = Estilo.Current[Estilo.ENTRY_PADRAO],
                Placeholder       = "Altura total (m)",
                ErrorDisplay      = ErrorDisplay.None
            };

            _ProfundidadeEntry = new XfxEntry
            {
                VerticalOptions   = LayoutOptions.Start,
                HorizontalOptions = LayoutOptions.Fill,
                Keyboard          = Keyboard.Numeric,
                Style             = Estilo.Current[Estilo.ENTRY_PADRAO],
                Placeholder       = "Comprimento total (m)",
                ErrorDisplay      = ErrorDisplay.None
            };

            _AgendandoSwitch = new Switch
            {
                VerticalOptions   = LayoutOptions.Start,
                HorizontalOptions = LayoutOptions.Start,
                IsToggled         = false
            };
            _AgendandoSwitch.Toggled += (sender, e) => {
                _agendadoStackLayout.Children.Clear();
                if (e.Value)
                {
                    _agendadoStackLayout.Children.Add(new Label
                    {
                        HorizontalOptions = LayoutOptions.Fill,
                        VerticalOptions   = LayoutOptions.Start,
                        Text  = "Data hora da Retirada:",
                        Style = Estilo.Current[Estilo.LABEL_CONTROL]
                    });
                    _agendadoStackLayout.Children.Add(new StackLayout {
                        Orientation       = StackOrientation.Horizontal,
                        HorizontalOptions = LayoutOptions.Fill,
                        VerticalOptions   = LayoutOptions.Start,
                        Children          =
                        {
                            new IconImage {
                                Icon = "fa-calendar",
                                HorizontalOptions = LayoutOptions.Start,
                                VerticalOptions   = LayoutOptions.Center,
                                Style             = Estilo.Current[Estilo.ICONE_PADRAO]
                            },
                            _DataRetiradaPicker,
                            new IconImage {
                                Icon = "fa-clock-o",
                                HorizontalOptions = LayoutOptions.Start,
                                VerticalOptions   = LayoutOptions.Center,
                                Style             = Estilo.Current[Estilo.ICONE_PADRAO]
                            },
                            _HoraRetiradaPicker
                        }
                    });
                    _agendadoStackLayout.Children.Add(new Label
                    {
                        HorizontalOptions = LayoutOptions.Fill,
                        VerticalOptions   = LayoutOptions.Start,
                        Text  = "Data hora máxima para entrega:",
                        Style = Estilo.Current[Estilo.LABEL_CONTROL]
                    });
                    _agendadoStackLayout.Children.Add(new StackLayout
                    {
                        Orientation       = StackOrientation.Horizontal,
                        HorizontalOptions = LayoutOptions.Fill,
                        VerticalOptions   = LayoutOptions.Start,
                        Children          =
                        {
                            new IconImage {
                                Icon = "fa-calendar",
                                HorizontalOptions = LayoutOptions.Start,
                                VerticalOptions   = LayoutOptions.Center,
                                Style             = Estilo.Current[Estilo.ICONE_PADRAO]
                            },
                            _DataEntregaPicker,
                            new IconImage {
                                Icon = "fa-clock-o",
                                HorizontalOptions = LayoutOptions.Start,
                                VerticalOptions   = LayoutOptions.Center,
                                Style             = Estilo.Current[Estilo.ICONE_PADRAO]
                            },
                            _HoraEntregaPicker
                        }
                    });
                }
            };

            _agendadoStackLayout = new StackLayout
            {
                Orientation       = StackOrientation.Vertical,
                VerticalOptions   = LayoutOptions.Start,
                HorizontalOptions = LayoutOptions.Fill
            };

            _DataRetiradaPicker = new DatePicker
            {
                HorizontalOptions = LayoutOptions.FillAndExpand,
                VerticalOptions   = LayoutOptions.Start,
                Style             = Estilo.Current[Estilo.ENTRY_DATA]
            };
            _HoraRetiradaPicker = new TimePicker
            {
                WidthRequest      = 100,
                HorizontalOptions = LayoutOptions.Start,
                VerticalOptions   = LayoutOptions.Start,
                Style             = Estilo.Current[Estilo.ENTRY_TEMPO]
            };

            _DataEntregaPicker = new DatePicker
            {
                HorizontalOptions = LayoutOptions.FillAndExpand,
                VerticalOptions   = LayoutOptions.Start,
                Style             = Estilo.Current[Estilo.ENTRY_DATA]
            };
            _HoraEntregaPicker = new TimePicker
            {
                WidthRequest      = 100,
                HorizontalOptions = LayoutOptions.Start,
                VerticalOptions   = LayoutOptions.Start,
                Style             = Estilo.Current[Estilo.ENTRY_TEMPO]
            };

            _PrecoEntry = new XfxEntry
            {
                VerticalOptions   = LayoutOptions.Start,
                HorizontalOptions = LayoutOptions.Fill,
                Keyboard          = Keyboard.Numeric,
                Style             = Estilo.Current[Estilo.ENTRY_PADRAO],
                Placeholder       = "Valor do Frete",
                ErrorDisplay      = ErrorDisplay.None
            };

            _EnviarButton = new Button
            {
                VerticalOptions   = LayoutOptions.Start,
                HorizontalOptions = LayoutOptions.Fill,
                Style             = Estilo.Current[Estilo.BTN_PRINCIPAL],
                Text = "SALVAR"
            };
            _EnviarButton.Clicked += async(sender, e) => {
                var regraFrete = FreteFactory.create();
                UserDialogs.Instance.ShowLoading("Enviando...");
                try
                {
                    var frete = this.Frete;
                    definirTipoPorOrdem(frete);
                    var id_frete = await regraFrete.inserir(frete);

                    frete = await regraFrete.pegar(id_frete);

                    UserDialogs.Instance.HideLoading();
                    AoCadastrar?.Invoke(this, frete);
                    //await DisplayAlert("Aviso", "Frete cadastro com sucesso.", "Fechar");
                    //await Navigation.PopAsync();
                }
                catch (Exception erro)
                {
                    UserDialogs.Instance.HideLoading();
                    await UserDialogs.Instance.AlertAsync(erro.Message, "Erro", "Entendi");
                }
            };
        }
예제 #27
0
        /*
         * private string getImagemCaminhao(int? codCaminhao)
         * {
         *  switch (codCaminhao)
         *  {
         *      case 1:
         *          return "Veiculo_01.png";
         *      case 2:
         *          return "Veiculo_02.png";
         *      case 3:
         *          return "Veiculo_03.png";
         *      case 4:
         *          return "Veiculo_04.png";
         *      case 5:
         *          return "Veiculo_05.png";
         *      case 6:
         *          return "Veiculo_06.png";
         *      case 7:
         *          return "Veiculo_07.png";
         *      case 8:
         *          return "Veiculo_08.png";
         *      case 9:
         *          return "Veiculo_09.png";
         *      default:
         *          return "Veiculo_01.png";
         *  }
         * }
         */

        private void inicializarComponente()
        {
            _Titulo = new Label
            {
                Text  = _frete.TituloFreteMotoristaLbl,
                Style = Estilo.Current[Estilo.TITULO1]
            };

            _Origem = new Label
            {
                Text  = _frete.EnderecoOrigem,
                Style = Estilo.Current[Estilo.LABEL_CONTROL]
            };

            _DivisoriaOrigemDestino = new IconImage
            {
                IconSize = 20,
                Margin   = new Thickness(10, 0, 10, 0),
                Icon     = "fa-arrow-right"
            };

            _Destino = new Label
            {
                Text  = _frete.EnderecoDestino,
                Style = Estilo.Current[Estilo.LABEL_CONTROL]
            };

            _DataSaida = new Label
            {
                Text  = _frete.DataRetiradaStr,
                Style = Estilo.Current[Estilo.LABEL_CONTROL]
            };

            _DivisoriaData = new IconImage
            {
                IconSize = 20,
                Margin   = new Thickness(10, 0, 10, 0),
                Icon     = "fa-arrow-right"
            };

            _DataChegada = new Label
            {
                Text  = _frete.DataEntregaStr,
                Style = Estilo.Current[Estilo.LABEL_CONTROL]
            };



            _Valor = new Label
            {
                Text  = string.Format("Valor do frete: {0:N}", _frete.Preco),
                Style = Estilo.Current[Estilo.LABEL_CONTROL]
            };

            _Confirmar = new Button()
            {
                Text = "Quero esta carga !",
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.Start,
                Style             = Estilo.Current[Estilo.BTN_SUCESSO]
            };

            if (_frete.MostraP)
            {
                selecionado     = true;
                _Confirmar.Text = "Deixar de pedir carga";
            }


            _Confirmar.Clicked += async(sender, e) =>
            {
                var test = await UserDialogs.Instance.ConfirmAsync((selecionado ? "Você tem certeza que quer deixa a carga ? ": "Você tem certeza que quer esta carga ?"), "Atenção", "Confirmo !", "Voltar");

                if (test)
                {
                    if (!selecionado)
                    {
                        UserDialogs.Instance.ShowLoading("Aceitando...");
                        //await FreteFactory.create().aceitar(true, _frete.Id, new MotoristaBLL().pegarAtual().Id);
                        await FreteFactory.create().aceitar(new AceiteEnvioInfo
                        {
                            IdFrete     = _frete.Id,
                            IdMotorista = new MotoristaBLL().pegarAtual().Id,
                            Aceite      = true
                        });

                        UserDialogs.Instance.HideLoading();
                        _Confirmar.Text = "Deixar de pedir carga";
                        selecionado     = true;
                    }
                    else
                    {
                        UserDialogs.Instance.ShowLoading("Liberando...");
                        _frete.Situacao = FreteSituacaoEnum.ProcurandoMotorista;
                        await FreteFactory.create().alterar(_frete);

                        UserDialogs.Instance.HideLoading();
                        _Confirmar.Text = "Quero esta carga !";
                        selecionado     = false;
                    }
                }
            };
        }
        private void inicializarComponente()
        {
            _AcaoButton = new Button
            {
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.Start,
                Margin            = new Thickness(8, 0),
                Style             = Estilo.Current[Estilo.BTN_PRINCIPAL],
                Text = (_Situacao == FreteSituacaoEnum.PegandoEncomenda ? "Peguei a encomenda" : "Entreguei a encomenda")
            };
            _AcaoButton.Clicked += (sender, e) => {
                confirmaPegaEntregaAsync();
            };

            _AbrirRota = new Button
            {
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.Start,
                Margin            = new Thickness(8, 0),
                Style             = Estilo.Current[Estilo.BTN_PRINCIPAL],
                Text = "Ver rota externamente"
            };
            _AbrirRota.Clicked += (sender, e) => {
                _PickerRota.Focus();
            };

            _PickerRota = new Picker()
            {
                ItemsSource = new List <string>()
                {
                    "Waze",
                    "Maps"
                },
                HeightRequest = 0,
                IsVisible     = false
            };
            _PickerRota.SelectedIndexChanged += async(sender2, e2) =>
            {
                UserDialogs.Instance.ShowLoading("Aguarde...");
                var infoEntrega = await FreteFactory.create().pegar(_IdFrete);

                UserDialogs.Instance.HideLoading();
                switch ((string)_PickerRota.SelectedItem)
                {
                case "Maps":
                    Device.OpenUri(new Uri("http://maps.google.com/maps?daddr=" + infoEntrega.EnderecoDestino));
                    break;

                case "Waze":
                    Device.OpenUri(new Uri("waze://?q=" + infoEntrega.EnderecoDestino));
                    break;
                }
            };

            _ContatoButton = new Button
            {
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.Start,
                Margin            = new Thickness(8, 0),
                Style             = Estilo.Current[Estilo.BTN_PRINCIPAL],
                Text = "Ver dados do pedido"
            };
            _ContatoButton.Clicked += (sender, e) => {
                mostraDadosEntrega();
            };


            _Distancia = new Label()
            {
                VerticalOptions   = LayoutOptions.End,
                HorizontalOptions = LayoutOptions.Fill,
                HeightRequest     = 22,
                Margin            = new Thickness(8, 0),
                FontSize          = 18,
                TextColor         = Color.Black
            };
            _Tempo = new Label()
            {
                VerticalOptions   = LayoutOptions.End,
                HorizontalOptions = LayoutOptions.Fill,
                Margin            = new Thickness(8, 0),
                HeightRequest     = 22,
                FontSize          = 18,
                TextColor         = Color.Black
            };

            _CustomMap = new CustomMap
            {
                MapType           = MapType.Street,
                VerticalOptions   = LayoutOptions.FillAndExpand,
                HorizontalOptions = LayoutOptions.Fill,
                IsShowingUser     = true
            };
        }