using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using SVSim.Database; using SVSim.EmulatedEntrypoint.Models.Dtos.Common; using SVSim.EmulatedEntrypoint.Models.Dtos.Requests; using SVSim.EmulatedEntrypoint.Models.Dtos.Responses.Emblem; namespace SVSim.EmulatedEntrypoint.Controllers; /// /// /emblem/* — viewer-scoped emblem (lobby/profile badge) management. Read, mark-favorite, /// set-currently-displayed. Mirrors /sleeve/* and /degree/*. /// [Route("emblem")] public class EmblemController : SVSimController { private readonly SVSimDbContext _db; public EmblemController(SVSimDbContext db) => _db = db; [HttpPost("emblem_list")] public async Task> EmblemList(BaseRequest _, CancellationToken ct) { if (!TryGetViewerId(out long viewerId)) return Unauthorized(); var viewer = await _db.Viewers .Include(v => v.Emblems) .FirstOrDefaultAsync(v => v.Id == viewerId, ct); if (viewer is null) return Unauthorized(); return new EmblemListResponse { UserEmblemList = viewer.Emblems .Select(e => new EmblemListEntry { EmblemId = e.Id }) .OrderBy(x => x.EmblemId) .ToList(), }; } }