refactor: standardiser la journalisation des contrôleurs et l’utilisation des référentiels

This commit is contained in:
mirage
2026-03-25 15:14:14 +01:00
parent adeb2a0550
commit cceff9a02d
18 changed files with 214 additions and 252 deletions

View File

@@ -1,6 +1,8 @@
using System.Diagnostics;
using Microsoft.AspNetCore.Mvc;
using Webzine.Entity;
using Webzine.Entity.Fixtures;
using Webzine.Repository.Contracts;
using Webzine.WebApplication.Areas.Administration.ViewModels;
namespace Webzine.WebApplication.Areas.Administration.Controllers;
@@ -8,31 +10,24 @@ 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;
private readonly ILogger<DashboardController> logger;
private readonly IStyleRepository styleRepository;
private readonly IArtisteRepository artisteRepository;
private readonly ITitreRepository titreRepository;
/// <summary>
/// Initialise une nouvelle instance du <see cref="DashboardController"/>.
/// Les données sont générées dynamiquement via <see cref="DataFactory"/>.
/// Initialise une nouvelle instance de la classe <see cref="DashboardController"/>.
/// </summary>
/// <param name="logger">Service de journalisation injecté.</param>
public DashboardController(ILogger<DashboardController> logger)
/// <param name="styleRepository">Repository des styles injecté.</param>
public DashboardController(ILogger<DashboardController> logger, IStyleRepository styleRepository, IArtisteRepository artisteRepository, ITitreRepository titreRepository)
{
this._logger = logger;
this.logger = logger;
this.styleRepository = styleRepository;
this.artisteRepository = artisteRepository;
this.titreRepository = titreRepository;
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.");
this.logger.LogInformation("Initialisation du contrôleur TitreController.");
}
/// <summary>
@@ -41,42 +36,42 @@ public class DashboardController : Controller
/// <returns>La vue Index du tableau de bord.</returns>
public IActionResult Index()
{
var artisteLePlusChronique = _titres
var artisteLePlusChronique = this.titreRepository.FindAll()
.GroupBy(t => t.Artiste)
.OrderByDescending(g => g.Count())
.FirstOrDefault();
.First();
var albumLePlusChronique = _titres
var albumLePlusChronique = this.titreRepository.FindAll()
.GroupBy(t => t.Artiste)
.OrderByDescending(g => g.Select(t => t.Album).Distinct().Count())
.FirstOrDefault();
.First();
var musiqueLaPlusJouee = _titres
var musiqueLaPlusJouee = this.titreRepository.FindAll()
.OrderByDescending(t => t.NbLectures)
.FirstOrDefault();
.First();
var model = new DashboardViewModel
{
NombreArtistes = _artistes.Count,
NombreArtistes = this.artisteRepository.FindAll().Count(),
ArtisteLePlusChronique = artisteLePlusChronique?.Key.Nom,
ArtisteLePlusChronique = artisteLePlusChronique.Key.Nom,
AlbumLePlusChronique = albumLePlusChronique?.Key.Nom,
AlbumLePlusChronique = albumLePlusChronique.Key.Nom,
NombreBiographies = _artistes.Count(a => !string.IsNullOrEmpty(a.Biographie)),
NombreBiographies = this.artisteRepository.FindAll().Count(a => !string.IsNullOrEmpty(a.Biographie)),
IdMusiqueLaPlusJouee = musiqueLaPlusJouee?.IdTitre ?? 0,
MusiqueLaPlusJouee = musiqueLaPlusJouee?.Libelle,
IdMusiqueLaPlusJouee = musiqueLaPlusJouee.IdTitre,
MusiqueLaPlusJouee = musiqueLaPlusJouee.Libelle,
NombreTitres = _titres.Count,
NombreTitres = this.titreRepository.Count(),
NombreGenres = _styles.Count,
NombreGenres = this.styleRepository.FindAll().Count(),
NombreLectures = _titres.Sum(t => t.NbLectures),
NombreLectures = this.titreRepository.FindAll().Sum(t => t.NbLectures),
NombreLikes = _titres.Sum(t => t.NbLikes)
NombreLikes = this.titreRepository.FindAll().Sum(t => t.NbLikes),
};
return View(model);
return this.View(model);
}
}