82 lines
2.6 KiB
C#
82 lines
2.6 KiB
C#
using Microsoft.AspNetCore.Mvc;
|
|
using Webzine.Entity;
|
|
using Webzine.Entity.Fixtures;
|
|
using Webzine.WebApplication.Areas.Administration.ViewModels;
|
|
|
|
namespace Webzine.WebApplication.Areas.Administration.Controllers;
|
|
|
|
[Area("Administration")]
|
|
public class DashboardController : Controller
|
|
{
|
|
private readonly ILogger<DashboardController> _logger;
|
|
private readonly List<Titre> _titres;
|
|
private readonly List<Style> _styles;
|
|
private readonly List<Artiste> _artistes;
|
|
|
|
/// <summary>
|
|
/// Initialise une nouvelle instance du <see cref="DashboardController"/>.
|
|
/// Les données sont générées dynamiquement via <see cref="DataFactory"/>.
|
|
/// </summary>
|
|
/// <param name="logger">Service de journalisation injecté.</param>
|
|
public DashboardController(ILogger<DashboardController> logger)
|
|
{
|
|
this._logger = logger;
|
|
|
|
this._logger.LogInformation("Initialisation du contrôleur TitreController.");
|
|
|
|
var factory = new DataFactory();
|
|
|
|
_artistes = factory.GenerateArtists(10);
|
|
_styles = factory.GenerateStyles(10);
|
|
_titres = factory.GenerateTitres(30, _artistes, _styles);
|
|
|
|
factory.GenerateCommentaires(50, _titres);
|
|
|
|
this._logger.LogInformation("Données fictives générées avec succès.");
|
|
}
|
|
|
|
/// <summary>
|
|
/// Affiche le tableau de bord de l'administration.
|
|
/// </summary>
|
|
/// <returns>La vue Index du tableau de bord.</returns>
|
|
public IActionResult Index()
|
|
{
|
|
var artisteLePlusChronique = _titres
|
|
.GroupBy(t => t.Artiste)
|
|
.OrderByDescending(g => g.Count())
|
|
.FirstOrDefault();
|
|
|
|
var albumLePlusChronique = _titres
|
|
.GroupBy(t => t.Artiste)
|
|
.OrderByDescending(g => g.Select(t => t.Album).Distinct().Count())
|
|
.FirstOrDefault();
|
|
|
|
var musiqueLaPlusJouee = _titres
|
|
.OrderByDescending(t => t.NbLectures)
|
|
.FirstOrDefault();
|
|
|
|
var model = new DashboardViewModel
|
|
{
|
|
NombreArtistes = _artistes.Count,
|
|
|
|
ArtisteLePlusChronique = artisteLePlusChronique?.Key.Nom,
|
|
|
|
AlbumLePlusChronique = albumLePlusChronique?.Key.Nom,
|
|
|
|
NombreBiographies = _artistes.Count(a => !string.IsNullOrEmpty(a.Biographie)),
|
|
|
|
IdMusiqueLaPlusJouee = musiqueLaPlusJouee?.IdTitre ?? 0,
|
|
MusiqueLaPlusJouee = musiqueLaPlusJouee?.Libelle,
|
|
|
|
NombreTitres = _titres.Count,
|
|
|
|
NombreGenres = _styles.Count,
|
|
|
|
NombreLectures = _titres.Sum(t => t.NbLectures),
|
|
|
|
NombreLikes = _titres.Sum(t => t.NbLikes)
|
|
};
|
|
|
|
return View(model);
|
|
}
|
|
} |