From d46b15d95c826e14014df80060c035171d979a3c Mon Sep 17 00:00:00 2001 From: maxime Date: Sun, 17 Mar 2024 11:01:51 +0100 Subject: [PATCH 1/2] add logging in admin controllers --- API/Controllers/Admin/TeamsAdminController.cs | 21 ++++++++++------ API/Controllers/Admin/UsersAdminController.cs | 25 +++++++++++++------ 2 files changed, 31 insertions(+), 15 deletions(-) diff --git a/API/Controllers/Admin/TeamsAdminController.cs b/API/Controllers/Admin/TeamsAdminController.cs index 9cdff0d..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,15 +19,10 @@ 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 Task> ListTeams( [Range(0, int.MaxValue, ErrorMessage = "Only positive number allowed")] @@ -31,6 +31,7 @@ public class TeamsAdminController(ITeamService service) : ControllerBase int n ) { + logger.LogTrace("Listing teams"); return service.ListTeams(start, n); } @@ -39,6 +40,7 @@ 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); @@ -49,6 +51,7 @@ public class TeamsAdminController(ITeamService service) : ControllerBase [HttpPut("/admin/teams/{teamId:int}")] public async Task UpdateTeam(int teamId, [FromBody] UpdateTeamRequest req) { + logger.LogTrace("Updating teams"); await service.UpdateTeam(new Team(teamId, req.Name, req.Picture, req.MainColor, req.SecondaryColor)); return Ok(); @@ -59,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 deadca9..10d6a2d 100644 --- a/API/Controllers/Admin/UsersAdminController.cs +++ b/API/Controllers/Admin/UsersAdminController.cs @@ -5,8 +5,12 @@ 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); @@ -17,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( @@ -42,6 +43,8 @@ public class UsersAdminController(IUserService service) : ControllerBase string? search ) { + logger.LogTrace("Listing Users"); + var result = await service.ListUsers(start, n, search); return result; } @@ -52,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(); @@ -73,6 +78,8 @@ public class UsersAdminController(IUserService service) : ControllerBase [HttpPost("/admin/users")] public Task AddUser([FromBody] AddUserRequest req) { + logger.LogTrace("Adding a User"); + return service.CreateUser(req.Username, req.Email, req.Password, UsersController.DefaultProfilePicture, req.IsAdmin); } @@ -82,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(); } @@ -103,6 +112,8 @@ public class UsersAdminController(IUserService service) : ControllerBase { try { + logger.LogTrace("Updating Users"); + await service.UpdateUser(new User(id, req.Username, req.Email, UsersController.DefaultProfilePicture, req.IsAdmin)); return Ok(); From 57f0135bb30f6dd60b3e08422e91f1c86ac79636 Mon Sep 17 00:00:00 2001 From: vidufour1 Date: Sun, 17 Mar 2024 12:03:10 +0100 Subject: [PATCH 2/2] apiconsole --- APIConsole/APIConsole.csproj | 4 ++ APIConsole/AuthenticationControllerConsole.cs | 37 +++++++++++ APIConsole/Program.cs | 50 ++++++++++++++- APIConsole/TacticsControllerConsole.cs | 64 +++++++++++++++++++ APIConsole/TeamsAdminControllerConsole.cs | 53 +++++++++++++++ APIConsole/TeamsControllerConsole.cs | 53 +++++++++++++++ APIConsole/UsersAdminControllerConsole.cs | 60 +++++++++++++++++ APIConsole/UsersControllerConsole.cs | 36 +++++++++++ 8 files changed, 355 insertions(+), 2 deletions(-) create mode 100644 APIConsole/AuthenticationControllerConsole.cs create mode 100644 APIConsole/TacticsControllerConsole.cs create mode 100644 APIConsole/TeamsAdminControllerConsole.cs create mode 100644 APIConsole/TeamsControllerConsole.cs create mode 100644 APIConsole/UsersAdminControllerConsole.cs create mode 100644 APIConsole/UsersControllerConsole.cs diff --git a/APIConsole/APIConsole.csproj b/APIConsole/APIConsole.csproj index 2f4fc77..a877f85 100644 --- a/APIConsole/APIConsole.csproj +++ b/APIConsole/APIConsole.csproj @@ -7,4 +7,8 @@ enable + + + + diff --git a/APIConsole/AuthenticationControllerConsole.cs b/APIConsole/AuthenticationControllerConsole.cs new file mode 100644 index 0000000..aaad441 --- /dev/null +++ b/APIConsole/AuthenticationControllerConsole.cs @@ -0,0 +1,37 @@ +using API.Controllers; +using DbServices; +using Microsoft.AspNetCore.Identity.Data; +using Microsoft.Extensions.Configuration; +using Services; + +namespace APIConsole +{ + public class AuthenticationControllerConsole + { + private AuthenticationController _controller; + + public AuthenticationControllerConsole() + { + AppContext.AppContext context = new AppContext.AppContext(); + IUserService users = new DbUserService(context); + IConfiguration config = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build(); + _controller = new AuthenticationController(users, config); + } + + public async void RegisterAccountTest() + { + var result = + await _controller.RegisterAccount( + new AuthenticationController.RegisterAccountRequest("test", "test@mail.com", "123456")); + Console.WriteLine($"RegisterAccount Result: {result}"); + } + + public async void GenerateTokenTest() + { + var result = + await _controller.GenerateToken( + new AuthenticationController.GenerateTokenRequest("test@mail.com", "123456")); + Console.WriteLine($"GenerateToken Result: {result}"); + } + } +} \ No newline at end of file diff --git a/APIConsole/Program.cs b/APIConsole/Program.cs index e5dff12..f6c8d91 100644 --- a/APIConsole/Program.cs +++ b/APIConsole/Program.cs @@ -1,3 +1,49 @@ -// See https://aka.ms/new-console-template for more information +namespace APIConsole +{ + class Program + { + static void Main(string[] args) + { + var userConsole = new UsersControllerConsole(); + var teamConsole = new TeamsControllerConsole(); + var tacticConsole = new TacticsControllerConsole(); + var authConsole = new AuthenticationControllerConsole(); + var userAdminConsole = new UsersAdminControllerConsole(); + var teamAdminConsole = new TeamsAdminControllerConsole(); + + userConsole.GetUserTest(); + userConsole.GetUserDataTest(); + + teamConsole.GetMembersOfTest(); + teamConsole.CreateTeamTest(); + teamConsole.AddMemberTest(); + teamConsole.UpdateMemberTest(); + teamConsole.RemoveMemberTest(); + + tacticConsole.UpdateNameTest(); + tacticConsole.GetTacticInfoTest(); + tacticConsole.GetTacticStepsRootTest(); + tacticConsole.CreateTacticTest(); + tacticConsole.GetStepContentTest(); + tacticConsole.RemoveStepTest(); + tacticConsole.SaveStepContentTest(); + + authConsole.RegisterAccountTest(); + authConsole.GenerateTokenTest(); + + userAdminConsole.CountUsersTest(); + userAdminConsole.ListUsersTest(); + userAdminConsole.GetUserTest(); + userAdminConsole.AddUserTest(); + userAdminConsole.RemoveUserTest(); + userAdminConsole.UpdateUserTest(); + + teamAdminConsole.CountTeamsTest(); + teamAdminConsole.ListTeamsTest(); + teamAdminConsole.AddTeamTest(); + teamAdminConsole.UpdateTeamTest(); + teamAdminConsole.DeleteTeamTest(); -Console.WriteLine("Hello, World!"); \ No newline at end of file + } + } +} diff --git a/APIConsole/TacticsControllerConsole.cs b/APIConsole/TacticsControllerConsole.cs new file mode 100644 index 0000000..d2c15db --- /dev/null +++ b/APIConsole/TacticsControllerConsole.cs @@ -0,0 +1,64 @@ +using API.Context; +using API.Controllers; +using DbServices; +using Services; + +namespace APIConsole +{ + public class TacticsControllerConsole + { + private TacticController _controller; + + public TacticsControllerConsole() + { + AppContext.AppContext context = new AppContext.AppContext(); + ITacticService tactics = new DbTacticService(context); + IContextAccessor accessor = new HttpContextAccessor(); + _controller = new TacticController(tactics, accessor); + } + + public async void UpdateNameTest() + { + var result = await _controller.UpdateName(1, new TacticController.UpdateNameRequest("NewName")); + Console.WriteLine($"UpdateName Result: {result}"); + } + + public async void GetTacticInfoTest() + { + var result = await _controller.GetTacticInfo(1); + Console.WriteLine($"GetTacticInfo Result: {result}"); + } + + public async void GetTacticStepsRootTest() + { + var result = await _controller.GetTacticStepsRoot(1); + Console.WriteLine($"GetTacticStepsRoot Result: {result}"); + } + + public async void CreateTacticTest() + { + var result = await _controller.CreateNew(new TacticController.CreateNewRequest("NewTactic", "PLAIN")); + Console.WriteLine($"CreateTactic Result: {result}"); + } + + public async void GetStepContentTest() + { + var result = await _controller.GetStepContent(1, 1); + Console.WriteLine($"GetStepContent Result: {result}"); + } + + public async void RemoveStepTest() + { + var result = await _controller.RemoveStep(1, 1); + Console.WriteLine($"RemoveStep Result: {result}"); + } + + public async void SaveStepContentTest() + { + var result = await _controller.SaveStepContent(1, 1, new TacticController.SaveStepContentRequest("NewContent")); + Console.WriteLine($"SaveStepContent Result: {result}"); + } + + + } +} \ No newline at end of file diff --git a/APIConsole/TeamsAdminControllerConsole.cs b/APIConsole/TeamsAdminControllerConsole.cs new file mode 100644 index 0000000..9d67c52 --- /dev/null +++ b/APIConsole/TeamsAdminControllerConsole.cs @@ -0,0 +1,53 @@ +using API.Controllers.Admin; +using DbServices; +using Microsoft.Extensions.Logging; +using Services; + +namespace APIConsole +{ + public class TeamsAdminControllerConsole + { + private TeamsAdminController _controller; + + public TeamsAdminControllerConsole() + { + AppContext.AppContext context = new AppContext.AppContext(); + ITeamService teams = new DbTeamService(context); + ILoggerFactory loggerFactory = LoggerFactory.Create(builder => builder.AddConsole()); + ILogger logger = loggerFactory.CreateLogger(); + _controller = new TeamsAdminController(teams, logger); + } + + public async void CountTeamsTest() + { + var result = await _controller.CountTeams(); + Console.WriteLine($"CountTeams Result: {result}"); + } + + public async void ListTeamsTest() + { + var result = await _controller.ListTeams(0, 10); + Console.WriteLine($"ListTeams Result: {result}"); + } + + public async void AddTeamTest() + { + var result = + await _controller.AddTeam(new TeamsAdminController.AddTeamRequest("Lakers", "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3c/Los_Angeles_Lakers_logo.svg/2560px-Los_Angeles_Lakers_logo.svg.png", "#FFFFFF", "#000000")); + Console.WriteLine($"AddTeam Result: {result}"); + } + + public async void UpdateTeamTest() + { + var result = + await _controller.UpdateTeam(1, new TeamsAdminController.UpdateTeamRequest("Lakers", "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3c/Los_Angeles_Lakers_logo.svg/2560px-Los_Angeles_Lakers_logo.svg.png", "#999999", "#000000")); + Console.WriteLine($"UpdateTeam Result: {result}"); + } + + public async void DeleteTeamTest() + { + var result = await _controller.DeleteTeams(new TeamsAdminController.DeleteTeamsRequest([1])); + Console.WriteLine($"RemoveTeam Result: {result}"); + } + } +} \ No newline at end of file diff --git a/APIConsole/TeamsControllerConsole.cs b/APIConsole/TeamsControllerConsole.cs new file mode 100644 index 0000000..d9f993e --- /dev/null +++ b/APIConsole/TeamsControllerConsole.cs @@ -0,0 +1,53 @@ +using System; +using API.Context; +using API.Controllers; +using API.DTO; +using DbServices; +using Model; +using Services; + +namespace APIConsole +{ + public class TeamsControllerConsole + { + private TeamsController _controller; + + public TeamsControllerConsole() + { + AppContext.AppContext context = new AppContext.AppContext(); + ITeamService teams = new DbTeamService(context); + IContextAccessor accessor = new HttpContextAccessor(); + _controller = new TeamsController(teams, accessor); + } + + public async void GetMembersOfTest() + { + var result = await _controller.GetMembersOf(1); + Console.WriteLine($"GetMembersOf Result: {result}"); + } + + public async void CreateTeamTest() + { + var result = await _controller.CreateTeam(new TeamsController.CreateTeamRequest("Lakers", "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3c/Los_Angeles_Lakers_logo.svg/2560px-Los_Angeles_Lakers_logo.svg.png", "#FFFFFF", "#000000")); + Console.WriteLine($"CreateTeam Result: {result}"); + } + + public async void AddMemberTest() + { + var result = await _controller.AddMember(1, new TeamsController.AddMemberRequest(1, "PLAYER")); + Console.WriteLine($"AddMember Result: {result}"); + } + + public async void UpdateMemberTest() + { + var result = await _controller.UpdateMember(1, 1, new TeamsController.UpdateMemberRequest("COACH")); + Console.WriteLine($"UpdateMember Result: {result}"); + } + + public async void RemoveMemberTest() + { + var result = await _controller.RemoveMember(1, 1); + Console.WriteLine($"RemoveMember Result: {result}"); + } + } +} \ No newline at end of file diff --git a/APIConsole/UsersAdminControllerConsole.cs b/APIConsole/UsersAdminControllerConsole.cs new file mode 100644 index 0000000..7b1809e --- /dev/null +++ b/APIConsole/UsersAdminControllerConsole.cs @@ -0,0 +1,60 @@ +using API.Controllers.Admin; +using DbServices; +using Microsoft.Extensions.Logging; +using Services; + +namespace APIConsole +{ + public class UsersAdminControllerConsole + { + private UsersAdminController _controller; + + public UsersAdminControllerConsole() + { + AppContext.AppContext context = new AppContext.AppContext(); + IUserService users = new DbUserService(context); + ILoggerFactory loggerFactory = LoggerFactory.Create(builder => builder.AddConsole()); + ILogger logger = loggerFactory.CreateLogger(); + _controller = new UsersAdminController(users, logger); + } + + public async void CountUsersTest() + { + var result = await _controller.CountUsers(); + Console.WriteLine($"CountUsers Result: {result}"); + } + + public async void ListUsersTest() + { + var result = await _controller.ListUsers(0, 10, null); + Console.WriteLine($"ListUsers Result: {result}"); + } + + public async void GetUserTest() + { + var result = await _controller.GetUser(1); + Console.WriteLine($"GetUser Result: {result}"); + } + + public async void AddUserTest() + { + var result = + await _controller.AddUser(new UsersAdminController.AddUserRequest("test", "123456", "test@mail.com")); + Console.WriteLine($"AddUser Result: {result}"); + } + + public async void RemoveUserTest() + { + var result = await _controller.RemoveUsers(new UsersAdminController.RemoveUsersRequest([1])); + Console.WriteLine($"RemoveUser Result: {result}"); + } + + public async void UpdateUserTest() + { + var result = + await _controller.UpdateUser(1, new UsersAdminController.UpdateUserRequest("testtest", "123456", false)); + Console.WriteLine($"UpdateUser Result: {result}"); + } + + } +} \ No newline at end of file diff --git a/APIConsole/UsersControllerConsole.cs b/APIConsole/UsersControllerConsole.cs new file mode 100644 index 0000000..29b5e0e --- /dev/null +++ b/APIConsole/UsersControllerConsole.cs @@ -0,0 +1,36 @@ +using API.Context; +using API.Controllers; +using DbServices; +using Services; + +namespace APIConsole +{ + public class UsersControllerConsole + { + private UsersController _controller; + + public UsersControllerConsole() + { + AppContext.AppContext context = new AppContext.AppContext(); + IUserService users = new DbUserService(context); + ITeamService teams = new DbTeamService(context); + ITacticService tactics = new DbTacticService(context); + IContextAccessor accessor = new HttpContextAccessor(); + + _controller = new UsersController(users, teams, tactics, accessor); + } + + public async void GetUserTest() + { + var result = await _controller.GetUser(); + Console.WriteLine($"GetUser Result: {result}"); + } + + public async void GetUserDataTest() + { + var result = await _controller.GetUserData(); + Console.WriteLine($"GetUserData Result: {result}"); + } + + } +} \ No newline at end of file