namespace Webzine.WebApplication.Areas.Administration.Controllers { using Microsoft.AspNetCore.Mvc; using Webzine.Entity; using Webzine.Repository.Contracts; using Webzine.WebApplication.Areas.Administration.ViewModels.Commentaire; [Area("Administration")] public class CommentaireController : Controller { private readonly ILogger logger; private readonly ICommentaireRepository commentaireRepository; /// /// Initializes a new instance of the class. /// Initialise une nouvelle instance de la classe . /// Utilise l'injection de dépendances pour récupérer le repository. /// /// Service de journalisation injecté. /// Le repository des commentaires injecté. public CommentaireController(ILogger logger, ICommentaireRepository commentaireRepository) { this.logger = logger; this.commentaireRepository = commentaireRepository; this.logger.LogInformation("Initialisation du contrôleur CommentaireController."); } /// /// Affiche la liste des commentaires dans la vue Index. /// /// La vue Index avec le ViewModel contenant la liste des commentaires. public IActionResult Index() { // Récupération des commentaires depuis le repository var commentaires = this.commentaireRepository.FindAll(); // Initialisation du ViewModel var viewModel = new CommentaireViewModel { Commentaires = commentaires, }; return this.View(viewModel); } /// /// Affiche la vue de confirmation de suppression d'un commentaire, en récupérant les détails à partir de l'identifiant fourni. /// /// L'identifiant du commentaire à supprimer. /// La vue de confirmation de suppression avec le ViewModel contenant les détails, ou une redirection vers l'index si introuvable. public IActionResult Delete(int id) { var commentaire = this.commentaireRepository.Find(id); var model = new CommentaireDeleteViewModel { IdCommentaire = commentaire.IdCommentaire, Auteur = commentaire.Auteur, Contenu = commentaire.Contenu, DateCreation = commentaire.DateCreation, TitreLibelle = commentaire.Titre?.Libelle, }; return this.View(model); } /// /// Effectue la suppression réelle du commentaire. /// /// L'identifiant du commentaire à supprimer. /// Redirection vers la vue Index après suppression. [HttpPost] public IActionResult Delete(CommentaireDeleteViewModel model) { var commentaire = this.commentaireRepository.Find(model.IdCommentaire); if (commentaire != null) { this.commentaireRepository.Delete(commentaire); } return this.RedirectToAction("Index"); } } }