52 lines
1.6 KiB
C#
52 lines
1.6 KiB
C#
// 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);
|
|
}
|
|
}
|
|
}
|
|
} |