public virtual async Task <List <SettingValue> > GetAllAsync(string[] names) { var result = new Dictionary <string, SettingValue>(); var settingDefinitions = SettingDefinitionManager.GetAll().Where(x => names.Contains(x.Name)).ToList(); foreach (var definition in settingDefinitions) { result.Add(definition.Name, new SettingValue(definition.Name, null)); } foreach (var provider in Enumerable.Reverse(SettingValueProviderManager.Providers)) { var settingValues = await provider.GetAllAsync(settingDefinitions.Where(x => !x.Providers.Any() || x.Providers.Contains(provider.Name)).ToArray()); var notNullValues = settingValues.Where(x => x.Value != null).ToList(); foreach (var settingValue in notNullValues) { var settingDefinition = settingDefinitions.First(x => x.Name == settingValue.Name); if (settingDefinition.IsEncrypted) { settingValue.Value = SettingEncryptionService.Decrypt(settingDefinition, settingValue.Value); } if (result.ContainsKey(settingValue.Name) && result[settingValue.Name].Value == null) { result[settingValue.Name].Value = settingValue.Value; } } settingDefinitions.RemoveAll(x => notNullValues.Any(v => v.Name == x.Name)); } return(result.Values.ToList()); }
public virtual async Task <List <SettingValue> > GetAllAsync() { var settingValues = new List <SettingValue>(); var settingDefinitions = SettingDefinitionManager.GetAll(); foreach (var setting in settingDefinitions) { settingValues.Add(new SettingValue(setting.Name, await GetOrNullAsync(setting.Name))); } return(settingValues); }