public async Task ApplyRuleAsync(IPurchaseOrder purchaseOrder) { var memberships = purchaseOrder.Items.Where(x => x.Product is MembershipProduct).Select(x => x.Product); foreach (MembershipProduct membership in memberships) { await _customerService.ActivateMembershipAsync(purchaseOrder.CustomerId, membership.Id); } }