diff --git a/.idea/.idea.BeReadyBackend/.idea/data_source_mapping.xml b/.idea/.idea.BeReadyBackend/.idea/data_source_mapping.xml deleted file mode 100644 index 301ad4d..0000000 --- a/.idea/.idea.BeReadyBackend/.idea/data_source_mapping.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/BeReadyBackend/BeReadyDbContext.cs b/BeReadyBackend/BeReadyDbContext.cs index dd26986..9a81e00 100644 --- a/BeReadyBackend/BeReadyDbContext.cs +++ b/BeReadyBackend/BeReadyDbContext.cs @@ -15,19 +15,19 @@ public class BeReadyDbContext : DbContext public DbSet UserFriends { get; set; } public DbSet UserGroups { get; set; } public DbSet UserRandomChallenges { get; set; } - + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { string connectionString = - "Server=romaric-thibault.fr;" + - "Database=beready;" + + "Server=romaric-thibault.fr;" + + "Database=beready;" + "User Id=beready;" + "Password=beready;" + "TrustServerCertificate=true;"; optionsBuilder.UseSqlServer(connectionString); } - + protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity() diff --git a/BeReadyBackend/DTO/Groups/GetGroupDetailsDto.cs b/BeReadyBackend/DTO/Groups/GetGroupDetailsDto.cs index 254b17c..5a12732 100644 --- a/BeReadyBackend/DTO/Groups/GetGroupDetailsDto.cs +++ b/BeReadyBackend/DTO/Groups/GetGroupDetailsDto.cs @@ -11,7 +11,7 @@ public class GetGroupDetailsDto public string? Description { get; set; } public int Duration { get; set; } public DateTime CreationDate { get; set; } - + public List? Messages { get; set; } public List? Users { get; set; } } \ No newline at end of file diff --git a/BeReadyBackend/DTO/Users/GetUserDto.cs b/BeReadyBackend/DTO/Users/GetUserDto.cs index aedfd59..393a4ac 100644 --- a/BeReadyBackend/DTO/Users/GetUserDto.cs +++ b/BeReadyBackend/DTO/Users/GetUserDto.cs @@ -8,5 +8,4 @@ public class GetUserDto public string? Username { get; set; } public int DesignationId { get; set; } public GetUserStatsDto? GetUserStatsDto { get; set; } - } \ No newline at end of file diff --git a/BeReadyBackend/DTO/Users/PatchUserPasswordDto.cs b/BeReadyBackend/DTO/Users/PatchUserPasswordDto.cs index cf8287d..aed618c 100644 --- a/BeReadyBackend/DTO/Users/PatchUserPasswordDto.cs +++ b/BeReadyBackend/DTO/Users/PatchUserPasswordDto.cs @@ -1,6 +1,6 @@ namespace BeReadyBackend.DTO.Users; public class PatchUserPasswordDto -{ +{ public string? Password { get; set; } } \ No newline at end of file diff --git a/BeReadyBackend/Endpoints/Achievements/GetLockedAchievementsEndpoint.cs b/BeReadyBackend/Endpoints/Achievements/GetLockedAchievementsEndpoint.cs index 13d6973..09f59bf 100644 --- a/BeReadyBackend/Endpoints/Achievements/GetLockedAchievementsEndpoint.cs +++ b/BeReadyBackend/Endpoints/Achievements/GetLockedAchievementsEndpoint.cs @@ -19,9 +19,9 @@ public class GetLockedAchievementsEndpoint( public override async Task HandleAsync(CancellationToken ct) { int userId = userService.GetUserIdFromToken(); - + List achievementsLocked = await achievementsRepository.ProjectToListAsync(new GetLockedAchievementsSpec(userId), ct); - + await Send.OkAsync(achievementsLocked, ct); } } \ No newline at end of file diff --git a/BeReadyBackend/Endpoints/Achievements/GetUserAchievementsEndpoint.cs b/BeReadyBackend/Endpoints/Achievements/GetUserAchievementsEndpoint.cs index 2d7241a..194b6bb 100644 --- a/BeReadyBackend/Endpoints/Achievements/GetUserAchievementsEndpoint.cs +++ b/BeReadyBackend/Endpoints/Achievements/GetUserAchievementsEndpoint.cs @@ -15,13 +15,13 @@ public class GetUserAchievementsEndpoint( { Get("/Achievements/Users/"); } - + public override async Task HandleAsync(CancellationToken ct) { int userId = userService.GetUserIdFromToken(); List userAchievements = await userAchievementsRepository.ProjectToListAsync(new GetUserAchievementByUserIdSpec(userId), ct); - + await Send.OkAsync(userAchievements, ct); } } \ No newline at end of file diff --git a/BeReadyBackend/Endpoints/Achievements/UnlockAchievementEndpoint.cs b/BeReadyBackend/Endpoints/Achievements/UnlockAchievementEndpoint.cs index 45fc0b3..7c03add 100644 --- a/BeReadyBackend/Endpoints/Achievements/UnlockAchievementEndpoint.cs +++ b/BeReadyBackend/Endpoints/Achievements/UnlockAchievementEndpoint.cs @@ -22,7 +22,7 @@ public class UnlockAchievementEndpoint( public override async Task HandleAsync(UnlockAchievementDto req, CancellationToken ct) { int userId = userService.GetUserIdFromToken(); - + Achievement? achievement = await achievementsRepository.SingleOrDefaultAsync(new GetAchievementByIdSpec(req.AchievementId), ct); if (achievement is null) @@ -37,7 +37,7 @@ public class UnlockAchievementEndpoint( await Send.StringAsync("Le succès est déjà attribué à cet utilisateur", 500, cancellation: ct); return; } - + await userAchievementsRepository.AddAsync(mapper.Map(req), ct); await Send.OkAsync(ct); } diff --git a/BeReadyBackend/Endpoints/Friends/AcceptFriendRequestEndpoint.cs b/BeReadyBackend/Endpoints/Friends/AcceptFriendRequestEndpoint.cs index cf216dc..a5e6f5a 100644 --- a/BeReadyBackend/Endpoints/Friends/AcceptFriendRequestEndpoint.cs +++ b/BeReadyBackend/Endpoints/Friends/AcceptFriendRequestEndpoint.cs @@ -28,7 +28,7 @@ public class AcceptFriendRequestEndpoint(UserService userService, UserFriendsRep await Send.NotFoundAsync(ct); return; } - + userFriend.IsAccepted = true; UserFriend friend = new() @@ -37,7 +37,7 @@ public class AcceptFriendRequestEndpoint(UserService userService, UserFriendsRep FriendId = req.FriendId, IsAccepted = true }; - + await userFriendsRepository.AddAsync(friend, ct); await userFriendsRepository.SaveChangesAsync(ct); await Send.OkAsync(ct); diff --git a/BeReadyBackend/Endpoints/Friends/GetAllFriendRequestsEndpoint.cs b/BeReadyBackend/Endpoints/Friends/GetAllFriendRequestsEndpoint.cs index 8be6723..cb02124 100644 --- a/BeReadyBackend/Endpoints/Friends/GetAllFriendRequestsEndpoint.cs +++ b/BeReadyBackend/Endpoints/Friends/GetAllFriendRequestsEndpoint.cs @@ -6,7 +6,8 @@ using FastEndpoints; namespace BeReadyBackend.Endpoints.Friends; -public class GetAllFriendRequestsEndpoint(UserFriendsRepository userFriendsRepository, UserService userService, AutoMapper.IMapper mapper) : EndpointWithoutRequest> +public class GetAllFriendRequestsEndpoint(UserFriendsRepository userFriendsRepository, UserService userService, AutoMapper.IMapper mapper) + : EndpointWithoutRequest> { public override void Configure() { @@ -16,7 +17,7 @@ public class GetAllFriendRequestsEndpoint(UserFriendsRepository userFriendsRepos public override async Task HandleAsync(CancellationToken ct) { int userId = userService.GetUserIdFromToken(); - + await Send.OkAsync(await userFriendsRepository.ProjectToListAsync(new GetFriendRequestSpec(userId), ct), ct); } } \ No newline at end of file diff --git a/BeReadyBackend/Endpoints/Friends/GetAllFriendsEndpoint.cs b/BeReadyBackend/Endpoints/Friends/GetAllFriendsEndpoint.cs index 09a1fe0..997e6c2 100644 --- a/BeReadyBackend/Endpoints/Friends/GetAllFriendsEndpoint.cs +++ b/BeReadyBackend/Endpoints/Friends/GetAllFriendsEndpoint.cs @@ -17,7 +17,7 @@ public class GetAllFriendsEndpoint(UserFriendsRepository userFriendsRepository, public override async Task HandleAsync(CancellationToken ct) { int userId = userService.GetUserIdFromToken(); - + await Send.OkAsync(await userFriendsRepository.ProjectToListAsync(new GetFriendsByUserIdSpec(userId), ct), ct); } } \ No newline at end of file diff --git a/BeReadyBackend/Endpoints/Friends/RejectFriendRequestEndpoint.cs b/BeReadyBackend/Endpoints/Friends/RejectFriendRequestEndpoint.cs index 9495050..d6d65c3 100644 --- a/BeReadyBackend/Endpoints/Friends/RejectFriendRequestEndpoint.cs +++ b/BeReadyBackend/Endpoints/Friends/RejectFriendRequestEndpoint.cs @@ -28,7 +28,7 @@ public class RejectFriendRequestEndpoint(UserService userService, UserFriendsRep await Send.NotFoundAsync(ct); return; } - + await userFriendsRepository.DeleteAsync(userFriend, ct); await Send.OkAsync(ct); } diff --git a/BeReadyBackend/Endpoints/Friends/SendFriendRequestEndpoint.cs b/BeReadyBackend/Endpoints/Friends/SendFriendRequestEndpoint.cs index 5d4658c..2344db1 100644 --- a/BeReadyBackend/Endpoints/Friends/SendFriendRequestEndpoint.cs +++ b/BeReadyBackend/Endpoints/Friends/SendFriendRequestEndpoint.cs @@ -15,7 +15,7 @@ public class SendFriendRequestEndpoint(UserFriendsRepository userFriendsReposito { public override void Configure() { - Post("/Friends/{@Id}/", x => new {x.FriendId}); + Post("/Friends/{@Id}/", x => new { x.FriendId }); } public override async Task HandleAsync(SendFriendRequest req, CancellationToken ct) @@ -28,11 +28,11 @@ public class SendFriendRequestEndpoint(UserFriendsRepository userFriendsReposito await Send.StringAsync("Cet utilisateur est déjà ami avec cette personne", 400, cancellation: ct); return; } - + userFriend = mapper.Map(req); userFriend.UserId = userId; userFriend.IsAccepted = false; - + await userFriendsRepository.AddAsync(userFriend, ct); await Send.OkAsync(ct); } diff --git a/BeReadyBackend/Endpoints/Groups/CreateGroupEndpoint.cs b/BeReadyBackend/Endpoints/Groups/CreateGroupEndpoint.cs index e77bb6d..87f4d7d 100644 --- a/BeReadyBackend/Endpoints/Groups/CreateGroupEndpoint.cs +++ b/BeReadyBackend/Endpoints/Groups/CreateGroupEndpoint.cs @@ -29,7 +29,7 @@ public class CreateGroupEndpoint( group.IsFinished = false; group.CreationDate = DateTime.Now; group.UserGroups = []; - + await groupsRepository.AddAsync(group, ct); await groupsRepository.SaveChangesAsync(ct); @@ -56,7 +56,7 @@ public class CreateGroupEndpoint( Score = 0 }; group.UserGroups?.Add(userGroup); - + await userGroupsRepository.AddRangeAsync(group.UserGroups!, ct); await userGroupsRepository.SaveChangesAsync(ct); diff --git a/BeReadyBackend/Endpoints/Groups/DeleteGroupEndpoint.cs b/BeReadyBackend/Endpoints/Groups/DeleteGroupEndpoint.cs index 941e411..c59e156 100644 --- a/BeReadyBackend/Endpoints/Groups/DeleteGroupEndpoint.cs +++ b/BeReadyBackend/Endpoints/Groups/DeleteGroupEndpoint.cs @@ -41,7 +41,7 @@ public class DeleteGroupEndpoint(GroupsRepository groupsRepository, UserGroupsRe if (group.UserGroups?.Count > 0) await userGroupsRepository.DeleteRangeAsync(group.UserGroups, ct); - + await groupsRepository.DeleteAsync(group, ct); await userGroupsRepository.SaveChangesAsync(ct); await Send.OkAsync(ct); diff --git a/BeReadyBackend/Endpoints/Groups/GetGroupRankingEndpoint.cs b/BeReadyBackend/Endpoints/Groups/GetGroupRankingEndpoint.cs index 6ffd46c..d3f0613 100644 --- a/BeReadyBackend/Endpoints/Groups/GetGroupRankingEndpoint.cs +++ b/BeReadyBackend/Endpoints/Groups/GetGroupRankingEndpoint.cs @@ -14,8 +14,8 @@ public class GroupRankingRequest } public class GetGroupRankingEndpoint( - GroupsRepository groupsRepository, - UsersRepository usersRepository, + GroupsRepository groupsRepository, + UsersRepository usersRepository, UserGroupsRepository userGroupsRepository) : Endpoint> { @@ -41,6 +41,7 @@ public class GetGroupRankingEndpoint( User? votedUser = await usersRepository.SingleOrDefaultAsync(new GetUserByIdSpec(member.VotedProofId.Value), ct); if (votedUser is not null) votedUser.Score++; } + await usersRepository.SaveChangesAsync(ct); await userGroupsRepository.SaveChangesAsync(ct); @@ -52,8 +53,9 @@ public class GetGroupRankingEndpoint( User? user = await usersRepository.SingleOrDefaultAsync(new GetUserByIdSpec(groupScore[i].UserId), ct); if (user != null) user.Score += points[i]; } + await usersRepository.SaveChangesAsync(ct); - + await Send.OkAsync(groupScore, ct); } } \ No newline at end of file diff --git a/BeReadyBackend/Endpoints/Users/CreateUserEndpoint.cs b/BeReadyBackend/Endpoints/Users/CreateUserEndpoint.cs index 836add6..1e500e6 100644 --- a/BeReadyBackend/Endpoints/Users/CreateUserEndpoint.cs +++ b/BeReadyBackend/Endpoints/Users/CreateUserEndpoint.cs @@ -24,7 +24,7 @@ public class CreateUserEndpoint(UsersRepository usersRepository, AutoMapper.IMap await Send.StringAsync("Un utilisateur possède déjà ce pseudo ou cette email", 400, cancellation: ct); return; } - + string salt = new Password().IncludeLowercase().IncludeUppercase().IncludeNumeric().LengthRequired(24).Next(); user = mapper.Map(req); @@ -38,7 +38,7 @@ public class CreateUserEndpoint(UsersRepository usersRepository, AutoMapper.IMap user.TotalPodium = 0; user.TotalBonusChallenge = 0; user.Series = 0; - + await usersRepository.AddAsync(user, ct); await Send.OkAsync(ct); } diff --git a/BeReadyBackend/Endpoints/Users/DeleteUserEndpoint.cs b/BeReadyBackend/Endpoints/Users/DeleteUserEndpoint.cs index 0f90e65..cc56720 100644 --- a/BeReadyBackend/Endpoints/Users/DeleteUserEndpoint.cs +++ b/BeReadyBackend/Endpoints/Users/DeleteUserEndpoint.cs @@ -15,7 +15,7 @@ public class DeleteUserEndpoint(UsersRepository usersRepository, UserService use public override async Task HandleAsync(CancellationToken ct) { int userId = userService.GetUserIdFromToken(); - + await usersRepository.DeleteAsync((await usersRepository.SingleOrDefaultAsync(new GetUserByIdSpec(userId), ct))!, ct); await Send.OkAsync(ct); } diff --git a/BeReadyBackend/Endpoints/Users/GetAllUserChallengesEndpoint.cs b/BeReadyBackend/Endpoints/Users/GetAllUserChallengesEndpoint.cs index ead750b..21c9893 100644 --- a/BeReadyBackend/Endpoints/Users/GetAllUserChallengesEndpoint.cs +++ b/BeReadyBackend/Endpoints/Users/GetAllUserChallengesEndpoint.cs @@ -13,11 +13,11 @@ public class GetAllUserChallengesEndpoint(UsersRepository usersRepository, UserS { Get("/Users/Challenges/"); } - + public override async Task HandleAsync(CancellationToken ct) { int userId = userService.GetUserIdFromToken(); - + User? user = await usersRepository.SingleOrDefaultAsync(new GetProofOrChallengeByUserIdSpec(userId), ct); if (user is null) @@ -25,13 +25,13 @@ public class GetAllUserChallengesEndpoint(UsersRepository usersRepository, UserS await Send.NotFoundAsync(ct); return; } - + List challenges = []; - if (user.UserRandomChallenges is not null) + if (user.UserRandomChallenges is not null) challenges.AddRange(user.UserRandomChallenges.Select(x => mapper.Map(x.RandomChallenge))); if (user.UserGroups is not null) challenges.AddRange(user.UserGroups.Select(x => mapper.Map(x.Group))); - + await Send.OkAsync(challenges, ct); } } \ No newline at end of file diff --git a/BeReadyBackend/Endpoints/Users/GetAllUserProofsEndpoint.cs b/BeReadyBackend/Endpoints/Users/GetAllUserProofsEndpoint.cs index 93fdc64..baa0a1d 100644 --- a/BeReadyBackend/Endpoints/Users/GetAllUserProofsEndpoint.cs +++ b/BeReadyBackend/Endpoints/Users/GetAllUserProofsEndpoint.cs @@ -13,11 +13,11 @@ public class GetAllUserProofsEndpoint(UsersRepository usersRepository, UserServi { Get("/Users/Proofs/"); } - + public override async Task HandleAsync(CancellationToken ct) { int userId = userService.GetUserIdFromToken(); - + User? user = await usersRepository.SingleOrDefaultAsync(new GetProofOrChallengeByUserIdSpec(userId), ct); if (user is null) @@ -25,13 +25,13 @@ public class GetAllUserProofsEndpoint(UsersRepository usersRepository, UserServi await Send.NotFoundAsync(ct); return; } - + List proofs = []; - if (user.UserRandomChallenges is not null) + if (user.UserRandomChallenges is not null) proofs.AddRange(user.UserRandomChallenges.Select(x => mapper.Map(x.RandomChallenge))); if (user.UserGroups is not null) proofs.AddRange(user.UserGroups.Select(x => mapper.Map(x.Group))); - + await Send.OkAsync(proofs, ct); } } \ No newline at end of file diff --git a/BeReadyBackend/Endpoints/Users/GetAllUsersEndpoint.cs b/BeReadyBackend/Endpoints/Users/GetAllUsersEndpoint.cs index fdc17e7..e6f0713 100644 --- a/BeReadyBackend/Endpoints/Users/GetAllUsersEndpoint.cs +++ b/BeReadyBackend/Endpoints/Users/GetAllUsersEndpoint.cs @@ -12,7 +12,7 @@ public class GetAllUsersEndpoint(UsersRepository usersRepository, UserService us { Get("/Users/"); } - + public override async Task HandleAsync(CancellationToken ct) { int userId = userService.GetUserIdFromToken(); diff --git a/BeReadyBackend/Endpoints/Users/GetUserDetailsEndpoint.cs b/BeReadyBackend/Endpoints/Users/GetUserDetailsEndpoint.cs index 7d9a520..3805fa1 100644 --- a/BeReadyBackend/Endpoints/Users/GetUserDetailsEndpoint.cs +++ b/BeReadyBackend/Endpoints/Users/GetUserDetailsEndpoint.cs @@ -17,9 +17,9 @@ public class GetUserDetailsEndpoint(UsersRepository usersRepository, UserService public override async Task HandleAsync(CancellationToken ct) { int userId = userService.GetUserIdFromToken(); - + User? user = await usersRepository.SingleOrDefaultAsync(new GetUserByIdSpec(userId), ct); - + await Send.OkAsync(mapper.Map(user), ct); } } \ No newline at end of file diff --git a/BeReadyBackend/Endpoints/Users/GetUserEndpoint.cs b/BeReadyBackend/Endpoints/Users/GetUserEndpoint.cs index e207d2a..2c81d2f 100644 --- a/BeReadyBackend/Endpoints/Users/GetUserEndpoint.cs +++ b/BeReadyBackend/Endpoints/Users/GetUserEndpoint.cs @@ -16,7 +16,7 @@ public class GetUserEndpoint(UsersRepository usersRepository, UserService userSe { public override void Configure() { - Get("/Users/{@Id}/", x => new {x.Id}); + Get("/Users/{@Id}/", x => new { x.Id }); } public override async Task HandleAsync(UserRequest req, CancellationToken ct) @@ -28,7 +28,7 @@ public class GetUserEndpoint(UsersRepository usersRepository, UserService userSe await Send.NotFoundAsync(ct); return; } - + await Send.OkAsync(mapper.Map(user), ct); } } \ No newline at end of file diff --git a/BeReadyBackend/Endpoints/Users/PatchUserDesignationEndpoint.cs b/BeReadyBackend/Endpoints/Users/PatchUserDesignationEndpoint.cs index f8686bc..cef76e8 100644 --- a/BeReadyBackend/Endpoints/Users/PatchUserDesignationEndpoint.cs +++ b/BeReadyBackend/Endpoints/Users/PatchUserDesignationEndpoint.cs @@ -17,7 +17,7 @@ public class PatchUserDesignationEndpoint(UsersRepository usersRepository, UserS public override async Task HandleAsync(PatchUserDesignationDto req, CancellationToken ct) { int userId = userService.GetUserIdFromToken(); - + User? user = await usersRepository.SingleOrDefaultAsync(new GetUserByIdSpec(userId), ct); if (user is null) diff --git a/BeReadyBackend/Endpoints/Users/PatchUserPasswordEndpoint.cs b/BeReadyBackend/Endpoints/Users/PatchUserPasswordEndpoint.cs index b2ec839..a329a01 100644 --- a/BeReadyBackend/Endpoints/Users/PatchUserPasswordEndpoint.cs +++ b/BeReadyBackend/Endpoints/Users/PatchUserPasswordEndpoint.cs @@ -18,7 +18,7 @@ public class PatchUserPasswordEndpoint(UsersRepository usersRepository, UserServ public override async Task HandleAsync(PatchUserPasswordDto req, CancellationToken ct) { int userId = userService.GetUserIdFromToken(); - + User? user = await usersRepository.SingleOrDefaultAsync(new GetUserByIdSpec(userId), ct); if (user is null) @@ -26,10 +26,10 @@ public class PatchUserPasswordEndpoint(UsersRepository usersRepository, UserServ await Send.NotFoundAsync(ct); return; } - + string salt = new Password().IncludeLowercase().IncludeUppercase().IncludeNumeric().LengthRequired(24).Next(); user.Password = BCrypt.Net.BCrypt.HashPassword(req.Password + salt); - + await usersRepository.SaveChangesAsync(ct); await Send.OkAsync(ct); } diff --git a/BeReadyBackend/Endpoints/Users/UpdateUserEndpoint.cs b/BeReadyBackend/Endpoints/Users/UpdateUserEndpoint.cs index dbcacf3..193a6d1 100644 --- a/BeReadyBackend/Endpoints/Users/UpdateUserEndpoint.cs +++ b/BeReadyBackend/Endpoints/Users/UpdateUserEndpoint.cs @@ -18,7 +18,7 @@ public class UpdateUserEndpoint(UsersRepository usersRepository, UserService use public override async Task HandleAsync(UpdateUserDto req, CancellationToken ct) { int userId = userService.GetUserIdFromToken(); - + User? user = await usersRepository.FirstOrDefaultAsync(new GetUserByCriteriaSpec(req.Username!, req.Email!, userId), ct); if (user is not null) @@ -26,17 +26,17 @@ public class UpdateUserEndpoint(UsersRepository usersRepository, UserService use await Send.StringAsync("Un utilisateur possède déjà ce pseudo ou cette email", 400, cancellation: ct); return; } - + user = await usersRepository.SingleOrDefaultAsync(new GetUserByIdSpec(userId), ct); - + if (user is null) { await Send.NotFoundAsync(ct); return; } - + mapper.Map(req, user); - + await usersRepository.SaveChangesAsync(ct); await Send.OkAsync(ct); } diff --git a/BeReadyBackend/Hubs/GroupHub.cs b/BeReadyBackend/Hubs/GroupHub.cs index 79d3536..9b3a804 100644 --- a/BeReadyBackend/Hubs/GroupHub.cs +++ b/BeReadyBackend/Hubs/GroupHub.cs @@ -9,17 +9,17 @@ public class GroupHub : Hub { await Clients.Group($"group-{groupId}").SendAsync("ReceiveProof", proofUrl); } - + public async Task SendMessageToGroup(int groupId, string message) { await Clients.Group($"group-{groupId}").SendAsync("ReceiveMessage", message); } - + public async Task StartVoteIntoGroup(int groupId) { await Clients.Group($"group-{groupId}").SendAsync("StartVote"); } - + public override async Task OnConnectedAsync() { HttpContext? httpContext = Context.GetHttpContext(); @@ -27,6 +27,7 @@ public class GroupHub : Hub { await Groups.AddToGroupAsync(Context.ConnectionId, $"group-{groupId}"); } + await base.OnConnectedAsync(); } } \ No newline at end of file diff --git a/BeReadyBackend/MappingProfiles/DtoToEntityMappings.cs b/BeReadyBackend/MappingProfiles/DtoToEntityMappings.cs index a1760ca..51fcda1 100644 --- a/BeReadyBackend/MappingProfiles/DtoToEntityMappings.cs +++ b/BeReadyBackend/MappingProfiles/DtoToEntityMappings.cs @@ -11,12 +11,12 @@ public class DtoToEntityMappings : Profile public DtoToEntityMappings() { CreateMap(); - + CreateMap(); CreateMap(); CreateMap(); - - CreateMap() + + CreateMap() .ForMember(dest => dest.UserGroups, opt => opt.Ignore()); } } \ No newline at end of file diff --git a/BeReadyBackend/MappingProfiles/EntityToDtoMappings.cs b/BeReadyBackend/MappingProfiles/EntityToDtoMappings.cs index 9076beb..7af8e5a 100644 --- a/BeReadyBackend/MappingProfiles/EntityToDtoMappings.cs +++ b/BeReadyBackend/MappingProfiles/EntityToDtoMappings.cs @@ -19,22 +19,22 @@ public class EntityToDtoMappings : Profile .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Achievement!.Id)) .ForMember(dest => dest.Label, opt => opt.MapFrom(src => src.Achievement!.Label)) .ForMember(dest => dest.Description, opt => opt.MapFrom(src => src.Achievement!.Description)); - + CreateMap() .ForMember(dest => dest.GetUserStatsDto, opt => opt.MapFrom(src => src)); - + CreateMap() .ForMember(dest => dest.GetUserStatsDto, opt => opt.MapFrom(src => src)); - + CreateMap(); - + CreateMap(); CreateMap(); CreateMap() .ForMember(dest => dest.ChallengeTitle, opt => opt.MapFrom(src => src.Libelle)) .ForMember(dest => dest.ChallengeDuration, opt => opt.MapFrom(src => src.Duration)); - + CreateMap() .ForMember(dest => dest.ChallengeTitle, opt => opt.MapFrom(src => src.Title)) .ForMember(dest => dest.ChallengeDescription, opt => opt.MapFrom(src => src.Description)) @@ -43,7 +43,7 @@ public class EntityToDtoMappings : Profile CreateMap() .ForMember(dest => dest.Username, opt => opt.MapFrom(src => src.Friend!.Username)) .ForMember(dest => dest.Score, opt => opt.MapFrom(src => src.Friend!.Score)); - + CreateMap() .ForMember(dest => dest.Username, opt => opt.MapFrom(src => src.User!.Username)) .ForMember(dest => dest.Score, opt => opt.MapFrom(src => src.User!.Score)); @@ -57,17 +57,17 @@ public class EntityToDtoMappings : Profile .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.GroupId)) .ForMember(dest => dest.Label, opt => opt.MapFrom(src => src.Group!.Label)) .ForMember(dest => dest.IsFinished, opt => opt.MapFrom(src => src.Group!.IsFinished)); - + CreateMap() .ForMember(dest => dest.Users, opt => opt.MapFrom(src => src.UserGroups)) .ForMember(dest => dest.Messages, opt => opt.MapFrom(src => src.Messages)); - + CreateMap() .ForMember(dest => dest.Username, opt => opt.MapFrom(src => src.User!.Username)); CreateMap() .ForMember(dest => dest.Username, opt => opt.MapFrom(src => src.User!.Username)); - + CreateMap() .ForMember(dest => dest.Username, opt => opt.MapFrom(src => src.User!.Username)); } diff --git a/BeReadyBackend/Models/Achievement.cs b/BeReadyBackend/Models/Achievement.cs index 16ec73b..62907fe 100644 --- a/BeReadyBackend/Models/Achievement.cs +++ b/BeReadyBackend/Models/Achievement.cs @@ -7,6 +7,6 @@ public class Achievement [Key] public int Id { get; set; } [Required] public string? Label { get; set; } [Required] public string? Description { get; set; } - + public List? UserAchievements { get; set; } } \ No newline at end of file diff --git a/BeReadyBackend/Models/Designation.cs b/BeReadyBackend/Models/Designation.cs index db6c576..793d0ec 100644 --- a/BeReadyBackend/Models/Designation.cs +++ b/BeReadyBackend/Models/Designation.cs @@ -6,6 +6,6 @@ public class Designation { [Key] public int Id { get; set; } [Required] public string? Label { get; set; } - + public List? Users { get; set; } } \ No newline at end of file diff --git a/BeReadyBackend/Models/Group.cs b/BeReadyBackend/Models/Group.cs index 981d1f4..f29d59a 100644 --- a/BeReadyBackend/Models/Group.cs +++ b/BeReadyBackend/Models/Group.cs @@ -7,12 +7,12 @@ public class Group [Key] public int Id { get; set; } [Required, MaxLength(100)] public string? Label { get; set; } [Required] public bool IsFinished { get; set; } - + [Required] public string? Title { get; set; } [Required] public string? Description { get; set; } [Required] public int Duration { get; set; } [Required] public DateTime CreationDate { get; set; } - + public List? Messages { get; set; } public List? UserGroups { get; set; } } \ No newline at end of file diff --git a/BeReadyBackend/Models/Message.cs b/BeReadyBackend/Models/Message.cs index aa18bc6..9ebe5d1 100644 --- a/BeReadyBackend/Models/Message.cs +++ b/BeReadyBackend/Models/Message.cs @@ -7,10 +7,10 @@ public class Message [Key] public int Id { get; set; } [Required] public string? Libelle { get; set; } [Required] public DateTime SendDate { get; set; } - + public User? User { get; set; } [Required] public int UserId { get; set; } - + public Group? Group { get; set; } [Required] public int GroupId { get; set; } } \ No newline at end of file diff --git a/BeReadyBackend/Models/RandomChallenge.cs b/BeReadyBackend/Models/RandomChallenge.cs index cc272c7..6cef868 100644 --- a/BeReadyBackend/Models/RandomChallenge.cs +++ b/BeReadyBackend/Models/RandomChallenge.cs @@ -6,8 +6,8 @@ public class RandomChallenge { [Key] public int Id { get; set; } [Required] public string? Libelle { get; set; } - [Required] public int Duration {get; set;} + [Required] public int Duration { get; set; } [Required] public bool IsAlreadyPast { get; set; } - + public List? UserRandomChallenges { get; set; } } \ No newline at end of file diff --git a/BeReadyBackend/Models/User.cs b/BeReadyBackend/Models/User.cs index 7652f98..79d4657 100644 --- a/BeReadyBackend/Models/User.cs +++ b/BeReadyBackend/Models/User.cs @@ -12,16 +12,16 @@ public class User [Required] public DateTime CreationDate { get; set; } [Required, MaxLength(60)] public string? Password { get; set; } [Required] public string? Salt { get; set; } - [Required, ] public int Score { get; set; } + [Required,] public int Score { get; set; } [Required] public int TotalWin { get; set; } [Required] public int TotalChallenge { get; set; } [Required] public int TotalPodium { get; set; } [Required] public int TotalBonusChallenge { get; set; } [Required] public int Series { get; set; } - + public Designation? Designation { get; set; } public int? DesignationId { get; set; } - + public List? UserFriends { get; set; } public List? Messages { get; set; } public List? UserRandomChallenges { get; set; } diff --git a/BeReadyBackend/Models/UserFriend.cs b/BeReadyBackend/Models/UserFriend.cs index 925d27b..d7eeeba 100644 --- a/BeReadyBackend/Models/UserFriend.cs +++ b/BeReadyBackend/Models/UserFriend.cs @@ -12,6 +12,6 @@ public class UserFriend public User? Friend { get; set; } public int FriendId { get; set; } - + [Required] public bool IsAccepted { get; set; } } \ No newline at end of file diff --git a/BeReadyBackend/Models/UserGroup.cs b/BeReadyBackend/Models/UserGroup.cs index f0f1f91..09dfbef 100644 --- a/BeReadyBackend/Models/UserGroup.cs +++ b/BeReadyBackend/Models/UserGroup.cs @@ -11,9 +11,9 @@ public class UserGroup public Group? Group { get; set; } [Required] public int GroupId { get; set; } - + public string? Proof { get; set; } - + [Required] public string? Grade { get; set; } public int? VotedProofId { get; set; } [Required] public int Score { get; set; } diff --git a/BeReadyBackend/Models/UserRandomChallenge.cs b/BeReadyBackend/Models/UserRandomChallenge.cs index c1d6aef..f9ce201 100644 --- a/BeReadyBackend/Models/UserRandomChallenge.cs +++ b/BeReadyBackend/Models/UserRandomChallenge.cs @@ -11,6 +11,6 @@ public class UserRandomChallenge public RandomChallenge? RandomChallenge { get; set; } [Required] public int RandomChallengeId { get; set; } - + public string? Proof { get; set; } } \ No newline at end of file diff --git a/BeReadyBackend/Services/UserService.cs b/BeReadyBackend/Services/UserService.cs index d9cf2b6..58b0b90 100644 --- a/BeReadyBackend/Services/UserService.cs +++ b/BeReadyBackend/Services/UserService.cs @@ -6,16 +6,16 @@ namespace BeReadyBackend.Services; public class UserService { private readonly IHttpContextAccessor _httpContextAccessor; - + public UserService(IHttpContextAccessor httpContextAccessor) { _httpContextAccessor = httpContextAccessor; } - + public int GetUserIdFromToken() { - ClaimsPrincipal user = _httpContextAccessor.HttpContext!.User; - string? userId = user.Claims.FirstOrDefault(x => x.Type == "UserId")?.Value; - return int.Parse(userId!); + ClaimsPrincipal user = _httpContextAccessor.HttpContext!.User; + string? userId = user.Claims.FirstOrDefault(x => x.Type == "UserId")?.Value; + return int.Parse(userId!); } } \ No newline at end of file diff --git a/BeReadyBackend/Specifications/Achievements/GetLockedAchievementsSpec.cs b/BeReadyBackend/Specifications/Achievements/GetLockedAchievementsSpec.cs index 386682e..54fa353 100644 --- a/BeReadyBackend/Specifications/Achievements/GetLockedAchievementsSpec.cs +++ b/BeReadyBackend/Specifications/Achievements/GetLockedAchievementsSpec.cs @@ -9,6 +9,5 @@ public class GetLockedAchievementsSpec : Specification { Query .Where(x => x.UserAchievements != null && x.UserAchievements.All(y => y.UserId != userId)); - } } \ No newline at end of file diff --git a/BeReadyBackend/Specifications/Groups/GetGroupsByUserIdSpec.cs b/BeReadyBackend/Specifications/Groups/GetGroupsByUserIdSpec.cs index 63efa85..057bf54 100644 --- a/BeReadyBackend/Specifications/Groups/GetGroupsByUserIdSpec.cs +++ b/BeReadyBackend/Specifications/Groups/GetGroupsByUserIdSpec.cs @@ -5,7 +5,7 @@ namespace BeReadyBackend.Specifications.Groups; public class GetGroupsByUserIdSpec : Specification { - public GetGroupsByUserIdSpec(int userId) + public GetGroupsByUserIdSpec(int userId) { Query .Include(x => x.Group)