using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using LittleShop.Services; using LittleShop.Enums; namespace LittleShop.Areas.Admin.Controllers; [Area("Admin")] [Authorize(Policy = "AdminOnly")] public class SystemSettingsController : Controller { private readonly ISystemSettingsService _systemSettingsService; private readonly ILogger _logger; public SystemSettingsController( ISystemSettingsService systemSettingsService, ILogger logger) { _systemSettingsService = systemSettingsService; _logger = logger; } public async Task Index() { try { var viewModel = new SystemSettingsViewModel { TestCurrencies = new Dictionary { { "TBTC", await _systemSettingsService.IsTestCurrencyEnabledAsync("TBTC") }, { "TLTC", await _systemSettingsService.IsTestCurrencyEnabledAsync("TLTC") } } }; return View(viewModel); } catch (Exception ex) { _logger.LogError(ex, "Error loading system settings"); ViewBag.Error = "Failed to load system settings"; return View(new SystemSettingsViewModel()); } } [HttpPost] public async Task UpdateTestCurrencies(SystemSettingsViewModel model) { try { if (model.TestCurrencies != null) { foreach (var currency in model.TestCurrencies) { await _systemSettingsService.SetTestCurrencyEnabledAsync(currency.Key, currency.Value); _logger.LogInformation("Updated test currency {Currency} to {Enabled}", currency.Key, currency.Value); } } ViewBag.Success = "Test currency settings updated successfully"; return View("Index", model); } catch (Exception ex) { _logger.LogError(ex, "Error updating test currency settings"); ViewBag.Error = "Failed to update test currency settings"; return View("Index", model); } } } public class SystemSettingsViewModel { public Dictionary TestCurrencies { get; set; } = new(); }