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