Déplacement du linq pour grouper les albums par titre de la vue à un ViewModel.

This commit is contained in:
josephine.vetu
2026-03-25 16:57:19 +01:00
parent cc87f1850d
commit ec07fa6921
2 changed files with 26 additions and 12 deletions

View File

@@ -0,0 +1,15 @@
namespace Webzine.WebApplication.ViewModels.Artiste
{
using Webzine.Entity;
public class ArtisteDetailsViewModel
{
public int IdArtiste { get; set; }
public string Nom { get; set; } = string.Empty;
public string Biographie { get; set; } = string.Empty;
// On stocke les titres déjà groupés et triés
// La clé est le nom de l'album, la valeur est la liste des titres
public IEnumerable<IGrouping<string?, Titre>> AlbumsGroupes { get; set; }
= Enumerable.Empty<IGrouping<string?, Titre>>();
}
}

View File

@@ -1,4 +1,4 @@
@model Webzine.Entity.Artiste @model Webzine.WebApplication.ViewModels.Artiste.ArtisteDetailsViewModel;
@{ @{
ViewData["Title"] = "Artiste"; ViewData["Title"] = "Artiste";
@@ -8,22 +8,20 @@
<div class="container"> <div class="container">
<h1>@Model.Nom</h1> <h1>@Model.Nom</h1>
<hr class="mb-5" /> <hr/>
<p class="lead">@Model.Biographie</p> <p class="lead">@Model.Biographie</p>
<h2 class="mt-5 mb-4">Albums</h2> <h2 class="mt-5 mb-4">Albums</h2>
<hr class="mb-5" /> <hr/>
@* On groupe les titres par nom d'album *@ @if (!Model.AlbumsGroupes.Any())
@{ {
var albumsGroupes = Model.Titres <p>Cet artiste n'a pas encore de titres répertoriés.</p>
.OrderBy(t => t.Libelle) // Trie les titres par ordre alphabétique au sein de chaque groupe futur }
.GroupBy(t => t.Album) // Groupe par nom d'album else
.OrderBy(g => g.Key); // Trie les albums par ordre alphabétique (la clé du groupe) {
} @foreach (var groupe in Model.AlbumsGroupes)
@foreach (var groupe in albumsGroupes)
{ {
// On récupère le premier titre du groupe pour afficher l'image de l'album // On récupère le premier titre du groupe pour afficher l'image de l'album
var premierTitre = groupe.First(); var premierTitre = groupe.First();
@@ -70,4 +68,5 @@
</div> </div>
</div> </div>
} }
}
</div> </div>