public ActionResult Edit(DeliveryMatrixViewModel viewModel) { int x = 0; foreach (var column in viewModel.Columns) { int y = 0; foreach (var newSetting in column) { // Dont save delivery settings from a country to the same country if (x != y) { var record = _deliveryInternationalSettingRepository.Table .Where(s => (s.CountryFrom.Id == newSetting.CountryFromId) && (s.CountryTo.Id == newSetting.CountryToId)) .First(); record.CountryFrom = _countryRepository.Get(newSetting.CountryFromId); record.CountryTo = _countryRepository.Get(newSetting.CountryToId); record.DeliveryPrice = newSetting.DeliveryPrice; record.IsActive = newSetting.IsActive; record.DeliveryTime = newSetting.DeliveryTime; _deliveryInternationalSettingRepository.Update(record); } y++; } x++; } _orchardServices.Notifier.Information(T("Settings have been changed!")); return(RedirectToAction("Index")); }
public ActionResult Index() { var deliveryMatrix = new DeliveryMatrixViewModel(); deliveryMatrix.Columns = new List <List <DeliveryInternationalSettingViewModel> >(); int x = 0; foreach (var countryTo in _countryRepository.Table) { int y = 0; var newColumn = new List <DeliveryInternationalSettingViewModel>(); foreach (var countryFrom in _countryRepository.Table) { var setting = new DeliveryInternationalSettingViewModel(); // If it won't be a delivery from a country to the same country // then populate the matrix with the real data. if (x != y) { var record = _deliveryInternationalSettingRepository.Table .Where(s => (s.CountryFrom.Id == countryFrom.Id) && (s.CountryTo.Id == countryTo.Id)) .FirstOrDefault(); if (record == null) { record = new DeliveryInternationalSettingRecord(); record.CountryFrom = countryFrom; record.CountryTo = countryTo; record.IsActive = false; _deliveryInternationalSettingRepository.Create(record); } setting.Id = record.Id; setting.CountryFromId = record.CountryFrom.Id; setting.CountryFromName = record.CountryFrom.Name; setting.CountryToId = record.CountryTo.Id; setting.CountryToName = record.CountryTo.Name; setting.DeliveryPrice = record.DeliveryPrice; setting.IsActive = record.IsActive; setting.DeliveryTime = record.DeliveryTime; } // It's a delivery from a country to the same country. // just pass the empty setting to the view. else { setting.CountryFromName = countryFrom.Name; setting.CountryToName = countryTo.Name; } newColumn.Add(setting); y++; } deliveryMatrix.Columns.Add(newColumn); x++; } return(View(deliveryMatrix)); }