Esempio n. 1
0
 public SellOrderProcessManager(Guid walletId, Guid companyId, string stockCode, int stockQuantity,
                                string cancelReason, SellOrderProcessManagerState state)
 {
     WalletId      = walletId;
     CompanyId     = companyId;
     StockCode     = stockCode;
     StockQuantity = stockQuantity;
     CancelReason  = cancelReason;
     State         = state;
 }
Esempio n. 2
0
        public void When(SellOrderFinishedEvent message)
        {
            switch (State)
            {
            case SellOrderProcessManagerState.WalletToppedUp:
                State = SellOrderProcessManagerState.OrderFinished;
                break;

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

            default:
                throw new StocqresException("Invalid state for this message");
            }
        }
Esempio n. 3
0
        public void When(WalletAmountToppedUpEvent message)
        {
            switch (State)
            {
            case SellOrderProcessManagerState.StocksTakedOffFromWallet:
                State = SellOrderProcessManagerState.WalletToppedUp;
                ProcessCommand(new FinishBuyOrderCommand(AggregateId));
                break;

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

            default:
                throw new StocqresException("Invalid state for this message");
            }
        }
Esempio n. 4
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");
            }
        }
Esempio n. 5
0
        public void When(StocksTakedOffFromWalletEvent message)
        {
            switch (State)
            {
            case SellOrderProcessManagerState.OrderPlaced:
                CompanyId     = message.CompanyId;
                StockQuantity = message.Quantity;
                State         = SellOrderProcessManagerState.StocksTakedOffFromWallet;
                ProcessCommand(new AddStocksToCompanyCommand(CompanyId, message.AggregateId, message.Quantity,
                                                             StockCode));
                break;

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

            default:
                throw new StocqresException("Invalid state for this message");
            }
        }
Esempio n. 6
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");
            }
        }
Esempio n. 7
0
 public void When(SellOrderCancelledEvent message)
 {
     State = SellOrderProcessManagerState.OrderFailed;
 }