コード例 #1
0
        public async Task HandleAsync(StocksAddedToCompanyEvent message)
        {
            var orderProcessManager = await _processManagerRepository.FindAsync(message.OrderId);

            try
            {
                orderProcessManager.When(message);
            }
            catch (StocqresException e)
            {
                orderProcessManager.When(new SellOrderCancelledEvent(e.Message));
            }

            await _processManagerRepository.Save(orderProcessManager);
        }
コード例 #2
0
        public void When(StocksAddedToCompanyEvent message)
        {
            switch (State)
            {
            case SellOrderProcessManagerState.StocksTakedOffFromWallet:
                State = SellOrderProcessManagerState.StocksAddedToCompany;
                ProcessCommand(new TopUpWalletAmountCommand(WalletId, AggregateId, StockCode,
                                                            message.StockQuantity));
                break;

            // idempotence - same message sent twice
            case SellOrderProcessManagerState.StocksAddedToCompany:
                break;

            default:
                throw new StocqresException("Invalid state for this message");
            }
        }
コード例 #3
0
 public void Apply(StocksAddedToCompanyEvent @event)
 {
     Stock.Quantity += @event.StockQuantity;
 }