示例#1
0
        private async void cartaoOfflineClicked(object sender, EventArgs e)
        {
            if (Pagamento == null)
            {
                await DisplayAlert("Erro", "Nenhum pagamento informado!", "Fechar");

                return;
            }
            UserDialogs.Instance.ShowLoading("Enviando...");
            try
            {
                Pagamento.Tipo = TipoPagamentoEnum.CartaoOffline;
                var regraPagamento = PagamentoFactory.create();
                var retorno        = await regraPagamento.pagar(Pagamento);

                Pagamento = await regraPagamento.pegar(retorno.IdPagamento);

                UserDialogs.Instance.HideLoading();
                AoEfetuarPagamento?.Invoke(this, Pagamento);
            }
            catch (Exception erro)
            {
                UserDialogs.Instance.HideLoading();
                //UserDialogs.Instance.Alert(erro.Message, "Erro", "Fechar");
                await DisplayAlert("Erro", erro.Message, "Entendi");
            }
        }
示例#2
0
        private async void gerarBoleto(PagamentoInfo pagamento)
        {
            UserDialogs.Instance.ShowLoading("Gerando boleto...");
            try
            {
                var regraPagamento = PagamentoFactory.create();
                pagamento.DataVencimento = DateTime.Now.AddDays(3);
                var retorno = await regraPagamento.pagar(pagamento);

                if (retorno.Situacao == SituacaoPagamentoEnum.AguardandoPagamento)
                {
                    this.Pagamento = await regraPagamento.pegar(retorno.IdPagamento);

                    UserDialogs.Instance.HideLoading();
                    AoEfetuarPagamento?.Invoke(this, this.Pagamento);
                }
                else
                {
                    UserDialogs.Instance.HideLoading();
                    //UserDialogs.Instance.Alert(retorno.Mensagem, "Erro", "Fechar");
                    await DisplayAlert("Erro", retorno.Mensagem, "Entendi");
                }
            }
            catch (Exception erro) {
                UserDialogs.Instance.HideLoading();
                //UserDialogs.Instance.Alert(erro.Message, "Erro", "Fechar");
                await DisplayAlert("Erro", erro.Message, "Entendi");
            }
        }
示例#3
0
        private bool validarCampo()
        {
            if (String.IsNullOrEmpty(_NomeEntry.Text))
            {
                DisplayAlert("Aviso", "Preencha o nome no cartão.", "Entendi");
                return(false);
            }
            if (String.IsNullOrEmpty(_NumeroCartaoEntry.Text))
            {
                DisplayAlert("Aviso", "Preencha o número do cartão.", "Entendi");
                return(false);
            }
            var regraPagamento = PagamentoFactory.create();

            /*
             * var bandeira = regraPagamento.pegarBandeiraPorNumeroCartao(_NumeroCartaoEntry.Text);
             * if (!bandeira.HasValue) {
             *
             * }
             */
            if (_ValidadeCartaoPicker.SelectedItem == null)
            {
                DisplayAlert("Aviso", "Selecione a validade do cartão.", "Entendi");
                return(false);
            }
            if (String.IsNullOrEmpty(_CVCartaoEntry.Text))
            {
                DisplayAlert("Aviso", "Preencha o CVV.", "Entendi");
                return(false);
            }
            return(true);
        }
示例#4
0
        private async void enviarPagamento()
        {
            if (!validarCampo())
            {
                return;
            }
            UserDialogs.Instance.ShowLoading("Enviando...");
            try
            {
                var regraPagamento = PagamentoFactory.create();
                var regraCartao    = CartaoFactory.create();
                var regraUsuario   = UsuarioFactory.create();

                var usuario = regraUsuario.pegarAtual();

                Pagamento.Bandeira      = regraPagamento.pegarBandeiraPorNumeroCartao(_NumeroCartaoEntry.Text);
                Pagamento.DataExpiracao = regraCartao.pegarDataExpiracao((string)_ValidadeCartaoPicker.SelectedItem);
                Pagamento.IdUsuario     = usuario.Id;
                Pagamento.NomeCartao    = _NomeEntry.Text;
                Pagamento.NumeroCartao  = _NumeroCartaoEntry.TextOnlyNumber;
                Pagamento.Tipo          = _TipoSelecionado;
                Pagamento.CVV           = _CVCartaoEntry.Text;

                var retorno = await regraPagamento.pagar(Pagamento);

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

                    if (retorno.Situacao == SituacaoPagamentoEnum.Pago)
                    {
                        var mensagem = "Foram debitados R$ {0} do seu cartão de crédito.";
                        var rootPage = (RootPage)App.Current.MainPage;
                        CrossLocalNotifications.Current.Show(rootPage.NomeApp, string.Format(mensagem, pagamento.ValorTotalStr));
                    }
                    UserDialogs.Instance.HideLoading();
                    AoEfetuarPagamento?.Invoke(this, pagamento);
                }
                else
                {
                    UserDialogs.Instance.HideLoading();
                    await DisplayAlert("Erro", retorno.Mensagem, "Entendi");
                }
            }
            catch (Exception erro)
            {
                UserDialogs.Instance.HideLoading();
                //UserDialogs.Instance.Alert(erro.Message, "Erro", "Fechar");
                await DisplayAlert("Erro", erro.Message, "Entendi");
            }
        }
示例#5
0
        private async void cartaoListaItemTapped(object sender, ItemTappedEventArgs e)
        {
            if (e == null)
            {
                return;
            }

            var cartao = (CartaoInfo)((ListView)sender).SelectedItem;

            UserDialogs.Instance.ShowLoading("Enviando...");
            try
            {
                var regraPagamento = PagamentoFactory.create();

                _pagamento.Token    = cartao.Token;
                _pagamento.CVV      = cartao.CVV;
                _pagamento.Bandeira = cartao.Bandeira;

                var retorno = await regraPagamento.pagarComToken(_pagamento);

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

                    UserDialogs.Instance.HideLoading();
                    AoEfetuarPagamento?.Invoke(this, pagamento);
                }
                else
                {
                    UserDialogs.Instance.HideLoading();
                    await DisplayAlert("Erro", retorno.Mensagem, "Entendi");
                }
            }
            catch (Exception erro)
            {
                UserDialogs.Instance.HideLoading();
                //UserDialogs.Instance.Alert(erro.Message, "Erro", "Fechar");
                await DisplayAlert("Erro", erro.Message, "Entendi");
            }
        }
示例#6
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");
            }
        }
示例#7
0
        public void inicializarComponente()
        {
            _TituloLabel = new Label
            {
                HorizontalOptions       = LayoutOptions.Fill,
                VerticalOptions         = LayoutOptions.Start,
                Style                   = Estilo.Current[Estilo.TITULO1],
                HorizontalTextAlignment = TextAlignment.Center
            };
            _enderecoView = new EnderecoView
            {
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.Start,
            };
            _enderecoView.SetBinding(EnderecoView.BindingContextProperty, new Binding("."));
            _MetodoEntregaLabel = new Label
            {
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.Start,
                Style             = Estilo.Current[Estilo.LABEL_CAMPO],
                LineBreakMode     = LineBreakMode.TailTruncation
            };
            _MetodoEntregaLabel.SetBinding(Label.TextProperty, new Binding("EntregaStr"));
            _FormaPagamentoLabel = new Label
            {
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.Start,
                Style             = Estilo.Current[Estilo.LABEL_CAMPO],
                LineBreakMode     = LineBreakMode.TailTruncation
            };
            _FormaPagamentoLabel.SetBinding(Label.TextProperty, new Binding("PagamentoStr"));
            _TrocoParaLabel = new Label
            {
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.Start,
                Style             = Estilo.Current[Estilo.LABEL_CAMPO]
            };
            _TrocoParaLabel.SetBinding(Label.TextProperty, new Binding("TrocoParaStr", stringFormat: "R${0}"));
            _ValorFreteLabel = new Label
            {
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.Start,
                Style             = Estilo.Current[Estilo.LABEL_CAMPO]
            };
            _ValorFreteLabel.SetBinding(Label.TextProperty, new Binding("ValorFreteStr", stringFormat: "R${0}"));
            _ValorTotalLabel = new Label
            {
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.Start,
                Style             = Estilo.Current[Estilo.LABEL_CAMPO]
            };
            _ValorTotalLabel.SetBinding(Label.TextProperty, new Binding("TotalStr", stringFormat: "R${0}"));
            _SituacaoLabel = new Label
            {
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.Start,
                LineBreakMode     = LineBreakMode.TailTruncation,
                Style             = Estilo.Current[Estilo.LABEL_CAMPO]
            };
            _SituacaoLabel.SetBinding(Label.TextProperty, new Binding("SituacaoStr"));

            _diaEntregaLabel = new Label
            {
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.Start,
                Style             = Estilo.Current[Estilo.LABEL_CAMPO]
            };
            _diaEntregaLabel.SetBinding(Label.TextProperty, new Binding("DiaEntregaStr"));

            _horarioEntregaLabel = new Label
            {
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.Start,
                Style             = Estilo.Current[Estilo.LABEL_CAMPO]
            };
            _horarioEntregaLabel.SetBinding(Label.TextProperty, new Binding("HorarioEntrega"));

            _mensagemRetiradaLabel = new Label
            {
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.Start,
                Style             = Estilo.Current[Estilo.LABEL_CAMPO]
            };
            _mensagemRetiradaLabel.SetBinding(Label.TextProperty, new Binding("Loja.MensagemRetirada"));

            _ObservacaoLabel = new Label
            {
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.Start,
                Style             = Estilo.Current[Estilo.LABEL_CAMPO]
            };
            _ObservacaoLabel.SetBinding(Label.TextProperty, new Binding("Observacao"));

            _PedidoView = new PedidoView
            {
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.Start,
            };
            _PedidoView.SetBinding(PedidoView.BindingContextProperty, new Binding("."));

            _ImprimirButton = new Button
            {
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.Start,
                Style             = Estilo.Current[Estilo.BTN_PRINCIPAL],
                Text = "Imprimir Boleto"
            };
            _ImprimirButton.Clicked += async(sender, e) => {
                if (Pedido.Pagamento == null && !Pedido.IdPagamento.HasValue)
                {
                    //UserDialogs.Instance.Alert("Pedido não possui pagamento vinculado.", "Erro", "Fechar");
                    await DisplayAlert("Erro", "Pedido não possui pagamento vinculado.", "Entendi");

                    return;
                }
                if (Pedido.Pagamento == null)
                {
                    UserDialogs.Instance.ShowLoading("Carregando...");
                    try
                    {
                        var regraPagamento = PagamentoFactory.create();
                        var pagamento      = await regraPagamento.pegar(Pedido.IdPagamento.Value);

                        UserDialogs.Instance.HideLoading();
                        Pedido.Pagamento = pagamento;
                    }
                    catch (Exception erro)
                    {
                        UserDialogs.Instance.HideLoading();
                        //UserDialogs.Instance.Alert(erro.Message, "Erro", "Fechar");
                        await DisplayAlert("Erro", erro.Message, "Entendi");
                    }
                }
                var boletoImprimePage = new BoletoImprimePage
                {
                    Pagamento = Pedido.Pagamento
                };
                await Navigation.PushAsync(boletoImprimePage);
            };
            _AcompanhaButton = new Button
            {
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.Start,
                Style             = Estilo.Current[Estilo.BTN_SUCESSO],
                Text = "Acompanhar no Mapa"
            };
            _AcompanhaButton.Clicked += acompanharClicked;

            _CancelarButton = new Button
            {
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.Start,
                Style             = Estilo.Current[Estilo.BTN_DANGER],
                Text = "Cancelar"
            };
            _CancelarButton.Clicked += cancelarClicked;

            _AvaliarButton = new Button
            {
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.Start,
                Style             = Estilo.Current[Estilo.BTN_SUCESSO],
                Text = "Avaliar"
            };
            _AvaliarButton.Clicked += avaliarClicked;

            _horarioButton = new Button
            {
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.Start,
                Style             = Estilo.Current[Estilo.BTN_SUCESSO],
                Text = "Definir horário de entrega"
            };
            _horarioButton.Clicked += horarioClicked;

            _empresaLabel = new Label
            {
                HorizontalOptions       = LayoutOptions.Fill,
                VerticalOptions         = LayoutOptions.Start,
                HorizontalTextAlignment = TextAlignment.Center,
                FontAttributes          = FontAttributes.Bold,
                Margin = new Thickness(0, 0, 0, 3),
                Text   = "Smart Tecnologia ®"
            };
            _empresaLabel.SetBinding(Label.TextProperty, new Binding("Loja.Nome"));

            _rodapeLayout = new StackLayout
            {
                Orientation       = StackOrientation.Vertical,
                VerticalOptions   = LayoutOptions.End,
                HorizontalOptions = LayoutOptions.Fill,
                Margin            = new Thickness(5, 0),
                Spacing           = 0,
                Children          =
                {
                    new Label {
                        VerticalOptions         = LayoutOptions.Start,
                        HorizontalOptions       = LayoutOptions.Fill,
                        HorizontalTextAlignment = TextAlignment.Center,
                        Text     = "Esse pedido foi feito em:",
                        FontSize = 10
                    },
                    _empresaLabel
                }
            };
        }
示例#8
0
        private void inicializarComponente()
        {
            _ValorTotalLabel = new Label {
                HorizontalOptions       = LayoutOptions.FillAndExpand,
                VerticalOptions         = LayoutOptions.Start,
                Style                   = Estilo.Current[Estilo.LABEL_CAMPO],
                HorizontalTextAlignment = TextAlignment.Center,
                FontSize                = 24
            };
            _ValorTotalLabel.SetBinding(Label.TextProperty, new Binding("ValorTotalStr", stringFormat: "R${0}"));
            _TrocoParaEntry = new Entry {
                HorizontalOptions = LayoutOptions.FillAndExpand,
                VerticalOptions   = LayoutOptions.Start,
                Style             = Estilo.Current[Estilo.ENTRY_PADRAO],
                Keyboard          = Keyboard.Numeric
            };
            _ObservacaoEntry = new Entry
            {
                HorizontalOptions = LayoutOptions.FillAndExpand,
                VerticalOptions   = LayoutOptions.Start,
                Style             = Estilo.Current[Estilo.ENTRY_PADRAO]
            };
            _ConcluirButton = new Button {
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.Start,
                Style             = Estilo.Current[Estilo.BTN_PRINCIPAL],
                Text = "FINALIZAR PEDIDO"
            };
            _ConcluirButton.Clicked += async(sender, e) => {
                if (Pagamento == null)
                {
                    await DisplayAlert("Erro", "Nenhum pagamento informando.", "Fechar");

                    return;
                }

                UserDialogs.Instance.ShowLoading("Enviando...");
                try {
                    var regraPagamento = PagamentoFactory.create();
                    Pagamento.Tipo       = TipoPagamentoEnum.Dinheiro;
                    Pagamento.Observacao = _ObservacaoEntry.Text;
                    double trocoPara = 0;
                    if (double.TryParse(_TrocoParaEntry.Text, out trocoPara))
                    {
                        Pagamento.TrocoPara = trocoPara;
                    }
                    var retorno = await regraPagamento.pagar(Pagamento);

                    Pagamento = await regraPagamento.pegar(retorno.IdPagamento);

                    UserDialogs.Instance.HideLoading();
                    AoEfetuarPagamento?.Invoke(this, Pagamento);
                }
                catch (Exception erro)
                {
                    UserDialogs.Instance.HideLoading();
                    //UserDialogs.Instance.Alert(erro.Message, "Erro", "Fechar");
                    await DisplayAlert("Erro", erro.Message, "Entendi");
                }
            };
        }