From a2910de06ef56616368553f392c3b108fc3ae418 Mon Sep 17 00:00:00 2001 From: "josephine.vetu" Date: Fri, 6 Mar 2026 15:02:50 +0100 Subject: [PATCH] #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