public async Task <IHttpActionResult> PostMovimentoEstoque(MovimentoEstoqueBindingModel model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var produto = await db.Produtos.FindAsync(model.IdProduto); if (produto == null) { ThrowProdutoNotFound(model.IdProduto.Value); } var movimento = new MovimentoEstoque { Produto = produto, Quantidade = model.Quantidade, Data = model.Data.GetValueOrDefault(DateTime.Now), Observacao = model.Observacao }; service.CriarMovimento(movimento); await db.SaveChangesAsync(); return(CreatedAtRoute("DefaultApi", new { movimento.Id }, movimento)); }
public async Task <IHttpActionResult> PutMovimentoEstoque(int id, MovimentoEstoqueBindingModel model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != model.Id) { return(BadRequest()); } var movimento = await db.MovimentosEstoque.FindAsync(id); var produto = await db.Produtos.FindAsync(model.IdProduto); if (movimento == null) { return(NotFound()); } if (produto == null) { ThrowProdutoNotFound(model.IdProduto.Value); } int quantidadeAnterior = movimento.Quantidade; movimento.Produto = produto; movimento.Quantidade = model.Quantidade; movimento.Data = model.Data.GetValueOrDefault(movimento.Data); movimento.Observacao = model.Observacao; service.EditarMovimento(movimento, quantidadeAnterior); try { await db.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!MovimentoEstoqueExists(id)) { return(NotFound()); } else { throw; } } return(StatusCode(HttpStatusCode.NoContent)); }