private async Task <bool> DebitarItemEstoque(Guid produtoId, int quantidade) { var produto = await _produtoRepository.ObterPorId(produtoId); if (produto == null) { return(false); } if (!produto.PossuiEstoque(quantidade)) { await _mediatorHandler.PublicarNotificacao( new DomainNotification("Estoque", $"Produto - {produto.Nome} sem estoque") ); return(false); } produto.DebitarEstoque(quantidade); // TODO: Parametrizar a quantidade de estoque baixo if (produto.QuantidadeEstoque < 10) { await _mediatorHandler.PublicarDomainEvent(new ProdutoAbaixoEstoqueEvent(produto.Id, produto.QuantidadeEstoque)); } _produtoRepository.Atualizar(produto); var sucesso = await _produtoRepository.UnitOfWork.Commit(); return(sucesso); }
private async Task <bool> DebitarItemEstoque(Guid produtoId, int quantidade) { var produto = await _produtoRepository.ObterPorId(produtoId); if (produto == null) { return(false); } if (!produto.PossuiEstoque(quantidade)) { await _mediatorHandler.PublicarNotificacao(new DomainNotification("Estoque", $"Produto = {produto.Nome} sem estoque")); return(false); } produto.DebitarEstoque(quantidade); //Lançando evento para informar que o estoque está baixo, utilizando o Mediatr // TODO: 10 pode ser parametrizavel em arquivo de configuração if (produto.QuantidadeEstoque < 10) { await _mediatorHandler.PublicarDomainEvent(new ProdutoAbaixoEstoqueEvent(produto.Id, produto.QuantidadeEstoque)); } _produtoRepository.Atualizar(produto); return(true); }
private async Task <bool> DebitarItemEstoque(Guid _produtoId, int _quantidade) { var produto = await _produtoRepository.ObterPorId(_produtoId); if (produto == null) { return(false); } if (!produto.PossuiEstoque(_quantidade)) { await _mediatorHandler.PublicarNotificacao(new DomainNotification("Estoque", $"Produto - {produto.Nome} sem estoque")); return(false); } produto.DebitarEstoque(_quantidade); //PARAMETRIZAR DEPOIS if (produto.QuantidadeEstoque < 10) { await _mediatorHandler.PublicarDomainEvent(new ProdutoAbaixoEstoqueEvent(produto.Id, produto.QuantidadeEstoque)); } _produtoRepository.Atualizar(produto); return(true); }