55 lines
1.8 KiB
C#
55 lines
1.8 KiB
C#
using BeReadyBackend.Models;
|
|
using BeReadyBackend.Repositories;
|
|
using BeReadyBackend.Specifications.RandomChallenges;
|
|
using BeReadyBackend.Specifications.Users;
|
|
using FastEndpoints;
|
|
|
|
namespace BeReadyBackend.Endpoints.RandomChallenges;
|
|
|
|
public class GenerateRandomChallengeEndpoint(
|
|
RandomChallengesRepository randomChallengesRepository,
|
|
UserRandomChallengesRepository userRandomChallengesRepository,
|
|
UsersRepository usersRepository)
|
|
: EndpointWithoutRequest
|
|
{
|
|
public override void Configure()
|
|
{
|
|
Post("/RandomChallenges/");
|
|
}
|
|
|
|
public override async Task HandleAsync(CancellationToken ct)
|
|
{
|
|
RandomChallenge? randomChallenge = await randomChallengesRepository.FirstOrDefaultAsync(new GetRandomChallengesNotAlreadyPastSpec(), ct);
|
|
if (randomChallenge is null)
|
|
{
|
|
await Send.StringAsync("Il n'y a plus de défis en stock", 500, cancellation: ct);
|
|
return;
|
|
}
|
|
|
|
List<User> userList = await usersRepository.ListAsync(new GetAllUsersSpec(), ct);
|
|
|
|
// foreach (User user in userList)
|
|
// {
|
|
// UserRandomChallenge userRandomChallenge = new()
|
|
// {
|
|
// UserId = user.Id,
|
|
// RandomChallengeId = randomChallenge.Id
|
|
// };
|
|
//
|
|
// await userRandomChallengesRepository.AddAsync(userRandomChallenge, ct);
|
|
// }
|
|
|
|
List<UserRandomChallenge> userRandomChallenges = userList.Select(user => new UserRandomChallenge
|
|
{
|
|
UserId = user.Id,
|
|
RandomChallengeId = randomChallenge.Id
|
|
}).ToList();
|
|
|
|
await userRandomChallengesRepository.AddRangeAsync(userRandomChallenges, ct);
|
|
|
|
randomChallenge.IsAlreadyPast = true;
|
|
await randomChallengesRepository.SaveChangesAsync(ct);
|
|
|
|
await Send.NoContentAsync(ct);
|
|
}
|
|
} |