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