settings
This commit is contained in:
52
Webshop.Infrastructure/Services/SettingService.cs
Normal file
52
Webshop.Infrastructure/Services/SettingService.cs
Normal file
@@ -0,0 +1,52 @@
|
||||
// src/Webshop.Infrastructure/Services/SettingService.cs
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using Webshop.Domain.Entities;
|
||||
using Webshop.Domain.Interfaces;
|
||||
|
||||
namespace Webshop.Infrastructure.Services
|
||||
{
|
||||
// Implementiert die "Business"-Methoden
|
||||
public class SettingService : ISettingService
|
||||
{
|
||||
private readonly ISettingRepository _settingRepository;
|
||||
|
||||
public SettingService(ISettingRepository settingRepository)
|
||||
{
|
||||
_settingRepository = settingRepository;
|
||||
}
|
||||
|
||||
public async Task<T> GetSettingValueAsync<T>(string key, T defaultValue)
|
||||
{
|
||||
var setting = await _settingRepository.GetByKeyAsync(key);
|
||||
if (setting == null || !setting.IsActive || string.IsNullOrEmpty(setting.Value))
|
||||
{
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
return (T)Convert.ChangeType(setting.Value, typeof(T));
|
||||
}
|
||||
catch
|
||||
{
|
||||
return defaultValue;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task UpdateSettingAsync(string key, string? value)
|
||||
{
|
||||
var setting = await _settingRepository.GetByKeyAsync(key);
|
||||
if (setting != null)
|
||||
{
|
||||
setting.Value = value;
|
||||
await _settingRepository.UpdateAsync(setting);
|
||||
}
|
||||
else
|
||||
{
|
||||
var newSetting = new Setting { Key = key, Value = value, IsActive = true, Group = "General" };
|
||||
await _settingRepository.AddAsync(newSetting);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user