Exemple #1
0
        public async virtual void OnOrderMarkedCompleted(object sender, OrderMarkedCompletedEventArgs e)
        {
            // имитация похода до окна выдачи продуктов
            await Task.Delay(TimeSpan.FromMilliseconds(_random.Next(MIN_MOVING_TIME_TO_PRODUCT_WINDOW_IN_MILLISECONDS, MAX_MOVING_TIME_TO_PRODUCT_WINDOW_IN_MILLISECONDS)));

            IProductDeliveryWindow productDeliveryWindow;

            try
            {
                productDeliveryWindow = _currentRestaurant.GetProductDeliveryWindowByNumber(e.CompletdOrderInfo.ProductDeliveryWindowNumber);
                TakeCompletedOrder(e.CompletdOrderInfo.OrderNumber, productDeliveryWindow);
            }
            catch (KeyNotFoundException)
            {
                // Этот момент не критичен, т.к. клиент может быть подписан сразу на несколько табло, и этот метод тригерят сразу много эвентов.
                // А номер заказа удаляется сразу после первого триггера эвента
                // Поэтому на остальные можно не обращать внимания
                // Этот момент я бы просто логировал
            }
            catch
            {
                throw;
            }
        }
 public void OnOrderMarkedCompleted(object sender, OrderMarkedCompletedEventArgs e)
 {
     Logged(this, $"На табло \"{sender}\" заказ с номером {e.CompletdOrderInfo.OrderNumber} " +
            $"перешел в группу готовых заказов. Окно выдачи: {e.CompletdOrderInfo.ProductDeliveryWindowNumber}.");
 }