diff --git a/Webzine.Entity/Artiste.cs b/Webzine.Entity/Artiste.cs index 8f1df08..5cd404e 100644 --- a/Webzine.Entity/Artiste.cs +++ b/Webzine.Entity/Artiste.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Text; -using System.Timers; +using System.ComponentModel.DataAnnotations; namespace Webzine.Entity { diff --git a/Webzine.Entity/Commentaire.cs b/Webzine.Entity/Commentaire.cs index baaa852..b29c14e 100644 --- a/Webzine.Entity/Commentaire.cs +++ b/Webzine.Entity/Commentaire.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Text; +using System.ComponentModel.DataAnnotations; namespace Webzine.Entity { diff --git a/Webzine.Entity/Fixtures/SeedDataSpotify.cs b/Webzine.Entity/Fixtures/SeedDataSpotify.cs index 71bd7fc..2ebc21a 100644 --- a/Webzine.Entity/Fixtures/SeedDataSpotify.cs +++ b/Webzine.Entity/Fixtures/SeedDataSpotify.cs @@ -1,4 +1,4 @@ -namespace Webzine.EntitiesContext; +namespace Webzine.Entity.Fixtures; public class SeedDataSpotify { diff --git a/Webzine.Entity/Style.cs b/Webzine.Entity/Style.cs index 628dfec..fcb010c 100644 --- a/Webzine.Entity/Style.cs +++ b/Webzine.Entity/Style.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Text; +using System.ComponentModel.DataAnnotations; namespace Webzine.Entity { diff --git a/Webzine.Entity/Titre.cs b/Webzine.Entity/Titre.cs index a5fa1ae..ccb8c63 100644 --- a/Webzine.Entity/Titre.cs +++ b/Webzine.Entity/Titre.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Text; +using System.ComponentModel.DataAnnotations; namespace Webzine.Entity { diff --git a/Webzine.Repository/LocalEntityRepository.cs b/Webzine.Repository/LocalEntityRepository.cs index 8095e32..f9684e7 100644 --- a/Webzine.Repository/LocalEntityRepository.cs +++ b/Webzine.Repository/LocalEntityRepository.cs @@ -20,8 +20,8 @@ public class LocalEntityRepository : ITitreRepository /// Service de journalisation injecte pour suivre les operations du repository. public LocalEntityRepository(ILogger logger) { - _logger = logger; - _logger.LogDebug(1, "NLog injected into LocalEntityRepository"); + this._logger = logger; + this._logger.LogDebug(1, "NLog injected into LocalEntityRepository"); var factory = new DataFactory(); var artistes = factory.GenerateArtists(10); diff --git a/Webzine.WebApplication/Areas/Administration/Controllers/ArtisteController.cs b/Webzine.WebApplication/Areas/Administration/Controllers/ArtisteController.cs index 05bfeb0..d059092 100644 --- a/Webzine.WebApplication/Areas/Administration/Controllers/ArtisteController.cs +++ b/Webzine.WebApplication/Areas/Administration/Controllers/ArtisteController.cs @@ -1,9 +1,7 @@ using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.Rendering; using Webzine.Entity; using Webzine.Entity.Fixtures; using Webzine.WebApplication.Areas.Administration.ViewModels.Artiste; -using Webzine.WebApplication.Areas.Administration.ViewModels.Titre; namespace Webzine.WebApplication.Areas.Administration.Controllers; @@ -17,15 +15,16 @@ public class ArtisteController : Controller public ArtisteController(ILogger logger) { - _logger = logger; + this._logger = logger; this._logger.LogDebug(1, "initialisation du ArtisteController d'administration"); var factory = new DataFactory(); _artistes = factory.GenerateArtists(10); } + /// - /// Affiche la liste des artistes. Pour l'instant, les artistes sont générés à partir de noms prédéfinis via la méthode SeedArtisteByName de la classe ArtisteFactory. - /// Chaque artiste est ensuite ajouté à une liste d'artistes qui est passée à la vue via un objet GroupeArtisteViewModel. + /// Affiche la liste des artistes. Pour l'instant, les artistes sont générés à partir de noms prédéfinis via la méthode SeedArtisteByName de la classe ArtisteFactory. + /// Chaque artiste est ensuite ajouté à une liste d'artistes qui est passée à la vue. /// /// Redirection. public IActionResult Index() @@ -33,14 +32,9 @@ public class ArtisteController : Controller var _artistes_ordre = _artistes.OrderBy(t => t.Nom).ToList(); - _logger.LogInformation("Initialisation du contrôleur TitreController pour l'Administration."); + this._logger.LogInformation("Initialisation du contrôleur TitreController pour l'Administration."); - GroupeArtisteViewModel groupeArtisteModel = new GroupeArtisteViewModel - { - Artistes = _artistes_ordre - }; - - return View(groupeArtisteModel); + return View(_artistes_ordre); } /// diff --git a/Webzine.WebApplication/Areas/Administration/Controllers/CommentaireController.cs b/Webzine.WebApplication/Areas/Administration/Controllers/CommentaireController.cs index f5554fa..1342459 100644 --- a/Webzine.WebApplication/Areas/Administration/Controllers/CommentaireController.cs +++ b/Webzine.WebApplication/Areas/Administration/Controllers/CommentaireController.cs @@ -18,11 +18,12 @@ namespace Webzine.WebApplication.Areas.Administration.Controllers /// Service de journalisation injecté. public CommentaireController(ILogger logger) { - _logger = logger; + this._logger = logger; - _logger.LogInformation("Initialisation du contrôleur CommentaireController."); + this._logger.LogInformation("Initialisation du contrôleur CommentaireController."); - var factory = new DataFactory(); + 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); @@ -30,49 +31,21 @@ namespace Webzine.WebApplication.Areas.Administration.Controllers _commentaires = factory.GenerateCommentaires(50, _titres); - _logger.LogInformation("Données fictives générées avec succès."); + 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 ActionResult Index() + public IActionResult Index() { // Création de données "bouchon" (mock) pour tester l'affichage - var listeCommentaires = new List - { - new Commentaire - { - IdCommentaire = 1, // Correction: Id -> IdCommentaire - Auteur = "Michel", // Correction: Nom -> Auteur - Contenu = "Nulla sed velit nec tellus gravida molestie", - DateCreation = new DateTime(2023, 1, 22, 15, 59, 28), - // Important : On initialise l'objet Titre pour accéder à Titre.Libelle - Titre = new Titre { Libelle = "St Germain - So Flute" }, - }, - new Commentaire - { - IdCommentaire = 2, - Auteur = "Jeff", - Contenu = "Lorem ipsum dolor sit.", - DateCreation = new DateTime(2023, 1, 22, 14, 27, 8), - Titre = new Titre { Libelle = "Queen - Bohemian Rapsody" }, - }, - new Commentaire - { - IdCommentaire = 3, - Auteur = "Eva", - Contenu = "Aenean vulputate eleifend tellus.", - DateCreation = new DateTime(2023, 1, 22, 13, 2, 17), - Titre = new Titre { Libelle = "Rammstein - Du hast" }, - }, - }; // Initialisation du ViewModel var viewModel = new CommentaireViewModel { - Commentaires = listeCommentaires + Commentaires = _commentaires }; return View(viewModel); @@ -83,14 +56,17 @@ namespace Webzine.WebApplication.Areas.Administration.Controllers /// 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 ActionResult Delete(int id) + /// 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) - return NotFound(); + { + this._logger.LogWarning("Commentaire avec ID {Id} introuvable pour suppression.", id); + return RedirectToAction("Index"); + } var vm = new CommentaireDeleteViewModel { @@ -103,27 +79,5 @@ namespace Webzine.WebApplication.Areas.Administration.Controllers return View(vm); } - - /// - /// Traite la confirmation de suppression d'un commentaire. En cas de succès, redirige vers la liste des commentaires. En cas d'erreur, affiche à nouveau la vue de confirmation avec le message d'erreur. - /// - /// L'identifiant du commentaire à supprimer. - /// Le ViewModel contenant les détails du commentaire à supprimer, utilisé pour afficher les informations en cas d'erreur. - /// Redirection vers la liste des commentaires en cas de succès, ou la vue de confirmation avec le message d'erreur en cas d'échec. - [HttpPost] - [ValidateAntiForgeryToken] - public ActionResult Delete(int id, CommentaireDeleteViewModel model) - { - try - { - return RedirectToAction(); - } - catch (Exception e) - { - // Log de l'erreur - Console.WriteLine(e); - return View(model); - } - } } } \ No newline at end of file diff --git a/Webzine.WebApplication/Areas/Administration/Controllers/DashboardController.cs b/Webzine.WebApplication/Areas/Administration/Controllers/DashboardController.cs index f4815d5..a2ac740 100644 --- a/Webzine.WebApplication/Areas/Administration/Controllers/DashboardController.cs +++ b/Webzine.WebApplication/Areas/Administration/Controllers/DashboardController.cs @@ -20,9 +20,9 @@ public class DashboardController : Controller /// Service de journalisation injecté. public DashboardController(ILogger logger) { - _logger = logger; + this._logger = logger; - _logger.LogInformation("Initialisation du contrôleur TitreController."); + this._logger.LogInformation("Initialisation du contrôleur TitreController."); var factory = new DataFactory(); @@ -32,7 +32,7 @@ public class DashboardController : Controller factory.GenerateCommentaires(50, _titres); - _logger.LogInformation("Données fictives générées avec succès."); + this._logger.LogInformation("Données fictives générées avec succès."); } /// @@ -41,40 +41,40 @@ public class DashboardController : Controller /// La vue Index du tableau de bord. public IActionResult Index() { - var mostChronicledArtist = _titres + var artisteLePlusChronique = _titres .GroupBy(t => t.Artiste) .OrderByDescending(g => g.Count()) .FirstOrDefault(); - var topArtistAlbums = _titres + var albumLePlusChronique = _titres .GroupBy(t => t.Artiste) .OrderByDescending(g => g.Select(t => t.Album).Distinct().Count()) .FirstOrDefault(); - var mostPlayedTrack = _titres + var musiqueLaPlusJouee = _titres .OrderByDescending(t => t.NbLectures) .FirstOrDefault(); var model = new DashboardViewModel { - ArtistCount = _artistes.Count, + NombreArtistes = _artistes.Count, - MostChronicledArtistName = mostChronicledArtist?.Key.Nom, + ArtisteLePlusChronique = artisteLePlusChronique?.Key.Nom, - TopArtistAlbumsName = topArtistAlbums?.Key.Nom, + AlbumLePlusChronique = albumLePlusChronique?.Key.Nom, - BiographyCount = _artistes.Count(a => !string.IsNullOrEmpty(a.Biographie)), + NombreBiographies = _artistes.Count(a => !string.IsNullOrEmpty(a.Biographie)), - MostPlayedTrackId = mostPlayedTrack?.IdTitre ?? 0, - MostPlayedTrack = mostPlayedTrack?.Libelle, + IdMusiqueLaPlusJouee = musiqueLaPlusJouee?.IdTitre ?? 0, + MusiqueLaPlusJouee = musiqueLaPlusJouee?.Libelle, - TrackCount = _titres.Count, + NombreTitres = _titres.Count, - GenreCount = _styles.Count, + NombreGenres = _styles.Count, - TotalPlays = _titres.Sum(t => t.NbLectures), + NombreLectures = _titres.Sum(t => t.NbLectures), - TotalLikes = _titres.Sum(t => t.NbLikes) + NombreLikes = _titres.Sum(t => t.NbLikes) }; return View(model); diff --git a/Webzine.WebApplication/Areas/Administration/Controllers/StyleController.cs b/Webzine.WebApplication/Areas/Administration/Controllers/StyleController.cs index 623530e..34f6cd1 100644 --- a/Webzine.WebApplication/Areas/Administration/Controllers/StyleController.cs +++ b/Webzine.WebApplication/Areas/Administration/Controllers/StyleController.cs @@ -21,39 +21,22 @@ namespace Webzine.WebApplication.Areas.Administration.Controllers /// Service de journalisation injecté. public StyleController(ILogger logger) { - _logger = logger; + this._logger = logger; - _logger.LogInformation("Initialisation du contrôleur StyleController."); + this._logger.LogInformation("Initialisation du contrôleur StyleController."); var factory = new DataFactory(); _styles = factory.GenerateStyles(10); - _logger.LogInformation("Données fictives générées avec succès."); + this._logger.LogInformation("Données fictives générées avec succès."); } // GET: Administration/Styles - public ActionResult Index() + public IActionResult Index() { // Création de données "bouchon" (mock) pour tester l'affichage - var listeStyles = new List