public async Task HandleAsync(WalletChargedEvent message) { var orderProcessManager = await _processManagerRepository.FindAsync(message.OrderId); try { orderProcessManager.When(message); } catch (StocqresException e) { orderProcessManager.When(new BuyOrderCancelledEvent(e.Message)); } await _processManagerRepository.Save(orderProcessManager); }
public void When(WalletChargedEvent message) { switch (State) { case BuyOrderProcessManagerState.OrderPlaced: State = BuyOrderProcessManagerState.InvestorWalletCharged; ChargedWalletAmount = message.Amount; ProcessCommand(new ChargeCompanyCommand(CompanyId, AggregateId, StockQuantity)); break; case BuyOrderProcessManagerState.InvestorWalletCharged: break; default: throw new StocqresException("Invalid state for this message"); } }
private void Apply(WalletChargedEvent @event) { Amount -= @event.Amount; }