using PyroFetes.DTO.Supplier.Request; using PyroFetes.DTO.Supplier.Response; using FastEndpoints; using Microsoft.EntityFrameworkCore; using PyroFetes.Models; namespace PyroFetes.Endpoints.Supplier; public class CreateSupplierEndpoint(PyroFetesDbContext pyrofetesdbcontext) : Endpoint //Instanciation d'une connexion à la bdd dans un endpoint, utilise l'élément de requête CreateSupplierDto et l'élement de réponse GetSupplierDto { public override void Configure() //Configuration de l'endpoint { Post("/api/suppliers"); //Créer un fournisseur AllowAnonymous(); //Autorise l'accès sans authentification } public override async Task HandleAsync(CreateSupplierDto req, CancellationToken ct) { var supplier = new Models.Supplier //Création d'un nom, email, numéro de téléphone, adresse, code postal et nom de la ville rentré par l'utilisateur { Name = req.Name, Email = req.Email, Phone = req.PhoneNumber, Address = req.Adress, ZipCode = req.ZipCode, City = req.City }; pyrofetesdbcontext.Suppliers.Add(supplier); //Ajout du fournisseur à la bdd await pyrofetesdbcontext.SaveChangesAsync(ct); //Sauvegarde du fournisseur dans la bdd // Ajout des liaisons Price si produits renseignés if (req.Products is not null && req.Products.Any()) { foreach (var p in req.Products) { var price = new Price { SupplierId = supplier.Id, ProductId = p.ProductId, SellingPrice = p.SellingPrice }; pyrofetesdbcontext.Prices.Add(price); } await pyrofetesdbcontext.SaveChangesAsync(ct); //Sauvegarde du fournisseur dans la bdd } var response = new GetSupplierDto //renvoie l'id, d'un nom, d'un email, d'un numéro de téléphone, d'une adresse, d'un code postal et du nom de la ville { Id = supplier.Id, Name = supplier.Name, Email = supplier.Email, PhoneNumber = supplier.Phone, Adress = supplier.Address, ZipCode = supplier.ZipCode, City = supplier.City }; await Send.OkAsync(response, ct); //Réponse au client } }