private static ImmutableDictionary <int, OrderViewModel> MarkAsDelivered(ImmutableDictionary <int, OrderViewModel> state, DeliveryReceived delivery)
 {
     if (state.TryGetValue(delivery.Order, out var model))
     {
         var deliveryMark = new OrderViewModel.OrderItem.Delivery
         {
             DeliveredOn = delivery.On,
             DeliveryId  = delivery.Delivery
         };
         MarkUndeliveredItem(model.FoodOrder, delivery.Items.Food, deliveryMark);
         MarkUndeliveredItem(model.DrinkOrder, delivery.Items.Drinks, deliveryMark);
     }
     return(state);
 }
 private static void MarkUndeliveredItem(IEnumerable <OrderViewModel.OrderItem> items, IEnumerable <int> deliveryItems, OrderViewModel.OrderItem.Delivery delivery)
 {
     foreach (var deliveredId in deliveryItems)
     {
         var undeliveredItem =
             items
             .Where(x => x.ReceivedAt == null)
             .Where(x => x.Id == deliveredId)
             .FirstOrDefault();
         if (undeliveredItem != null)
         {
             undeliveredItem.ReceivedAt = delivery;
         }
     }
 }