#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:
@@ -12,9 +12,9 @@ using Webzine.WebApplication.Areas.Administration.ViewModels.Artiste;
|
||||
[Area("Administration")]
|
||||
public class ArtisteController : Controller
|
||||
{
|
||||
// Injection du logger via le constructeur
|
||||
private readonly ILogger<ArtisteController> logger;
|
||||
private readonly IArtisteRepository artisteRepository;
|
||||
private readonly IConfiguration configuration;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="ArtisteController"/> class.
|
||||
@@ -22,25 +22,39 @@ public class ArtisteController : Controller
|
||||
/// </summary>
|
||||
/// <param name="logger">Logger.</param>
|
||||
/// <param name="artisteRepository">Repository pour les artistes.</param>
|
||||
/// <param name="configuration">Configuration.</param>
|
||||
public ArtisteController(
|
||||
ILogger<ArtisteController> logger,
|
||||
IArtisteRepository artisteRepository)
|
||||
IArtisteRepository artisteRepository,
|
||||
IConfiguration configuration)
|
||||
{
|
||||
this.logger = logger;
|
||||
this.artisteRepository = artisteRepository;
|
||||
this.configuration = configuration;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Affiche la liste des artistes.
|
||||
/// Affiche la liste des artistes paginée.
|
||||
/// </summary>
|
||||
/// <param name="page">Le numéro de page pour la pagination des artistes (par défaut à 0).</param>
|
||||
/// <returns>Redirection.</returns>
|
||||
public IActionResult Index()
|
||||
public IActionResult Index(int page = 0)
|
||||
{
|
||||
IEnumerable<Artiste> artistes = this.artisteRepository.FindAll();
|
||||
int artistes_par_page = this.configuration.GetValue<int>("Webzine:NombreDeLignesAdministration");
|
||||
|
||||
var artistes_ordre = artistes.OrderBy(t => t.Nom).ToList();
|
||||
IEnumerable<Artiste> artistes = this.artisteRepository.FindArtistes(page * artistes_par_page, artistes_par_page);
|
||||
|
||||
return this.View(artistes_ordre);
|
||||
int totalArtistes = this.artisteRepository.Count();
|
||||
|
||||
int totalPages = (int)Math.Ceiling((double)totalArtistes / artistes_par_page);
|
||||
var model = new ArtisteIndexViewModel
|
||||
{
|
||||
Artistes = artistes.ToList(),
|
||||
Page = page,
|
||||
TotalPages = totalPages,
|
||||
};
|
||||
|
||||
return this.View(model);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -13,6 +13,7 @@ namespace Webzine.WebApplication.Areas.Administration.Controllers
|
||||
{
|
||||
private readonly ILogger<CommentaireController> logger;
|
||||
private readonly ICommentaireRepository commentaireRepository;
|
||||
private readonly IConfiguration configuration;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="CommentaireController"/> class.
|
||||
@@ -21,10 +22,15 @@ namespace Webzine.WebApplication.Areas.Administration.Controllers
|
||||
/// </summary>
|
||||
/// <param name="logger">Service de journalisation injecté.</param>
|
||||
/// <param name="commentaireRepository">Le repository des commentaires injecté.</param>
|
||||
public CommentaireController(ILogger<CommentaireController> logger, ICommentaireRepository commentaireRepository)
|
||||
/// <param name="configuration">Service de configuration injecté pour accéder aux paramètres de configuration.</param>
|
||||
public CommentaireController(
|
||||
ILogger<CommentaireController> logger,
|
||||
ICommentaireRepository commentaireRepository,
|
||||
IConfiguration configuration)
|
||||
{
|
||||
this.logger = logger;
|
||||
this.commentaireRepository = commentaireRepository;
|
||||
this.configuration = configuration;
|
||||
|
||||
this.logger.LogInformation("Initialisation du contrôleur CommentaireController.");
|
||||
}
|
||||
@@ -32,16 +38,23 @@ namespace Webzine.WebApplication.Areas.Administration.Controllers
|
||||
/// <summary>
|
||||
/// Affiche la liste des commentaires dans la vue Index.
|
||||
/// </summary>
|
||||
/// <param name="page">Le numéro de page pour la pagination des commentaires (par défaut à 0).</param>
|
||||
/// <returns>La vue Index avec le ViewModel contenant la liste des commentaires.</returns>
|
||||
public IActionResult Index()
|
||||
public IActionResult Index(int page = 0)
|
||||
{
|
||||
int commentaires_par_page = this.configuration.GetValue<int>("Webzine:NombreDeLignesAdministration");
|
||||
|
||||
// Récupération des commentaires depuis le repository
|
||||
var commentaires = this.commentaireRepository.FindAll();
|
||||
var commentaires = this.commentaireRepository.FindCommentaires(page * commentaires_par_page, commentaires_par_page);
|
||||
|
||||
int totalCommentaires = this.commentaireRepository.Count();
|
||||
|
||||
// Initialisation du ViewModel
|
||||
var viewModel = new CommentaireViewModel
|
||||
var viewModel = new CommentaireIndexViewModel
|
||||
{
|
||||
Commentaires = commentaires,
|
||||
Page = page,
|
||||
TotalPages = (int)Math.Ceiling((double)totalCommentaires / commentaires_par_page),
|
||||
};
|
||||
|
||||
return this.View(viewModel);
|
||||
|
||||
@@ -14,18 +14,22 @@ public class StyleController : Controller
|
||||
{
|
||||
private readonly ILogger<StyleController> logger;
|
||||
private readonly IStyleRepository styleRepository;
|
||||
private readonly IConfiguration configuration;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="StyleController"/> class.
|
||||
/// </summary>
|
||||
/// <param name="logger">Service de journalisation injecte.</param>
|
||||
/// <param name="styleRepository">Repository des styles injecte.</param>
|
||||
/// <param name="configuration">Service de configuration injecte pour acceder aux parametres de configuration.</param>
|
||||
public StyleController(
|
||||
ILogger<StyleController> logger,
|
||||
IStyleRepository styleRepository)
|
||||
IStyleRepository styleRepository,
|
||||
IConfiguration configuration)
|
||||
{
|
||||
this.logger = logger;
|
||||
this.styleRepository = styleRepository;
|
||||
this.configuration = configuration;
|
||||
|
||||
this.logger.LogInformation("Initialisation du controleur StyleController.");
|
||||
}
|
||||
@@ -33,12 +37,22 @@ public class StyleController : Controller
|
||||
/// <summary>
|
||||
/// Affiche la liste des styles dans la vue Index.
|
||||
/// </summary>
|
||||
/// <param name="page">Le numero de page pour la pagination des styles (par defaut a 0).</param>
|
||||
/// <returns>La vue Index avec la liste des styles.</returns>
|
||||
public IActionResult Index()
|
||||
public IActionResult Index(int page = 0)
|
||||
{
|
||||
IEnumerable<Style> listeStyles = this.styleRepository.FindAll().Take(10);
|
||||
int styles_par_page = this.configuration.GetValue<int>("Webzine:NombreDeLignesAdministration");
|
||||
IEnumerable<Style> listeStyles = this.styleRepository.FindStyles(page * styles_par_page, styles_par_page);
|
||||
|
||||
return this.View(listeStyles);
|
||||
int totalStyles = this.styleRepository.Count();
|
||||
|
||||
var model = new StyleIndexViewModel
|
||||
{
|
||||
Styles = listeStyles,
|
||||
Page = page,
|
||||
TotalPages = (int)Math.Ceiling((double)totalStyles / styles_par_page),
|
||||
};
|
||||
return this.View(model);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user