// 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 GetSettingValueAsync(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); } } } }