Fixed errors and created endpoint to see locked achievement of selected user
This commit is contained in:
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
namespace BeReadyBackend.DTO.Achievements;
|
namespace BeReadyBackend.DTO.Achievements;
|
||||||
|
|
||||||
public class GetSuccessDto
|
public class GetAchievementDto
|
||||||
{
|
{
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
public string? Label { get; set; }
|
public string? Label { get; set; }
|
||||||
@@ -4,7 +4,7 @@ using FastEndpoints;
|
|||||||
|
|
||||||
namespace BeReadyBackend.Endpoints.Achievements;
|
namespace BeReadyBackend.Endpoints.Achievements;
|
||||||
|
|
||||||
public class GetAllAchievementsEndpoint(AchievementsRepository achievementsRepository) : EndpointWithoutRequest<List<GetSuccessDto>>
|
public class GetAllAchievementsEndpoint(AchievementsRepository achievementsRepository) : EndpointWithoutRequest<List<GetAchievementDto>>
|
||||||
{
|
{
|
||||||
public override void Configure()
|
public override void Configure()
|
||||||
{
|
{
|
||||||
@@ -14,6 +14,6 @@ public class GetAllAchievementsEndpoint(AchievementsRepository achievementsRepos
|
|||||||
|
|
||||||
public override async Task HandleAsync(CancellationToken ct)
|
public override async Task HandleAsync(CancellationToken ct)
|
||||||
{
|
{
|
||||||
await Send.OkAsync(await achievementsRepository.ProjectToListAsync<GetSuccessDto>(ct), ct);
|
await Send.OkAsync(await achievementsRepository.ProjectToListAsync<GetAchievementDto>(ct), ct);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
using BeReadyBackend.DTO.Achievements;
|
||||||
|
using BeReadyBackend.Models;
|
||||||
|
using BeReadyBackend.Repositories;
|
||||||
|
using BeReadyBackend.Specifications.Achievements;
|
||||||
|
using BeReadyBackend.Specifications.Users;
|
||||||
|
using FastEndpoints;
|
||||||
|
|
||||||
|
namespace BeReadyBackend.Endpoints.Achievements;
|
||||||
|
|
||||||
|
public class UserAchievementsLockedRequest
|
||||||
|
{
|
||||||
|
public int UserId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class GetLockedAchievementsEndpoint(
|
||||||
|
UsersRepository usersRepository,
|
||||||
|
AchievementsRepository achievementsRepository)
|
||||||
|
: Endpoint<UserAchievementsLockedRequest, List<GetAchievementDto>>
|
||||||
|
{
|
||||||
|
public override void Configure()
|
||||||
|
{
|
||||||
|
Get("/Achievements/Locked/Users/{@UserId}/", x => new {x.UserId});
|
||||||
|
AllowAnonymous();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override async Task HandleAsync(UserAchievementsLockedRequest req, CancellationToken ct)
|
||||||
|
{
|
||||||
|
User? user = await usersRepository.SingleOrDefaultAsync(new GetUserByIdSpec(req.UserId), ct);
|
||||||
|
|
||||||
|
if (user is null)
|
||||||
|
{
|
||||||
|
await Send.NotFoundAsync(ct);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<GetAchievementDto> achievementsLocked = await achievementsRepository.ProjectToListAsync<GetAchievementDto>(new GetLockedAchievementsSpec(req.UserId), ct);
|
||||||
|
|
||||||
|
await Send.OkAsync(achievementsLocked, ct);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
using BeReadyBackend.DTO.Achievements;
|
using BeReadyBackend.DTO.Achievements;
|
||||||
using BeReadyBackend.Models;
|
using BeReadyBackend.Models;
|
||||||
using BeReadyBackend.Repositories;
|
using BeReadyBackend.Repositories;
|
||||||
using BeReadyBackend.Specifications.Achievements;
|
|
||||||
using BeReadyBackend.Specifications.UserAchievements;
|
using BeReadyBackend.Specifications.UserAchievements;
|
||||||
using BeReadyBackend.Specifications.Users;
|
using BeReadyBackend.Specifications.Users;
|
||||||
using FastEndpoints;
|
using FastEndpoints;
|
||||||
@@ -16,7 +15,7 @@ public class UserAchievementsRequest
|
|||||||
public class GetUserAchievementsEndpoint(
|
public class GetUserAchievementsEndpoint(
|
||||||
UsersRepository usersRepository,
|
UsersRepository usersRepository,
|
||||||
UserAchievementsRepository userAchievementsRepository)
|
UserAchievementsRepository userAchievementsRepository)
|
||||||
: Endpoint<UserAchievementsRequest, List<GetSuccessDto>>
|
: Endpoint<UserAchievementsRequest, List<GetAchievementDto>>
|
||||||
{
|
{
|
||||||
public override void Configure()
|
public override void Configure()
|
||||||
{
|
{
|
||||||
@@ -34,7 +33,7 @@ public class GetUserAchievementsEndpoint(
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<GetSuccessDto> userAchievements = await userAchievementsRepository.ProjectToListAsync<GetSuccessDto>(new GetUserAchievementByUserIdSpec(req.UserId), ct);
|
List<GetAchievementDto> userAchievements = await userAchievementsRepository.ProjectToListAsync<GetAchievementDto>(new GetUserAchievementByUserIdSpec(req.UserId), ct);
|
||||||
|
|
||||||
await Send.OkAsync(userAchievements, ct);
|
await Send.OkAsync(userAchievements, ct);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,9 +8,9 @@ public class EntityToDtoMappings : Profile
|
|||||||
{
|
{
|
||||||
public EntityToDtoMappings()
|
public EntityToDtoMappings()
|
||||||
{
|
{
|
||||||
CreateMap<Achievement, GetSuccessDto>();
|
CreateMap<Achievement, GetAchievementDto>();
|
||||||
|
|
||||||
CreateMap<UserAchievement, GetSuccessDto>()
|
CreateMap<UserAchievement, GetAchievementDto>()
|
||||||
.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));
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
using Ardalis.Specification;
|
||||||
|
using BeReadyBackend.Models;
|
||||||
|
|
||||||
|
namespace BeReadyBackend.Specifications.Achievements;
|
||||||
|
|
||||||
|
public class GetLockedAchievementsSpec : Specification<Achievement>
|
||||||
|
{
|
||||||
|
public GetLockedAchievementsSpec(int userId)
|
||||||
|
{
|
||||||
|
Query
|
||||||
|
.Where(x => x.UserAchievements != null && x.UserAchievements.All(y => y.UserId != userId));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user