public async Task <IActionResult> Shipping(int storeScope, ShippingSettings settings) { var store = storeScope == 0 ? Services.StoreContext.CurrentStore : Services.StoreContext.GetStoreById(storeScope); var model = await MapperFactory.MapAsync <ShippingSettings, ShippingSettingsModel>(settings); model.PrimaryStoreCurrencyCode = store.PrimaryStoreCurrency.CurrencyCode; var todayShipmentHours = new List <SelectListItem>(); for (var i = 1; i <= 24; ++i) { var hourStr = i.ToString(); todayShipmentHours.Add(new SelectListItem { Text = hourStr, Value = hourStr, Selected = settings.TodayShipmentHour == i }); } ViewBag.TodayShipmentHours = todayShipmentHours; await _storeDependingSettingHelper.GetOverrideKeysAsync(settings, model, storeScope); // Shipping origin if (storeScope > 0 && await Services.Settings.SettingExistsAsync(settings, x => x.ShippingOriginAddressId, storeScope)) { _storeDependingSettingHelper.AddOverrideKey(settings, "ShippingOriginAddress"); } var originAddress = settings.ShippingOriginAddressId > 0 ? await _db.Addresses.FindByIdAsync(settings.ShippingOriginAddressId, false) : null; if (originAddress != null) { MiniMapper.Map(originAddress, model.ShippingOriginAddress); } var countries = await _db.Countries .AsNoTracking() .Include(x => x.StateProvinces.OrderBy(x => x.DisplayOrder)) .ApplyStandardFilter(true) .ToListAsync(); foreach (var c in countries) { model.ShippingOriginAddress.AvailableCountries.Add( new SelectListItem { Text = c.Name, Value = c.Id.ToString(), Selected = (originAddress != null && c.Id == originAddress.CountryId) } ); } var states = originAddress != null && originAddress.Country != null ? countries.FirstOrDefault(x => x.Id == originAddress.Country.Id).StateProvinces.ToList() : new List <StateProvince>(); if (states.Count > 0) { foreach (var s in states) { model.ShippingOriginAddress.AvailableStates.Add( new SelectListItem { Text = s.Name, Value = s.Id.ToString(), Selected = (s.Id == originAddress.StateProvinceId) } ); } } else { model.ShippingOriginAddress.AvailableStates.Add(new SelectListItem { Text = T("Admin.Address.OtherNonUS"), Value = "0" }); } model.ShippingOriginAddress.CountryEnabled = true; model.ShippingOriginAddress.StateProvinceEnabled = true; model.ShippingOriginAddress.ZipPostalCodeEnabled = true; model.ShippingOriginAddress.ZipPostalCodeRequired = true; return(View(model)); }