Files
webzine/Webzine.WebApplication/Controllers/AccueilController.cs

61 lines
2.3 KiB
C#

// <copyright file="AccueilController.cs" company=" Equipe 1 - ">
// Copyright (c) Equipe 1 - . All rights reserved.
// </copyright>
namespace Webzine.WebApplication.Controllers
{
using Microsoft.AspNetCore.Mvc;
using Webzine.Repository.Fake;
using Webzine.WebApplication.ViewModels.Accueil;
/// <summary>
/// Permet de retourner la page d'accueil avec tous les éléments.
/// </summary>
public class AccueilController : Controller
{
// Injection du logger via le constructeur
private readonly ILogger<AccueilController> logger;
private readonly IConfiguration configuration;
/// <summary>
/// Initialise une nouvelle instance de la classe <see cref="AccueilController"/>.
/// </summary>
/// <param name="logger">Service de journalisation injecté pour enregistrer les événements et les erreurs.</param>
/// <param name="configuration">Service d'injection de configuration pour accéder aux paramètres de l'application.</param>
public AccueilController(ILogger<AccueilController> logger, IConfiguration configuration)
{
this.logger = logger;
this.configuration = configuration;
this.logger.LogDebug(1, "initialisation du AccueilController");
}
/// <summary>
/// Affiche la page d'accueil du webzine, présentant les derniers titres et les titres les plus populaires.
/// </summary>
/// <returns>La vue Index avec le ViewModel contenant les listes de titres à afficher.</returns>
public ActionResult Index()
{
this.logger.LogInformation("Arrivée sur la page d'accueil");
var derniereChronique = configuration.GetValue<int>("Webzine:NombreDerniereChronique");
var topTitres = configuration.GetValue<int>("Webzine:NombreDeTopTitres");
var titres = FakeDataFactory.GetTitres();
var vm = new AccueilIndexViewModel
{
DerniersTitres = titres
.OrderByDescending(t => t.DateCreation)
.Take(derniereChronique)
.ToList(),
TopTitres = titres
.OrderByDescending(t => t.NbLikes)
.Take(topTitres)
.ToList(),
};
return this.View(vm);
}
}
}