namespace Webzine.WebApplication.Areas.Administration.Controllers { using Microsoft.AspNetCore.Mvc; using Webzine.Repository.Contracts; using Webzine.WebApplication.Areas.Administration.ViewModels.Style; /// /// Contrôleur pour la gestion des styles dans l'administration du webzine. /// [Area("Administration")] public class StyleController : Controller { private readonly ILogger logger; private readonly IStyleRepository styleRepository; /// /// Initializes a new instance of the class. /// Initialise une nouvelle instance de la classe . /// /// Service de journalisation injecté. /// Repository des styles injecté. public StyleController( ILogger logger, IStyleRepository styleRepository) { this.logger = logger; this.logger.LogInformation("Initialisation du contrôleur StyleController."); this.styleRepository = styleRepository; } /// /// Affiche la liste des styles dans la vue Index. /// /// La vue Index avec le ViewModel contenant la liste des styles. public IActionResult Index() { var listeStyles = this.styleRepository.FindAll().Take(10); return this.View(listeStyles); } /// /// Affiche la vue de création d'un nouveau style. /// /// La vue Create pour ajouter un nouveau style. public IActionResult Create() { return this.View(); } /// /// Affiche la vue de confirmation de suppression d'un style, en récupérant les détails du style à supprimer à partir de l'identifiant fourni. /// /// L'identifiant du style à supprimer. /// La vue de confirmation de suppression avec le ViewModel contenant les détails du style à supprimer, ou une redirection vers l'index si le style n'existe pas. public IActionResult Delete(int id) { var style = this.styleRepository.Find(id); var vm = new StyleDeleteViewModel { IdStyle = style.IdStyle, Libelle = style.Libelle, }; return this.View(vm); } /// /// Méthode POST pour supprimer un style. /// /// Le style à supprimer. /// Redirige vers la page d'index d'admin style. [HttpPost] public IActionResult Delete(StyleEditViewModel model) { var style = this.styleRepository.Find(model.IdStyle); if (style != null) { this.styleRepository.Delete(style); } return this.RedirectToAction("Index"); } /// /// Affiche la vue d'édition d'un style existant, en récupérant les détails du style à éditer à partir de l'identifiant fourni. /// /// L'identifiant du style à éditer. /// La vue d'édition avec le ViewModel contenant les détails du style à éditer, ou une redirection vers l'index si le style n'existe pas. [HttpGet] public IActionResult Edit(int id) { var style = this.styleRepository.Find(id); var model = new StyleEditViewModel { IdStyle = style.IdStyle, Libelle = style.Libelle, }; return this.View(model); } } }