public virtual void ResetAllFeatures(long tenantId) { using (UnitOfWorkManager.Current.EnableFilter(AbpDataFilters.MayHaveTenant)) using (UnitOfWorkManager.Current.SetTenantId(tenantId)) { TenantFeatureRepository.Delete(f => f.TenantId == tenantId); } }
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; } }); }