Cleaned code
This commit is contained in:
@@ -1,6 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="DataSourcePerFileMappings">
|
|
||||||
<file url="file://$APPLICATION_CONFIG_DIR$/consoles/db/d39cb28a-f071-4fe6-bb03-b2350028b821/console.sql" value="d39cb28a-f071-4fe6-bb03-b2350028b821" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
@@ -15,19 +15,19 @@ public class BeReadyDbContext : DbContext
|
|||||||
public DbSet<UserFriend> UserFriends { get; set; }
|
public DbSet<UserFriend> UserFriends { get; set; }
|
||||||
public DbSet<UserGroup> UserGroups { get; set; }
|
public DbSet<UserGroup> UserGroups { get; set; }
|
||||||
public DbSet<UserRandomChallenge> UserRandomChallenges { get; set; }
|
public DbSet<UserRandomChallenge> UserRandomChallenges { get; set; }
|
||||||
|
|
||||||
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
||||||
{
|
{
|
||||||
string connectionString =
|
string connectionString =
|
||||||
"Server=romaric-thibault.fr;" +
|
"Server=romaric-thibault.fr;" +
|
||||||
"Database=beready;" +
|
"Database=beready;" +
|
||||||
"User Id=beready;" +
|
"User Id=beready;" +
|
||||||
"Password=beready;" +
|
"Password=beready;" +
|
||||||
"TrustServerCertificate=true;";
|
"TrustServerCertificate=true;";
|
||||||
|
|
||||||
optionsBuilder.UseSqlServer(connectionString);
|
optionsBuilder.UseSqlServer(connectionString);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||||
{
|
{
|
||||||
modelBuilder.Entity<UserFriend>()
|
modelBuilder.Entity<UserFriend>()
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ public class GetGroupDetailsDto
|
|||||||
public string? Description { get; set; }
|
public string? Description { get; set; }
|
||||||
public int Duration { get; set; }
|
public int Duration { get; set; }
|
||||||
public DateTime CreationDate { get; set; }
|
public DateTime CreationDate { get; set; }
|
||||||
|
|
||||||
public List<GetMessageDto>? Messages { get; set; }
|
public List<GetMessageDto>? Messages { get; set; }
|
||||||
public List<GetUserGroupDto>? Users { get; set; }
|
public List<GetUserGroupDto>? Users { get; set; }
|
||||||
}
|
}
|
||||||
@@ -8,5 +8,4 @@ public class GetUserDto
|
|||||||
public string? Username { get; set; }
|
public string? Username { get; set; }
|
||||||
public int DesignationId { get; set; }
|
public int DesignationId { get; set; }
|
||||||
public GetUserStatsDto? GetUserStatsDto { get; set; }
|
public GetUserStatsDto? GetUserStatsDto { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
namespace BeReadyBackend.DTO.Users;
|
namespace BeReadyBackend.DTO.Users;
|
||||||
|
|
||||||
public class PatchUserPasswordDto
|
public class PatchUserPasswordDto
|
||||||
{
|
{
|
||||||
public string? Password { get; set; }
|
public string? Password { get; set; }
|
||||||
}
|
}
|
||||||
@@ -19,9 +19,9 @@ public class GetLockedAchievementsEndpoint(
|
|||||||
public override async Task HandleAsync(CancellationToken ct)
|
public override async Task HandleAsync(CancellationToken ct)
|
||||||
{
|
{
|
||||||
int userId = userService.GetUserIdFromToken();
|
int userId = userService.GetUserIdFromToken();
|
||||||
|
|
||||||
List<GetAchievementDto> achievementsLocked = await achievementsRepository.ProjectToListAsync<GetAchievementDto>(new GetLockedAchievementsSpec(userId), ct);
|
List<GetAchievementDto> achievementsLocked = await achievementsRepository.ProjectToListAsync<GetAchievementDto>(new GetLockedAchievementsSpec(userId), ct);
|
||||||
|
|
||||||
await Send.OkAsync(achievementsLocked, ct);
|
await Send.OkAsync(achievementsLocked, ct);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -15,13 +15,13 @@ public class GetUserAchievementsEndpoint(
|
|||||||
{
|
{
|
||||||
Get("/Achievements/Users/");
|
Get("/Achievements/Users/");
|
||||||
}
|
}
|
||||||
|
|
||||||
public override async Task HandleAsync(CancellationToken ct)
|
public override async Task HandleAsync(CancellationToken ct)
|
||||||
{
|
{
|
||||||
int userId = userService.GetUserIdFromToken();
|
int userId = userService.GetUserIdFromToken();
|
||||||
|
|
||||||
List<GetAchievementDto> userAchievements = await userAchievementsRepository.ProjectToListAsync<GetAchievementDto>(new GetUserAchievementByUserIdSpec(userId), ct);
|
List<GetAchievementDto> userAchievements = await userAchievementsRepository.ProjectToListAsync<GetAchievementDto>(new GetUserAchievementByUserIdSpec(userId), ct);
|
||||||
|
|
||||||
await Send.OkAsync(userAchievements, ct);
|
await Send.OkAsync(userAchievements, ct);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -22,7 +22,7 @@ public class UnlockAchievementEndpoint(
|
|||||||
public override async Task HandleAsync(UnlockAchievementDto req, CancellationToken ct)
|
public override async Task HandleAsync(UnlockAchievementDto req, CancellationToken ct)
|
||||||
{
|
{
|
||||||
int userId = userService.GetUserIdFromToken();
|
int userId = userService.GetUserIdFromToken();
|
||||||
|
|
||||||
Achievement? achievement = await achievementsRepository.SingleOrDefaultAsync(new GetAchievementByIdSpec(req.AchievementId), ct);
|
Achievement? achievement = await achievementsRepository.SingleOrDefaultAsync(new GetAchievementByIdSpec(req.AchievementId), ct);
|
||||||
|
|
||||||
if (achievement is null)
|
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);
|
await Send.StringAsync("Le succès est déjà attribué à cet utilisateur", 500, cancellation: ct);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await userAchievementsRepository.AddAsync(mapper.Map<UserAchievement>(req), ct);
|
await userAchievementsRepository.AddAsync(mapper.Map<UserAchievement>(req), ct);
|
||||||
await Send.OkAsync(ct);
|
await Send.OkAsync(ct);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ public class AcceptFriendRequestEndpoint(UserService userService, UserFriendsRep
|
|||||||
await Send.NotFoundAsync(ct);
|
await Send.NotFoundAsync(ct);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
userFriend.IsAccepted = true;
|
userFriend.IsAccepted = true;
|
||||||
|
|
||||||
UserFriend friend = new()
|
UserFriend friend = new()
|
||||||
@@ -37,7 +37,7 @@ public class AcceptFriendRequestEndpoint(UserService userService, UserFriendsRep
|
|||||||
FriendId = req.FriendId,
|
FriendId = req.FriendId,
|
||||||
IsAccepted = true
|
IsAccepted = true
|
||||||
};
|
};
|
||||||
|
|
||||||
await userFriendsRepository.AddAsync(friend, ct);
|
await userFriendsRepository.AddAsync(friend, ct);
|
||||||
await userFriendsRepository.SaveChangesAsync(ct);
|
await userFriendsRepository.SaveChangesAsync(ct);
|
||||||
await Send.OkAsync(ct);
|
await Send.OkAsync(ct);
|
||||||
|
|||||||
@@ -6,7 +6,8 @@ using FastEndpoints;
|
|||||||
|
|
||||||
namespace BeReadyBackend.Endpoints.Friends;
|
namespace BeReadyBackend.Endpoints.Friends;
|
||||||
|
|
||||||
public class GetAllFriendRequestsEndpoint(UserFriendsRepository userFriendsRepository, UserService userService, AutoMapper.IMapper mapper) : EndpointWithoutRequest<List<GetFriendRequestDto>>
|
public class GetAllFriendRequestsEndpoint(UserFriendsRepository userFriendsRepository, UserService userService, AutoMapper.IMapper mapper)
|
||||||
|
: EndpointWithoutRequest<List<GetFriendRequestDto>>
|
||||||
{
|
{
|
||||||
public override void Configure()
|
public override void Configure()
|
||||||
{
|
{
|
||||||
@@ -16,7 +17,7 @@ public class GetAllFriendRequestsEndpoint(UserFriendsRepository userFriendsRepos
|
|||||||
public override async Task HandleAsync(CancellationToken ct)
|
public override async Task HandleAsync(CancellationToken ct)
|
||||||
{
|
{
|
||||||
int userId = userService.GetUserIdFromToken();
|
int userId = userService.GetUserIdFromToken();
|
||||||
|
|
||||||
await Send.OkAsync(await userFriendsRepository.ProjectToListAsync<GetFriendRequestDto>(new GetFriendRequestSpec(userId), ct), ct);
|
await Send.OkAsync(await userFriendsRepository.ProjectToListAsync<GetFriendRequestDto>(new GetFriendRequestSpec(userId), ct), ct);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -17,7 +17,7 @@ public class GetAllFriendsEndpoint(UserFriendsRepository userFriendsRepository,
|
|||||||
public override async Task HandleAsync(CancellationToken ct)
|
public override async Task HandleAsync(CancellationToken ct)
|
||||||
{
|
{
|
||||||
int userId = userService.GetUserIdFromToken();
|
int userId = userService.GetUserIdFromToken();
|
||||||
|
|
||||||
await Send.OkAsync(await userFriendsRepository.ProjectToListAsync<GetFriendDto>(new GetFriendsByUserIdSpec(userId), ct), ct);
|
await Send.OkAsync(await userFriendsRepository.ProjectToListAsync<GetFriendDto>(new GetFriendsByUserIdSpec(userId), ct), ct);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -28,7 +28,7 @@ public class RejectFriendRequestEndpoint(UserService userService, UserFriendsRep
|
|||||||
await Send.NotFoundAsync(ct);
|
await Send.NotFoundAsync(ct);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await userFriendsRepository.DeleteAsync(userFriend, ct);
|
await userFriendsRepository.DeleteAsync(userFriend, ct);
|
||||||
await Send.OkAsync(ct);
|
await Send.OkAsync(ct);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ public class SendFriendRequestEndpoint(UserFriendsRepository userFriendsReposito
|
|||||||
{
|
{
|
||||||
public override void Configure()
|
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)
|
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);
|
await Send.StringAsync("Cet utilisateur est déjà ami avec cette personne", 400, cancellation: ct);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
userFriend = mapper.Map<UserFriend>(req);
|
userFriend = mapper.Map<UserFriend>(req);
|
||||||
userFriend.UserId = userId;
|
userFriend.UserId = userId;
|
||||||
userFriend.IsAccepted = false;
|
userFriend.IsAccepted = false;
|
||||||
|
|
||||||
await userFriendsRepository.AddAsync(userFriend, ct);
|
await userFriendsRepository.AddAsync(userFriend, ct);
|
||||||
await Send.OkAsync(ct);
|
await Send.OkAsync(ct);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ public class CreateGroupEndpoint(
|
|||||||
group.IsFinished = false;
|
group.IsFinished = false;
|
||||||
group.CreationDate = DateTime.Now;
|
group.CreationDate = DateTime.Now;
|
||||||
group.UserGroups = [];
|
group.UserGroups = [];
|
||||||
|
|
||||||
await groupsRepository.AddAsync(group, ct);
|
await groupsRepository.AddAsync(group, ct);
|
||||||
await groupsRepository.SaveChangesAsync(ct);
|
await groupsRepository.SaveChangesAsync(ct);
|
||||||
|
|
||||||
@@ -56,7 +56,7 @@ public class CreateGroupEndpoint(
|
|||||||
Score = 0
|
Score = 0
|
||||||
};
|
};
|
||||||
group.UserGroups?.Add(userGroup);
|
group.UserGroups?.Add(userGroup);
|
||||||
|
|
||||||
await userGroupsRepository.AddRangeAsync(group.UserGroups!, ct);
|
await userGroupsRepository.AddRangeAsync(group.UserGroups!, ct);
|
||||||
await userGroupsRepository.SaveChangesAsync(ct);
|
await userGroupsRepository.SaveChangesAsync(ct);
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ public class DeleteGroupEndpoint(GroupsRepository groupsRepository, UserGroupsRe
|
|||||||
|
|
||||||
if (group.UserGroups?.Count > 0)
|
if (group.UserGroups?.Count > 0)
|
||||||
await userGroupsRepository.DeleteRangeAsync(group.UserGroups, ct);
|
await userGroupsRepository.DeleteRangeAsync(group.UserGroups, ct);
|
||||||
|
|
||||||
await groupsRepository.DeleteAsync(group, ct);
|
await groupsRepository.DeleteAsync(group, ct);
|
||||||
await userGroupsRepository.SaveChangesAsync(ct);
|
await userGroupsRepository.SaveChangesAsync(ct);
|
||||||
await Send.OkAsync(ct);
|
await Send.OkAsync(ct);
|
||||||
|
|||||||
@@ -14,8 +14,8 @@ public class GroupRankingRequest
|
|||||||
}
|
}
|
||||||
|
|
||||||
public class GetGroupRankingEndpoint(
|
public class GetGroupRankingEndpoint(
|
||||||
GroupsRepository groupsRepository,
|
GroupsRepository groupsRepository,
|
||||||
UsersRepository usersRepository,
|
UsersRepository usersRepository,
|
||||||
UserGroupsRepository userGroupsRepository)
|
UserGroupsRepository userGroupsRepository)
|
||||||
: Endpoint<GroupRankingRequest, List<GetGroupRankingDto>>
|
: Endpoint<GroupRankingRequest, List<GetGroupRankingDto>>
|
||||||
{
|
{
|
||||||
@@ -41,6 +41,7 @@ public class GetGroupRankingEndpoint(
|
|||||||
User? votedUser = await usersRepository.SingleOrDefaultAsync(new GetUserByIdSpec(member.VotedProofId.Value), ct);
|
User? votedUser = await usersRepository.SingleOrDefaultAsync(new GetUserByIdSpec(member.VotedProofId.Value), ct);
|
||||||
if (votedUser is not null) votedUser.Score++;
|
if (votedUser is not null) votedUser.Score++;
|
||||||
}
|
}
|
||||||
|
|
||||||
await usersRepository.SaveChangesAsync(ct);
|
await usersRepository.SaveChangesAsync(ct);
|
||||||
await userGroupsRepository.SaveChangesAsync(ct);
|
await userGroupsRepository.SaveChangesAsync(ct);
|
||||||
|
|
||||||
@@ -52,8 +53,9 @@ public class GetGroupRankingEndpoint(
|
|||||||
User? user = await usersRepository.SingleOrDefaultAsync(new GetUserByIdSpec(groupScore[i].UserId), ct);
|
User? user = await usersRepository.SingleOrDefaultAsync(new GetUserByIdSpec(groupScore[i].UserId), ct);
|
||||||
if (user != null) user.Score += points[i];
|
if (user != null) user.Score += points[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
await usersRepository.SaveChangesAsync(ct);
|
await usersRepository.SaveChangesAsync(ct);
|
||||||
|
|
||||||
await Send.OkAsync(groupScore, ct);
|
await Send.OkAsync(groupScore, ct);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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);
|
await Send.StringAsync("Un utilisateur possède déjà ce pseudo ou cette email", 400, cancellation: ct);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
string salt = new Password().IncludeLowercase().IncludeUppercase().IncludeNumeric().LengthRequired(24).Next();
|
string salt = new Password().IncludeLowercase().IncludeUppercase().IncludeNumeric().LengthRequired(24).Next();
|
||||||
|
|
||||||
user = mapper.Map<User>(req);
|
user = mapper.Map<User>(req);
|
||||||
@@ -38,7 +38,7 @@ public class CreateUserEndpoint(UsersRepository usersRepository, AutoMapper.IMap
|
|||||||
user.TotalPodium = 0;
|
user.TotalPodium = 0;
|
||||||
user.TotalBonusChallenge = 0;
|
user.TotalBonusChallenge = 0;
|
||||||
user.Series = 0;
|
user.Series = 0;
|
||||||
|
|
||||||
await usersRepository.AddAsync(user, ct);
|
await usersRepository.AddAsync(user, ct);
|
||||||
await Send.OkAsync(ct);
|
await Send.OkAsync(ct);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ public class DeleteUserEndpoint(UsersRepository usersRepository, UserService use
|
|||||||
public override async Task HandleAsync(CancellationToken ct)
|
public override async Task HandleAsync(CancellationToken ct)
|
||||||
{
|
{
|
||||||
int userId = userService.GetUserIdFromToken();
|
int userId = userService.GetUserIdFromToken();
|
||||||
|
|
||||||
await usersRepository.DeleteAsync((await usersRepository.SingleOrDefaultAsync(new GetUserByIdSpec(userId), ct))!, ct);
|
await usersRepository.DeleteAsync((await usersRepository.SingleOrDefaultAsync(new GetUserByIdSpec(userId), ct))!, ct);
|
||||||
await Send.OkAsync(ct);
|
await Send.OkAsync(ct);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,11 +13,11 @@ public class GetAllUserChallengesEndpoint(UsersRepository usersRepository, UserS
|
|||||||
{
|
{
|
||||||
Get("/Users/Challenges/");
|
Get("/Users/Challenges/");
|
||||||
}
|
}
|
||||||
|
|
||||||
public override async Task HandleAsync(CancellationToken ct)
|
public override async Task HandleAsync(CancellationToken ct)
|
||||||
{
|
{
|
||||||
int userId = userService.GetUserIdFromToken();
|
int userId = userService.GetUserIdFromToken();
|
||||||
|
|
||||||
User? user = await usersRepository.SingleOrDefaultAsync(new GetProofOrChallengeByUserIdSpec(userId), ct);
|
User? user = await usersRepository.SingleOrDefaultAsync(new GetProofOrChallengeByUserIdSpec(userId), ct);
|
||||||
|
|
||||||
if (user is null)
|
if (user is null)
|
||||||
@@ -25,13 +25,13 @@ public class GetAllUserChallengesEndpoint(UsersRepository usersRepository, UserS
|
|||||||
await Send.NotFoundAsync(ct);
|
await Send.NotFoundAsync(ct);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<GetUserChallengeDto> challenges = [];
|
List<GetUserChallengeDto> challenges = [];
|
||||||
if (user.UserRandomChallenges is not null)
|
if (user.UserRandomChallenges is not null)
|
||||||
challenges.AddRange(user.UserRandomChallenges.Select(x => mapper.Map<GetUserChallengeDto>(x.RandomChallenge)));
|
challenges.AddRange(user.UserRandomChallenges.Select(x => mapper.Map<GetUserChallengeDto>(x.RandomChallenge)));
|
||||||
if (user.UserGroups is not null)
|
if (user.UserGroups is not null)
|
||||||
challenges.AddRange(user.UserGroups.Select(x => mapper.Map<GetUserChallengeDto>(x.Group)));
|
challenges.AddRange(user.UserGroups.Select(x => mapper.Map<GetUserChallengeDto>(x.Group)));
|
||||||
|
|
||||||
await Send.OkAsync(challenges, ct);
|
await Send.OkAsync(challenges, ct);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -13,11 +13,11 @@ public class GetAllUserProofsEndpoint(UsersRepository usersRepository, UserServi
|
|||||||
{
|
{
|
||||||
Get("/Users/Proofs/");
|
Get("/Users/Proofs/");
|
||||||
}
|
}
|
||||||
|
|
||||||
public override async Task HandleAsync(CancellationToken ct)
|
public override async Task HandleAsync(CancellationToken ct)
|
||||||
{
|
{
|
||||||
int userId = userService.GetUserIdFromToken();
|
int userId = userService.GetUserIdFromToken();
|
||||||
|
|
||||||
User? user = await usersRepository.SingleOrDefaultAsync(new GetProofOrChallengeByUserIdSpec(userId), ct);
|
User? user = await usersRepository.SingleOrDefaultAsync(new GetProofOrChallengeByUserIdSpec(userId), ct);
|
||||||
|
|
||||||
if (user is null)
|
if (user is null)
|
||||||
@@ -25,13 +25,13 @@ public class GetAllUserProofsEndpoint(UsersRepository usersRepository, UserServi
|
|||||||
await Send.NotFoundAsync(ct);
|
await Send.NotFoundAsync(ct);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<GetUserProofDto> proofs = [];
|
List<GetUserProofDto> proofs = [];
|
||||||
if (user.UserRandomChallenges is not null)
|
if (user.UserRandomChallenges is not null)
|
||||||
proofs.AddRange(user.UserRandomChallenges.Select(x => mapper.Map<GetUserProofDto>(x.RandomChallenge)));
|
proofs.AddRange(user.UserRandomChallenges.Select(x => mapper.Map<GetUserProofDto>(x.RandomChallenge)));
|
||||||
if (user.UserGroups is not null)
|
if (user.UserGroups is not null)
|
||||||
proofs.AddRange(user.UserGroups.Select(x => mapper.Map<GetUserProofDto>(x.Group)));
|
proofs.AddRange(user.UserGroups.Select(x => mapper.Map<GetUserProofDto>(x.Group)));
|
||||||
|
|
||||||
await Send.OkAsync(proofs, ct);
|
await Send.OkAsync(proofs, ct);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -12,7 +12,7 @@ public class GetAllUsersEndpoint(UsersRepository usersRepository, UserService us
|
|||||||
{
|
{
|
||||||
Get("/Users/");
|
Get("/Users/");
|
||||||
}
|
}
|
||||||
|
|
||||||
public override async Task HandleAsync(CancellationToken ct)
|
public override async Task HandleAsync(CancellationToken ct)
|
||||||
{
|
{
|
||||||
int userId = userService.GetUserIdFromToken();
|
int userId = userService.GetUserIdFromToken();
|
||||||
|
|||||||
@@ -17,9 +17,9 @@ public class GetUserDetailsEndpoint(UsersRepository usersRepository, UserService
|
|||||||
public override async Task HandleAsync(CancellationToken ct)
|
public override async Task HandleAsync(CancellationToken ct)
|
||||||
{
|
{
|
||||||
int userId = userService.GetUserIdFromToken();
|
int userId = userService.GetUserIdFromToken();
|
||||||
|
|
||||||
User? user = await usersRepository.SingleOrDefaultAsync(new GetUserByIdSpec(userId), ct);
|
User? user = await usersRepository.SingleOrDefaultAsync(new GetUserByIdSpec(userId), ct);
|
||||||
|
|
||||||
await Send.OkAsync(mapper.Map<GetUserDetailsDto>(user), ct);
|
await Send.OkAsync(mapper.Map<GetUserDetailsDto>(user), ct);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -16,7 +16,7 @@ public class GetUserEndpoint(UsersRepository usersRepository, UserService userSe
|
|||||||
{
|
{
|
||||||
public override void Configure()
|
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)
|
public override async Task HandleAsync(UserRequest req, CancellationToken ct)
|
||||||
@@ -28,7 +28,7 @@ public class GetUserEndpoint(UsersRepository usersRepository, UserService userSe
|
|||||||
await Send.NotFoundAsync(ct);
|
await Send.NotFoundAsync(ct);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await Send.OkAsync(mapper.Map<GetUserDto>(user), ct);
|
await Send.OkAsync(mapper.Map<GetUserDto>(user), ct);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -17,7 +17,7 @@ public class PatchUserDesignationEndpoint(UsersRepository usersRepository, UserS
|
|||||||
public override async Task HandleAsync(PatchUserDesignationDto req, CancellationToken ct)
|
public override async Task HandleAsync(PatchUserDesignationDto req, CancellationToken ct)
|
||||||
{
|
{
|
||||||
int userId = userService.GetUserIdFromToken();
|
int userId = userService.GetUserIdFromToken();
|
||||||
|
|
||||||
User? user = await usersRepository.SingleOrDefaultAsync(new GetUserByIdSpec(userId), ct);
|
User? user = await usersRepository.SingleOrDefaultAsync(new GetUserByIdSpec(userId), ct);
|
||||||
|
|
||||||
if (user is null)
|
if (user is null)
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ public class PatchUserPasswordEndpoint(UsersRepository usersRepository, UserServ
|
|||||||
public override async Task HandleAsync(PatchUserPasswordDto req, CancellationToken ct)
|
public override async Task HandleAsync(PatchUserPasswordDto req, CancellationToken ct)
|
||||||
{
|
{
|
||||||
int userId = userService.GetUserIdFromToken();
|
int userId = userService.GetUserIdFromToken();
|
||||||
|
|
||||||
User? user = await usersRepository.SingleOrDefaultAsync(new GetUserByIdSpec(userId), ct);
|
User? user = await usersRepository.SingleOrDefaultAsync(new GetUserByIdSpec(userId), ct);
|
||||||
|
|
||||||
if (user is null)
|
if (user is null)
|
||||||
@@ -26,10 +26,10 @@ public class PatchUserPasswordEndpoint(UsersRepository usersRepository, UserServ
|
|||||||
await Send.NotFoundAsync(ct);
|
await Send.NotFoundAsync(ct);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
string salt = new Password().IncludeLowercase().IncludeUppercase().IncludeNumeric().LengthRequired(24).Next();
|
string salt = new Password().IncludeLowercase().IncludeUppercase().IncludeNumeric().LengthRequired(24).Next();
|
||||||
user.Password = BCrypt.Net.BCrypt.HashPassword(req.Password + salt);
|
user.Password = BCrypt.Net.BCrypt.HashPassword(req.Password + salt);
|
||||||
|
|
||||||
await usersRepository.SaveChangesAsync(ct);
|
await usersRepository.SaveChangesAsync(ct);
|
||||||
await Send.OkAsync(ct);
|
await Send.OkAsync(ct);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ public class UpdateUserEndpoint(UsersRepository usersRepository, UserService use
|
|||||||
public override async Task HandleAsync(UpdateUserDto req, CancellationToken ct)
|
public override async Task HandleAsync(UpdateUserDto req, CancellationToken ct)
|
||||||
{
|
{
|
||||||
int userId = userService.GetUserIdFromToken();
|
int userId = userService.GetUserIdFromToken();
|
||||||
|
|
||||||
User? user = await usersRepository.FirstOrDefaultAsync(new GetUserByCriteriaSpec(req.Username!, req.Email!, userId), ct);
|
User? user = await usersRepository.FirstOrDefaultAsync(new GetUserByCriteriaSpec(req.Username!, req.Email!, userId), ct);
|
||||||
|
|
||||||
if (user is not null)
|
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);
|
await Send.StringAsync("Un utilisateur possède déjà ce pseudo ou cette email", 400, cancellation: ct);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
user = await usersRepository.SingleOrDefaultAsync(new GetUserByIdSpec(userId), ct);
|
user = await usersRepository.SingleOrDefaultAsync(new GetUserByIdSpec(userId), ct);
|
||||||
|
|
||||||
if (user is null)
|
if (user is null)
|
||||||
{
|
{
|
||||||
await Send.NotFoundAsync(ct);
|
await Send.NotFoundAsync(ct);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
mapper.Map(req, user);
|
mapper.Map(req, user);
|
||||||
|
|
||||||
await usersRepository.SaveChangesAsync(ct);
|
await usersRepository.SaveChangesAsync(ct);
|
||||||
await Send.OkAsync(ct);
|
await Send.OkAsync(ct);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,17 +9,17 @@ public class GroupHub : Hub
|
|||||||
{
|
{
|
||||||
await Clients.Group($"group-{groupId}").SendAsync("ReceiveProof", proofUrl);
|
await Clients.Group($"group-{groupId}").SendAsync("ReceiveProof", proofUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task SendMessageToGroup(int groupId, string message)
|
public async Task SendMessageToGroup(int groupId, string message)
|
||||||
{
|
{
|
||||||
await Clients.Group($"group-{groupId}").SendAsync("ReceiveMessage", message);
|
await Clients.Group($"group-{groupId}").SendAsync("ReceiveMessage", message);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task StartVoteIntoGroup(int groupId)
|
public async Task StartVoteIntoGroup(int groupId)
|
||||||
{
|
{
|
||||||
await Clients.Group($"group-{groupId}").SendAsync("StartVote");
|
await Clients.Group($"group-{groupId}").SendAsync("StartVote");
|
||||||
}
|
}
|
||||||
|
|
||||||
public override async Task OnConnectedAsync()
|
public override async Task OnConnectedAsync()
|
||||||
{
|
{
|
||||||
HttpContext? httpContext = Context.GetHttpContext();
|
HttpContext? httpContext = Context.GetHttpContext();
|
||||||
@@ -27,6 +27,7 @@ public class GroupHub : Hub
|
|||||||
{
|
{
|
||||||
await Groups.AddToGroupAsync(Context.ConnectionId, $"group-{groupId}");
|
await Groups.AddToGroupAsync(Context.ConnectionId, $"group-{groupId}");
|
||||||
}
|
}
|
||||||
|
|
||||||
await base.OnConnectedAsync();
|
await base.OnConnectedAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -11,12 +11,12 @@ public class DtoToEntityMappings : Profile
|
|||||||
public DtoToEntityMappings()
|
public DtoToEntityMappings()
|
||||||
{
|
{
|
||||||
CreateMap<UnlockAchievementDto, UserAchievement>();
|
CreateMap<UnlockAchievementDto, UserAchievement>();
|
||||||
|
|
||||||
CreateMap<CreateUserDto, User>();
|
CreateMap<CreateUserDto, User>();
|
||||||
CreateMap<UpdateUserDto, User>();
|
CreateMap<UpdateUserDto, User>();
|
||||||
CreateMap<PatchUserDesignationDto, User>();
|
CreateMap<PatchUserDesignationDto, User>();
|
||||||
|
|
||||||
CreateMap<CreateGroupDto, Group>()
|
CreateMap<CreateGroupDto, Group>()
|
||||||
.ForMember(dest => dest.UserGroups, opt => opt.Ignore());
|
.ForMember(dest => dest.UserGroups, opt => opt.Ignore());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -19,22 +19,22 @@ public class EntityToDtoMappings : Profile
|
|||||||
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Achievement!.Id))
|
.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.Label, opt => opt.MapFrom(src => src.Achievement!.Label))
|
||||||
.ForMember(dest => dest.Description, opt => opt.MapFrom(src => src.Achievement!.Description));
|
.ForMember(dest => dest.Description, opt => opt.MapFrom(src => src.Achievement!.Description));
|
||||||
|
|
||||||
CreateMap<User, GetUserDto>()
|
CreateMap<User, GetUserDto>()
|
||||||
.ForMember(dest => dest.GetUserStatsDto, opt => opt.MapFrom(src => src));
|
.ForMember(dest => dest.GetUserStatsDto, opt => opt.MapFrom(src => src));
|
||||||
|
|
||||||
CreateMap<User, GetUserDetailsDto>()
|
CreateMap<User, GetUserDetailsDto>()
|
||||||
.ForMember(dest => dest.GetUserStatsDto, opt => opt.MapFrom(src => src));
|
.ForMember(dest => dest.GetUserStatsDto, opt => opt.MapFrom(src => src));
|
||||||
|
|
||||||
CreateMap<User, GetUserStatsDto>();
|
CreateMap<User, GetUserStatsDto>();
|
||||||
|
|
||||||
CreateMap<UserGroup, GetUserProofDto>();
|
CreateMap<UserGroup, GetUserProofDto>();
|
||||||
CreateMap<UserRandomChallenge, GetUserProofDto>();
|
CreateMap<UserRandomChallenge, GetUserProofDto>();
|
||||||
|
|
||||||
CreateMap<RandomChallenge, GetUserChallengeDto>()
|
CreateMap<RandomChallenge, GetUserChallengeDto>()
|
||||||
.ForMember(dest => dest.ChallengeTitle, opt => opt.MapFrom(src => src.Libelle))
|
.ForMember(dest => dest.ChallengeTitle, opt => opt.MapFrom(src => src.Libelle))
|
||||||
.ForMember(dest => dest.ChallengeDuration, opt => opt.MapFrom(src => src.Duration));
|
.ForMember(dest => dest.ChallengeDuration, opt => opt.MapFrom(src => src.Duration));
|
||||||
|
|
||||||
CreateMap<Group, GetUserChallengeDto>()
|
CreateMap<Group, GetUserChallengeDto>()
|
||||||
.ForMember(dest => dest.ChallengeTitle, opt => opt.MapFrom(src => src.Title))
|
.ForMember(dest => dest.ChallengeTitle, opt => opt.MapFrom(src => src.Title))
|
||||||
.ForMember(dest => dest.ChallengeDescription, opt => opt.MapFrom(src => src.Description))
|
.ForMember(dest => dest.ChallengeDescription, opt => opt.MapFrom(src => src.Description))
|
||||||
@@ -43,7 +43,7 @@ public class EntityToDtoMappings : Profile
|
|||||||
CreateMap<UserFriend, GetFriendDto>()
|
CreateMap<UserFriend, GetFriendDto>()
|
||||||
.ForMember(dest => dest.Username, opt => opt.MapFrom(src => src.Friend!.Username))
|
.ForMember(dest => dest.Username, opt => opt.MapFrom(src => src.Friend!.Username))
|
||||||
.ForMember(dest => dest.Score, opt => opt.MapFrom(src => src.Friend!.Score));
|
.ForMember(dest => dest.Score, opt => opt.MapFrom(src => src.Friend!.Score));
|
||||||
|
|
||||||
CreateMap<UserFriend, GetFriendRequestDto>()
|
CreateMap<UserFriend, GetFriendRequestDto>()
|
||||||
.ForMember(dest => dest.Username, opt => opt.MapFrom(src => src.User!.Username))
|
.ForMember(dest => dest.Username, opt => opt.MapFrom(src => src.User!.Username))
|
||||||
.ForMember(dest => dest.Score, opt => opt.MapFrom(src => src.User!.Score));
|
.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.Id, opt => opt.MapFrom(src => src.GroupId))
|
||||||
.ForMember(dest => dest.Label, opt => opt.MapFrom(src => src.Group!.Label))
|
.ForMember(dest => dest.Label, opt => opt.MapFrom(src => src.Group!.Label))
|
||||||
.ForMember(dest => dest.IsFinished, opt => opt.MapFrom(src => src.Group!.IsFinished));
|
.ForMember(dest => dest.IsFinished, opt => opt.MapFrom(src => src.Group!.IsFinished));
|
||||||
|
|
||||||
CreateMap<Group, GetGroupDetailsDto>()
|
CreateMap<Group, GetGroupDetailsDto>()
|
||||||
.ForMember(dest => dest.Users, opt => opt.MapFrom(src => src.UserGroups))
|
.ForMember(dest => dest.Users, opt => opt.MapFrom(src => src.UserGroups))
|
||||||
.ForMember(dest => dest.Messages, opt => opt.MapFrom(src => src.Messages));
|
.ForMember(dest => dest.Messages, opt => opt.MapFrom(src => src.Messages));
|
||||||
|
|
||||||
CreateMap<Message, GetMessageDto>()
|
CreateMap<Message, GetMessageDto>()
|
||||||
.ForMember(dest => dest.Username, opt => opt.MapFrom(src => src.User!.Username));
|
.ForMember(dest => dest.Username, opt => opt.MapFrom(src => src.User!.Username));
|
||||||
|
|
||||||
CreateMap<UserGroup, GetProofDto>()
|
CreateMap<UserGroup, GetProofDto>()
|
||||||
.ForMember(dest => dest.Username, opt => opt.MapFrom(src => src.User!.Username));
|
.ForMember(dest => dest.Username, opt => opt.MapFrom(src => src.User!.Username));
|
||||||
|
|
||||||
CreateMap<UserGroup, GetGroupRankingDto>()
|
CreateMap<UserGroup, GetGroupRankingDto>()
|
||||||
.ForMember(dest => dest.Username, opt => opt.MapFrom(src => src.User!.Username));
|
.ForMember(dest => dest.Username, opt => opt.MapFrom(src => src.User!.Username));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,6 @@ public class Achievement
|
|||||||
[Key] public int Id { get; set; }
|
[Key] public int Id { get; set; }
|
||||||
[Required] public string? Label { get; set; }
|
[Required] public string? Label { get; set; }
|
||||||
[Required] public string? Description { get; set; }
|
[Required] public string? Description { get; set; }
|
||||||
|
|
||||||
public List<UserAchievement>? UserAchievements { get; set; }
|
public List<UserAchievement>? UserAchievements { get; set; }
|
||||||
}
|
}
|
||||||
@@ -6,6 +6,6 @@ public class Designation
|
|||||||
{
|
{
|
||||||
[Key] public int Id { get; set; }
|
[Key] public int Id { get; set; }
|
||||||
[Required] public string? Label { get; set; }
|
[Required] public string? Label { get; set; }
|
||||||
|
|
||||||
public List<User>? Users { get; set; }
|
public List<User>? Users { get; set; }
|
||||||
}
|
}
|
||||||
@@ -7,12 +7,12 @@ public class Group
|
|||||||
[Key] public int Id { get; set; }
|
[Key] public int Id { get; set; }
|
||||||
[Required, MaxLength(100)] public string? Label { get; set; }
|
[Required, MaxLength(100)] public string? Label { get; set; }
|
||||||
[Required] public bool IsFinished { get; set; }
|
[Required] public bool IsFinished { get; set; }
|
||||||
|
|
||||||
[Required] public string? Title { get; set; }
|
[Required] public string? Title { get; set; }
|
||||||
[Required] public string? Description { get; set; }
|
[Required] public string? Description { get; set; }
|
||||||
[Required] public int Duration { get; set; }
|
[Required] public int Duration { get; set; }
|
||||||
[Required] public DateTime CreationDate { get; set; }
|
[Required] public DateTime CreationDate { get; set; }
|
||||||
|
|
||||||
public List<Message>? Messages { get; set; }
|
public List<Message>? Messages { get; set; }
|
||||||
public List<UserGroup>? UserGroups { get; set; }
|
public List<UserGroup>? UserGroups { get; set; }
|
||||||
}
|
}
|
||||||
@@ -7,10 +7,10 @@ public class Message
|
|||||||
[Key] public int Id { get; set; }
|
[Key] public int Id { get; set; }
|
||||||
[Required] public string? Libelle { get; set; }
|
[Required] public string? Libelle { get; set; }
|
||||||
[Required] public DateTime SendDate { get; set; }
|
[Required] public DateTime SendDate { get; set; }
|
||||||
|
|
||||||
public User? User { get; set; }
|
public User? User { get; set; }
|
||||||
[Required] public int UserId { get; set; }
|
[Required] public int UserId { get; set; }
|
||||||
|
|
||||||
public Group? Group { get; set; }
|
public Group? Group { get; set; }
|
||||||
[Required] public int GroupId { get; set; }
|
[Required] public int GroupId { get; set; }
|
||||||
}
|
}
|
||||||
@@ -6,8 +6,8 @@ public class RandomChallenge
|
|||||||
{
|
{
|
||||||
[Key] public int Id { get; set; }
|
[Key] public int Id { get; set; }
|
||||||
[Required] public string? Libelle { 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; }
|
[Required] public bool IsAlreadyPast { get; set; }
|
||||||
|
|
||||||
public List<UserRandomChallenge>? UserRandomChallenges { get; set; }
|
public List<UserRandomChallenge>? UserRandomChallenges { get; set; }
|
||||||
}
|
}
|
||||||
@@ -12,16 +12,16 @@ public class User
|
|||||||
[Required] public DateTime CreationDate { get; set; }
|
[Required] public DateTime CreationDate { get; set; }
|
||||||
[Required, MaxLength(60)] public string? Password { get; set; }
|
[Required, MaxLength(60)] public string? Password { get; set; }
|
||||||
[Required] public string? Salt { 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 TotalWin { get; set; }
|
||||||
[Required] public int TotalChallenge { get; set; }
|
[Required] public int TotalChallenge { get; set; }
|
||||||
[Required] public int TotalPodium { get; set; }
|
[Required] public int TotalPodium { get; set; }
|
||||||
[Required] public int TotalBonusChallenge { get; set; }
|
[Required] public int TotalBonusChallenge { get; set; }
|
||||||
[Required] public int Series { get; set; }
|
[Required] public int Series { get; set; }
|
||||||
|
|
||||||
public Designation? Designation { get; set; }
|
public Designation? Designation { get; set; }
|
||||||
public int? DesignationId { get; set; }
|
public int? DesignationId { get; set; }
|
||||||
|
|
||||||
public List<UserFriend>? UserFriends { get; set; }
|
public List<UserFriend>? UserFriends { get; set; }
|
||||||
public List<Message>? Messages { get; set; }
|
public List<Message>? Messages { get; set; }
|
||||||
public List<UserRandomChallenge>? UserRandomChallenges { get; set; }
|
public List<UserRandomChallenge>? UserRandomChallenges { get; set; }
|
||||||
|
|||||||
@@ -12,6 +12,6 @@ public class UserFriend
|
|||||||
|
|
||||||
public User? Friend { get; set; }
|
public User? Friend { get; set; }
|
||||||
public int FriendId { get; set; }
|
public int FriendId { get; set; }
|
||||||
|
|
||||||
[Required] public bool IsAccepted { get; set; }
|
[Required] public bool IsAccepted { get; set; }
|
||||||
}
|
}
|
||||||
@@ -11,9 +11,9 @@ public class UserGroup
|
|||||||
|
|
||||||
public Group? Group { get; set; }
|
public Group? Group { get; set; }
|
||||||
[Required] public int GroupId { get; set; }
|
[Required] public int GroupId { get; set; }
|
||||||
|
|
||||||
public string? Proof { get; set; }
|
public string? Proof { get; set; }
|
||||||
|
|
||||||
[Required] public string? Grade { get; set; }
|
[Required] public string? Grade { get; set; }
|
||||||
public int? VotedProofId { get; set; }
|
public int? VotedProofId { get; set; }
|
||||||
[Required] public int Score { get; set; }
|
[Required] public int Score { get; set; }
|
||||||
|
|||||||
@@ -11,6 +11,6 @@ public class UserRandomChallenge
|
|||||||
|
|
||||||
public RandomChallenge? RandomChallenge { get; set; }
|
public RandomChallenge? RandomChallenge { get; set; }
|
||||||
[Required] public int RandomChallengeId { get; set; }
|
[Required] public int RandomChallengeId { get; set; }
|
||||||
|
|
||||||
public string? Proof { get; set; }
|
public string? Proof { get; set; }
|
||||||
}
|
}
|
||||||
@@ -6,16 +6,16 @@ namespace BeReadyBackend.Services;
|
|||||||
public class UserService
|
public class UserService
|
||||||
{
|
{
|
||||||
private readonly IHttpContextAccessor _httpContextAccessor;
|
private readonly IHttpContextAccessor _httpContextAccessor;
|
||||||
|
|
||||||
public UserService(IHttpContextAccessor httpContextAccessor)
|
public UserService(IHttpContextAccessor httpContextAccessor)
|
||||||
{
|
{
|
||||||
_httpContextAccessor = httpContextAccessor;
|
_httpContextAccessor = httpContextAccessor;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int GetUserIdFromToken()
|
public int GetUserIdFromToken()
|
||||||
{
|
{
|
||||||
ClaimsPrincipal user = _httpContextAccessor.HttpContext!.User;
|
ClaimsPrincipal user = _httpContextAccessor.HttpContext!.User;
|
||||||
string? userId = user.Claims.FirstOrDefault(x => x.Type == "UserId")?.Value;
|
string? userId = user.Claims.FirstOrDefault(x => x.Type == "UserId")?.Value;
|
||||||
return int.Parse(userId!);
|
return int.Parse(userId!);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -9,6 +9,5 @@ public class GetLockedAchievementsSpec : Specification<Achievement>
|
|||||||
{
|
{
|
||||||
Query
|
Query
|
||||||
.Where(x => x.UserAchievements != null && x.UserAchievements.All(y => y.UserId != userId));
|
.Where(x => x.UserAchievements != null && x.UserAchievements.All(y => y.UserId != userId));
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,7 +5,7 @@ namespace BeReadyBackend.Specifications.Groups;
|
|||||||
|
|
||||||
public class GetGroupsByUserIdSpec : Specification<UserGroup>
|
public class GetGroupsByUserIdSpec : Specification<UserGroup>
|
||||||
{
|
{
|
||||||
public GetGroupsByUserIdSpec(int userId)
|
public GetGroupsByUserIdSpec(int userId)
|
||||||
{
|
{
|
||||||
Query
|
Query
|
||||||
.Include(x => x.Group)
|
.Include(x => x.Group)
|
||||||
|
|||||||
Reference in New Issue
Block a user