Files
PyroFetes-Sujet1/PyroFetes/Endpoints/Material/CreateMaterialEndpoint.cs
2025-11-05 22:38:55 +01:00

37 lines
1.7 KiB
C#

using API.DTO.Material.Request;
using API.DTO.Material.Response;
using FastEndpoints;
namespace PyroFetes.Endpoints.Material;
public class CreateMaterialEndpoint(PyroFetesDbContext pyrofetesdbcontext) : Endpoint<CreateMaterialDto, GetMaterialDto> //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
}
}