public ActionResult Configure() { //load settings for a chosen store scope var storeScope = this.GetActiveStoreScopeConfiguration(_storeService, _workContext); var robokassaSettings = _settingService.LoadSetting<RobokassaSettings>(storeScope); var model = new ConfigurationModel(); model.HttpContext = _httpContext; model.ApiURL = robokassaSettings.ApiURL; model.Login = robokassaSettings.Login; model.Password1 = robokassaSettings.Password1; model.Password2 = robokassaSettings.Password2; model.PaymentDescription = robokassaSettings.PaymentDescription; model.ActiveStoreScopeConfiguration = storeScope; if (storeScope > 0) { model.ApiURL_OverrideForStore = _settingService.SettingExists(robokassaSettings, x => x.ApiURL, storeScope); model.Login_OverrideForStore = _settingService.SettingExists(robokassaSettings, x => x.Login, storeScope); model.Password1_OverrideForStore = _settingService.SettingExists(robokassaSettings, x => x.Password1, storeScope); model.Password2_OverrideForStore = _settingService.SettingExists(robokassaSettings, x => x.Password2, storeScope); model.PaymentDescription_OverrideForStore = _settingService.SettingExists(robokassaSettings, x => x.PaymentDescription, storeScope); } return View("~/Plugins/Payments.Robokassa/Views/PaymentRobokassa/Configure.cshtml", model); }
public ActionResult Configure(ConfigurationModel model) { model.HttpContext = _httpContext; if (!ModelState.IsValid) return Configure(); //load settings for a chosen store scope var storeScope = this.GetActiveStoreScopeConfiguration(_storeService, _workContext); var robokassaSettings = _settingService.LoadSetting<RobokassaSettings>(storeScope); robokassaSettings.ApiURL = model.ApiURL; robokassaSettings.Login = model.Login; robokassaSettings.Password1 = model.Password1; robokassaSettings.Password2 = model.Password2; robokassaSettings.PaymentDescription = model.PaymentDescription; /* We do not clear cache after each setting update. * This behavior can increase performance because cached settings will not be cleared * and loaded from database after each update */ if (model.ApiURL_OverrideForStore || storeScope == 0) _settingService.SaveSetting(robokassaSettings, x => x.ApiURL, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(robokassaSettings, x => x.ApiURL, storeScope); if (model.Login_OverrideForStore || storeScope == 0) _settingService.SaveSetting(robokassaSettings, x => x.Login, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(robokassaSettings, x => x.Login, storeScope); if (model.Password1_OverrideForStore || storeScope == 0) _settingService.SaveSetting(robokassaSettings, x => x.Password1, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(robokassaSettings, x => x.Password1, storeScope); if (model.Password2_OverrideForStore || storeScope == 0) _settingService.SaveSetting(robokassaSettings, x => x.Password2, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(robokassaSettings, x => x.Password2, storeScope); if (model.PaymentDescription_OverrideForStore || storeScope == 0) _settingService.SaveSetting(robokassaSettings, x => x.PaymentDescription, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(robokassaSettings, x => x.PaymentDescription, storeScope); //now clear settings cache _settingService.ClearCache(); return Configure(); }