Last active
May 9, 2018 06:10
-
-
Save ebicoglu/7f217f26a1d94e374aa1ad41910a0e82 to your computer and use it in GitHub Desktop.
Aspnet Boilerplate Dynamic Setting Service via repository
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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