Esempio n. 1
0
 private void Apply(BuyOrderCreatedEvent @event)
 {
     Id        = @event.AggregateId;
     WalletId  = @event.WalletId;
     CompanyId = @event.CompanyId;
     Quantity  = @event.Quantity;
     State     = OrderState.Started;
     Type      = OrderType.Buy;
 }
Esempio n. 2
0
        public void When(BuyOrderCreatedEvent message)
        {
            switch (State)
            {
            case BuyOrderProcessManagerState.NotStarted:
                WalletId      = message.WalletId;
                CompanyId     = message.CompanyId;
                StockQuantity = message.Quantity;
                State         = BuyOrderProcessManagerState.OrderPlaced;
                ProcessCommand(new ChargeWalletAmountCommand(message.WalletId, message.CompanyId,
                                                             message.AggregateId, message.Quantity));
                break;

            // idempotence - same message sent twice
            case BuyOrderProcessManagerState.OrderPlaced:
                break;

            default:
                throw new StocqresException("Invalid state for this message");
            }
        }