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))); }
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)); } }