Files
PyroFetes-Sujet1/PyroFetes/Endpoints/Warehouse/DeleteWarehouseEndpoint.cs
2025-10-09 16:18:21 +02:00

52 lines
1.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using FastEndpoints;
using Microsoft.EntityFrameworkCore;
using PyroFetes.Models;
namespace PyroFetes.Endpoints.Warehouse;
public class DeleteWarehouseRequest
{
public int Id { get; set; }
}
public class DeleteWarehouseEndpoint(PyroFetesDbContext db) : Endpoint<DeleteWarehouseRequest>
{
public override void Configure()
{
// Lannotation correcte du paramètre est {id}, pas {@id}
Delete("/api/warehouse/{@id}", x => new { x.Id });
AllowAnonymous();
}
public override async Task HandleAsync(DeleteWarehouseRequest req, CancellationToken ct)
{
// On charge aussi les WarehouseProducts liés pour les supprimer proprement
var warehouseToDelete = await db.Warehouses
.Include(w => w.WarehouseProducts)
.SingleOrDefaultAsync(w => w.Id == req.Id, cancellationToken: ct);
if (warehouseToDelete == null)
{
Console.WriteLine($"Aucun entrepôt avec l'ID {req.Id} trouvé.");
await Send.NotFoundAsync(ct);
return;
}
// 🔹 Suppression des relations WarehouseProduct avant l'entrepôt
var relatedWarehouseProducts = await db.WarehouseProducts
.Where(wp => wp.WarehouseId == req.Id)
.ToListAsync(ct);
if (relatedWarehouseProducts.Any())
{
db.WarehouseProducts.RemoveRange(relatedWarehouseProducts);
}
// 🔹 Suppression de lentrepôt
db.Warehouses.Remove(warehouseToDelete);
await db.SaveChangesAsync(ct);
Console.WriteLine($"Entrepôt {warehouseToDelete.Name} (ID {req.Id}) supprimé avec succès.");
await Send.NoContentAsync(ct);
}
}