Skip to content

Instantly share code, notes, and snippets.

@ebicoglu
Last active May 9, 2018 06:10
Show Gist options
  • Save ebicoglu/7f217f26a1d94e374aa1ad41910a0e82 to your computer and use it in GitHub Desktop.
Save ebicoglu/7f217f26a1d94e374aa1ad41910a0e82 to your computer and use it in GitHub Desktop.
Aspnet Boilerplate Dynamic Setting Service via repository
using System.Linq;
using Abp.Collections.Extensions;
using Abp.Configuration;
using Abp.Dependency;
using Abp.Domain.Repositories;
using Abp.Domain.Uow;
namespace MyCompanyName.AbpZeroTemplate.MySettingService
{
public class DynamicSettingService : ITransientDependency
{
private readonly IRepository<Setting, long> _settingRepository;
private readonly IUnitOfWorkManager _unitOfWorkManager;
public DynamicSettingService(IRepository<Setting, long> settingRepository,
IUnitOfWorkManager unitOfWorkManager)
{
_settingRepository = settingRepository;
_unitOfWorkManager = unitOfWorkManager;
}
public string GetSettingValue(string settingName, int? tenantId = null, int? userId = null)
{
var setting = _settingRepository
.GetAll()
.Where(x => x.Name == settingName)
.WhereIf(tenantId.HasValue, x => x.TenantId == tenantId.Value)
.WhereIf(userId.HasValue, x => x.UserId == userId.Value)
.FirstOrDefault();
return setting?.Value;
}
public void SetSettingValue(string settingName, string settingValue, int? tenantId = null, int? userId = null)
{
var setting = _settingRepository
.GetAll()
.Where(x => x.Name == settingName)
.WhereIf(tenantId.HasValue, x => x.TenantId == tenantId.Value)
.WhereIf(userId.HasValue, x => x.UserId == userId.Value)
.FirstOrDefault();
if (setting == null)
{
_settingRepository.InsertAndGetId(new Setting(tenantId, userId, settingName, settingValue));
}
else
{
setting.Value = settingValue;
_settingRepository.Update(setting);
}
_unitOfWorkManager.Current.SaveChanges();
}
}
public class MyTestUsageClass : ITransientDependency
{
private readonly DynamicSettingService _dynamicSettingService;
public MyTestUsageClass(DynamicSettingService dynamicSettingService)
{
_dynamicSettingService = dynamicSettingService;
}
private void Test()
{
var mySettingValue = _dynamicSettingService.GetSettingValue("MySettingName");
_dynamicSettingService.SetSettingValue("MySettingName", "123456");
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment