public ActionResult Configure()
        {
            int activeStoreScopeConfiguration          = this.GetActiveStoreScopeConfiguration(this._storeService, this._workContext);
            ZarinpalSettings   zarinpalPaymentSettings = this._settingService.LoadSetting <ZarinpalSettings>(activeStoreScopeConfiguration);
            ConfigurationModel configurationModel      = new ConfigurationModel
            {
                MerchantId      = zarinpalPaymentSettings.MerchantId,
                PayementUrl     = zarinpalPaymentSettings.PayementUrl,
                WebServiceUrl   = zarinpalPaymentSettings.WebServiceUrl,
                IsTomanForStore = zarinpalPaymentSettings.IsToman,
                ActiveStoreScopeConfiguration = activeStoreScopeConfiguration,
            };

            if (activeStoreScopeConfiguration > 0)
            {
                configurationModel.MerchantIdOverrideForStore    = this._settingService.SettingExists <ZarinpalSettings, string>(zarinpalPaymentSettings, (ZarinpalSettings x) => x.MerchantId, activeStoreScopeConfiguration);
                configurationModel.PayementUrlOverrideForStore   = this._settingService.SettingExists <ZarinpalSettings, string>(zarinpalPaymentSettings, (ZarinpalSettings x) => x.PayementUrl, activeStoreScopeConfiguration);
                configurationModel.WebServiceUrlOverrideForStore = this._settingService.SettingExists <ZarinpalSettings, string>(zarinpalPaymentSettings, (ZarinpalSettings x) => x.WebServiceUrl, activeStoreScopeConfiguration);
                configurationModel.IsTomanForStore = this._settingService.SettingExists <ZarinpalSettings, bool>(zarinpalPaymentSettings, (ZarinpalSettings x) => x.IsToman, activeStoreScopeConfiguration);
            }
            return(base.View("~/Plugins/NopFarsi.Payments.Zarinpal/Views/Configure.cshtml", configurationModel));
        }
        public ActionResult Configure(ConfigurationModel model)
        {
            if (!base.ModelState.IsValid)
            {
                return(this.Configure());
            }
            int activeStoreScopeConfiguration        = this.GetActiveStoreScopeConfiguration(this._storeService, this._workContext);
            ZarinpalSettings zarinpalPaymentSettings = this._settingService.LoadSetting <ZarinpalSettings>(activeStoreScopeConfiguration);


            zarinpalPaymentSettings.MerchantId    = model.MerchantId;
            zarinpalPaymentSettings.PayementUrl   = model.PayementUrl;
            zarinpalPaymentSettings.WebServiceUrl = model.WebServiceUrl;
            zarinpalPaymentSettings.IsToman       = model.IsTomanForStore;

            this._settingService.SaveSettingOverridablePerStore <ZarinpalSettings, string>(zarinpalPaymentSettings, (ZarinpalSettings x) => x.MerchantId, model.MerchantIdOverrideForStore, activeStoreScopeConfiguration, false);
            this._settingService.SaveSettingOverridablePerStore <ZarinpalSettings, string>(zarinpalPaymentSettings, (ZarinpalSettings x) => x.PayementUrl, model.PayementUrlOverrideForStore, activeStoreScopeConfiguration, false);
            this._settingService.SaveSettingOverridablePerStore <ZarinpalSettings, string>(zarinpalPaymentSettings, (ZarinpalSettings x) => x.WebServiceUrl, model.WebServiceUrlOverrideForStore, activeStoreScopeConfiguration, false);
            this._settingService.SaveSettingOverridablePerStore <ZarinpalSettings, bool>(zarinpalPaymentSettings, (ZarinpalSettings x) => x.IsToman, model.IsTomanForStore, activeStoreScopeConfiguration, false);
            this._settingService.ClearCache();
            this.SuccessNotification(this._localizationService.GetResource("Admin.Plugins.Saved"), true);
            return(this.Configure());
        }