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<UserGroup> UserGroups { get; set; }
|
||||
public DbSet<UserRandomChallenge> 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<UserFriend>()
|
||||
|
||||
@@ -11,7 +11,7 @@ public class GetGroupDetailsDto
|
||||
public string? Description { get; set; }
|
||||
public int Duration { get; set; }
|
||||
public DateTime CreationDate { get; set; }
|
||||
|
||||
|
||||
public List<GetMessageDto>? Messages { get; set; }
|
||||
public List<GetUserGroupDto>? Users { get; set; }
|
||||
}
|
||||
@@ -8,5 +8,4 @@ public class GetUserDto
|
||||
public string? Username { get; set; }
|
||||
public int DesignationId { get; set; }
|
||||
public GetUserStatsDto? GetUserStatsDto { get; set; }
|
||||
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
namespace BeReadyBackend.DTO.Users;
|
||||
|
||||
public class PatchUserPasswordDto
|
||||
{
|
||||
{
|
||||
public string? Password { get; set; }
|
||||
}
|
||||
@@ -19,9 +19,9 @@ public class GetLockedAchievementsEndpoint(
|
||||
public override async Task HandleAsync(CancellationToken ct)
|
||||
{
|
||||
int userId = userService.GetUserIdFromToken();
|
||||
|
||||
|
||||
List<GetAchievementDto> achievementsLocked = await achievementsRepository.ProjectToListAsync<GetAchievementDto>(new GetLockedAchievementsSpec(userId), ct);
|
||||
|
||||
|
||||
await Send.OkAsync(achievementsLocked, ct);
|
||||
}
|
||||
}
|
||||
@@ -15,13 +15,13 @@ public class GetUserAchievementsEndpoint(
|
||||
{
|
||||
Get("/Achievements/Users/");
|
||||
}
|
||||
|
||||
|
||||
public override async Task HandleAsync(CancellationToken ct)
|
||||
{
|
||||
int userId = userService.GetUserIdFromToken();
|
||||
|
||||
List<GetAchievementDto> userAchievements = await userAchievementsRepository.ProjectToListAsync<GetAchievementDto>(new GetUserAchievementByUserIdSpec(userId), ct);
|
||||
|
||||
|
||||
await Send.OkAsync(userAchievements, ct);
|
||||
}
|
||||
}
|
||||
@@ -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<UserAchievement>(req), ct);
|
||||
await Send.OkAsync(ct);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -6,7 +6,8 @@ using FastEndpoints;
|
||||
|
||||
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()
|
||||
{
|
||||
@@ -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<GetFriendRequestDto>(new GetFriendRequestSpec(userId), ct), ct);
|
||||
}
|
||||
}
|
||||
@@ -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<GetFriendDto>(new GetFriendsByUserIdSpec(userId), ct), ct);
|
||||
}
|
||||
}
|
||||
@@ -28,7 +28,7 @@ public class RejectFriendRequestEndpoint(UserService userService, UserFriendsRep
|
||||
await Send.NotFoundAsync(ct);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
await userFriendsRepository.DeleteAsync(userFriend, ct);
|
||||
await Send.OkAsync(ct);
|
||||
}
|
||||
|
||||
@@ -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<UserFriend>(req);
|
||||
userFriend.UserId = userId;
|
||||
userFriend.IsAccepted = false;
|
||||
|
||||
|
||||
await userFriendsRepository.AddAsync(userFriend, ct);
|
||||
await Send.OkAsync(ct);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -14,8 +14,8 @@ public class GroupRankingRequest
|
||||
}
|
||||
|
||||
public class GetGroupRankingEndpoint(
|
||||
GroupsRepository groupsRepository,
|
||||
UsersRepository usersRepository,
|
||||
GroupsRepository groupsRepository,
|
||||
UsersRepository usersRepository,
|
||||
UserGroupsRepository userGroupsRepository)
|
||||
: Endpoint<GroupRankingRequest, List<GetGroupRankingDto>>
|
||||
{
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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<User>(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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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<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)));
|
||||
if (user.UserGroups is not null)
|
||||
challenges.AddRange(user.UserGroups.Select(x => mapper.Map<GetUserChallengeDto>(x.Group)));
|
||||
|
||||
|
||||
await Send.OkAsync(challenges, ct);
|
||||
}
|
||||
}
|
||||
@@ -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<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)));
|
||||
if (user.UserGroups is not null)
|
||||
proofs.AddRange(user.UserGroups.Select(x => mapper.Map<GetUserProofDto>(x.Group)));
|
||||
|
||||
|
||||
await Send.OkAsync(proofs, ct);
|
||||
}
|
||||
}
|
||||
@@ -12,7 +12,7 @@ public class GetAllUsersEndpoint(UsersRepository usersRepository, UserService us
|
||||
{
|
||||
Get("/Users/");
|
||||
}
|
||||
|
||||
|
||||
public override async Task HandleAsync(CancellationToken ct)
|
||||
{
|
||||
int userId = userService.GetUserIdFromToken();
|
||||
|
||||
@@ -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<GetUserDetailsDto>(user), ct);
|
||||
}
|
||||
}
|
||||
@@ -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<GetUserDto>(user), ct);
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -11,12 +11,12 @@ public class DtoToEntityMappings : Profile
|
||||
public DtoToEntityMappings()
|
||||
{
|
||||
CreateMap<UnlockAchievementDto, UserAchievement>();
|
||||
|
||||
|
||||
CreateMap<CreateUserDto, User>();
|
||||
CreateMap<UpdateUserDto, User>();
|
||||
CreateMap<PatchUserDesignationDto, User>();
|
||||
|
||||
CreateMap<CreateGroupDto, Group>()
|
||||
|
||||
CreateMap<CreateGroupDto, Group>()
|
||||
.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.Label, opt => opt.MapFrom(src => src.Achievement!.Label))
|
||||
.ForMember(dest => dest.Description, opt => opt.MapFrom(src => src.Achievement!.Description));
|
||||
|
||||
|
||||
CreateMap<User, GetUserDto>()
|
||||
.ForMember(dest => dest.GetUserStatsDto, opt => opt.MapFrom(src => src));
|
||||
|
||||
|
||||
CreateMap<User, GetUserDetailsDto>()
|
||||
.ForMember(dest => dest.GetUserStatsDto, opt => opt.MapFrom(src => src));
|
||||
|
||||
|
||||
CreateMap<User, GetUserStatsDto>();
|
||||
|
||||
|
||||
CreateMap<UserGroup, GetUserProofDto>();
|
||||
CreateMap<UserRandomChallenge, GetUserProofDto>();
|
||||
|
||||
CreateMap<RandomChallenge, GetUserChallengeDto>()
|
||||
.ForMember(dest => dest.ChallengeTitle, opt => opt.MapFrom(src => src.Libelle))
|
||||
.ForMember(dest => dest.ChallengeDuration, opt => opt.MapFrom(src => src.Duration));
|
||||
|
||||
|
||||
CreateMap<Group, GetUserChallengeDto>()
|
||||
.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<UserFriend, GetFriendDto>()
|
||||
.ForMember(dest => dest.Username, opt => opt.MapFrom(src => src.Friend!.Username))
|
||||
.ForMember(dest => dest.Score, opt => opt.MapFrom(src => src.Friend!.Score));
|
||||
|
||||
|
||||
CreateMap<UserFriend, GetFriendRequestDto>()
|
||||
.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<Group, GetGroupDetailsDto>()
|
||||
.ForMember(dest => dest.Users, opt => opt.MapFrom(src => src.UserGroups))
|
||||
.ForMember(dest => dest.Messages, opt => opt.MapFrom(src => src.Messages));
|
||||
|
||||
|
||||
CreateMap<Message, GetMessageDto>()
|
||||
.ForMember(dest => dest.Username, opt => opt.MapFrom(src => src.User!.Username));
|
||||
|
||||
CreateMap<UserGroup, GetProofDto>()
|
||||
.ForMember(dest => dest.Username, opt => opt.MapFrom(src => src.User!.Username));
|
||||
|
||||
|
||||
CreateMap<UserGroup, GetGroupRankingDto>()
|
||||
.ForMember(dest => dest.Username, opt => opt.MapFrom(src => src.User!.Username));
|
||||
}
|
||||
|
||||
@@ -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<UserAchievement>? UserAchievements { get; set; }
|
||||
}
|
||||
@@ -6,6 +6,6 @@ public class Designation
|
||||
{
|
||||
[Key] public int Id { get; set; }
|
||||
[Required] public string? Label { get; set; }
|
||||
|
||||
|
||||
public List<User>? Users { get; set; }
|
||||
}
|
||||
@@ -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<Message>? Messages { get; set; }
|
||||
public List<UserGroup>? UserGroups { get; set; }
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
@@ -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<UserRandomChallenge>? UserRandomChallenges { get; set; }
|
||||
}
|
||||
@@ -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<UserFriend>? UserFriends { get; set; }
|
||||
public List<Message>? Messages { get; set; }
|
||||
public List<UserRandomChallenge>? UserRandomChallenges { get; set; }
|
||||
|
||||
@@ -12,6 +12,6 @@ public class UserFriend
|
||||
|
||||
public User? Friend { get; set; }
|
||||
public int FriendId { get; set; }
|
||||
|
||||
|
||||
[Required] public bool IsAccepted { get; set; }
|
||||
}
|
||||
@@ -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; }
|
||||
|
||||
@@ -11,6 +11,6 @@ public class UserRandomChallenge
|
||||
|
||||
public RandomChallenge? RandomChallenge { get; set; }
|
||||
[Required] public int RandomChallengeId { get; set; }
|
||||
|
||||
|
||||
public string? Proof { get; set; }
|
||||
}
|
||||
@@ -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!);
|
||||
}
|
||||
}
|
||||
@@ -9,6 +9,5 @@ public class GetLockedAchievementsSpec : Specification<Achievement>
|
||||
{
|
||||
Query
|
||||
.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 GetGroupsByUserIdSpec(int userId)
|
||||
public GetGroupsByUserIdSpec(int userId)
|
||||
{
|
||||
Query
|
||||
.Include(x => x.Group)
|
||||
|
||||
Reference in New Issue
Block a user