コード例 #1
0
        public void DocumentUpdated(Order order)
        {
            if (order.Paid)
            {
                _dispatcher.PublishWithoutNotify("manger", order);
                _dispatcher.PublishMidgetInfo("midgetObserver", "Order passed to manager");
                return;
            }

            if (order.Total > 0)
            {
                _dispatcher.PublishWithoutNotify("cashier", order);
                _dispatcher.PublishMidgetInfo("midgetObserver", "Order passed to cashier");
                return;
            }

            if (!order.IsNotCooked)
            {
                _foodHasBeenPrepared = true;
                _dispatcher.PublishWithoutNotify("assistant", order);
                _dispatcher.PublishMidgetInfo("midgetObserver", "Order passed to assistant");
                return;
            }

            if (order.IsNotCooked)
            {
                _dispatcher.PublishWithoutNotify("cook", order);
                _dispatcher.PublishMidgetInfo("midgetObserver", "Order passed to cook");
                _scheduler.ScheduleMessage(new CookDied(order), TimeSpan.FromMilliseconds(20), HandleCookDied);
            }
        }
コード例 #2
0
        public void Handle(Order order)
        {
            var midget = new RestaurantMidget(order.CorrelationId, _dispatcher, _scheduler);
            _dispatcher.SubscribeByCorrelationId(order.CorrelationId, midget);
            _midgetMap.Add(order.CorrelationId, midget);

            _dispatcher.NotifyAll(order);
        }
コード例 #3
0
 public void PublishWithoutNotify(string name, Order order)
 {
     IHandleOrders handler;
     if (_handlers.TryGetValue(name, out handler))
     {
         handler.Handle(order);
     }
 }
コード例 #4
0
 public void NotifyAll(Order order)
 {
     ICorrelationObserver observer;
     if (_correlationObservers.TryGetValue(order.CorrelationId, out observer))
     {
         observer.DocumentUpdated(order);
     }
 }
コード例 #5
0
 public Order(Order order)
 {
     TableNumber = order.TableNumber;
     OrderTime = order.OrderTime;
     ServerName = order.ServerName;
     Items = order.Items;
     Total = order.Total;
     TotalTax = order.TotalTax;
     Paid = order.Paid;
     CorrelationId = order.CorrelationId;
     Items = new List<OrderItem>(order.Items.Select(x => new OrderItem(x)));
 }
コード例 #6
0
        public void Handle(Order order)
        {
            foreach (var item in order.Items)
            {
                item.Price = item.Quantity*_priceTable.GetPriceFor(item.Name);
                order.Total += item.Price;
            }

            order.TotalTax = TaxPercentage*order.Total;
            order.Total += order.TotalTax;

            _handler.Handle(order);
        }
コード例 #7
0
 public void Publish(string name, Order order)
 {
     IHandleOrders handler;
     if (_handlers.TryGetValue(name, out handler))
     {
         handler.Handle(order);
         ICorrelationObserver observer;
         if (_correlationObservers.TryGetValue(order.CorrelationId, out observer))
         {
             observer.DocumentUpdated(order);
         }
     }
 }
コード例 #8
0
 public void Handle(Order order)
 {
     _dispatcher.Publish(_name, order);
 }
コード例 #9
0
 public void Handle(Order order)
 {
     OrdersToBeHandled.Add(order);
 }
コード例 #10
0
 public CookDied(Order order)
 {
     Order = order;
 }
コード例 #11
0
 public void StoreForLaterUse(Order order)
 {
     StoredOrders.Add(order);
 }
コード例 #12
0
ファイル: Cook.cs プロジェクト: sadowskik/advanced-cqrs-class
 public void Handle(Order order)
 {
     PrepareTheMeal(order);
     _handler.Handle(order);
 }
コード例 #13
0
 public void Handle(Order order)
 {
     _dispatcher.NotifyAll(order);
 }
コード例 #14
0
 public void DocumentUpdated(Order order)
 {
     _target(order);
 }
コード例 #15
0
 public void Handle(Order order)
 {
     TimedOutOrders.Add(order);
 }
コード例 #16
0
 public void Handle(Order order)
 {
     _orderStore.Store(order);
 }
コード例 #17
0
 public void Handle(Order order)
 {
     _orders.Add(order);
     //Console.WriteLine("{0}: adding order to queue", _queueName);
 }
コード例 #18
0
ファイル: Cook.cs プロジェクト: sadowskik/advanced-cqrs-class
 private void PrepareTheMeal(Order order)
 {
     _store.GetIngredients();
     order.IsNotCooked = false;
     Thread.Sleep(10);
 }
コード例 #19
0
 public void Handle(Order order)
 {
     _handlers[_currentHandler].Handle(order);
     _currentHandler = (_currentHandler + 1)%_handlers.Count;
 }
コード例 #20
0
 public void Store(Order order)
 {
     OrderStore.Add(order.TableNumber, order);
 }