using Microsoft.AspNetCore.Mvc; using Webzine.Entity; using Webzine.Entity.Fixtures; using Webzine.Repository.Contracts; using Webzine.WebApplication.Areas.Administration.ViewModels.Style; namespace Webzine.WebApplication.Areas.Administration.Controllers { /// /// 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 styles; /// /// Initialise une nouvelle instance de la classe . /// /// Service de journalisation injecté. /// Repository des styles injecté. public StyleController(ILogger logger, IStyleRepository styles) { this.logger = logger; this.logger.LogInformation("Initialisation du contrôleur StyleController."); this.styles = styles; } /// /// 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.styles.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.styles.Find(id); var vm = new StyleDeleteViewModel { IdStyle = style.IdStyle, Libelle = style.Libelle, }; return this.View(vm); } /// /// 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 = styles.Find(id); var model = new StyleEditViewModel { IdStyle = style.IdStyle, Libelle = style.Libelle, }; return this.View(model); } } }