public virtual void ResetAllFeatures(int tenantId)
 {
     using (UnitOfWorkManager.Current.SetTenantId(tenantId))
     {
         TenantFeatureRepository.Delete(f => f.TenantId == tenantId);
     }
 }
示例#2
0
 public virtual async Task ResetAllFeaturesAsync(int tenantId)
 {
     using (UnitOfWorkManager.Current.SetTenantId(tenantId))
     {
         await TenantFeatureRepository.DeleteAsync(f => f.TenantId == tenantId);
     }
 }
示例#3
0
        public virtual async Task SetFeatureValueAsync(Tenant tenant, string featureName, string value)
        {
            //触发用户权限缓存清除
            Resolve <IEventBus>().Trigger(new UserGrantedPermissionIndicator {
                TenantId = tenant.Id
            });

            //No need to change if it's already equals to the current value
            if (await GetFeatureValueOrNullAsync(tenant.Id, featureName) == value)
            {
                return;
            }

            //Get the current feature setting
            TenantFeatureSetting currentSetting;

            using (UnitOfWorkManager.Current.SetTenantId(tenant.Id))
            {
                currentSetting = await TenantFeatureRepository.FirstOrDefaultAsync(f => f.Name == featureName);
            }

            //Get the feature
            var feature = FeatureManager.GetOrNull(featureName);

            if (feature == null)
            {
                if (currentSetting != null)
                {
                    await TenantFeatureRepository.DeleteAsync(currentSetting);
                }

                return;
            }

            //Determine default value
            var defaultValue = tenant.EditionId.HasValue
                ? (await Resolve <EditionManager>().GetFeatureValueOrNullAsync(tenant.EditionId.Value, featureName) ?? feature.DefaultValue)
                : feature.DefaultValue;

            //No need to store value if it's default
            if (value == defaultValue)
            {
                if (currentSetting != null)
                {
                    await TenantFeatureRepository.DeleteAsync(currentSetting);
                }

                return;
            }

            //Insert/update the feature value
            if (currentSetting == null)
            {
                await TenantFeatureRepository.InsertAsync(new TenantFeatureSetting(tenant.Id, featureName, value));
            }
            else
            {
                currentSetting.Value = value;
            }
        }
示例#4
0
 public virtual void ResetAllFeatures(int tenantId)
 {
     using (UnitOfWorkManager.Current.EnableFilter(AbpDataFilters.MayHaveTenant))
         using (UnitOfWorkManager.Current.SetTenantId(tenantId))
         {
             TenantFeatureRepository.Delete(f => f.TenantId == tenantId);
         }
 }
示例#5
0
 public virtual async Task ResetAllFeaturesAsync(long tenantId)
 {
     using (UnitOfWorkManager.Current.EnableFilter(AbpDataFilters.MayHaveTenant))
         using (UnitOfWorkManager.Current.SetTenantId(tenantId))
         {
             await TenantFeatureRepository.DeleteAsync(f => f.TenantId == tenantId);
         }
 }
示例#6
0
        public virtual void SetFeatureValue(TTenant tenant, string featureName, string value)
        {
            UnitOfWorkManager.WithUnitOfWork(() =>
            {
                //No need to change if it's already equals to the current value
                if (GetFeatureValueOrNull(tenant.Id, featureName) == value)
                {
                    return;
                }

                //Get the current feature setting
                TenantFeatureSetting currentSetting;
                using (UnitOfWorkManager.Current.EnableFilter(AbpDataFilters.MayHaveTenant))
                    using (UnitOfWorkManager.Current.SetTenantId(tenant.Id))
                    {
                        currentSetting = TenantFeatureRepository.FirstOrDefault(f => f.Name == featureName);
                    }

                //Get the feature
                var feature = FeatureManager.GetOrNull(featureName);
                if (feature == null)
                {
                    if (currentSetting != null)
                    {
                        TenantFeatureRepository.Delete(currentSetting);
                    }

                    return;
                }

                //Determine default value
                var defaultValue = tenant.EditionId.HasValue
                    ? (EditionManager.GetFeatureValueOrNull(tenant.EditionId.Value, featureName) ?? feature.DefaultValue)
                    : feature.DefaultValue;

                //No need to store value if it's default
                if (value == defaultValue)
                {
                    if (currentSetting != null)
                    {
                        TenantFeatureRepository.Delete(currentSetting);
                    }

                    return;
                }

                //Insert/update the feature value
                if (currentSetting == null)
                {
                    TenantFeatureRepository.Insert(new TenantFeatureSetting(tenant.Id, featureName, value));
                }
                else
                {
                    currentSetting.Value = value;
                }
            });
        }
示例#7
0
        public virtual async Task SetFeatureValueAsync(TTenant tenant, string featureName, string value)
        {
            //No need to change if it's already equals to the current value
            if (await GetFeatureValueOrNullAsync(tenant.Id, featureName) == value)
            {
                return;
            }

            //Get the current feature setting
            var currentSetting = await TenantFeatureRepository.FirstOrDefaultAsync(f => f.TenantId == tenant.Id && f.Name == featureName);

            //Get the feature
            var feature = FeatureManager.GetOrNull(featureName);

            if (feature == null)
            {
                if (currentSetting != null)
                {
                    await TenantFeatureRepository.DeleteAsync(currentSetting);
                }

                return;
            }

            //Determine default value
            var defaultValue = tenant.EditionId.HasValue
                ? (await EditionManager.GetFeatureValueOrNullAsync(tenant.EditionId.Value, featureName) ?? feature.DefaultValue)
                : feature.DefaultValue;

            //No need to store value if it's default
            if (value == defaultValue)
            {
                if (currentSetting != null)
                {
                    await TenantFeatureRepository.DeleteAsync(currentSetting);
                }

                return;
            }

            //Insert/update the feature value
            if (currentSetting == null)
            {
                await TenantFeatureRepository.InsertAsync(new TenantFeatureSetting(tenant.Id, featureName, value));
            }
            else
            {
                currentSetting.Value = value;
            }
        }
示例#8
0
        private async Task <TenantFeatureCacheItem> GetTenantFeatureCacheItemAsync(int tenantId)
        {
            return(await CacheManager.GetTenantFeatureCache().GetAsync(tenantId, async() =>
            {
                var tenant = await GetByIdAsync(tenantId);

                var newCacheItem = new TenantFeatureCacheItem {
                    EditionId = tenant.EditionId
                };

                var featureSettings = await TenantFeatureRepository.GetAllListAsync(f => f.TenantId == tenantId);
                foreach (var featureSetting in featureSettings)
                {
                    newCacheItem.FeatureValues[featureSetting.Name] = featureSetting.Value;
                }

                return newCacheItem;
            }));
        }
示例#9
0
 /// <summary>
 /// Resets all custom feature settings for a tenant.Tenant will have features according to it's edition.
 /// 为商户重置所有自定义功能。商户将拥有其版本的特点
 /// </summary>
 /// <param name="tenantId">Tenant Id</param>
 public async Task ResetAllFeaturesAsync(int tenantId)
 {
     await TenantFeatureRepository.DeleteAsync(f => f.TenantId == tenantId);
 }