protected virtual async Task SaveStoreMappingsAsync(CheckoutAttribute checkoutAttribute, CheckoutAttributeModel model) { checkoutAttribute.LimitedToStores = model.SelectedStoreIds.Any(); await _checkoutAttributeService.UpdateCheckoutAttributeAsync(checkoutAttribute); var existingStoreMappings = await _storeMappingService.GetStoreMappingsAsync(checkoutAttribute); var allStores = await _storeService.GetAllStoresAsync(); foreach (var store in allStores) { if (model.SelectedStoreIds.Contains(store.Id)) { //new store if (existingStoreMappings.Count(sm => sm.StoreId == store.Id) == 0) { await _storeMappingService.InsertStoreMappingAsync(checkoutAttribute, store.Id); } } else { //remove store var storeMappingToDelete = existingStoreMappings.FirstOrDefault(sm => sm.StoreId == store.Id); if (storeMappingToDelete != null) { await _storeMappingService.DeleteStoreMappingAsync(storeMappingToDelete); } } } }