#192 Pagination des pages admin. On peut passer à la page précédente seulement si le numéro de page est >0 et la dernière page n'affiche pas de bouton pour la page suivante.

This commit is contained in:
josephine.vetu
2026-04-03 15:22:24 +02:00
parent 9e0a9751d1
commit 279fd75459
27 changed files with 346 additions and 77 deletions

View File

@@ -17,6 +17,7 @@ using Webzine.WebApplication.Areas.Administration.ViewModels.Titre;
public class TitreController : Controller
{
private readonly ILogger<TitreController> logger;
private readonly IConfiguration configuration;
private readonly ITitreRepository titreRepository;
private readonly IArtisteRepository artisteRepository;
private readonly IStyleRepository styleRepository;
@@ -31,9 +32,17 @@ public class TitreController : Controller
/// <param name="artisteRepository">Repository des artistes injecté pour accéder aux données des artistes, nécessaires pour les associations avec les titres.</param>
/// <param name="styleRepository">Repository des styles injecté pour accéder aux données des styles, nécessaires pour les associations avec les titres.</param>
/// <param name="titreAdminService">Service Titre Administration injecté gérant Edit et Crée.</param>
public TitreController(ILogger<TitreController> logger, ITitreRepository titreRepository, IArtisteRepository artisteRepository, IStyleRepository styleRepository, ITitreAdminService titreAdminService)
/// <param name="configuration">Service de configuration injecté pour accéder aux paramètres de configuration.</param>
public TitreController(
ILogger<TitreController> logger,
IConfiguration configuration,
ITitreRepository titreRepository,
IArtisteRepository artisteRepository,
IStyleRepository styleRepository,
ITitreAdminService titreAdminService)
{
this.logger = logger;
this.configuration = configuration;
this.titreRepository = titreRepository;
this.artisteRepository = artisteRepository;
this.styleRepository = styleRepository;
@@ -43,12 +52,16 @@ public class TitreController : Controller
/// <summary>
/// Affiche la liste des titres dans la vue Index.
/// </summary>
/// <param name="page">Le numéro de page pour la pagination des titres (par défaut à 0).</param>
/// <returns>La vue Index avec le ViewModel contenant la liste des titres.</returns>
public IActionResult Index()
public IActionResult Index(int page = 0)
{
IEnumerable<Titre> titres = this.titreRepository.FindAll().Take(10);
int titres_par_page = this.configuration.GetValue<int>("Webzine:NombreDeLignesAdministration");
IEnumerable<Titre> titres = this.titreRepository.FindTitres(page * titres_par_page, titres_par_page);
var model = titres.Select(t => new AdminTitreList
int totalTitres = this.titreRepository.Count();
var adminListeModel = titres.Select(t => new AdminTitreList
{
Id = t.IdTitre,
Nom = t.Artiste.Nom,
@@ -58,9 +71,15 @@ public class TitreController : Controller
NbLectures = t.NbLectures,
NbLikes = t.NbLikes,
NbCommentaires = t.Commentaires?.Count ?? 0,
}).ToList();
});
return this.View(model);
var vm = new TitreIndexViewModel
{
Titres = adminListeModel.ToList(),
Page = page,
TotalPages = (int)Math.Ceiling((double)totalTitres / titres_par_page),
};
return this.View(vm);
}
/// <summary>