Esempio n. 1
0
 private void Apply(SellOrderCreatedEvent @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(SellOrderCreatedEvent message)
        {
            switch (State)
            {
            case SellOrderProcessManagerState.NotStarted:
                WalletId      = message.WalletId;
                CompanyId     = message.CompanyId;
                StockQuantity = message.Quantity;
                State         = SellOrderProcessManagerState.OrderPlaced;
                ProcessCommand(new TakeOffStocksFromWalletCommand(message.WalletId, message.CompanyId,
                                                                  message.AggregateId, message.Quantity));
                break;

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

            default:
                throw new StocqresException("Invalid state for this message");
            }
        }
 public async Task HandleAsync(SellOrderCreatedEvent @event)
 {
     await _projectionWriter.AddAsync(new BuyOrderProjection(@event.AggregateId, @event.WalletId, @event.CompanyId, @event.Quantity,
                                                             OrderState.Started));
 }