using API.DTO.Material.Request; using API.DTO.Material.Response; using FastEndpoints; namespace PyroFetes.Endpoints.Material; public class CreateMaterialEndpoint(PyroFetesDbContext pyrofetesdbcontext) : Endpoint //Instanciation d'une connexion à la bdd dans un endpoint, utilise l'élément de requête CreateMaterialDto et l'élement de réponse GetMaterialDto { public override void Configure() //Configuration de l'endpoint { Post("Api/materials"); //Créer un matériel AllowAnonymous();//Autorise l'accès sans authentification } public override async Task HandleAsync(CreateMaterialDto req, CancellationToken ct) { Models.Material quantity = new() //Création d'un nom, quantité et liaison de l'id de l'entrepôt rentré par l'utilisateur { Name = req.Label, Quantity = req.Quantity, WarehouseId = req.WarehouseId, }; pyrofetesdbcontext.Materials.Add(quantity); //Ajoute quantity à la bdd await pyrofetesdbcontext.SaveChangesAsync(ct); //Sauvegarde les changements effectués dans la bdd Console.WriteLine("Material added"); //Affiche Material Added si réussi GetMaterialDto responseDto = new() //Constuire l'objet de réponse pour retourner name, quantity et warehouseId à l'utilisateur { Id = quantity.Id, //Affiche l'id lors de la réponse WarehouseId = quantity.WarehouseId, //Affiche le label lors de la réponse Label = req.Label, //Affiche le label lors de la réponse }; await Send.OkAsync(responseDto, ct); //Envoie de la réponse réussite 200 au client } }