Exemple #1
0
        public IFeatureManifest <TFeatureEnum> CreateFeatureManifest()
        {
            FeatureSetting <TFeatureEnum, TTenantEnum>[] featureSettings = _featureSettingsRepository.GetFeatureSettings();
            var manifest = new FeatureManifest <TFeatureEnum>();

            foreach (var setting in featureSettings)
            {
                FeatureVisibilityMode featureVisibilityMode = _httpContext.Request.Cookies[FeaturePreviewCookieName].IsNotNull()
                                                                                ? FeatureVisibilityMode.Preview
                                                                                : FeatureVisibilityMode.Normal;

                bool isAvailable = _featureSettingService
                                   .AllDependenciesAreSatisfiedForTheFeatureSetting(setting,
                                                                                    new Tuple
                                                                                    <FeatureVisibilityMode, TTenantEnum,
                                                                                     DateTime>(
                                                                                        featureVisibilityMode,
                                                                                        _tenancyContext.CurrentTenant,
                                                                                        _clock.Now));

                manifest.Add(setting.Feature,
                             new FeatureDescriptor <TFeatureEnum>(setting.Feature)
                {
                    Dependencies =
                        setting.Dependencies,
                    IsAvailable =
                        isAvailable,
                    Settings =
                        setting.Settings,
                });
            }

            return(manifest);
        }
Exemple #2
0
 public static bool IsAvailable <TFeatureEnum, TTenantEnum>(
     this FeatureSetting <TFeatureEnum, TTenantEnum> f,
     FeatureVisibilityMode m,
     TTenantEnum tenant,
     DateTime currentDtg)
     where TFeatureEnum : struct
     where TTenantEnum : struct
 {
     return((f.SupportedTenants.Contains((TTenantEnum)Enum.ToObject(typeof(TTenantEnum), 0)) ||
             f.SupportedTenants.Contains(tenant)) &&
            (f.FeatureState == FeatureState.Enabled ||
             (f.FeatureState == FeatureState.Previewable && m == FeatureVisibilityMode.Preview)) &&
            f.StartDtg <= currentDtg &&
            f.EndDtg > currentDtg);
 }