コード例 #1
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."));
        }
コード例 #2
0
ファイル: ProdutoController.cs プロジェクト: amurta76/Bakery
        [ProducesResponseType(500)] //Erro interno do servidor
        public IActionResult Post([FromBody] ProdutoMateriaPrima produto)
        {
            bool validaEstoque = true;

            return(IncluirProduto(produto, validaEstoque));
        }