Beispiel #1
0
        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)));
 }