public async Task HandleAsync(CompanyChargedEvent @event) { await _projectionWriter.UpdateAsync <CompanyProjection>(@event.AggregateId, projection => { projection.StockQuantity = @event.StockQuantity; }); }
public async Task HandleAsync(CompanyChargedEvent message) { var orderProcessManager = await _processManagerRepository.FindAsync(message.OrderId); try { orderProcessManager.When(message); } catch (StocqresException e) { orderProcessManager.When(new CompanyChargeFailedEvent(message.OrderId, e.Message)); } await _processManagerRepository.Save(orderProcessManager); }
public void When(CompanyChargedEvent message) { switch (State) { case BuyOrderProcessManagerState.InvestorWalletCharged: State = BuyOrderProcessManagerState.CompanyCharged; StockName = message.StockName; StockCode = message.StockCode; StockQuantity = message.StockQuantity; StockUnit = message.StockUnit; ProcessCommand(new AddStockToWalletCommand(WalletId, AggregateId, CompanyId, message.StockName, message.StockCode, message.StockUnit, message.StockQuantity)); break; case BuyOrderProcessManagerState.StockAddedToWallet: break; default: throw new StocqresException("Invalid state for this message"); } }
public void Apply(CompanyChargedEvent @event) { Stock.Quantity -= @event.StockQuantity; }