public IHttpActionResult Put(Pedido pedido) { var mensagens = new List <string>(); if (pedido == null) { return(BadRequest("O Pedido não pode ser nulo")); } if (!pedido.Validar(out mensagens)) { return(BadRequest(string.Join(" - ", mensagens))); } var mensagem = ""; foreach (ItemPedido item in pedido.Itens) { if (!item.Validar(out mensagem)) { mensagens.Add(mensagem); } Produto produto = _produtoRepositorio.Obter(item.ProdutoId); if (produto != null) { ItemPedido itemPedidoAntigo = _itemPedidoRepositorio.Obter(item.Id); if (itemPedidoAntigo != null) { var novoEstoque = produto.Estoque + (itemPedidoAntigo.Quantidade - item.Quantidade); //Pega a quantidade do pedido antigo e subtrai da nova Quantidade, //esta diferença, sendo positiva ou negativa é descontada/adicionada // no estoque do produto if (novoEstoque >= 0) { Produto produtoAlterado = new Produto(produto.Id, produto.Nome, produto.Preco, novoEstoque); _produtoRepositorio.Alterar(produtoAlterado); } else { mensagens.Add("Estoque com quantidade insuficiente do produto de ID " + produto.Id); } } else { ItemPedido itemPedidoNovo = _itemPedidoRepositorio.Criar(item, pedido.Id); } } else { mensagens.Add("Produto de Id " + item.ProdutoId + " é inválido"); } } if (mensagens.Count > 0) { return(BadRequest(string.Join(" - ", mensagens))); } _pedidoRepositorio.Alterar(pedido); return(Ok(pedido)); }
public IHttpActionResult Get(int id) { return(Ok(_itemPedidoRepositorio.Obter(id))); }