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

                return;
            }
            Pagamento.Tipo = TipoPagamentoEnum.Boleto;

            if (Pagamento.TemEndereco)
            {
                gerarBoleto(Pagamento);
            }
            else
            {
                var regraUsuario = UsuarioFactory.create();
                var usuario      = regraUsuario.pegarAtual();
                if (usuario.Enderecos.Count == 1)
                {
                    preencherEndereco(Pagamento, usuario.Enderecos[0]);
                    gerarBoleto(Pagamento);
                }
                else if (usuario.Enderecos.Count > 0)
                {
                    var enderecoListaPage = EnderecoUtils.gerarEnderecoLista((endereco) =>
                    {
                        preencherEndereco(Pagamento, endereco);
                        gerarBoleto(Pagamento);
                    });
                    var enderecos = new List <EnderecoInfo>();
                    foreach (var endereco in usuario.Enderecos)
                    {
                        enderecos.Add(endereco);
                    }
                    enderecoListaPage.Enderecos = enderecos;
                    enderecoListaPage.Title     = "Endereço de Cobrança";
                    await Navigation.PushAsync(enderecoListaPage);
                }
                else
                {
                    var cepPage = EnderecoUtils.gerarBuscaPorCep((endereco) =>
                    {
                        usuario.Enderecos.Add(UsuarioEnderecoInfo.clonar(endereco));
                        var regraLogin = UsuarioFactory.create();
                        regraLogin.gravarAtual(usuario);

                        preencherEndereco(Pagamento, endereco);
                        gerarBoleto(Pagamento);
                    });
                    await Navigation.PushAsync(cepPage);
                }
            }
        }
예제 #2
0
        public static EnderecoListaPage gerarEnderecoLista(Action <EnderecoInfo> aoSelecionar)
        {
            var enderecoListaPage = new EnderecoListaPage
            {
                Title = "Endereços"
            };

            enderecoListaPage.AoAtualizar += async(sender, enderecos) => {
                UserDialogs.Instance.ShowLoading("Carregando...");
                try
                {
                    var regraUsuario = UsuarioFactory.create();
                    var usuario      = regraUsuario.pegarAtual();
                    usuario.Enderecos.Clear();
                    foreach (var endereco in enderecos)
                    {
                        usuario.Enderecos.Add(UsuarioEnderecoInfo.clonar(endereco));
                    }
                    int idUsuario = usuario.Id;
                    if (idUsuario > 0)
                    {
                        await regraUsuario.alterar(usuario);
                    }
                    else
                    {
                        idUsuario = await regraUsuario.inserir(usuario);
                    }
                    var usuarioRemoto = await regraUsuario.pegar(idUsuario);

                    regraUsuario.gravarAtual(usuarioRemoto);

                    var usuarioEnderecos = new List <EnderecoInfo>();
                    foreach (var endereco in usuarioRemoto.Enderecos)
                    {
                        usuarioEnderecos.Add(endereco);
                    }
                    ((EnderecoListaPage)sender).Enderecos = usuarioEnderecos;

                    UserDialogs.Instance.HideLoading();
                }
                catch (Exception erro)
                {
                    UserDialogs.Instance.HideLoading();
                    UserDialogs.Instance.Alert(erro.Message, "Erro", "Fechar");
                }
            };
            if (aoSelecionar != null)
            {
                enderecoListaPage.AoSelecionar += (sender, endereco) => {
                    aoSelecionar(endereco);
                };
            }
            return(enderecoListaPage);
        }
예제 #3
0
 public EnderecoRetiradaPage(UsuarioEnderecoInfo info = null)
 {
     _Info = info;
     Title = "Endereço de retirada";
     inicializarComponente();
     Content = new StackLayout
     {
         Margin   = 10,
         Children =
         {
             _enderecoForm,
             _salvarButton
         }
     };
 }
        /*
         * private async void abrirHorarioEntrega(PedidoInfo pedido) {
         *  UserDialogs.Instance.ShowLoading("Carregando horários de entrega...");
         *  try
         *  {
         *      var regraHorario = PedidoHorarioFactory.create();
         *      var horarios = await regraHorario.listar(Pedido.IdLoja);
         *      if (horarios.Count > 1)
         *      {
         *          var horarioEntregaPage = new HorarioEntregaPage()
         *          {
         *              Title = "Horário de Entrega",
         *              Horarios = horarios
         *          };
         *          horarioEntregaPage.AoSelecionar += (s2, horario) =>
         *          {
         *              Pedido.DiaEntrega = horarioEntregaPage.DiaEntrega;
         *              Pedido.HorarioEntrega = horario.Horario;
         *              definirEntrega(Pedido);
         *          };
         *          UserDialogs.Instance.HideLoading();
         *          await Navigation.PushAsync(horarioEntregaPage);
         *      }
         *      else
         *      {
         *          UserDialogs.Instance.HideLoading();
         *          definirEntrega(Pedido);
         *      }
         *  }
         *  catch (Exception erro)
         *  {
         *      UserDialogs.Instance.HideLoading();
         *      UserDialogs.Instance.Alert(erro.Message, "Erro", "Fechar");
         *      //await DisplayAlert("Erro", erro.Message, "Entendi");
         *  }
         * }
         */

        protected virtual void inicializarComponente()
        {
            _entregaButton = new MenuButton {
                HorizontalOptions = LayoutOptions.FillAndExpand,
                VerticalOptions   = LayoutOptions.Start,
                Icon  = "fa-motorcycle",
                Text  = "Receber em\nCasa",
                Style = Estilo.Current[Estilo.BTN_ROOT]
            };
            _entregaButton.Click += async(sender, e) => {
                Pedido.Entrega = EntregaEnum.Entrega;
                var regraUsuario = UsuarioFactory.create();
                var usuario      = regraUsuario.pegarAtual();

                /*
                 * if (usuario.Enderecos.Count == 1)
                 * {
                 *  var endereco = usuario.Enderecos[0];
                 *  Pedido.Cep = endereco.Cep;
                 *  Pedido.Logradouro = endereco.Logradouro;
                 *  Pedido.Complemento = endereco.Complemento;
                 *  Pedido.Numero = endereco.Numero;
                 *  Pedido.Bairro = endereco.Bairro;
                 *  Pedido.Cidade = endereco.Cidade;
                 *  Pedido.Uf = endereco.Uf;
                 *  Pedido.Latitude = endereco.Latitude;
                 *  Pedido.Longitude = endereco.Longitude;
                 *
                 *  definirEntrega(Pedido);
                 * }
                 */
                if (usuario.Enderecos.Count > 0)
                {
                    var enderecoListaPage = EnderecoUtils.gerarEnderecoLista((endereco) => {
                        Pedido.Cep         = endereco.Cep;
                        Pedido.Logradouro  = endereco.Logradouro;
                        Pedido.Complemento = endereco.Complemento;
                        Pedido.Numero      = endereco.Numero;
                        Pedido.Bairro      = endereco.Bairro;
                        Pedido.Cidade      = endereco.Cidade;
                        Pedido.Uf          = endereco.Uf;
                        Pedido.Latitude    = endereco.Latitude;
                        Pedido.Longitude   = endereco.Longitude;

                        //abrirHorarioEntrega(Pedido);
                        definirEntrega(Pedido);
                    });
                    var enderecos = new List <EnderecoInfo>();
                    foreach (var endereco in usuario.Enderecos)
                    {
                        enderecos.Add(endereco);
                    }
                    enderecoListaPage.Enderecos = enderecos;
                    await Navigation.PushAsync(enderecoListaPage);
                }
                else
                {
                    var cepPage = EnderecoUtils.gerarBuscaPorCep(async(endereco) =>
                    {
                        UserDialogs.Instance.ShowLoading("Atualizando endereço...");
                        try
                        {
                            var regraLogin = UsuarioFactory.create();
                            usuario.Enderecos.Add(UsuarioEnderecoInfo.clonar(endereco));
                            await regraLogin.alterar(usuario);
                            regraLogin.gravarAtual(usuario);

                            Pedido.Cep         = endereco.Cep;
                            Pedido.Logradouro  = endereco.Logradouro;
                            Pedido.Complemento = endereco.Complemento;
                            Pedido.Numero      = endereco.Numero;
                            Pedido.Bairro      = endereco.Bairro;
                            Pedido.Cidade      = endereco.Cidade;
                            Pedido.Uf          = endereco.Uf;
                            Pedido.Latitude    = endereco.Latitude;
                            Pedido.Longitude   = endereco.Longitude;

                            var regraHorario = PedidoHorarioFactory.create();
                            var horarios     = await regraHorario.listar(Pedido.IdLoja);
                            if (horarios.Count > 1)
                            {
                                var horarioEntregaPage = new HorarioEntregaPage()
                                {
                                    Title    = "Horário de Entrega",
                                    Horarios = horarios
                                };
                                horarioEntregaPage.AoSelecionar += (s2, e2) =>
                                {
                                    definirEntrega(Pedido);
                                };
                                UserDialogs.Instance.HideLoading();
                                await Navigation.PushAsync(horarioEntregaPage);
                            }
                            else
                            {
                                UserDialogs.Instance.HideLoading();
                                definirEntrega(Pedido);
                            }
                        }
                        catch (Exception erro)
                        {
                            UserDialogs.Instance.HideLoading();
                            UserDialogs.Instance.Alert(erro.Message, "Erro", "Fechar");
                            //await DisplayAlert("Erro", erro.Message, "Entendi");
                        }
                    }, false);
                    await Navigation.PushAsync(cepPage);
                }
            };
            _retirarNoLocalButton = new MenuButton
            {
                HorizontalOptions = LayoutOptions.FillAndExpand,
                VerticalOptions   = LayoutOptions.Start,
                Icon  = "fa-home",
                Text  = "Retirar na Loja",
                Style = Estilo.Current[Estilo.BTN_ROOT]
            };
            _retirarNoLocalButton.Click += (sender, e) => {
                Pedido.Entrega = EntregaEnum.RetirarNaLoja;
                var regraUsuario = UsuarioFactory.create();
                var usuario      = regraUsuario.pegarAtual();
                if (usuario.Enderecos.Count == 1)
                {
                    var endereco = usuario.Enderecos[0];
                    Pedido.Cep         = endereco.Cep;
                    Pedido.Logradouro  = endereco.Logradouro;
                    Pedido.Complemento = endereco.Complemento;
                    Pedido.Numero      = endereco.Numero;
                    Pedido.Bairro      = endereco.Bairro;
                    Pedido.Cidade      = endereco.Cidade;
                    Pedido.Uf          = endereco.Uf;
                    Pedido.Latitude    = endereco.Latitude;
                    Pedido.Longitude   = endereco.Longitude;
                }
                definirEntrega(Pedido);
            };
        }
예제 #5
0
        private void inicializarComponente()
        {
            _nomeEmpresaEntry = new Entry
            {
                Placeholder       = "Nome da Empresa",
                VerticalOptions   = LayoutOptions.Start,
                HorizontalOptions = LayoutOptions.Fill
            };

            _enderecoForm = new EnderecoListaForm
            {
                VerticalOptions   = LayoutOptions.Start,
                HorizontalOptions = LayoutOptions.Fill
            };

            _CadastroButton = new Button()
            {
                Text = "CADASTRAR",
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.Start,
                Style             = Estilo.Current[Estilo.BTN_SUCESSO]
            };
            _CadastroButton.Clicked += async(sender, e) =>
            {
                var regraUsuario = UsuarioFactory.create();
                _usuario.Preferencias.Add(new UsuarioPreferenciaInfo {
                    Chave = "NOME_EMPRESA",
                    Valor = _nomeEmpresaEntry.Text
                });
                _usuario.Enderecos = new List <UsuarioEnderecoInfo>();
                foreach (var endereco in _enderecoForm.Enderecos)
                {
                    _usuario.Enderecos.Add(UsuarioEnderecoInfo.clonar(endereco));
                }

                UserDialogs.Instance.ShowLoading("Enviando...");
                try
                {
                    if (_usuario.Id > 0)
                    {
                        await regraUsuario.alterar(_usuario);
                    }
                    else
                    {
                        _usuario.Id = await regraUsuario.inserir(_usuario);
                    }
                    var usuarioCadastrado = await regraUsuario.pegar(_usuario.Id);

                    regraUsuario.gravarAtual(usuarioCadastrado);
                    UserDialogs.Instance.HideLoading();
                    if (usuarioCadastrado != null)
                    {
                        regraUsuario.gravarAtual(usuarioCadastrado);
                        AoCompletar?.Invoke(this, _usuario);
                    }
                    else
                    {
                        string mensagem = string.Format("Nenhum usuário encontrado com o ID {0}.", _usuario.Id);
                        await DisplayAlert("Aviso", mensagem, "Fechar");
                    }
                }
                catch (Exception erro)
                {
                    UserDialogs.Instance.HideLoading();
                    await UserDialogs.Instance.AlertAsync(erro.Message, "Erro", "Entendi");
                }
            };
        }
예제 #6
0
        private void inicializarComponente()
        {
            _enderecoForm = new EnderecoMapaForm
            {
                VerticalOptions   = LayoutOptions.Start,
                HorizontalOptions = LayoutOptions.Fill
            };
            _enderecoForm.Endereco = _Info;

            _salvarButton = new Button
            {
                Text  = "Salvar",
                Style = Estilo.Current[Estilo.BTN_PADRAO]
            };
            _salvarButton.Clicked += async(sender, e) =>
            {
                if (string.IsNullOrEmpty(_enderecoForm.Endereco.Cep))
                {
                    await DisplayAlert("Atenção", "Preencha o cep.", "Entendi");

                    return;
                }
                if (string.IsNullOrEmpty(_enderecoForm.Endereco.Uf))
                {
                    await DisplayAlert("Atenção", "Preencha a UF.", "Entendi");

                    return;
                }
                if (string.IsNullOrEmpty(_enderecoForm.Endereco.Cidade))
                {
                    await DisplayAlert("Atenção", "Preencha a cidade.", "Entendi");

                    return;
                }
                if (string.IsNullOrEmpty(_enderecoForm.Endereco.Logradouro))
                {
                    await DisplayAlert("Atenção", "Preencha a rua.", "Entendi");

                    return;
                }
                if (string.IsNullOrEmpty(_enderecoForm.Endereco.Numero))
                {
                    await DisplayAlert("Atenção", "Preencha o numero.", "Entendi");

                    return;
                }

                UserDialogs.Instance.ShowLoading("Enviando...");
                var usuarioFactor = UsuarioFactory.create();
                var usuario       = usuarioFactor.pegarAtual();
                if (_Info != null)
                {
                    var end    = UsuarioEnderecoInfo.clonar(_enderecoForm.Endereco);
                    var endOld = usuario.Enderecos.Where(x => x.Id == _Info.Id).FirstOrDefault();
                    end.Id = endOld.Id;
                    usuario.Enderecos.Remove(endOld);
                    usuario.Enderecos.Add(end);
                }
                else
                {
                    usuario.Enderecos.Add(UsuarioEnderecoInfo.clonar(_enderecoForm.Endereco));
                }
                await usuarioFactor.alterar(usuario);

                var usuarioCadastrado = await usuarioFactor.pegar(usuario.Id);

                usuarioFactor.gravarAtual(usuarioCadastrado);
                UserDialogs.Instance.HideLoading();

                Finished?.Invoke(this, _enderecoForm.Endereco);
                Navigation.PopAsync();
            };
        }
예제 #7
0
        public static Page gerarCarrinho(Action <PedidoInfo> AoSelecionarEndereco)
        {
            var carrinhoPage = new CarrinhoPage
            {
                Title = "Meu carrinho"
            };

            carrinhoPage.AoFinalizar += (s1, produtos) =>
            {
                var regraUsuario = UsuarioFactory.create();
                var usuario      = regraUsuario.pegarAtual();
                if (usuario != null && usuario.Id > 0)
                {
                    if (usuario.Enderecos.Count > 0)
                    {
                        var enderecoListaPage = EnderecoUtils.gerarEnderecoLista((endereco) =>
                        {
                            AoSelecionarEndereco(PedidoUtils.gerar(produtos, endereco));
                        });
                        enderecoListaPage.Title = "Local de entrega";
                        ((Page)s1).Navigation.PushAsync(enderecoListaPage);
                    }
                    else
                    {
                        var cepPage = EnderecoUtils.gerarBuscaPorCep((endereco) =>
                        {
                            usuario.Enderecos.Add(UsuarioEnderecoInfo.clonar(endereco));
                            var regraLogin = UsuarioFactory.create();
                            regraLogin.gravarAtual(usuario);

                            AoSelecionarEndereco(PedidoUtils.gerar(produtos, endereco));
                        });
                        ((Page)s1).Navigation.PushAsync(cepPage);
                    }
                }
                else
                {
                    if (usuario == null)
                    {
                        usuario = new UsuarioInfo();
                    }
                    var usuarioCadastroPage = UsuarioFormPageFactory.create();
                    usuarioCadastroPage.Title        = "Cadastre-se";
                    usuarioCadastroPage.Gravar       = true;
                    usuarioCadastroPage.Usuario      = usuario;
                    usuarioCadastroPage.AoCadastrar += (s2, usuario2) =>
                    {
                        var cepPage = EnderecoUtils.gerarBuscaPorCep((endereco) =>
                        {
                            usuario.Enderecos.Add(UsuarioEnderecoInfo.clonar(endereco));
                            var regraLogin = UsuarioFactory.create();
                            regraLogin.gravarAtual(usuario);

                            AoSelecionarEndereco(PedidoUtils.gerar(produtos, endereco));
                        });
                        ((Page)s2).Navigation.PushAsync(cepPage);
                    };
                    ((Page)s1).Navigation.PushAsync(usuarioCadastroPage);
                }
            };
            return(carrinhoPage);
        }
예제 #8
0
        /*
         *
         * public static void selecionarEndereco(Action<EnderecoInfo> aoSelecionar)
         * {
         *  var regraUsuario = UsuarioFactory.create();
         *  var usuario = regraUsuario.pegarAtual();
         *  if (usuario != null)
         *  {
         *      if (usuario.Enderecos.Count == 1)
         *      {
         *          aoSelecionar?.Invoke(usuario.Enderecos[0]);
         *      }
         *      else if (usuario.Enderecos.Count > 1)
         *      {
         *          var enderecoListaPage = EnderecoUtils.gerarEnderecoLista((endereco) => {
         *              aoSelecionar?.Invoke(endereco);
         *          });
         *          var enderecos = new List<EnderecoInfo>();
         *          foreach (var endereco in usuario.Enderecos)
         *          {
         *              enderecos.Add(endereco);
         *          }
         *          enderecoListaPage.Enderecos = enderecos;
         *          if (App.Current.MainPage is RootPage)
         *          {
         *              ((RootPage)App.Current.MainPage).PushAsync(enderecoListaPage);
         *          }
         *          else
         *          {
         *              App.Current.MainPage = App.gerarRootPage(enderecoListaPage);
         *          }
         *      }
         *      else
         *      {
         *          var cepPage = EnderecoUtils.gerarBuscaPorCep((endereco) => {
         *              //var regraUsuario = UsuarioFactory.create();
         *              var usuarioCep = regraUsuario.pegarAtual();
         *              if (usuarioCep == null)
         *              {
         *                  usuarioCep = new UsuarioInfo();
         *              }
         *              usuarioCep.Enderecos.Add(UsuarioEnderecoInfo.clonar(endereco));
         *              regraUsuario.gravarAtual(usuarioCep);
         *
         *              aoSelecionar?.Invoke(endereco);
         *          });
         *          if (App.Current.MainPage is RootPage)
         *          {
         *              ((RootPage)App.Current.MainPage).PushAsync(cepPage);
         *          }
         *          else
         *          {
         *              App.Current.MainPage = App.gerarRootPage(cepPage);
         *          }
         *      }
         *  }
         *  else
         *  {
         *      var cepPage = EnderecoUtils.gerarBuscaPorCep((endereco) => {
         *          var usuarioCep = regraUsuario.pegarAtual();
         *          if (usuarioCep == null)
         *          {
         *              usuarioCep = new UsuarioInfo();
         *          }
         *          usuarioCep.Enderecos.Add(UsuarioEnderecoInfo.clonar(endereco));
         *          regraUsuario.gravarAtual(usuarioCep);
         *
         *          aoSelecionar?.Invoke(endereco);
         *      });
         *      if (App.Current.MainPage is RootPage)
         *      {
         *          ((RootPage)App.Current.MainPage).PushAsync(cepPage);
         *      }
         *      else
         *      {
         *          App.Current.MainPage = App.gerarRootPage(cepPage);
         *      }
         *  }
         * }
         */

        public static void selecionarEndereco(Action <EnderecoInfo> aoSelecionar)
        {
            var regraUsuario = UsuarioFactory.create();
            var usuario      = regraUsuario.pegarAtual();

            if (usuario != null)
            {
                if (usuario.Enderecos.Count == 1)
                {
                    aoSelecionar?.Invoke(usuario.Enderecos[0]);
                }
                else if (usuario.Enderecos.Count > 1)
                {
                    var enderecoListaPage = EnderecoUtils.gerarEnderecoLista((endereco) => {
                        aoSelecionar?.Invoke(endereco);
                    });
                    var enderecos = new List <EnderecoInfo>();
                    foreach (var endereco in usuario.Enderecos)
                    {
                        enderecos.Add(endereco);
                    }
                    enderecoListaPage.Enderecos = enderecos;
                    if (App.Current.MainPage is RootPage)
                    {
                        ((RootPage)App.Current.MainPage).PushAsync(enderecoListaPage);
                    }
                    else
                    {
                        App.Current.MainPage = App.gerarRootPage(enderecoListaPage);
                    }
                }
                else
                {
                    var cepPage = EnderecoUtils.gerarBuscaPorCep((endereco) => {
                        //var regraUsuario = UsuarioFactory.create();
                        var usuarioCep = regraUsuario.pegarAtual();
                        if (usuarioCep == null)
                        {
                            usuarioCep = new UsuarioInfo();
                        }
                        usuarioCep.Enderecos.Add(UsuarioEnderecoInfo.clonar(endereco));
                        regraUsuario.gravarAtual(usuarioCep);

                        aoSelecionar?.Invoke(endereco);
                    });
                    if (App.Current.MainPage is RootPage)
                    {
                        ((RootPage)App.Current.MainPage).PushAsync(cepPage);
                    }
                    else
                    {
                        App.Current.MainPage = App.gerarRootPage(cepPage);
                    }
                }
            }
            else
            {
                var cepPage = EnderecoUtils.gerarBuscaPorCep((endereco) => {
                    var usuarioCep = regraUsuario.pegarAtual();
                    if (usuarioCep == null)
                    {
                        usuarioCep = new UsuarioInfo();
                    }
                    usuarioCep.Enderecos.Add(UsuarioEnderecoInfo.clonar(endereco));
                    regraUsuario.gravarAtual(usuarioCep);

                    aoSelecionar?.Invoke(endereco);
                });
                if (App.Current.MainPage is RootPage)
                {
                    ((RootPage)App.Current.MainPage).PushAsync(cepPage);
                }
                else
                {
                    App.Current.MainPage = App.gerarRootPage(cepPage);
                }
            }
        }