From 5e78921c7c51101be53dce6ce3104f6169d55098 Mon Sep 17 00:00:00 2001 From: "josephine.vetu" Date: Wed, 11 Mar 2026 22:30:04 +0100 Subject: [PATCH 1/2] =?UTF-8?q?#26=20Modification=20des=20pages=20CRUD=20d?= =?UTF-8?q?'artiste=20admin=20en=20utilisant=20la=20DataFactory=20et=20un?= =?UTF-8?q?=20nouveau=20ViewModel=20pour=20les=20formulaires.=20Navigation?= =?UTF-8?q?=20entre=20les=20vues=20et=20le=20controlleur=20mise=20en=20pla?= =?UTF-8?q?ce=20avec=20un=20=20id=20en=20parametres.=20Tri=20des=20artiste?= =?UTF-8?q?s=20par=20ordre=20alphabetique=20d=C3=A9plac=C3=A9=20dans=20le?= =?UTF-8?q?=20controlleur.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/ArtisteController.cs | 69 ++++++++++++++----- .../ViewModels/Artiste/AdminArtisteForm.cs | 21 ++++++ .../Views/Artiste/Create.cshtml | 11 +++ .../Views/Artiste/Delete.cshtml | 32 +++++++++ .../Administration/Views/Artiste/Edit.cshtml | 13 ++++ .../Administration/Views/Artiste/Index.cshtml | 27 +++----- .../Administration/Views/Artiste/_Form.cshtml | 38 ++++++++++ 7 files changed, 177 insertions(+), 34 deletions(-) create mode 100644 Webzine.WebApplication/Areas/Administration/ViewModels/Artiste/AdminArtisteForm.cs create mode 100644 Webzine.WebApplication/Areas/Administration/Views/Artiste/Create.cshtml create mode 100644 Webzine.WebApplication/Areas/Administration/Views/Artiste/_Form.cshtml diff --git a/Webzine.WebApplication/Areas/Administration/Controllers/ArtisteController.cs b/Webzine.WebApplication/Areas/Administration/Controllers/ArtisteController.cs index 41cd7f6..05bfeb0 100644 --- a/Webzine.WebApplication/Areas/Administration/Controllers/ArtisteController.cs +++ b/Webzine.WebApplication/Areas/Administration/Controllers/ArtisteController.cs @@ -12,53 +12,86 @@ public class ArtisteController : Controller { // Injection du logger via le constructeur private readonly ILogger _logger; + private readonly List _artistes; + public ArtisteController(ILogger logger) { _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. /// - /// + /// Redirection. 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); - } + var _artistes_ordre = _artistes.OrderBy(t => t.Nom).ToList(); + + _logger.LogInformation("Initialisation du contrôleur TitreController pour l'Administration."); GroupeArtisteViewModel groupeArtisteModel = new GroupeArtisteViewModel { - Artistes = artistes + Artistes = _artistes_ordre }; return View(groupeArtisteModel); } /// - /// Renvoie à la page modifier un artiste. - /// Méthode vide pour le moment. + /// Renvoie à la page pour créer un artiste. /// - /// - public IActionResult Edit() + /// Redirection. + public IActionResult Create() { - return View(); + var model = new AdminArtisteForm + { + Id = 0, + Nom = string.Empty, + Biographie = string.Empty + }; + + return View(model); + } + + /// + /// Renvoie à la page modifier un artiste. + /// + /// L'identifiant de l'artiste à modifier. + /// Redirection. + public IActionResult Edit(int id) + { + var artiste = _artistes.First(t => t.IdArtiste == id); + + var model = new AdminArtisteForm + { + Id = artiste.IdArtiste, + Nom = artiste.Nom, + Biographie = artiste.Biographie + }; + + return View(model); } /// /// Renvoie à la page supprimer un artiste. - /// Méthode vide pour le moment. /// - /// - public IActionResult Delete() + /// L'identifiant de l'artiste à supprimer. + /// Redirection.> + public IActionResult Delete(int id) { - return View(); + var artiste = _artistes.First(t => t.IdArtiste == id); + var model = new AdminArtisteForm + { + Id = id, + Nom = artiste.Nom, + Biographie = artiste.Biographie + }; + return View(model); } } \ No newline at end of file diff --git a/Webzine.WebApplication/Areas/Administration/ViewModels/Artiste/AdminArtisteForm.cs b/Webzine.WebApplication/Areas/Administration/ViewModels/Artiste/AdminArtisteForm.cs new file mode 100644 index 0000000..283cf89 --- /dev/null +++ b/Webzine.WebApplication/Areas/Administration/ViewModels/Artiste/AdminArtisteForm.cs @@ -0,0 +1,21 @@ +namespace Webzine.WebApplication.Areas.Administration.ViewModels.Artiste +{ + /// + /// ViewModel pour la création et la modification d'un artiste dans l'administration. + /// + public class AdminArtisteForm + { + /// + /// Définit l'identifiant de l'artiste. + /// + public int Id { get; set; } + /// + /// Définit le nom de l'artiste. + /// + public string Nom { get; set; } + /// + /// Définit la biographie de l'artiste. + /// + public string Biographie { get; set; } + } +} diff --git a/Webzine.WebApplication/Areas/Administration/Views/Artiste/Create.cshtml b/Webzine.WebApplication/Areas/Administration/Views/Artiste/Create.cshtml new file mode 100644 index 0000000..67e48be --- /dev/null +++ b/Webzine.WebApplication/Areas/Administration/Views/Artiste/Create.cshtml @@ -0,0 +1,11 @@ +@model Webzine.WebApplication.Areas.Administration.ViewModels.Artiste.AdminArtisteForm + +

Créer un artiste

+ +
+ +
+ + + + \ No newline at end of file diff --git a/Webzine.WebApplication/Areas/Administration/Views/Artiste/Delete.cshtml b/Webzine.WebApplication/Areas/Administration/Views/Artiste/Delete.cshtml index e69de29..7670de6 100644 --- a/Webzine.WebApplication/Areas/Administration/Views/Artiste/Delete.cshtml +++ b/Webzine.WebApplication/Areas/Administration/Views/Artiste/Delete.cshtml @@ -0,0 +1,32 @@ +@model Webzine.WebApplication.Areas.Administration.ViewModels.Artiste.AdminArtisteForm + +
+ +

Supprimer un artiste

+ +
+ +

+ Etes-vous sûr de vouloir supprimer l'artiste + "@Model.Nom" ? +

+ +
+ + + + + +
+ +
+
+ + + + Retour à l'administration des artistes + + +
\ No newline at end of file diff --git a/Webzine.WebApplication/Areas/Administration/Views/Artiste/Edit.cshtml b/Webzine.WebApplication/Areas/Administration/Views/Artiste/Edit.cshtml index e69de29..c5cf9d2 100644 --- a/Webzine.WebApplication/Areas/Administration/Views/Artiste/Edit.cshtml +++ b/Webzine.WebApplication/Areas/Administration/Views/Artiste/Edit.cshtml @@ -0,0 +1,13 @@ +@model Webzine.WebApplication.Areas.Administration.ViewModels.Artiste.AdminArtisteForm + +

Editer un artiste

+ +
+ +
+ + + + + + \ No newline at end of file diff --git a/Webzine.WebApplication/Areas/Administration/Views/Artiste/Index.cshtml b/Webzine.WebApplication/Areas/Administration/Views/Artiste/Index.cshtml index 62dea6a..aea9d02 100644 --- a/Webzine.WebApplication/Areas/Administration/Views/Artiste/Index.cshtml +++ b/Webzine.WebApplication/Areas/Administration/Views/Artiste/Index.cshtml @@ -8,39 +8,34 @@

Artiste


- - Ajouter un nouvel titre + + Ajouter un nouvel artiste
- +
- - + + - @* 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) + @foreach (var artiste in Model.Artistes) { - -
Nom de l'artisteActionsNomActions
+ @artiste.Nom + - + class="text-primary"> + + class="text-primary"> diff --git a/Webzine.WebApplication/Areas/Administration/Views/Artiste/_Form.cshtml b/Webzine.WebApplication/Areas/Administration/Views/Artiste/_Form.cshtml new file mode 100644 index 0000000..3a3101e --- /dev/null +++ b/Webzine.WebApplication/Areas/Administration/Views/Artiste/_Form.cshtml @@ -0,0 +1,38 @@ +@model Webzine.WebApplication.Areas.Administration.ViewModels.Artiste.AdminArtisteForm + +
+ +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + + +
+
+ + + +
+
+ +
+
+ + Retour à l'administration des artistes + +
\ No newline at end of file From ae76600f6a9df1f0d434ebdd7767e762a16c1e9a Mon Sep 17 00:00:00 2001 From: "josephine.vetu" Date: Wed, 11 Mar 2026 22:35:05 +0100 Subject: [PATCH 2/2] =?UTF-8?q?#6=20Vues=20et=20controlleur=20pour=20Style?= =?UTF-8?q?=20et=20Commentaire=20au=20singulier.=20#12=20Mise=20en=20confo?= =?UTF-8?q?rmit=C3=A9=20du=20style=20vues,=20les=20memes=20icones=20sont?= =?UTF-8?q?=20utilis=C3=A9s=20sur=20toutes=20les=20pages=20admin.=20Ajout?= =?UTF-8?q?=20de=20la=20route=20pour=20creer=20un=20titre.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...Controller.cs => CommentaireController.cs} | 0 ...StylesController.cs => StyleController.cs} | 10 +-- .../Controllers/TitreController.cs | 2 +- .../Views/Commentaire/Index.cshtml | 7 +- .../Views/Commentaires/Index.cshtml | 1 - .../Views/{Styles => Style}/Create.cshtml | 0 .../Views/{Styles => Style}/Delete.cshtml | 0 .../Views/{Styles => Style}/Edit.cshtml | 0 .../Views/{Styles => Style}/Index.cshtml | 0 .../Administration/Views/Titre/Index.cshtml | 90 ++++++++++--------- 10 files changed, 56 insertions(+), 54 deletions(-) rename Webzine.WebApplication/Areas/Administration/Controllers/{CommentairesController.cs => CommentaireController.cs} (100%) rename Webzine.WebApplication/Areas/Administration/Controllers/{StylesController.cs => StyleController.cs} (95%) delete mode 100644 Webzine.WebApplication/Areas/Administration/Views/Commentaires/Index.cshtml rename Webzine.WebApplication/Areas/Administration/Views/{Styles => Style}/Create.cshtml (100%) rename Webzine.WebApplication/Areas/Administration/Views/{Styles => Style}/Delete.cshtml (100%) rename Webzine.WebApplication/Areas/Administration/Views/{Styles => Style}/Edit.cshtml (100%) rename Webzine.WebApplication/Areas/Administration/Views/{Styles => Style}/Index.cshtml (100%) diff --git a/Webzine.WebApplication/Areas/Administration/Controllers/CommentairesController.cs b/Webzine.WebApplication/Areas/Administration/Controllers/CommentaireController.cs similarity index 100% rename from Webzine.WebApplication/Areas/Administration/Controllers/CommentairesController.cs rename to Webzine.WebApplication/Areas/Administration/Controllers/CommentaireController.cs diff --git a/Webzine.WebApplication/Areas/Administration/Controllers/StylesController.cs b/Webzine.WebApplication/Areas/Administration/Controllers/StyleController.cs similarity index 95% rename from Webzine.WebApplication/Areas/Administration/Controllers/StylesController.cs rename to Webzine.WebApplication/Areas/Administration/Controllers/StyleController.cs index 0f4be27..623530e 100644 --- a/Webzine.WebApplication/Areas/Administration/Controllers/StylesController.cs +++ b/Webzine.WebApplication/Areas/Administration/Controllers/StyleController.cs @@ -9,21 +9,21 @@ using Webzine.WebApplication.Areas.Administration.ViewModels.Style; namespace Webzine.WebApplication.Areas.Administration.Controllers { [Area("Administration")] - public class StylesController : Controller + public class StyleController : Controller { - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly List