From 6173c2c5a98cf475014c3e95df1a21b65484449b Mon Sep 17 00:00:00 2001 From: Loic Masi Date: Tue, 7 Apr 2026 11:25:50 +0200 Subject: [PATCH 1/3] =?UTF-8?q?#124=20:=20Mis=20en=20place=20d'un=20bouton?= =?UTF-8?q?=20pour=20acceder=20aux=20titres=20r=C3=A9cents.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/AccueilController.cs | 12 ++++++----- .../Accueil/AccueilIndexViewModel.cs | 5 +++++ .../Views/Accueil/Index.cshtml | 21 +++++++++++++------ 3 files changed, 27 insertions(+), 11 deletions(-) diff --git a/Webzine.WebApplication/Controllers/AccueilController.cs b/Webzine.WebApplication/Controllers/AccueilController.cs index 644febd..fd7c03e 100644 --- a/Webzine.WebApplication/Controllers/AccueilController.cs +++ b/Webzine.WebApplication/Controllers/AccueilController.cs @@ -31,7 +31,6 @@ this.configuration = configuration; this.titreRepository = titreRepository; this.logger.LogDebug(1, "initialisation du AccueilController"); - this.titreRepository = titreRepository; } /// @@ -45,17 +44,20 @@ var derniereChronique = this.configuration.GetValue("Webzine:NombreDerniereChronique"); var nbTopTitres = this.configuration.GetValue("Webzine:NombreDeTopTitres"); + var totalTitres = this.titreRepository.Count(); + var totalPages = (int)Math.Ceiling((double)totalTitres / derniereChronique); - var titres_pagines = this.titreRepository.FindTitres(page * derniereChronique, derniereChronique); - var top_titres = this.titreRepository.FindAll() + var titresPagines = this.titreRepository.FindTitres(page * derniereChronique, derniereChronique); + var topTitres = this.titreRepository.FindAll() .OrderByDescending(t => t.NbLikes) .Take(nbTopTitres); var vm = new AccueilIndexViewModel { - DerniersTitres = titres_pagines.ToList(), - TopTitres = top_titres.ToList(), + DerniersTitres = titresPagines.ToList(), + TopTitres = topTitres.ToList(), Page = page, + TotalPages = totalPages, }; return this.View(vm); diff --git a/Webzine.WebApplication/ViewModels/Accueil/AccueilIndexViewModel.cs b/Webzine.WebApplication/ViewModels/Accueil/AccueilIndexViewModel.cs index dbf66ff..d08b1a1 100644 --- a/Webzine.WebApplication/ViewModels/Accueil/AccueilIndexViewModel.cs +++ b/Webzine.WebApplication/ViewModels/Accueil/AccueilIndexViewModel.cs @@ -26,5 +26,10 @@ /// Obtient ou définit le numéro de page pour la pagination des titres affichés sur la page d'accueil. /// public int Page { get; set; } = 0; + + /// + /// Nombre total de page. + /// + public int TotalPages { get; set; } = 0; } } \ No newline at end of file diff --git a/Webzine.WebApplication/Views/Accueil/Index.cshtml b/Webzine.WebApplication/Views/Accueil/Index.cshtml index 82710cf..96769fd 100644 --- a/Webzine.WebApplication/Views/Accueil/Index.cshtml +++ b/Webzine.WebApplication/Views/Accueil/Index.cshtml @@ -73,12 +73,21 @@ } -
- - Titres plus anciens >> - - +
+ @if (Model.Page > 0) + { + + << Titre plus récent + + } + @if (Model.Page < Model.TotalPages - 1) + { + + Titre plus anciens >> + + }
From e6cd6ac81b6b33db055a1253f0b8f265302ad74e Mon Sep 17 00:00:00 2001 From: Loic Masi Date: Tue, 7 Apr 2026 11:42:38 +0200 Subject: [PATCH 2/3] #209 : Ajout des redirections. --- Webzine.WebApplication/Views/Contact/Index.cshtml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Webzine.WebApplication/Views/Contact/Index.cshtml b/Webzine.WebApplication/Views/Contact/Index.cshtml index 55ef4d4..a66aefc 100644 --- a/Webzine.WebApplication/Views/Contact/Index.cshtml +++ b/Webzine.WebApplication/Views/Contact/Index.cshtml @@ -11,8 +11,8 @@
- Phone : 03 80 40 50 60
- secretariat@cucdb.fr + Phone : 03 80 40 50 60
+ secretariat@cucdb.fr
@@ -22,35 +22,35 @@

Suivez-nous

- +
Google Maps
From b754d0104b5b7b960b055b3da23814126afa60ce Mon Sep 17 00:00:00 2001 From: Loic Masi Date: Wed, 8 Apr 2026 18:38:46 +0200 Subject: [PATCH 3/3] =?UTF-8?q?#211=20:=20Optimisation=20de=20la=20recherc?= =?UTF-8?q?he=20des=20derni=C3=A8res=20chroniques=20et=20des=20titres=20le?= =?UTF-8?q?s=20plus=20populaires.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ITitreRepository.cs | 14 +++++++ Webzine.Repository/DbTitreRepository.cs | 41 +++++++++++++++++++ Webzine.Repository/LocalTitreRepository.cs | 35 ++++++++++++++++ .../Controllers/AccueilController.cs | 10 ++--- 4 files changed, 94 insertions(+), 6 deletions(-) diff --git a/Webzine.Repository.Contracts/ITitreRepository.cs b/Webzine.Repository.Contracts/ITitreRepository.cs index 8c574c1..4f19c38 100644 --- a/Webzine.Repository.Contracts/ITitreRepository.cs +++ b/Webzine.Repository.Contracts/ITitreRepository.cs @@ -107,5 +107,19 @@ /// /// Un tuple contenant l'identifiant et le libellé du titre le plus joué, ou null si aucun titre n'existe. (int IdTitre, string Libelle)? FindMostPlayedTitle(); + + /// + /// Récupération des chroniques. + /// + /// Nombre d'éléments. + /// Limite d'éléments. + /// Liste des derniers titres chroniqués. + IEnumerable DerniereChronique(int offset, int limit); + + /// + /// Récupération du top titre liké. + /// + /// Liste de titre les plus likés. + IEnumerable TopTitre(int offset, int limit); } } \ No newline at end of file diff --git a/Webzine.Repository/DbTitreRepository.cs b/Webzine.Repository/DbTitreRepository.cs index 37ecdb0..a581fe9 100644 --- a/Webzine.Repository/DbTitreRepository.cs +++ b/Webzine.Repository/DbTitreRepository.cs @@ -409,4 +409,45 @@ public class DbTitreRepository : ITitreRepository throw; } } + + /// + public IEnumerable DerniereChronique(int offset, int limit) + { + try + { + this.logger.LogInformation("Récupération des dernières chroniques."); + + return this.context.Titres + .AsNoTracking() + .OrderByDescending(t => t.DateCreation) + .Paginate(offset, limit) + .Include(t => t.Artiste); + } + catch (Exception ex) + { + this.logger.LogError(ex, "Erreur lors de la recuperation des dernieres chroniques."); + throw; + } + } + + /// + public IEnumerable TopTitre(int offset, int limit) + { + try + { + this.logger.LogInformation("Récupération du Top Titre."); + var titres = this.context.Titres + .AsNoTracking() + .OrderByDescending(t => t.NbLikes) + .Paginate(offset, limit) + .Include(a => a.Artiste); + + return titres; + } + catch (Exception ex) + { + this.logger.LogError(ex, "Erreur lors de la récupération du Top Titre."); + throw; + } + } } \ No newline at end of file diff --git a/Webzine.Repository/LocalTitreRepository.cs b/Webzine.Repository/LocalTitreRepository.cs index 13e995e..cb9877f 100644 --- a/Webzine.Repository/LocalTitreRepository.cs +++ b/Webzine.Repository/LocalTitreRepository.cs @@ -181,4 +181,39 @@ public class LocalTitreRepository : ITitreRepository return titre == null ? null : (titre.IdTitre, titre.Libelle); } + + /// + public IEnumerable DerniereChronique(int offset, int limit) + { + try + { + return this.dataStore.Titres + .OrderByDescending(t => t.DateCreation) + .Paginate(offset, limit); + } + catch (Exception ex) + { + this.logger.LogError(ex, "Erreur lors de la recuperation des dernieres chroniques."); + throw; + } + } + + /// + public IEnumerable TopTitre(int offset, int limit) + { + try + { + this.logger.LogInformation("Récupération du Top Titre."); + var titres = this.dataStore.Titres + .OrderByDescending(t => t.NbLikes) + .Paginate(offset, limit); + + return titres; + } + catch (Exception ex) + { + this.logger.LogError(ex, "Erreur lors de la récupération du Top Titre."); + throw; + } + } } \ No newline at end of file diff --git a/Webzine.WebApplication/Controllers/AccueilController.cs b/Webzine.WebApplication/Controllers/AccueilController.cs index fd7c03e..f7832da 100644 --- a/Webzine.WebApplication/Controllers/AccueilController.cs +++ b/Webzine.WebApplication/Controllers/AccueilController.cs @@ -47,15 +47,13 @@ var totalTitres = this.titreRepository.Count(); var totalPages = (int)Math.Ceiling((double)totalTitres / derniereChronique); - var titresPagines = this.titreRepository.FindTitres(page * derniereChronique, derniereChronique); - var topTitres = this.titreRepository.FindAll() - .OrderByDescending(t => t.NbLikes) - .Take(nbTopTitres); + var titresPagines = this.titreRepository.DerniereChronique(page * derniereChronique, derniereChronique).ToList(); + var topTitres = this.titreRepository.TopTitre(nbTopTitres, nbTopTitres).ToList(); var vm = new AccueilIndexViewModel { - DerniersTitres = titresPagines.ToList(), - TopTitres = topTitres.ToList(), + DerniersTitres = titresPagines, + TopTitres = topTitres, Page = page, TotalPages = totalPages, };