public async Task <IActionResult> AdicionarItem(string Codigo)
        {
            var produto = await _produtoRepository.ObterPorCodigo(Codigo);

            if (produto == null)
            {
                return(NotFound());
            }

            var pedido = await ObterPedido();


            if (pedido.Itens == null)
            {
                var novoItemPedido = new ItemPedido(pedido, produto, 1);
                await _itemPedidoRepository.Adicionar(novoItemPedido);

                novoItemPedido.Produto = produto;
                pedido.Itens.Add(novoItemPedido);

                return(RedirectToAction(nameof(Index)));
            }

            var ItemNoCarrinho = pedido.Itens.Where(c => c.ProdutoId.Equals(produto.Id)).FirstOrDefault();


            if (ItemNoCarrinho != null)
            {
                ItemNoCarrinho.Quantidade++;
                await _itemPedidoRepository.Atualizar(ItemNoCarrinho);
            }

            else
            {
                var novoItemCarrinho = new ItemPedido(pedido, produto, 1);
                await _itemPedidoRepository.Adicionar(novoItemCarrinho);

                pedido.Itens.Add(novoItemCarrinho);
            }

            return(RedirectToAction(nameof(Index)));
        }
Ejemplo n.º 2
0
        public void AddItem(string codigo, Pedido pedido)
        {
            var produto = produtoRepository.GetByCodigo(codigo);

            if (produto == null)
            {
                throw new ArgumentException("Produto não encontrado");
            }

            var itemPedido = itemPedidoRepository.GetByCodigo(codigo, pedido.Id);

            if (itemPedido == null)
            {
                itemPedidoRepository.Adicionar(new ItemPedido(pedido, produto, 1, produto.Preco));
            }
        }