/// <summary>
        /// Gets the settings definitions by names
        /// </summary>
        /// <param name="settingNames"></param>
        /// <returns></returns>
        public async Task <SettingsOutput> GetSettingsOptions(params string[] settingNames)
        {
            var settings     = _definitionManager.GetAllSettingDefinitions().Where(a => a.Scopes != SettingScopes.User).ToList();
            var settingsList = new List <SettingInputDto>();
            var output       = new SettingsOutput();

            foreach (var settingName in settingNames)
            {
                var settingDefinition = settings.FirstOrDefault(a => a.Name == settingName);
                if (settingDefinition == null)
                {
                    continue;
                }
                var value = await _settingManager.GetSettingValueAsync(settingDefinition.Name);

                var setting = new SettingInputDto()
                {
                    Key                                               = settingDefinition.Name,
                    DisplayName                                       = settingDefinition.DisplayName != null?settingDefinition.DisplayName.Localize(_localizationContext) : settingDefinition.Name,
                                                         Value        = value,
                                                         DefaultValue = settingDefinition.DefaultValue,
                                                         Description  = settingDefinition.Description != null?settingDefinition.Description.Localize(_localizationContext) : "",
                                                                            SettingScopes = settingDefinition.Scopes
                };
                settingsList.Add(setting);
            }
            output.Settings = settingsList;
            return(output);
        }
示例#2
0
        public bool Read(SettingsOutput message)
        {
            _isUseWholeNumbers = message.UseWholeNumbers;
            OnPropertyChanged(nameof(IsUseWholeNumbers));

            _isUseNumericKeyboard = message.UseNumericKeyboard;
            OnPropertyChanged(nameof(IsUseNumericKeyboard));

            return(true);
        }
示例#3
0
        /// <summary>
        /// Implementation of <see cref="VersionCache{TKey, TData}"/>.
        /// </summary>
        protected override async Task <(SettingsForClient data, string version)> GetDataFromSource(int tenantId, CancellationToken cancellation)
        {
            var repo = _repoFactory.GetRepository(tenantId);

            SettingsOutput settingsResult = await repo.Settings__Load(cancellation);

            var version              = settingsResult.Version.ToString();
            var generalSettings      = settingsResult.GeneralSettings;
            var financialSettings    = settingsResult.FinancialSettings;
            var singleBusinessUnitId = settingsResult.SingleBusinessUnitId;
            var featureFlags         = settingsResult.FeatureFlags;

            // Prepare the settings for client
            var forClient = new SettingsForClient();

            foreach (var forClientProp in typeof(SettingsForClient).GetProperties())
            {
                var settingsProp = typeof(GeneralSettings).GetProperty(forClientProp.Name);
                if (settingsProp != null)
                {
                    var value = settingsProp.GetValue(generalSettings);
                    forClientProp.SetValue(forClient, value);
                }
            }

            // Single Business Unit Id
            forClient.SingleBusinessUnitId = singleBusinessUnitId;

            // Financial Settings
            forClient.FunctionalCurrencyId           = financialSettings.FunctionalCurrencyId;
            forClient.TaxIdentificationNumber        = financialSettings.TaxIdentificationNumber;
            forClient.ArchiveDate                    = financialSettings.ArchiveDate ?? DateTime.MinValue;
            forClient.FunctionalCurrencyDecimals     = financialSettings.FunctionalCurrency.E ?? 0;
            forClient.FunctionalCurrencyName         = financialSettings.FunctionalCurrency.Name;
            forClient.FunctionalCurrencyName2        = financialSettings.FunctionalCurrency.Name2;
            forClient.FunctionalCurrencyName3        = financialSettings.FunctionalCurrency.Name3;
            forClient.FunctionalCurrencyDescription  = financialSettings.FunctionalCurrency.Description;
            forClient.FunctionalCurrencyDescription2 = financialSettings.FunctionalCurrency.Description2;
            forClient.FunctionalCurrencyDescription3 = financialSettings.FunctionalCurrency.Description3;

            // Language
            forClient.PrimaryLanguageName   = GetCultureDisplayName(forClient.PrimaryLanguageId);
            forClient.SecondaryLanguageName = GetCultureDisplayName(forClient.SecondaryLanguageId);
            forClient.TernaryLanguageName   = GetCultureDisplayName(forClient.TernaryLanguageId);

            // Feature flags
            forClient.FeatureFlags = featureFlags.ToDictionary(e => e.Key, e => e.Value);

            return(forClient, version);
        }