add plain user data in teams/members request
continuous-integration/drone/push Build is passing Details

master
maxime 1 year ago
parent cfddcb9f81
commit ff1219c436

@ -1,5 +1,6 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using API.Context; using API.Context;
using API.DTO;
using API.Validation; using API.Validation;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
@ -10,7 +11,12 @@ namespace API.Controllers;
[ApiController] [ApiController]
[Authorize] [Authorize]
public class TeamsController(ITeamService service, ITacticService tactics, IContextAccessor accessor) : ControllerBase public class TeamsController(
ITeamService service,
ITacticService tactics,
IUserService users,
IContextAccessor accessor
) : ControllerBase
{ {
public record CreateTeamRequest( public record CreateTeamRequest(
[Name] string Name, [Name] string Name,
@ -37,6 +43,7 @@ public class TeamsController(ITeamService service, ITacticService tactics, ICont
return team == null ? NotFound() : Ok(team); return team == null ? NotFound() : Ok(team);
} }
[HttpGet("/teams/{teamId:int}/members")] [HttpGet("/teams/{teamId:int}/members")]
public async Task<IActionResult> GetMembersOf(int teamId) public async Task<IActionResult> GetMembersOf(int teamId)
{ {
@ -46,7 +53,16 @@ public class TeamsController(ITeamService service, ITacticService tactics, ICont
switch (accessibility) switch (accessibility)
{ {
case ITeamService.TeamAccessibility.Authorized: case ITeamService.TeamAccessibility.Authorized:
return Ok(await service.GetMembersOf(teamId)); var members = (await service.GetMembersOf(teamId)).ToList();
var membersDto = new List<MemberDto>();
foreach (var m in members)
{
membersDto.Add(new MemberDto((await users.GetUser(m.UserId))!, m.Role));
}
return Ok(membersDto);
case ITeamService.TeamAccessibility.NotFound: case ITeamService.TeamAccessibility.NotFound:
case ITeamService.TeamAccessibility.Unauthorized: case ITeamService.TeamAccessibility.Unauthorized:
return NotFound(); return NotFound();

@ -0,0 +1,5 @@
using Model;
namespace API.DTO;
public record MemberDto(User User, MemberRole Role);

@ -17,8 +17,9 @@ namespace APIConsole
AppContext.AppContext context = new AppContext.AppContext(); AppContext.AppContext context = new AppContext.AppContext();
ITeamService teams = new DbTeamService(context); ITeamService teams = new DbTeamService(context);
ITacticService tactics = new DbTacticService(context); ITacticService tactics = new DbTacticService(context);
IUserService users = new DbUserService(context);
IContextAccessor accessor = new HttpContextAccessor(); IContextAccessor accessor = new HttpContextAccessor();
_controller = new TeamsController(teams, tactics, accessor); _controller = new TeamsController(teams, tactics, users, accessor);
} }
public async void GetMembersOfTest() public async void GetMembersOfTest()

@ -21,7 +21,9 @@ public class TeamsControllerTest
); );
context.Database.EnsureCreated(); context.Database.EnsureCreated();
var controller = new TeamsController( var controller = new TeamsController(
new DbTeamService(context), new DbTacticService(context), new DbTeamService(context),
new DbTacticService(context),
new DbUserService(context),
new ManualContextAccessor(userId) new ManualContextAccessor(userId)
); );
@ -45,11 +47,11 @@ public class TeamsControllerTest
{ {
var (controller, context) = GetController(1); var (controller, context) = GetController(1);
var result = await controller.GetMembersOf(1); var result = await controller.GetMembersOf(1);
result.Should().BeEquivalentTo(controller.Ok(new Member[] // result.Should().BeEquivalentTo(controller.Ok(new Member[]
{ // {
new(1, 1, MemberRole.Coach), // new(1, 1, MemberRole.Coach),
new(1, 2, MemberRole.Player) // new(1, 2, MemberRole.Player)
})); // }));
} }
[Fact] [Fact]

Loading…
Cancel
Save