using System.Runtime.CompilerServices; using API.Context; using API.DTO; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Model; using Services; [assembly: InternalsVisibleTo("UnitTests")] namespace API.Controllers; [ApiController] public class UsersController(IUserService users, ITeamService teams, ITacticService tactics, IContextAccessor accessor) : ControllerBase { public const string DefaultProfilePicture = "https://cdn.pixabay.com/photo/2015/10/05/22/37/blank-profile-picture-973460_960_720.png"; [Authorize] [HttpGet("/user")] public async Task GetUser() { var userId = accessor.CurrentUserId(HttpContext); return (await users.GetUser(userId))!; } public record GetUserDataResponse(Team[] Teams, TacticDto[] Tactics); [Authorize] [HttpGet("/user-data")] public async Task GetUserData() { var userId = accessor.CurrentUserId(HttpContext); var userTeams = await teams.ListTeamsOf(userId); var userTactics = await tactics.ListTacticsOf(userId); return new GetUserDataResponse(userTeams.ToArray(), userTactics.Select(t => t.ToDto()).ToArray()); } }