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; } } }