namespace Webzine.WebApplication.Areas.Administration.Controllers; using Microsoft.AspNetCore.Mvc; using Webzine.Entity; using Webzine.Repository.Contracts; using Webzine.WebApplication.Areas.Administration.ViewModels.Artiste; /// /// 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. /// /// Redirection. public IActionResult Index() { IEnumerable artistes = this.artisteRepository.FindAll().OrderBy(t => t.Nom); return this.View(artistes); } /// /// Renvoie à la page pour créer un artiste. /// /// Redirection. public IActionResult Create() { return this.View(); } /// /// Formulaire de création d'un artiste. /// /// Paramètre nécessaire pour la création d'un artiste. /// Redirection sur la page Index. [HttpPost] public IActionResult Create(ArtisteCreateViewModel model) { // Créer un objet Artiste avecc les paramètres. var artiste = new Artiste { Nom = model.Nom, Biographie = model.Biographie, }; // Persister les données. this.artisteRepository.Add(artiste); // Renvoyer sur la page Index. return this.RedirectToAction("Index"); } /// /// Renvoie à la page modifier un artiste. /// /// L'identifiant de l'artiste à modifier. /// Redirection. public IActionResult Edit(int id) { var artiste = this.artisteRepository.Find(id); if (artiste == null) { return this.RedirectToAction("Index"); } return this.View(artiste); } /// /// Traitement du formulaire de modification d'un artiste. /// /// Paramètre d'un artiste. /// Redirection sur Index. [HttpPost] public IActionResult Edit(ArtisteEditViewModel model) { var artiste = new Artiste { IdArtiste = model.Id, Nom = model.Nom, Biographie = model.Biographie, }; this.artisteRepository.Update(artiste); return this.RedirectToAction("Index"); } /// /// Renvoie à la page supprimer un artiste. /// /// L'identifiant de l'artiste à supprimer. /// Redirection. public IActionResult Delete(int id) { var artiste = this.artisteRepository.Find(id); if (artiste == null) { return this.RedirectToAction("Index"); } 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); } return this.RedirectToAction("Index"); } }