diff --git a/DDD.BuildingBlocks.V9.OutOfProcDependency/Core/Cart/CheckoutCart.cs b/DDD.BuildingBlocks.V9.OutOfProcDependency/Core/Cart/CheckoutCart.cs index c35de2d..78c8548 100644 --- a/DDD.BuildingBlocks.V9.OutOfProcDependency/Core/Cart/CheckoutCart.cs +++ b/DDD.BuildingBlocks.V9.OutOfProcDependency/Core/Cart/CheckoutCart.cs @@ -40,15 +40,17 @@ public void SetPayment(Payment payment) public async Task PlaceOrder(IOrderRepository orderRepository) { + var limitedProducts = Products.Where(x => x.Product.LimitedAvailability); + /* * This is obviously a naive implementation but in same cases might yield better results * than using JOINs, since we can issue simpler queries in parallel and then * scatter and collect with Task.WhenAll(...) */ - foreach (var product in Products) + foreach (var limitedProduct in limitedProducts) { var orderWithLimitedProductExistsInThisQuarter = await orderRepository.Exists( - specification: new ActiveOrderWithLimitedProductThisQuarter(CustomerId, product.Product.Name), + specification: new ActiveOrderWithLimitedProductThisQuarter(CustomerId, limitedProduct.Product.Name), cancellationToken: CancellationToken.None); if (orderWithLimitedProductExistsInThisQuarter)