using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using RadicadeServer.API.Avatars.V2; using RadicadeServer.DB; using RadicadeServer.Extensions; using RadicadeServer.RecNet.Avatar; namespace RadicadeServer.API.Avatars.V3; [Route("api/avatar/v3")] [Route("econ/api/avatar/v3")] public class AvatarV3(RecDBContext db) : Controller { [HttpGet("saved"), Authorize] public async Task> GetSavedOutfits() { var userId = User.GetUserId(); if (userId == null) return new List(); return await SavedOutfits.GetAsync(db, userId.Value); } [HttpGet("saved/{accountId:long}"), Authorize] public async Task> GetSavedOutfitsForAccount(long accountId) { return await SavedOutfits.GetAsync(db, accountId); } [HttpPost("saved/set"), Authorize] public async Task SetSavedOutfit([FromBody] Outfit? outfit) { var userId = User.GetUserId(); if (userId == null) return Unauthorized(); var saved = await SavedOutfits.SaveAsync(db, userId.Value, outfit); if (saved == null) return BadRequest(new { error = "invalid_slot" }); return Ok(saved); } [HttpPost("gifts/generate"), Authorize] public Task GenerateGift() { var compatibilityController = new AvatarV2(db) { ControllerContext = ControllerContext }; return compatibilityController.GenerateGift(); } }