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 du . /// Les données sont générées dynamiquement via . /// /// Service de journalisation injecté. public CommentaireController(ILogger logger) { _logger = logger; _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); _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 réponse NotFound si le commentaire n'existe pas. public IActionResult Delete(int id) { var commentaire = _commentaires .FirstOrDefault(c => c.IdCommentaire == id); if (commentaire == null) return NotFound(); // TODO faire une page d'erreur personnalisée pour les 404, et pas juste un message d'erreur dans la console // mettre des accolades dans les if pour éviter les erreurs de maintenance, même pour une seule ligne de code var vm = new CommentaireDeleteViewModel { IdCommentaire = commentaire.IdCommentaire, Auteur = commentaire.Auteur, Contenu = commentaire.Contenu, DateCreation = commentaire.DateCreation, TitreLibelle = commentaire.Titre?.Libelle }; return View(vm); } } }