From d6e6fbd70f2337f113f0dcbb63cce169a92046ed Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Wed, 11 Mar 2026 18:25:02 +0100 Subject: [PATCH] Added endpoint to add user in group --- .../Groups/AddUserToGroupEndpoint.cs | 48 +++++++++++++++++++ .../Endpoints/Groups/CreateGroupEndpoint.cs | 2 +- 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 BeReadyBackend/Endpoints/Groups/AddUserToGroupEndpoint.cs diff --git a/BeReadyBackend/Endpoints/Groups/AddUserToGroupEndpoint.cs b/BeReadyBackend/Endpoints/Groups/AddUserToGroupEndpoint.cs new file mode 100644 index 0000000..106d729 --- /dev/null +++ b/BeReadyBackend/Endpoints/Groups/AddUserToGroupEndpoint.cs @@ -0,0 +1,48 @@ +using BeReadyBackend.Models; +using BeReadyBackend.Repositories; +using BeReadyBackend.Services; +using BeReadyBackend.Specifications.Groups; +using FastEndpoints; + +namespace BeReadyBackend.Endpoints.Groups; + +public class AddUserToGroupRequest +{ + public int UserId { get; set; } + public int GroupId { get; set; } +} + +public class AddUserToGroupEndpoint(UserService userService, UserGroupsRepository userGroupsRepository, AutoMapper.IMapper mapper) : Endpoint +{ + public override void Configure() + { + Post("/Groups/{@GroupId}/Users/{@UserId}/", x => new { x.GroupId, x.UserId }); + } + + public override async Task HandleAsync(AddUserToGroupRequest req, CancellationToken ct) + { + int userId = userService.GetUserIdFromToken(); + + UserGroup? member = await userGroupsRepository.SingleOrDefaultAsync(new GetUserInGroupByIdsSpec(req.GroupId, userId), ct); + + if (member is null) + { + await Send.StringAsync("Vous n'êtes pas dans ce groupe", 400, cancellation: ct); + return; + } + + UserGroup? userGroup = await userGroupsRepository.SingleOrDefaultAsync(new GetUserInGroupByIdsSpec(req.GroupId, req.UserId), ct); + if (userGroup is not null) + { + await Send.StringAsync("L'utilisateur fait déjà partie du groupe", 400, cancellation: ct); + return; + } + + userGroup = mapper.Map(req); + userGroup.Grade = "Member"; + userGroup.Score = 0; + + await userGroupsRepository.AddAsync(userGroup, ct); + await Send.NoContentAsync(ct); + } +} \ No newline at end of file diff --git a/BeReadyBackend/Endpoints/Groups/CreateGroupEndpoint.cs b/BeReadyBackend/Endpoints/Groups/CreateGroupEndpoint.cs index 7d79617..f000761 100644 --- a/BeReadyBackend/Endpoints/Groups/CreateGroupEndpoint.cs +++ b/BeReadyBackend/Endpoints/Groups/CreateGroupEndpoint.cs @@ -24,7 +24,7 @@ public class CreateGroupEndpoint( { int userId = userService.GetUserIdFromToken(); - Group? group = new(); + Group group = new(); mapper.Map(req, group); group.IsFinished = false; group.CreationDate = DateTime.Now;