private async void horarioClicked(object sender, EventArgs e) { var regraHorario = PedidoHorarioFactory.create(); var horarios = await regraHorario.listar(Pedido.IdLoja); var horarioEntregaPage = new HorarioEntregaPage() { Title = "Selecione o horário de entrega", Horarios = horarios }; horarioEntregaPage.AoSelecionar += async(s2, horario) => { UserDialogs.Instance.ShowLoading("Enviando..."); try { Pedido.DiaEntrega = horarioEntregaPage.DiaEntrega; Pedido.HorarioEntrega = horario; Pedido.Avisar = false; var regraPedido = PedidoFactory.create(); await regraPedido.alterar(Pedido); var pedido = await regraPedido.pegar(Pedido.Id); Pedido = pedido; atualizarTela(Pedido); UserDialogs.Instance.HideLoading(); await horarioEntregaPage.Navigation.PopAsync(); } catch (Exception erro) { UserDialogs.Instance.HideLoading(); UserDialogs.Instance.Alert(erro.Message, "Erro", "Fechar"); } }; UserDialogs.Instance.HideLoading(); ((RootPage)App.Current.MainPage).PushAsync(horarioEntregaPage); }
/* * 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); }; }
public static Page gerarCarrinhoParaEntrega() { var carrinhoPage = new CarrinhoPage { Title = "Meu carrinho" }; carrinhoPage.AoFinalizar += (s1, produtos) => { LoginUtils.carregarUsuario((usuario) => { var metodoEntregaPage = PedidoUtils.gerarEntregaMetodo(async(pedido) => { if (await UserDialogs.Instance.ConfirmAsync("Deseja fechar o pedido?", "Aviso", "Sim", "Não", null)) { var pagamentoMetodoPage = PagamentoUtils.gerarPagamento(async(pagamento) => { UserDialogs.Instance.ShowLoading("Enviando..."); try { pedido.IdPagamento = pagamento.IdPagamento; switch (pagamento.Tipo) { case TipoPagamentoEnum.CreditoOnline: pedido.FormaPagamento = FormaPagamentoEnum.CreditoOnline; break; case TipoPagamentoEnum.DebitoOnline: pedido.FormaPagamento = FormaPagamentoEnum.DebitoOnline; break; case TipoPagamentoEnum.Boleto: pedido.FormaPagamento = FormaPagamentoEnum.Boleto; break; case TipoPagamentoEnum.Dinheiro: pedido.FormaPagamento = FormaPagamentoEnum.Dinheiro; pedido.TrocoPara = pagamento.TrocoPara; break; case TipoPagamentoEnum.CartaoOffline: pedido.FormaPagamento = FormaPagamentoEnum.CartaoOffline; break; } switch (pagamento.Situacao) { case SituacaoPagamentoEnum.Pago: pedido.Situacao = Pedido.Model.SituacaoEnum.Preparando; break; case SituacaoPagamentoEnum.AguardandoPagamento: pedido.Situacao = Pedido.Model.SituacaoEnum.AguardandoPagamento; break; default: pedido.Situacao = Pedido.Model.SituacaoEnum.Pendente; break; } var regraPedido = PedidoFactory.create(); int idPedido = pedido.Id; if (idPedido > 0) { await regraPedido.alterar(pedido); } else { idPedido = await regraPedido.inserir(pedido); } var pedidoFechado = await regraPedido.pegar(idPedido); var regraCarrinho = CarrinhoFactory.create(); regraCarrinho.limpar(); if (pedidoFechado.Entrega == EntregaEnum.RetiradaMapeada) { AcompanhamentoUtils.iniciarAcompanhamento(pedidoFechado); } if (pedidoFechado.Entrega == EntregaEnum.Entrega && pedido.Situacao != Pedido.Model.SituacaoEnum.AguardandoPagamento) { var regraHorario = PedidoHorarioFactory.create(); var horarios = await regraHorario.listar(pedidoFechado.IdLoja); if (horarios.Count > 1) { var horarioEntregaPage = new HorarioEntregaPage() { Title = "Horário de Entrega", //Pedido = pedidoFechado, Horarios = horarios }; horarioEntregaPage.AoSelecionar += async(s2, horario) => { UserDialogs.Instance.ShowLoading("Enviando..."); try { pedidoFechado.DiaEntrega = horarioEntregaPage.DiaEntrega; pedidoFechado.HorarioEntrega = horario; pedidoFechado.Avisar = false; await regraPedido.alterar(pedidoFechado); ((RootPage)App.Current.MainPage).PaginaAtual = new PedidoPage { Pedido = pedidoFechado }; UserDialogs.Instance.HideLoading(); } catch (Exception erro) { UserDialogs.Instance.HideLoading(); UserDialogs.Instance.Alert(erro.Message, "Erro", "Fechar"); } }; UserDialogs.Instance.HideLoading(); ((RootPage)App.Current.MainPage).PushAsync(horarioEntregaPage); } else { UserDialogs.Instance.HideLoading(); ((RootPage)App.Current.MainPage).PaginaAtual = new PedidoPage { Pedido = pedidoFechado }; } } else { UserDialogs.Instance.HideLoading(); ((RootPage)App.Current.MainPage).PaginaAtual = new PedidoPage { Pedido = pedidoFechado }; } } catch (Exception erro) { UserDialogs.Instance.HideLoading(); UserDialogs.Instance.Alert(erro.Message, "Erro", "Fechar"); } }); var regraLoja = LojaFactory.create(); var loja = regraLoja.pegarAtual(); pagamentoMetodoPage.UsaCredito = loja.AceitaCreditoOnline; pagamentoMetodoPage.UsaDebito = loja.AceitaDebitoOnline; pagamentoMetodoPage.UsaDinheiro = loja.AceitaDinheiro; pagamentoMetodoPage.UsaBoleto = loja.AceitaBoleto; pagamentoMetodoPage.Pagamento = PagamentoUtils.gerar(pedido); ((RootPage)App.Current.MainPage).PushAsync(pagamentoMetodoPage); } }); metodoEntregaPage.Pedido = PedidoUtils.gerar(produtos); ((RootPage)App.Current.MainPage).PushAsync(metodoEntregaPage); }); }; return(carrinhoPage); }