public async Task <bool> DebitarEstoque(Guid produtoId, int quantidade) { var produto = await _produtoRepository.ObterPorId(produtoId); if (produto == null) { return(false); } if (!produto.PossuiEstoque(quantidade)) { return(false); } produto.DebitarEstoque(quantidade); // TODO: Parametrizar a quantidade if (produto.QuantidadeEstoque < 10) { await _mediator.PublicarDomainEvent ( new ProdutoAbaixoEstoqueEvent(produto.Id, produto.QuantidadeEstoque) ); } _produtoRepository.Atualizar(produto); return(await _produtoRepository.UnitOfWork.Commit()); }