mirror of https://github.com/abpframework/abp.git
4 changed files with 94 additions and 0 deletions
@ -0,0 +1,45 @@ |
|||||
|
using System.Threading.Tasks; |
||||
|
using Volo.Abp.Settings; |
||||
|
|
||||
|
namespace Volo.Abp.MultiTenancy |
||||
|
{ |
||||
|
public class TenantSettingValueProvider : SettingValueProvider |
||||
|
{ |
||||
|
public const string ProviderName = "Tenant"; |
||||
|
|
||||
|
public override string Name => ProviderName; |
||||
|
|
||||
|
protected ICurrentTenant CurrentTenant { get; } |
||||
|
|
||||
|
public TenantSettingValueProvider(ISettingStore settingStore, ICurrentTenant currentTenant) |
||||
|
: base(settingStore) |
||||
|
{ |
||||
|
CurrentTenant = currentTenant; |
||||
|
} |
||||
|
|
||||
|
public override async Task<string> GetOrNullAsync(SettingDefinition setting, string providerKey) |
||||
|
{ |
||||
|
if (providerKey == null) |
||||
|
{ |
||||
|
if (CurrentTenant.Id == null) |
||||
|
{ |
||||
|
return null; |
||||
|
} |
||||
|
|
||||
|
providerKey = CurrentTenant.Id.ToString(); |
||||
|
} |
||||
|
|
||||
|
return await SettingStore.GetOrNullAsync(setting.Name, Name, providerKey); |
||||
|
} |
||||
|
|
||||
|
public override Task SetAsync(SettingDefinition setting, string value, string providerKey) |
||||
|
{ |
||||
|
return SettingStore.SetAsync(setting.Name, value, Name, providerKey); |
||||
|
} |
||||
|
|
||||
|
public override Task ClearAsync(SettingDefinition setting, string providerKey) |
||||
|
{ |
||||
|
return SettingStore.DeleteAsync(setting.Name, Name, providerKey); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,41 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Threading.Tasks; |
||||
|
using JetBrains.Annotations; |
||||
|
using Volo.Abp.MultiTenancy; |
||||
|
|
||||
|
namespace Volo.Abp.Settings |
||||
|
{ |
||||
|
public static class TenantSettingManagerExtensions |
||||
|
{ |
||||
|
public static Task<string> GetOrNullForTenantAsync(this ISettingManager settingManager, [NotNull] string name, Guid tenantId, bool fallback = true) |
||||
|
{ |
||||
|
return settingManager.GetOrNullAsync(name, TenantSettingValueProvider.ProviderName, tenantId.ToString(), fallback); |
||||
|
} |
||||
|
|
||||
|
public static Task<string> GetOrNullForCurrentTenantAsync(this ISettingManager settingManager, [NotNull] string name, bool fallback = true) |
||||
|
{ |
||||
|
return settingManager.GetOrNullAsync(name, TenantSettingValueProvider.ProviderName, null, fallback); |
||||
|
} |
||||
|
|
||||
|
public static Task<List<SettingValue>> GetAllForTenantAsync(this ISettingManager settingManager, Guid tenantId, bool fallback = true) |
||||
|
{ |
||||
|
return settingManager.GetAllAsync(TenantSettingValueProvider.ProviderName, tenantId.ToString(), fallback); |
||||
|
} |
||||
|
|
||||
|
public static Task<List<SettingValue>> GetAllForCurrentTenantAsync(this ISettingManager settingManager, bool fallback = true) |
||||
|
{ |
||||
|
return settingManager.GetAllAsync(TenantSettingValueProvider.ProviderName, null, fallback); |
||||
|
} |
||||
|
|
||||
|
public static Task SetForTenantAsync(this ISettingManager settingManager, Guid tenantId, [NotNull] string name, [CanBeNull] string value, bool forceToSet = false) |
||||
|
{ |
||||
|
return settingManager.SetAsync(name, value, TenantSettingValueProvider.ProviderName, tenantId.ToString(), forceToSet); |
||||
|
} |
||||
|
|
||||
|
public static Task SetForCurrentTenantAsync(this ISettingManager settingManager, [NotNull] string name, [CanBeNull] string value, bool forceToSet = false) |
||||
|
{ |
||||
|
return settingManager.SetAsync(name, value, TenantSettingValueProvider.ProviderName, null, forceToSet); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue