[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.")); }
[ProducesResponseType(500)] //Erro interno do servidor public IActionResult Post([FromBody] ProdutoMateriaPrima produto) { bool validaEstoque = true; return(IncluirProduto(produto, validaEstoque)); }