Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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));
        }