Files
BeReadyBackend/BeReadyBackend/Endpoints/Achievements/GetUserAchievementsEndpoint.cs
T

41 lines
1.3 KiB
C#

using BeReadyBackend.DTO.Achievements;
using BeReadyBackend.Models;
using BeReadyBackend.Repositories;
using BeReadyBackend.Specifications.Achievements;
using BeReadyBackend.Specifications.UserAchievements;
using BeReadyBackend.Specifications.Users;
using FastEndpoints;
namespace BeReadyBackend.Endpoints.Achievements;
public class UserAchievementsRequest
{
public int UserId { get; set; }
}
public class GetUserAchievementsEndpoint(
UsersRepository usersRepository,
UserAchievementsRepository userAchievementsRepository)
: Endpoint<UserAchievementsRequest, List<GetSuccessDto>>
{
public override void Configure()
{
Get("/Achievements/Users/{@UserId}/", x => new {x.UserId});
AllowAnonymous();
}
public override async Task HandleAsync(UserAchievementsRequest req, CancellationToken ct)
{
User? user = await usersRepository.SingleOrDefaultAsync(new GetUserByIdSpec(req.UserId), ct);
if (user is null)
{
await Send.NotFoundAsync(ct);
return;
}
List<GetSuccessDto> userAchievements = await userAchievementsRepository.ProjectToListAsync<GetSuccessDto>(new GetUserAchievementByUserIdSpec(req.UserId), ct);
await Send.OkAsync(userAchievements, ct);
}
}