using Microsoft.AspNetCore.Mvc; using Webzine.Entity; using Webzine.Repository.Contracts; using Webzine.WebApplication.Areas.Administration.ViewModels.Artiste; namespace Webzine.WebApplication.Areas.Administration.Controllers; /// /// Contrôleur pour la gestion des artistes dans l'administration du webzine. /// [Area("Administration")] public class ArtisteController : Controller { // Injection du logger via le constructeur private readonly ILogger logger; private readonly IArtisteRepository artisteRepository; /// /// Initializes a new instance of the class. /// Initialise une nouvelle instance de la classe . /// /// Logger. /// Repository pour les artistes. public ArtisteController( ILogger logger, IArtisteRepository artisteRepository) { this.logger = logger; this.artisteRepository = artisteRepository; } /// /// Affiche la liste des artistes. Pour l'instant, les artistes sont générés à partir de noms prédéfinis via la méthode SeedArtisteByName de la classe ArtisteFactory. /// Chaque artiste est ensuite ajouté à une liste d'artistes qui est passée à la vue. /// /// Redirection. public IActionResult Index() { IEnumerable artistes = this.artisteRepository.FindAll(); var artistes_ordre = artistes.OrderBy(t => t.Nom).ToList(); return this.View(artistes_ordre); } /// /// Renvoie à la page pour créer un artiste. /// /// Redirection. public IActionResult Create() { var model = new AdminArtisteForm { Id = 0, Nom = string.Empty, Biographie = string.Empty, }; return this.View(model); } /// /// Renvoie à la page modifier un artiste. /// /// L'identifiant de l'artiste à modifier. /// Redirection. public IActionResult Edit(int id) { var artiste = this.artisteRepository.Find(id); var model = new AdminArtisteForm { Id = artiste.IdArtiste, Nom = artiste.Nom, Biographie = artiste.Biographie, }; return this.View(model); } /// /// Renvoie à la page supprimer un artiste. /// /// L'identifiant de l'artiste à supprimer. /// Redirection. public IActionResult Delete(int id) { var artiste = this.artisteRepository.Find(id); var model = new AdminArtisteForm { Id = id, Nom = artiste.Nom, Biographie = artiste.Biographie, }; return this.View(model); } /// /// Méthode POST pour supprimer un artiste. /// /// L'artiste à supprimer. /// Redirige vers la page d'index d'admin artiste. [HttpPost] public IActionResult Delete(AdminArtisteForm model) { var artiste = this.artisteRepository.Find(model.Id); if (artiste != null) { this.artisteRepository.Delete(artiste); } // 3. Redirect back to the list (or wherever you want them to go after) return this.RedirectToAction("Index"); } }