Ejemplo n.º 1
0
        protected virtual async Task <string> GetOrNullInternalAsync(string name, string providerName, string providerKey, bool fallback = true)
        {
            var setting   = SettingDefinitionManager.Get(name);
            var providers = Enumerable
                            .Reverse(Providers.Value);

            if (providerName != null)
            {
                providers = providers.SkipWhile(c => c.Name != providerName);
            }

            if (!fallback || !setting.IsInherited)
            {
                providers = providers.TakeWhile(c => c.Name == providerName);
            }

            var value = await GetOrNullValueFromProvidersAsync(providerKey, providers, setting);

            if (setting.IsEncrypted)
            {
                value = SettingEncryptionService.Decrypt(setting, value);
            }

            return(value);
        }
Ejemplo n.º 2
0
        public virtual async Task <string> GetOrNullInternalAsync(string name, string providerName, string providerKey, bool fallback = true)
        {
            var setting   = SettingDefinitionManager.Get(name);
            var providers = Enumerable
                            .Reverse(Providers.Value);

            if (providerName != null)
            {
                providers = providers.SkipWhile(c => c.Name != providerName);
            }

            if (!fallback || !setting.IsInherited)
            {
                providers = providers.TakeWhile(c => c.Name == providerName);
            }

            foreach (var provider in providers)
            {
                var value = await provider.GetOrNullAsync(setting, providerKey);

                if (value != null)
                {
                    return(value);
                }
            }

            return(null);
        }
Ejemplo n.º 3
0
        public virtual async Task SetAsync(string name, string value, string providerName, string providerKey, bool forceToSet = false)
        {
            Check.NotNull(name, nameof(name));
            Check.NotNull(providerName, nameof(providerName));

            var setting = SettingDefinitionManager.Get(name);

            var providers = Enumerable
                            .Reverse(Providers.Value)
                            .SkipWhile(p => p.Name != providerName)
                            .ToList();

            if (!providers.Any())
            {
                return;
            }

            if (setting.IsEncrypted)
            {
                value = SettingEncryptionService.Encrypt(setting, value);
            }

            if (providers.Count > 1 && !forceToSet && setting.IsInherited && value != null)
            {
                //Clear the value if it's same as it's fallback value
                var fallbackValue = await GetOrNullInternalAsync(name, providers[1].Name, providerKey);

                if (fallbackValue == value)
                {
                    value = null;
                }
            }

            providers = providers
                        .TakeWhile(p => p.Name == providerName)
                        .ToList(); //Getting list for case of there are more than one provider with same EntityType

            if (value == null)
            {
                foreach (var provider in providers)
                {
                    await provider.ClearAsync(setting, providerKey);
                }
            }
            else
            {
                foreach (var provider in providers)
                {
                    await provider.SetAsync(setting, value, providerKey);
                }
            }
        }
Ejemplo n.º 4
0
        public virtual async Task <string> GetOrNullAsync(string name)
        {
            var setting   = SettingDefinitionManager.Get(name);
            var providers = Enumerable
                            .Reverse(Providers.Value);

            if (setting.Providers.Any())
            {
                providers = providers.Where(p => setting.Providers.Contains(p.Name));
            }

            //TODO: How to implement setting.IsInherited?

            var value = await GetOrNullValueFromProvidersAsync(providers, setting);

            if (setting.IsEncrypted)
            {
                value = SettingEncryptionService.Decrypt(setting, value);
            }

            return(value);
        }