Пример #1
0
        public async Task <IActionResult> Finalizar(FinalizarPedidoViewModel model)
        {
            Pedido pedido = new Pedido();
            var    user   = await _userManager.GetUserAsync(User);

            Endereco endereco = _enderecoRepositorio.Enderecos
                                .SingleOrDefault(e => e.EnderecoID == model.EnderecoId);

            pedido.Endereco        = endereco;
            pedido.Pagamento       = model.Pagamento;
            model.Pagamento.UserId = user.Id;

            if (_carrinho.QuantidadeTotal() == 0)
            {
                TempData["carrinho"] = "Você não escolheu nenhum produto.";
                return(RedirectToAction(actionName: "Listar", controllerName: "Produtos"));
            }
            if (ModelState.IsValid)
            {
                pedido.UserId = user.Id;
                pedido.Lines  = _carrinho.Lines.ToArray();
                _pedidoRepositorio.Registrar(pedido);
                return(RedirectToAction(nameof(Completed)));
            }
            else
            {
                return(View(pedido));
            }
        }
Пример #2
0
        public async Task <IActionResult> FinalizarPedido(string returnUrl = null)
        {
            var carrinhoItens = _carrinhoService.GetCarrinhoItens();

            var carrinhoItensViewModel = Mapper.Map <IEnumerable <CarrinhoItemViewModel> >(carrinhoItens);

            var carrinhoViewModel = new CarrinhoViewModel()
            {
                CarrinhoItens = carrinhoItensViewModel,
                CarrinhoTotal = _carrinhoService.GetTotalCarrinho()
            };


            if (carrinhoViewModel.CarrinhoItens.Count() == 0)
            {
                return(RedirectToAction("", "Carrinho"));
            }

            var user = await _userManager.GetUserAsync(User);

            if (user == null)
            {
                throw new ApplicationException($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
            }

            var ClienteLogado = _context.Pessoas.Include(x => x.Cliente).ThenInclude(y => y.Owner).SingleOrDefault(x => x.Cliente.Owner.Id == user.Id);

            if (ClienteLogado == null)
            {
                return(RedirectToAction("Edit", "Clientes", new { returnUrl = "/Pedido/FinalizarPedido" }));
            }

            var formasPgto = _context.FormasPgtos.ToList();

            var finalizarPedidoViewModel = new FinalizarPedidoViewModel
            {
                CarrinhoItens = carrinhoItensViewModel,
                Cliente       = Mapper.Map <PessoaEditViewModel>(ClienteLogado),
                CarrinhoTotal = carrinhoViewModel.CarrinhoTotal,
                FormasPgto    = Mapper.Map <IEnumerable <FormaPgtoViewModel> >(formasPgto),
            };

            return(View(finalizarPedidoViewModel));
        }
Пример #3
0
        public async Task <IActionResult> FinalizarPedido([ModelBinder(Name = "formaPgtoId")] int formaPgtoId)
        {
            var carrinhoItens          = _carrinhoService.GetCarrinhoItens();
            var carrinhoItensViewModel = Mapper.Map <IEnumerable <CarrinhoItemViewModel> >(carrinhoItens);

            var carrinhoViewModel = new CarrinhoViewModel()
            {
                CarrinhoItens = carrinhoItensViewModel,
                CarrinhoTotal = _carrinhoService.GetTotalCarrinho()
            };

            if (carrinhoViewModel.CarrinhoItens.Count() == 0)
            {
                return(RedirectToAction("", "Carrinho"));
            }


            var user = await _userManager.GetUserAsync(User);

            if (user == null)
            {
                throw new ApplicationException($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
            }

            var ClienteLogado = _context.Pessoas.Include(x => x.Cliente).ThenInclude(y => y.Owner).SingleOrDefault(x => x.Cliente.Owner.Id == user.Id);

            if (ClienteLogado == null)
            {
                return(RedirectToAction("Edit", "Clientes", new { returnUrl = "/Pedido/FinalizarPedido" }));
            }

            var formasPgto = _context.FormasPgtos.ToList();

            var finalizarPedidoViewModel = new FinalizarPedidoViewModel
            {
                CarrinhoItens = carrinhoItensViewModel,
                Cliente       = Mapper.Map <PessoaEditViewModel>(ClienteLogado),
                CarrinhoTotal = carrinhoViewModel.CarrinhoTotal,
                FormasPgto    = Mapper.Map <IEnumerable <FormaPgtoViewModel> >(formasPgto),
            };


            if (formaPgtoId == 0)
            {
                ModelState.AddModelError("formaPgtoId", "Forma de Pgto Inválido");
                TempData["alert-danger"] = "Selecione a Forma de Pagamento";
                return(View(finalizarPedidoViewModel));
            }

            var pedido = new Pedido
            {
                Cliente     = ClienteLogado,
                FormaPgtoId = formaPgtoId
            };

            pedido.DataPedido = DateTime.Now;
            //pedido.PedidoTotal = carrinhoItens.Select(c => c.Quant * c.Produto.Valor).Sum();


            foreach (var item in carrinhoItens)
            {
                pedido.PedidoItens.Add(new PedidoItem
                {
                    Quant   = item.Quant,
                    Valor   = item.Produto.Valor,
                    Produto = item.Produto
                });
            }
            _context.Pedidos.Update(pedido);
            _context.SaveChanges();


            // Limpa Carrinho
            _context.CarrinhoItens.RemoveRange(_context.CarrinhoItens.Where(c => c.CarrinhoId == _carrinhoService.CarrinhoSessaoId));
            _context.SaveChanges();

            TempData["alert-success"] = "Pedido Realizado com Sucesso!";
            return(RedirectToAction("PedidoFinalizado"));
        }