From a2910de06ef56616368553f392c3b108fc3ae418 Mon Sep 17 00:00:00 2001 From: "josephine.vetu" Date: Fri, 6 Mar 2026 15:02:50 +0100 Subject: [PATCH 1/3] #26 Page artiste admin. Controlleur, viewmodel et vue ok --- .../Controllers/ArtisteController.cs | 50 +++++++++++++++++ .../Artiste/GroupeArtisteViewModel.cs | 8 +++ .../Administration/Views/Artiste/Index.cshtml | 53 +++++++++++++++++++ .../ViewModels/Artiste/ArtisteModel.cs | 20 +++++++ 4 files changed, 131 insertions(+) create mode 100644 Webzine.WebApplication/Areas/Administration/Controllers/ArtisteController.cs create mode 100644 Webzine.WebApplication/Areas/Administration/ViewModels/Artiste/GroupeArtisteViewModel.cs create mode 100644 Webzine.WebApplication/Areas/Administration/Views/Artiste/Index.cshtml create mode 100644 Webzine.WebApplication/ViewModels/Artiste/ArtisteModel.cs diff --git a/Webzine.WebApplication/Areas/Administration/Controllers/ArtisteController.cs b/Webzine.WebApplication/Areas/Administration/Controllers/ArtisteController.cs new file mode 100644 index 0000000..49fbd0c --- /dev/null +++ b/Webzine.WebApplication/Areas/Administration/Controllers/ArtisteController.cs @@ -0,0 +1,50 @@ +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; + +[Area("Administration")] +public class ArtisteController : Controller +{ + // Injection du logger via le constructeur + private readonly ILogger _logger; + + public ArtisteController(ILogger logger) + { + _logger = logger; + this._logger.LogDebug(1, "initialisation du ArtisteController d'administration"); + } + + public IActionResult Index() + { + var nomsArtistes = new List { "The Beatles", "Théa", "Thédora", "Ricchi E Poveri", "Bad Bunny", "horsegiirL" }; + List artistes = new List(); + + foreach (var nom in nomsArtistes) + { + Artiste artiste = ArtisteFactory.SeedArtisteByName(nom); + artistes.Add(artiste); + } + + GroupeArtisteViewModel groupeArtisteModel = new GroupeArtisteViewModel + { + Artistes = artistes + }; + + return View(groupeArtisteModel); + } + + public IActionResult Edit() + { + return View(); + } + + public IActionResult Delete() + { + return View(); + } +} \ No newline at end of file diff --git a/Webzine.WebApplication/Areas/Administration/ViewModels/Artiste/GroupeArtisteViewModel.cs b/Webzine.WebApplication/Areas/Administration/ViewModels/Artiste/GroupeArtisteViewModel.cs new file mode 100644 index 0000000..76317c1 --- /dev/null +++ b/Webzine.WebApplication/Areas/Administration/ViewModels/Artiste/GroupeArtisteViewModel.cs @@ -0,0 +1,8 @@ +namespace Webzine.WebApplication.Areas.Administration.ViewModels.Artiste +{ + using Webzine.Entity; + public class GroupeArtisteViewModel + { + public IEnumerable Artistes { get; set; } = new List(); + } +} diff --git a/Webzine.WebApplication/Areas/Administration/Views/Artiste/Index.cshtml b/Webzine.WebApplication/Areas/Administration/Views/Artiste/Index.cshtml new file mode 100644 index 0000000..a9cf9fd --- /dev/null +++ b/Webzine.WebApplication/Areas/Administration/Views/Artiste/Index.cshtml @@ -0,0 +1,53 @@ +@model Webzine.WebApplication.Areas.Administration.ViewModels.Artiste.GroupeArtisteViewModel + +@{ + ViewData["Title"] = "Artiste"; +} + + +
+

Artiste

+
+ + Ajouter un nouvel titre + +
+ + + + + + + + + @* On groupe les artistes par nom *@ + @{ + var artistes = Model.Artistes + .OrderBy(t => t.Nom); // Trie les artistes par ordre alphabétique + } + + @foreach (var artiste in artistes) + { + + + + + } + +
Nom de l'artisteActions
+ @artiste.Nom + + + + + + + + + + +
+
+
\ No newline at end of file diff --git a/Webzine.WebApplication/ViewModels/Artiste/ArtisteModel.cs b/Webzine.WebApplication/ViewModels/Artiste/ArtisteModel.cs new file mode 100644 index 0000000..2b9f04c --- /dev/null +++ b/Webzine.WebApplication/ViewModels/Artiste/ArtisteModel.cs @@ -0,0 +1,20 @@ +using Webzine.Entity; + +namespace Webzine.WebApplication.ViewModels.Artiste +{ + /// + /// ViewModel pour afficher les détails d'un artiste, incluant les informations de l'artiste et la liste de ses titres. + /// + public class ArtisteModel + { + /// + /// Artiste dont on affiche les détails. + /// + public Artiste Artiste { get; set; } + + /// + /// Liste des titres de l'artiste. + /// + public List Titres { get; set; } + } +} \ No newline at end of file From 6c827423ef335b80c6b3ef3fd53b6ff14723517c Mon Sep 17 00:00:00 2001 From: "josephine.vetu" Date: Fri, 6 Mar 2026 15:03:33 +0100 Subject: [PATCH 2/3] #26 Suppression d'un viewmodel en doublon --- .../ViewModels/ArtisteModel.cs | 20 ------------------- 1 file changed, 20 deletions(-) delete mode 100644 Webzine.WebApplication/ViewModels/ArtisteModel.cs diff --git a/Webzine.WebApplication/ViewModels/ArtisteModel.cs b/Webzine.WebApplication/ViewModels/ArtisteModel.cs deleted file mode 100644 index 426af29..0000000 --- a/Webzine.WebApplication/ViewModels/ArtisteModel.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Webzine.Entity; - -namespace Webzine.WebApplication.ViewModels -{ - /// - /// ViewModel pour afficher les détails d'un artiste, incluant les informations de l'artiste et la liste de ses titres. - /// - public class ArtisteModel - { - /// - /// Artiste dont on affiche les détails. - /// - public Artiste Artiste { get; set; } - - /// - /// Liste des titres de l'artiste. - /// - public List Titres { get; set; } - } -} \ No newline at end of file From c670c97e63eb8edcfab4928411a2a094a60ebe13 Mon Sep 17 00:00:00 2001 From: "josephine.vetu" Date: Fri, 6 Mar 2026 15:09:58 +0100 Subject: [PATCH 3/3] Ajout des commentaires --- .../Controllers/ArtisteController.cs | 16 +++++++++++++++- .../ViewModels/Artiste/GroupeArtisteViewModel.cs | 6 ++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/Webzine.WebApplication/Areas/Administration/Controllers/ArtisteController.cs b/Webzine.WebApplication/Areas/Administration/Controllers/ArtisteController.cs index 49fbd0c..41cd7f6 100644 --- a/Webzine.WebApplication/Areas/Administration/Controllers/ArtisteController.cs +++ b/Webzine.WebApplication/Areas/Administration/Controllers/ArtisteController.cs @@ -18,7 +18,11 @@ public class ArtisteController : Controller _logger = logger; this._logger.LogDebug(1, "initialisation du ArtisteController d'administration"); } - + /// + /// 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. + /// + /// public IActionResult Index() { var nomsArtistes = new List { "The Beatles", "Théa", "Thédora", "Ricchi E Poveri", "Bad Bunny", "horsegiirL" }; @@ -38,11 +42,21 @@ public class ArtisteController : Controller return View(groupeArtisteModel); } + /// + /// Renvoie à la page modifier un artiste. + /// Méthode vide pour le moment. + /// + /// public IActionResult Edit() { return View(); } + /// + /// Renvoie à la page supprimer un artiste. + /// Méthode vide pour le moment. + /// + /// public IActionResult Delete() { return View(); diff --git a/Webzine.WebApplication/Areas/Administration/ViewModels/Artiste/GroupeArtisteViewModel.cs b/Webzine.WebApplication/Areas/Administration/ViewModels/Artiste/GroupeArtisteViewModel.cs index 76317c1..b7ffe91 100644 --- a/Webzine.WebApplication/Areas/Administration/ViewModels/Artiste/GroupeArtisteViewModel.cs +++ b/Webzine.WebApplication/Areas/Administration/ViewModels/Artiste/GroupeArtisteViewModel.cs @@ -1,8 +1,14 @@ namespace Webzine.WebApplication.Areas.Administration.ViewModels.Artiste { using Webzine.Entity; + /// + /// ViewModel pour afficher un groupe d'artiste. + /// public class GroupeArtisteViewModel { + /// + /// Liste d'artistes. + /// public IEnumerable Artistes { get; set; } = new List(); } }