diff --git a/API/Controllers/Admin/TeamsAdminController.cs b/API/Controllers/Admin/TeamsAdminController.cs
index d255687..6d5e2f8 100644
--- a/API/Controllers/Admin/TeamsAdminController.cs
+++ b/API/Controllers/Admin/TeamsAdminController.cs
@@ -5,8 +5,13 @@ using Services;
namespace API.Controllers.Admin;
+
+///
+/// WARNING: This controller does not requires the requester to be authenticated, see https://codefirst.iut.uca.fr/git/IQBall/Server-Panel/issues/2
+///
+///
[ApiController]
-public class TeamsAdminController(ITeamService service) : ControllerBase
+public class TeamsAdminController(ITeamService service, ILogger logger) : ControllerBase
{
public record CountTeamsResponse(int Value);
@@ -14,26 +19,20 @@ public class TeamsAdminController(ITeamService service) : ControllerBase
[HttpGet("/admin/teams/count")]
public async Task CountTeams()
{
+ logger.LogTrace("Counting teams");
return new CountTeamsResponse(await service.CountTotalTeams());
}
-
- // [HttpGet("/admin/users/count")]
- // public async Task CountUsers()
- // {
- // return new CountUsersResponse(await service.UsersCount());
- // }
-
+
[HttpGet("/admin/teams")]
- public async Task> ListTeams(
+ public Task> ListTeams(
[Range(0, int.MaxValue, ErrorMessage = "Only positive number allowed")]
int start,
[Range(0, int.MaxValue, ErrorMessage = "Only positive number allowed")]
int n
)
{
- var result = await service.ListTeams();
-
- return result.Skip(start).Take(n);
+ logger.LogTrace("Listing teams");
+ return service.ListTeams(start, n);
}
public record AddTeamRequest(string Name, string Picture, string FirstColor, string SecondColor);
@@ -41,17 +40,19 @@ public class TeamsAdminController(ITeamService service) : ControllerBase
[HttpPost("/admin/teams")]
public async Task AddTeam([FromBody] AddTeamRequest req)
{
+ logger.LogTrace("Adding teams");
var team = await service.AddTeam(req.Name, req.Picture, req.FirstColor, req.SecondColor);
return Ok(team);
}
- public record UpdateTeamRequest(int Id, string Name, string Picture, string MainColor, string SecondaryColor);
+ public record UpdateTeamRequest(string Name, string Picture, string MainColor, string SecondaryColor);
[HttpPut("/admin/teams/{teamId:int}")]
- public async Task UpdateTeam([FromBody] UpdateTeamRequest req)
+ public async Task UpdateTeam(int teamId, [FromBody] UpdateTeamRequest req)
{
- await service.UpdateTeam(new Team(req.Id, req.Name, req.Picture, req.MainColor, req.SecondaryColor));
+ logger.LogTrace("Updating teams");
+ await service.UpdateTeam(new Team(teamId, req.Name, req.Picture, req.MainColor, req.SecondaryColor));
return Ok();
}
@@ -61,6 +62,8 @@ public class TeamsAdminController(ITeamService service) : ControllerBase
[HttpPost("/admin/teams/remove-all")]
public async Task DeleteTeams([FromBody] DeleteTeamsRequest req)
{
+ logger.LogTrace("Deleting teams");
+
await service.RemoveTeams(req.Teams);
return Ok();
}
diff --git a/API/Controllers/Admin/UsersAdminController.cs b/API/Controllers/Admin/UsersAdminController.cs
index 83bca2f..10d6a2d 100644
--- a/API/Controllers/Admin/UsersAdminController.cs
+++ b/API/Controllers/Admin/UsersAdminController.cs
@@ -5,10 +5,13 @@ using Services;
namespace API.Controllers.Admin;
+///
+/// WARNING: This controller does not requires the requester to be authenticated, see https://codefirst.iut.uca.fr/git/IQBall/Server-Panel/issues/2
+///
+///
[ApiController]
-public class UsersAdminController(IUserService service) : ControllerBase
+public class UsersAdminController(IUserService service, ILogger logger) : ControllerBase
{
-
public record CountUsersResponse(int Value);
@@ -18,20 +21,17 @@ public class UsersAdminController(IUserService service) : ControllerBase
string search
)
{
+ logger.LogTrace("Counting Users");
return new CountUsersResponse(await service.UsersCount(search));
}
[HttpGet("/admin/users/count")]
public async Task CountUsers()
{
+ logger.LogTrace("Counting Users");
return new CountUsersResponse(await service.UsersCount());
}
-
- // [HttpGet("/admin/users/count")]
- // public async Task CountUsers()
- // {
- // return new CountUsersResponse(await service.UsersCount());
- // }
+
[HttpGet("/admin/users")]
public async Task> ListUsers(
@@ -43,11 +43,10 @@ public class UsersAdminController(IUserService service) : ControllerBase
string? search
)
{
- var result = search != null
- ? await service.ListUsers(search)
- : await service.ListUsers();
+ logger.LogTrace("Listing Users");
- return result.Skip(start).Take(n);
+ var result = await service.ListUsers(start, n, search);
+ return result;
}
[HttpGet("/admin/users/{id:int}")]
@@ -56,6 +55,8 @@ public class UsersAdminController(IUserService service) : ControllerBase
int id
)
{
+ logger.LogTrace("Getting a specific User ({})", id);
+
var result = await service.GetUser(id);
if (result == null)
return NotFound();
@@ -77,7 +78,10 @@ public class UsersAdminController(IUserService service) : ControllerBase
[HttpPost("/admin/users")]
public Task AddUser([FromBody] AddUserRequest req)
{
- return service.CreateUser(req.Username, req.Email, req.Password, UsersController.DefaultProfilePicture, req.IsAdmin);
+ logger.LogTrace("Adding a User");
+
+ return service.CreateUser(req.Username, req.Email, req.Password, UsersController.DefaultProfilePicture,
+ req.IsAdmin);
}
public record RemoveUsersRequest(int[] Identifiers);
@@ -85,6 +89,8 @@ public class UsersAdminController(IUserService service) : ControllerBase
[HttpPost("/admin/users/remove-all")]
public async Task RemoveUsers([FromBody] RemoveUsersRequest req)
{
+ logger.LogTrace("Removing Users");
+
await service.RemoveUsers(req.Identifiers);
return Ok();
}
@@ -106,7 +112,10 @@ public class UsersAdminController(IUserService service) : ControllerBase
{
try
{
- await service.UpdateUser(new User(id, req.Username, req.Email, UsersController.DefaultProfilePicture, req.IsAdmin));
+ logger.LogTrace("Updating Users");
+
+ await service.UpdateUser(new User(id, req.Username, req.Email, UsersController.DefaultProfilePicture,
+ req.IsAdmin));
return Ok();
}
catch (ServiceException e)
diff --git a/API/Controllers/TacticsController.cs b/API/Controllers/TacticsController.cs
index 518df42..e67aaf8 100644
--- a/API/Controllers/TacticsController.cs
+++ b/API/Controllers/TacticsController.cs
@@ -16,7 +16,8 @@ public class TacticController(ITacticService service, IContextAccessor accessor)
public record UpdateNameRequest(
[StringLength(50, MinimumLength = 1)]
[Name]
- string Name);
+ string Name
+ );
[HttpPut("/tactics/{tacticId:int}/name")]
[Authorize]
@@ -81,12 +82,11 @@ public class TacticController(ITacticService service, IContextAccessor accessor)
{
var userId = accessor.CurrentUserId(HttpContext);
- var courtType = req.CourtType switch
+ if (!Enum.TryParse(req.CourtType, true, out var courtType))
{
- "PLAIN" => CourtType.Plain,
- "HALF" => CourtType.Half,
- _ => throw new ArgumentOutOfRangeException() //unreachable
- };
+ // unreachable if called by ASP
+ throw new ArgumentOutOfRangeException("for req.CourtType");
+ }
var id = await service.AddTactic(userId, req.Name, courtType);
return new CreateNewResponse(id);
@@ -118,10 +118,10 @@ public class TacticController(ITacticService service, IContextAccessor accessor)
var json = await service.GetTacticStepContent(tacticId, stepId);
return json != null ? Ok(JsonSerializer.Deserialize