using System.Security.Claims; using LctMonolith.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace LctMonolith.Controllers; /// /// Endpoints exposing gamification progress information. /// [ApiController] [Route("api/gamification")] [Authorize] public class GamificationController : ControllerBase { private readonly IGamificationService _gamificationService; public GamificationController(IGamificationService gamificationService) { _gamificationService = gamificationService; } private Guid GetUserId() => Guid.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier)!); /// Returns current user progress snapshot (rank, xp, outstanding requirements). [HttpGet("progress")] public async Task GetProgress(CancellationToken ct) { var snapshot = await _gamificationService.GetProgressAsync(GetUserId(), ct); return Ok(snapshot); } }