public async Task <ValidationResult> Handle(VendaProdutoCommand request, CancellationToken cancellationToken) { if (!request.IsValid()) { return(request.ValidationResult); } var produto = await _produtorepository.GetById(request.Id); if (produto is null) { AddError("O produto não existe."); return(ValidationResult); } if (produto.Quantidade < request.Quantidade) { AddError("Quantidade maior do que a quantidade em estoque."); return(ValidationResult); } produto.Quantidade -= request.Quantidade; _produtorepository.Vendido(produto); var validation = await Commit(_produtorepository.UnitOfWork); if (validation.IsValid) { produto.AddDomainEvent(new ProdutoVendaEvent(produto.Id, produto.Quantidade)); } return(validation); }
public async Task <ValidationResult> Handle(VendaProdutoCommand request, CancellationToken cancellationToken) { if (!request.IsValid()) { return(request.ValidationResult); } var produto = await _produtorepository.GetById(request.Id); produto.Quantidade -= request.Quantidade; _produtorepository.Vendido(produto); return(await Commit(_produtorepository.UnitOfWork)); }