Merge remote-tracking branch 'origin/TODO_erreurs' into correction/j1

This commit is contained in:
Loic Masi
2026-03-24 15:08:19 +01:00
9 changed files with 69 additions and 82 deletions

View File

@@ -41,40 +41,40 @@ public class DashboardController : Controller
/// <returns>La vue Index du tableau de bord.</returns>
public IActionResult Index()
{
var mostChronicledArtist = _titres
var artisteLePlusChronique = _titres
.GroupBy(t => t.Artiste)
.OrderByDescending(g => g.Count())
.FirstOrDefault();
var topArtistAlbums = _titres
var albumLePlusChronique = _titres
.GroupBy(t => t.Artiste)
.OrderByDescending(g => g.Select(t => t.Album).Distinct().Count())
.FirstOrDefault();
var mostPlayedTrack = _titres
var musiqueLaPlusJouee = _titres
.OrderByDescending(t => t.NbLectures)
.FirstOrDefault();
var model = new DashboardViewModel
{
ArtistCount = _artistes.Count,
NombreArtistes = _artistes.Count,
MostChronicledArtistName = mostChronicledArtist?.Key.Nom,
ArtisteLePlusChronique = artisteLePlusChronique?.Key.Nom,
TopArtistAlbumsName = topArtistAlbums?.Key.Nom,
AlbumLePlusChronique = albumLePlusChronique?.Key.Nom,
BiographyCount = _artistes.Count(a => !string.IsNullOrEmpty(a.Biographie)),
NombreBiographies = _artistes.Count(a => !string.IsNullOrEmpty(a.Biographie)),
MostPlayedTrackId = mostPlayedTrack?.IdTitre ?? 0,
MostPlayedTrack = mostPlayedTrack?.Libelle,
IdMusiqueLaPlusJouee = musiqueLaPlusJouee?.IdTitre ?? 0,
MusiqueLaPlusJouee = musiqueLaPlusJouee?.Libelle,
TrackCount = _titres.Count,
NombreTitres = _titres.Count,
GenreCount = _styles.Count,
NombreGenres = _styles.Count,
TotalPlays = _titres.Sum(t => t.NbLectures),
NombreLectures = _titres.Sum(t => t.NbLectures),
TotalLikes = _titres.Sum(t => t.NbLikes)
NombreLikes = _titres.Sum(t => t.NbLikes)
};
return View(model);

View File

@@ -8,49 +8,49 @@ public class DashboardViewModel
/// <summary>
/// Définit le nombre total d'artistes chroniqués dans le webzine.
/// </summary>
public int ArtistCount { get; set; }
public int NombreArtistes { get; set; }
/// <summary>
/// Définit le nom de l'artiste le plus chroniqué dans le webzine.
/// </summary>
public string MostChronicledArtistName { get; set; }
public string ArtisteLePlusChronique { get; set; }
/// <summary>
/// Définit le nom de l'album le plus chroniqué dans le webzine.
/// </summary>
public string TopArtistAlbumsName { get; set; }
public string AlbumLePlusChronique { get; set; }
/// <summary>
/// Définit le nombre total de biographies d'artistes dans le webzine.
/// </summary>
public int BiographyCount { get; set; }
public int NombreBiographies { get; set; }
/// <summary>
/// Définit l'identifiant de la biographie d'artiste la plus lue dans le webzine.
/// </summary>
public int MostPlayedTrackId { get; set; }
public int IdMusiqueLaPlusJouee { get; set; }
/// <summary>
/// Définit le nom de la biographie d'artiste la plus lue dans le webzine.
/// </summary>
public string MostPlayedTrack { get; set; }
public string MusiqueLaPlusJouee { get; set; }
/// <summary>
/// Définit le nombre total de titres chroniqués dans le webzine.
/// </summary>
public int TrackCount { get; set; }
public int NombreTitres { get; set; }
/// <summary>
/// Définit le nombre total de genres musicaux chroniqués dans le webzine.
/// </summary>
public int GenreCount { get; set; }
public int NombreGenres { get; set; }
/// <summary>
/// Définit le nombre total de chroniques d'albums dans le webzine.
/// </summary>
public int TotalPlays { get; set; }
public int NombreLectures { get; set; }
/// <summary>
/// Définit le nombre total de likes sur les chroniques d'albums dans le webzine.
/// </summary>
public int TotalLikes { get; set; }
public int NombreLikes { get; set; }
}

View File

@@ -30,12 +30,12 @@
<td class="text-center p-2">
<a asp-action="Edit" asp-route-id="@artiste.IdArtiste"
class="text-primary">
>
<i class="fa fa-edit"></i>
</a>
<a asp-action="Delete" asp-route-id="@artiste.IdArtiste"
class="text-primary">
>
<i class="fa fa-trash"></i>
</a>

View File

@@ -16,11 +16,11 @@
<div class="mb-4">
<h4>@Model.Contenu</h4>
<div class="text-muted"> // TODO y a des balises pour les citations, <blockquote></blockquote>
<blockquote>
— <strong>@Model.Auteur</strong>
le @Model.DateCreation.ToString("dd/MM/yyyy HH:mm:ss") // TODO à virer, c'est pas très lisible, trouver un format de date plus sympa, ou même afficher "il y a X minutes/heures/jours" comme sur les réseaux sociaux
le @Model.DateCreation.ToString("dd/MM/yyyy HH:mm:ss")
sur <em>@Model.TitreLibelle</em>
</div>
</blockquote>
</div>
<form asp-action="Delete" method="post">

View File

@@ -11,17 +11,16 @@
<!-- ARTISTS -->
<div class="col-md-4">
<a asp-area="Administration"
asp-controller="Artiste"
class="text-decoration-none">
asp-controller="Artiste">
<div class="card shadow-sm p-4 bg-light h-100 dashboard-card">
<i class="fa fa-users fa-3x text-primary mb-3"></i>
<h3 class="text-primary">
@Model.ArtistCount
<h3>
@Model.NombreArtistes
</h3>
<p class="text-primary">
<p>
artistes
</p>
</div>
@@ -29,23 +28,20 @@
</a>
</div>
<!-- L'ARTIST LE PLUS CHRONICLED --> // TODO faute de frappe, à virer
<!-- L'ARTIST LE PLUS CHRONIQUE -->
<div class="col-md-4">
<a asp-area=""
asp-controller="Artiste"
asp-route-nom="@Model.MostChronicledArtistName" // TODO enlever texte décorationnel, pas maintenable
class="text-decoration-none">
asp-route-nom="@Model.ArtisteLePlusChronique">
<div class="card shadow-sm p-4 bg-light h-100 dashboard-card">
<i class="fa fa-user fa-3x text-primary mb-3"></i>
<h3 class="text-primary"> // TODO c'est déjà par défaut en couleur primaire, pas besoin de le redéfinir
@Model.MostChronicledArtistName
<h3>
@Model.ArtisteLePlusChronique
</h3>
<p class="text-primary">
artiste le plus chroniqué
</p>
<p>artiste le plus chroniqué</p>
</div>
</a>
@@ -55,17 +51,16 @@
<div class="col-md-4">
<a asp-area=""
asp-controller="Artiste"
asp-route-nom="@Model.TopArtistAlbumsName"
class="text-decoration-none">
asp-route-nom="@Model.AlbumLePlusChronique">
<div class="card shadow-sm p-4 bg-light h-100 dashboard-card">
<i class="fa fa-trophy fa-3x text-primary mb-3"></i>
<h3 class="text-primary">
@Model.TopArtistAlbumsName
<h3>
@Model.AlbumLePlusChronique
</h3>
<p class="text-primary">
<p>
artiste avec le plus d'albums distincts
</p>
</div>
@@ -76,17 +71,16 @@
<!-- BIOGRAPHIES -->
<div class="col-md-4">
<a asp-area="Administration"
asp-controller="Titre"
class="text-decoration-none">
asp-controller="Titre">
<div class="card shadow-sm p-4 bg-light h-100 dashboard-card">
<i class="fa fa-book fa-3x text-primary mb-3"></i>
<h3 class="text-primary">
@Model.BiographyCount
<h3>
@Model.NombreBiographies
</h3>
<p class="text-primary">
<p>
biographies d'artistes
</p>
</div>
@@ -99,17 +93,16 @@
<a asp-area=""
asp-controller="Titre"
asp-action="Details"
asp-route-id="@Model.MostPlayedTrackId"
class="text-decoration-none">
asp-route-id="@Model.IdMusiqueLaPlusJouee">
<div class="card shadow-sm p-4 bg-light h-100 dashboard-card">
<i class="fa fa-compact-disc fa-3x text-primary mb-3"></i>
<h4 class="text-primary">
@Model.MostPlayedTrack
<h4>
@Model.MusiqueLaPlusJouee
</h4>
<p class="text-primary">
<p>
titre le plus lu
</p>
</div>
@@ -120,17 +113,16 @@
<!-- TITRE NOMBRE -->
<div class="col-md-4">
<a asp-area="Administration"
asp-controller="Titre"
class="text-decoration-none">
asp-controller="Titre">
<div class="card shadow-sm p-4 bg-light h-100 dashboard-card">
<i class="fa fa-music fa-3x text-primary mb-3"></i>
<h3 class="text-primary">
@Model.TrackCount
<h3>
@Model.NombreTitres
</h3>
<p class="text-primary">
<p>
titres
</p>
</div>
@@ -141,17 +133,16 @@
<!-- GENRES -->
<div class="col-md-4">
<a asp-area="Administration"
asp-controller="Styles"
class="text-decoration-none">
asp-controller="Styles">
<div class="card shadow-sm p-4 bg-light h-100 dashboard-card">
<i class="fa fa-tags fa-3x text-primary mb-3"></i>
<h3 class="text-primary">
@Model.GenreCount
<h3>
@Model.NombreGenres
</h3>
<p class="text-primary">
<p>
styles de musique
</p>
</div>
@@ -165,7 +156,7 @@
<i class="fa fa-eye fa-3x text-dark mb-3"></i>
<h3>
@Model.TotalPlays
@Model.NombreLectures
</h3>
<p>
@@ -180,7 +171,7 @@
<i class="fa fa-thumbs-up fa-3x text-dark mb-3"></i>
<h3>
@Model.TotalLikes
@Model.NombreLikes
</h3>
<p>

View File

@@ -14,13 +14,9 @@
</p>
<div class="mb-4">
@* On affiche le Libellé en gros *@ // TODO c'est quoi ces commentaires Baptiste
@* On affiche le Libellé en gros *@
<h4>@Model.Libelle</h4>
@* On affiche l'ID discrètement en dessous *@
<div class="text-muted">
Identifiant technique : @Model.IdStyle
</div>
</div>
<form asp-action="Delete" method="post">

View File

@@ -36,7 +36,7 @@
<a asp-action="Edit" asp-route-id="@style.IdStyle" class="text-primary me-2" title="Éditer">
<i class="fas fa-edit"></i>
</a>
<a asp-action="Delete" asp-route-id="@style.IdStyle" class="text-primary" title="Supprimer">
<a asp-action="Delete" asp-route-id="@style.IdStyle" title="Supprimer">
<i class="fas fa-trash"></i>
</a>
</td>

View File

@@ -21,42 +21,42 @@
<h2>Suivez-nous</h2>
<div class="row g-4 text-center">
<div class="col-md-4">
<a href="#" class="card h-100 p-4 shadow-sm border-0 bg-light-subtle text-decoration-none">
<a href="#" class="card h-100 p-4 shadow-sm border-0 bg-light-subtle">
<i class="fa-solid fa-link fa-3x text-primary mb-3"></i>
<div class="fw-bold text-primary">Site officiel du DIIAGE</div>
</a>
</div>
<div class="col-md-4">
<a href="#" class="card h-100 p-4 shadow-sm border-0 bg-light-subtle text-decoration-none">
<a href="#" class="card h-100 p-4 shadow-sm border-0 bg-light-subtle">
<i class="fa-brands fa-facebook fa-3x text-primary mb-3"></i>
<div class="fw-bold text-primary">Facebook</div>
</a>
</div>
<div class="col-md-4">
<a href="#" class="card h-100 p-4 shadow-sm border-0 bg-light-subtle text-decoration-none">
<a href="#" class="card h-100 p-4 shadow-sm border-0 bg-light-subtle">
<i class="fa-brands fa-instagram fa-3x text-primary mb-3"></i>
<div class="fw-bold text-primary">Instagram</div>
</a>
</div>
<div class="col-md-4">
<a href="#" class="card h-100 p-4 shadow-sm border-0 bg-light-subtle text-decoration-none">
<a href="#" class="card h-100 p-4 shadow-sm border-0 bg-light-subtle">
<i class="fa-brands fa-linkedin fa-3x text-primary mb-3"></i>
<div class="fw-bold text-primary">LinkedIn</div>
</a>
</div>
<div class="col-md-4">
<a href="#" class="card h-100 p-4 shadow-sm border-0 bg-light-subtle text-decoration-none">
<a href="#" class="card h-100 p-4 shadow-sm border-0 bg-light-subtle">
<i class="fa-solid fa-map fa-3x text-primary mb-3"></i>
<div class="fw-bold text-primary">Google Maps</div>
</a>
</div>
<div class="col-md-4">
<a href="#" class="card h-100 p-4 shadow-sm border-0 bg-light-subtle text-decoration-none">
<a href="#" class="card h-100 p-4 shadow-sm border-0 bg-light-subtle">
<i class="fa-brands fa-twitter fa-3x text-primary mb-3"></i>
<div class="fw-bold text-primary">Twitter</div>
</a>

View File

@@ -40,7 +40,7 @@
{
var style = Model.Details.Styles[i];
<a class="text-primary text-decoration-none fw-semibold"
<a class="text-primary fw-semibold"
asp-controller="Titre"
asp-action="Style"
asp-route-style="@style.Libelle">