using API.DTO.Movement.Response; using FastEndpoints; using Microsoft.EntityFrameworkCore; namespace PyroFetes.Endpoints.Movement; public class GetMovementRequest { public int Id { get; set; } } public class GetMovementEndpoint(PyroFetesDbContext pyrofetesdbcontext) :Endpoint { public override void Configure() //Configuration de l'endpoint { Get("/api/movements/{@id}", x => new { x.Id }); //Création d'un endpoint qui récupère un mouvement grâce à son id AllowAnonymous(); //Ignorer les requêtes non authentifiées } public override async Task HandleAsync(GetMovementRequest req, CancellationToken ct) //Méthode asynchrone qui traite la récupération du mouvement { Models.Movement? movement = await pyrofetesdbcontext //Récupère un mouvement dans la bdd et le stocke dans movement .Movements //Recherche la couleur dans la table Movements .SingleOrDefaultAsync(a => a.Id == req.Id, cancellationToken: ct);//Recherche un mouvement dont l'id correspond à req.Id if (movement == null) //Si le mouvement n'est pas trouvé { Console.WriteLine($"Aucun mouvement avec l'ID {req.Id} trouvé."); //Affiche aucun mouvement avec l'id ... trouvé await Send.NotFoundAsync(ct); //Renvoie une erreur 404 return; //Arrêt de la méthode } GetMovementDto responseDto = new() //Constuire l'objet de réponse pour retourner les informations à l'utilisateur { Id = req.Id, //Affiche l'id lors de la réponse Date = movement.Date, //Affiche date lors de la réponse Start = movement.Start, //Affiche start lors de la réponse Arrival = movement.Arrival, //Affiche arrival lors de la réponse Quantity = movement.Quantity //Affiche quantity lors de la réponse }; await Send.OkAsync(responseDto, ct); //Envoie de la réponse réussite 200 au client } }