using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Nuuru.Server.DTOs.UserSettings; using Nuuru.Server.Extensions; using Nuuru.Server.Services; namespace Nuuru.Server.Controllers { [ApiController] [Route("api/user-settings")] [Authorize] public class UserSettingsController : ControllerBase { private readonly IUserSettingsService _settingsService; private readonly ILogger _logger; public UserSettingsController( IUserSettingsService settingsService, ILogger logger) { _settingsService = settingsService; _logger = logger; } [HttpGet] public async Task GetSettings() { try { var userId = User.GetUserId(); if (userId == null) return Unauthorized(); var settings = await _settingsService.GetSettingsAsync(userId.Value); return Ok(settings); } catch (Exception ex) { _logger.LogError(ex, "Error retrieving user settings"); return StatusCode(500, new { error = "Failed to retrieve user settings" }); } } [HttpPut] public async Task UpdateSettings([FromBody] UpdateUserSettingsRequest request) { try { var userId = User.GetUserId(); if (userId == null) return Unauthorized(); var settings = await _settingsService.UpdateSettingsAsync(userId.Value, request); return Ok(settings); } catch (Exception ex) { _logger.LogError(ex, "Error updating user settings"); return StatusCode(500, new { error = "Failed to update user settings" }); } } } }