Example #1
0
 public void OnNext(DataChanged <IOrder> value)
 {
     if (value.Action == DataChangedAction.Add)
     {
         List <uint> newOrders = value.NewItems.Select(o => o.Id).ToList();
         Task.Run(async delegate
         {
             await Task.Delay(5000);
             lock (OrderLock)
             {
                 foreach (uint id in newOrders)
                 {
                     IOrder order = OrderManager.Get(id);
                     if (order != null && !order.DeliveryDate.HasValue)
                     {
                         order.DeliveryDate = DateTime.Now;
                         foreach (IObserver <OrderSent> observer in OrderSentObservers.ToList())
                         {
                             observer.OnNext(new OrderSent(order));
                         }
                         Update(order).GetAwaiter().GetResult();
                     }
                 }
             }
         });
     }
 }
Example #2
0
 public IDisposable Subscribe(IObserver <OrderSent> observer)
 {
     OrderSentObservers.Add(observer);
     return(new Unsubscriber <OrderSent>(OrderSentObservers, observer));
 }