Exemplo n.º 1
0
 [ProducesResponseType(500)] //Erro interno do servidor
 public IActionResult Put(int id, [FromBody] ProdutoFinalProduzido produto)
 {
     if (VerificarEstoqueMateriaPrima(produto))
     {
         return(AlterarProdutoFinal(id, produto));
     }
     else
     {
         return(BadRequest("Existem matérias-primas da receita que estão inativas ou com quantidades inválidas."));
     }
 }
Exemplo n.º 2
0
 [ProducesResponseType(500)] //Erro interno do servidor
 public IActionResult Post([FromBody] ProdutoFinalProduzido produto)
 {
     if (VerificarEstoqueMateriaPrima(produto))
     {
         bool validaEstoque = false;
         return(IncluirProdutoFinal(produto, validaEstoque));
     }
     else
     {
         return(BadRequest("Existem matérias-primas da receita que estão inativas ou com quantidades inválidas."));
     }
 }
Exemplo n.º 3
0
        [ProducesResponseType(500)] //Erro interno do servidor
        public IActionResult Post([FromBody] ProdutoFinalProduzido produtoParaProduzir)
        {
            //busca o Produto final da base, para pegar os dados atualizados de receita
            ProdutoFinalProduzido produtoFinalProduzido = _produtoRepositorio.SelecionarProdutoFinalProduzido(produtoParaProduzir.Id);

            //QuantidadeEstoque = qtd para Produzir
            // para verificacao
            foreach (var item in produtoFinalProduzido.Receita)
            {
                //verifica estoque materia prima
                ProdutoMateriaPrima materiaPrima = (ProdutoMateriaPrima)_produtoRepositorio.Selecionar(item.IdMateriaPrima);
                if (!materiaPrima.VerificaEstoqueQuantidadeMateiraPrima(item.Quantidade * produtoParaProduzir.QuantidadeEstoque))
                {
                    return(BadRequest($"Não possui estoque suficiente para o produto {item.MateriaPrima.Nome}."));
                }
            }

            //cria a movimentacao de estoque do produto final
            Estoque estoque = new Estoque()
            {
                Produto     = produtoFinalProduzido,
                Data        = DateTime.Now,
                Quantidade  = produtoParaProduzir.QuantidadeEstoque,
                TipoEstoque = EnumTipoEstoque.ENTRADA
            };

            _estoqueRepositorio.Incluir(estoque);
            produtoFinalProduzido.QuantidadeEstoque += estoque.Quantidade;


            // para retirada do estoque
            foreach (var item in produtoFinalProduzido.Receita)
            {
                ProdutoMateriaPrima materiaPrima = (ProdutoMateriaPrima)_produtoRepositorio.Selecionar(item.IdMateriaPrima);
                //cria a movimentacao de estoque do produto materia prima
                Estoque estoqueMateiraPrima = new Estoque()
                {
                    Produto     = materiaPrima,
                    Data        = DateTime.Now,
                    Quantidade  = produtoParaProduzir.QuantidadeEstoque * item.Quantidade,
                    TipoEstoque = EnumTipoEstoque.SAIDA
                };
                _estoqueRepositorio.Incluir(estoqueMateiraPrima);
                materiaPrima.QuantidadeEstoque -= estoqueMateiraPrima.Quantidade;
                _produtoRepositorio.Alterar(materiaPrima);
            }

            _produtoRepositorio.Alterar(produtoFinalProduzido);
            return(Ok("O produto final produzido selecionado foi atualizado com sucesso no estoque."));
        }
Exemplo n.º 4
0
        private bool VerificarEstoqueMateriaPrima(ProdutoFinalProduzido produtoFinalProduzido)
        {
            if (produtoFinalProduzido.Receita == null)
            {
                return(false);
            }

            foreach (var item in produtoFinalProduzido.Receita)
            {
                var ingrediente = _produtoRepositorio.Selecionar(item.IdMateriaPrima);

                if (!ingrediente.Situacao || !item.ValidaQuantidade())
                {
                    return(false);
                }
            }
            return(true);
        }