public void AtualizarItem(PedidoItem item)
        {
            if (!item.EhValido())
            {
                return;
            }
            item.AssociarPedido(Id);

            var itemExistente = PedidoItems.FirstOrDefault(p => p.ProdutoId == item.ProdutoId);

            if (itemExistente == null)
            {
                throw new DomainException("O item não pertence ao pedido");
            }

            _pedidoItems.Remove(itemExistente);
            _pedidoItems.Add(item);

            CalcularValorPedido();
        }
        public void AdicionarItem(PedidoItem item)
        {
            if (!item.EhValido())
            {
                return;
            }

            item.AssociarPedido(Id);

            if (PedidoItemExistente(item))
            {
                var itemExistente = _pedidoItems.FirstOrDefault(p => p.ProdutoId == item.ProdutoId);
                itemExistente.AdicionarUnidades(item.Quantidade);
                item = itemExistente;

                _pedidoItems.Remove(itemExistente);
            }

            item.CalcularValor();
            _pedidoItems.Add(item);

            CalcularValorPedido();
        }
 public void AtualizarUnidades(PedidoItem item, int unidades)
 {
     item.AtualizarUnidades(unidades);
     AtualizarItem(item);
 }
 public bool PedidoItemExistente(PedidoItem item)
 {
     return(_pedidoItems.Any(p => p.ProdutoId == item.ProdutoId));
 }