Пример #1
0
 /// <inheritdoc/>
 public Task UpdateAsync(SettingInfo setting)
 {
     LogHelper.Logger.Warn("ISettingStore is not implemented, using DefaultConfigSettingStore which does not support UpdateAsync.");
     return(TaskCache.CompletedTask);
 }
Пример #2
0
        private async Task <SettingInfo> InsertOrUpdateOrDeleteSettingValueAsync(string name, string value, int?tenantId, long?userId)
        {
            var settingDefinition = _settingDefinitionManager.GetSettingDefinition(name);
            var settingValue      = await SettingStore.GetSettingOrNullAsync(tenantId, userId, name);

            //Determine defaultValue
            var defaultValue = settingDefinition.DefaultValue;

            if (settingDefinition.IsInherited)
            {
                ////For Tenant and User, Application's value overrides Setting Definition's default value when multi tenancy is enabled.
                //if (_multiTenancyConfig.IsEnabled && (tenantId.HasValue || userId.HasValue))
                //{
                //    var applicationValue = await GetSettingValueForApplicationOrNullAsync(name);
                //    if (applicationValue != null)
                //    {
                //        defaultValue = applicationValue.Value;
                //    }
                //}

                //For User, Tenants's value overrides Application's default value.
                if (userId.HasValue && tenantId.HasValue)
                {
                    var tenantValue = await GetSettingValueForTenantOrNullAsync(tenantId.Value, name);

                    if (tenantValue != null)
                    {
                        defaultValue = tenantValue.Value;
                    }
                }
            }

            //No need to store on database if the value is the default value
            if (value == defaultValue)
            {
                if (settingValue != null)
                {
                    await SettingStore.DeleteAsync(settingValue);
                }

                return(null);
            }

            //If it's not default value and not stored on database, then insert it
            if (settingValue == null)
            {
                settingValue = new SettingInfo
                {
                    TenantId = tenantId,
                    UserId   = userId,
                    Name     = name,
                    Value    = value
                };

                await SettingStore.CreateAsync(settingValue);

                return(settingValue);
            }

            //It's same value in database, no need to update
            if (settingValue.Value == value)
            {
                return(settingValue);
            }

            //Update the setting on database.
            settingValue.Value = value;
            await SettingStore.UpdateAsync(settingValue);

            return(settingValue);
        }