using Microsoft.AspNetCore.Mvc; using Webzine.Entity; using Webzine.Entity.Fixtures; using Webzine.WebApplication.Areas.Administration.ViewModels.Commentaire; namespace Webzine.WebApplication.Areas.Administration.Controllers { [Area("Administration")] public class CommentaireController : Controller { private readonly ILogger logger; private readonly List _commentaires; /// /// Initialise une nouvelle instance de la classe . /// Initialise une nouvelle instance du . /// Les données sont générées dynamiquement via . /// /// Service de journalisation injecté. public CommentaireController(ILogger logger) { this.logger = logger; this.logger.LogInformation("Initialisation du contrôleur CommentaireController."); var factory = new DataFactory(); // TODO injecter le factory via DI pour éviter de le recréer à chaque fois // faire une classe statique var _artistes = factory.GenerateArtists(10); var _styles = factory.GenerateStyles(10); var _titres = factory.GenerateTitres(30, _artistes, _styles); _commentaires = factory.GenerateCommentaires(50, _titres); this.logger.LogInformation("Données fictives générées avec succès."); } /// /// Affiche la liste des commentaires dans la vue Index. /// /// >La vue Index avec le ViewModel contenant la liste des commentaires. public IActionResult Index() { // Création de données "bouchon" (mock) pour tester l'affichage // Initialisation du ViewModel var viewModel = new CommentaireViewModel { Commentaires = _commentaires }; return View(viewModel); } /// /// Affiche la vue de confirmation de suppression d'un commentaire, en récupérant les détails du commentaire à supprimer à partir de l'identifiant fourni. /// /// L'identifiant du commentaire à supprimer. /// La vue de confirmation de suppression avec le ViewModel contenant les détails du commentaire à supprimer, ou une redirection vers l'index si le commentaire n'existe pas. public IActionResult Delete(int id) { var commentaire = _commentaires .FirstOrDefault(c => c.IdCommentaire == id); if (commentaire == null) { this.logger.LogWarning("Commentaire avec ID {Id} introuvable pour suppression.", id); return RedirectToAction("Index"); } var vm = new CommentaireDeleteViewModel { IdCommentaire = commentaire.IdCommentaire, Auteur = commentaire.Auteur, Contenu = commentaire.Contenu, DateCreation = commentaire.DateCreation, TitreLibelle = commentaire.Titre?.Libelle }; return View(vm); } } }