diff --git a/Webzine.WebApplication/Areas/Administration/Views/Commentaire/Index.cshtml b/Webzine.WebApplication/Areas/Administration/Views/Commentaire/Index.cshtml index c8608b7..1c8a9db 100644 --- a/Webzine.WebApplication/Areas/Administration/Views/Commentaire/Index.cshtml +++ b/Webzine.WebApplication/Areas/Administration/Views/Commentaire/Index.cshtml @@ -25,7 +25,7 @@ { - + @commentaire.Titre.Libelle diff --git a/Webzine.WebApplication/Areas/Administration/Views/Dashboard/Index.cshtml b/Webzine.WebApplication/Areas/Administration/Views/Dashboard/Index.cshtml index 65217be..eb54db1 100644 --- a/Webzine.WebApplication/Areas/Administration/Views/Dashboard/Index.cshtml +++ b/Webzine.WebApplication/Areas/Administration/Views/Dashboard/Index.cshtml @@ -95,7 +95,7 @@
diff --git a/Webzine.WebApplication/Controllers/ArtisteController.cs b/Webzine.WebApplication/Controllers/ArtisteController.cs index a24bec9..ef5781b 100644 --- a/Webzine.WebApplication/Controllers/ArtisteController.cs +++ b/Webzine.WebApplication/Controllers/ArtisteController.cs @@ -30,7 +30,6 @@ /// /// Le nom de l'artiste à rechercher, formaté en kebab-case (ex: "fatal-bazooka"). /// La vue de l'artiste avec son ViewModel, ou une redirection vers l'accueil si le nom est vide, ou une erreur 404 si l'artiste n'est pas trouvé. - [HttpGet("/artiste/{nom}")] public IActionResult Index(string nom) { this.logger.LogInformation("Tentative d'accès à l'artiste avec le nom : {NomArtiste}", nom); diff --git a/Webzine.WebApplication/Controllers/RechercheController.cs b/Webzine.WebApplication/Controllers/RechercheController.cs index 2d5c4b9..2070c8c 100644 --- a/Webzine.WebApplication/Controllers/RechercheController.cs +++ b/Webzine.WebApplication/Controllers/RechercheController.cs @@ -29,7 +29,7 @@ namespace Webzine.WebApplication.Controllers /// Affichage de la page Recherche depuis le header de l'app. /// /// Nom d'artiste ou de titre. - /// Page de recherche avec les résultats. + /// Page de recherche avec les r�sultats. public IActionResult Index(string mot) { // Logger la recherche. @@ -41,7 +41,7 @@ namespace Webzine.WebApplication.Controllers // Recherche des artistes. var artistes = this.artisteRepository.Search(mot); - // Paramètres a retourner à la vue. + // Param�tres a retourner � la vue. var vm = new RechercheIndexViewModel { Mot = mot, diff --git a/Webzine.WebApplication/Controllers/TitreController.cs b/Webzine.WebApplication/Controllers/TitreController.cs index 01b1239..384f41e 100644 --- a/Webzine.WebApplication/Controllers/TitreController.cs +++ b/Webzine.WebApplication/Controllers/TitreController.cs @@ -15,7 +15,6 @@ namespace Webzine.WebApplication.Controllers /// affichage des details, filtrage par style, /// ajout de likes, commentaires et recherche. /// - [Route("titre")] public class TitreController : Controller { private readonly ILogger logger; @@ -40,8 +39,8 @@ namespace Webzine.WebApplication.Controllers /// /// Identifiant du titre. /// Vue des details ou 404 si introuvable. - [HttpGet("{id}")] - public IActionResult Details(int id) + + public IActionResult Index(int id) { this.logger.LogInformation("Demande d'affichage du detail pour le titre ID {Id}.", id); @@ -82,7 +81,6 @@ namespace Webzine.WebApplication.Controllers /// /// Nom du style musical. /// Vue contenant la liste filtree. - [HttpGet("style/{style}")] public IActionResult Style(string style) { this.logger.LogInformation("Recherche des titres pour le style : {Style}.", style); @@ -103,7 +101,7 @@ namespace Webzine.WebApplication.Controllers /// /// Modele contenant l'identifiant du titre. /// Redirection vers la page detail. - [HttpPost("like")] + [HttpPost] public IActionResult Like(TitreLike model) { this.logger.LogInformation("Ajout d'un like pour le titre ID {Id}.", model.IdTitre); @@ -126,7 +124,7 @@ namespace Webzine.WebApplication.Controllers /// /// Donnees du commentaire. /// Redirection vers la page detail. - [HttpPost("comment")] + [HttpPost] public IActionResult Comment(TitreComment model) { if (!this.ModelState.IsValid) diff --git a/Webzine.WebApplication/Extensions/RouteConfiguration.cs b/Webzine.WebApplication/Extensions/RouteConfiguration.cs index caa0efa..d7f43b8 100644 --- a/Webzine.WebApplication/Extensions/RouteConfiguration.cs +++ b/Webzine.WebApplication/Extensions/RouteConfiguration.cs @@ -7,6 +7,41 @@ public static class RouteConfiguration /// public static void MapCustomRoutes(this IEndpointRouteBuilder endpoints) { + // ----------- TITRE ----------- + endpoints.MapControllerRoute( + name: "TitreStyle", + pattern: "titres/style/{style}", + defaults: new { controller = "Titre", action = "Style" }); + + endpoints.MapControllerRoute( + name: "TitreIndex", + pattern: "titre/{id}", + defaults: new { controller = "Titre", action = "Index" }); + + endpoints.MapControllerRoute( + name: "ArtisteIndex", + pattern: "artiste/{nom}", + defaults: new { controller = "Artiste", action = "Index" }); + + + // ----------- ADMIN ----------- + + var adminRoutes = new Dictionary + { + { "artistes", "Artiste" }, { "commentaires", "Commentaire" }, { "styles", "Style" }, { "titres", "Titre" }, + }; + + foreach (var route in adminRoutes) + { + endpoints.MapControllerRoute( + name: $"Admin{route.Value}Index", + pattern: $"administration/{route.Key}", + defaults: new { area = "Administration", controller = route.Value, action = "Index" }); + } + + + // --- AUTRE PROUTES --- + endpoints.MapControllerRoute( name: "areas", pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}"); diff --git a/Webzine.WebApplication/Views/Accueil/Index.cshtml b/Webzine.WebApplication/Views/Accueil/Index.cshtml index 6b11176..defe1e8 100644 --- a/Webzine.WebApplication/Views/Accueil/Index.cshtml +++ b/Webzine.WebApplication/Views/Accueil/Index.cshtml @@ -29,7 +29,7 @@ @titre.Artiste.Nom - - @titre.Libelle @@ -43,7 +43,7 @@
- @@ -90,7 +90,7 @@ @titre.Album
- + @titre.Libelle
diff --git a/Webzine.WebApplication/Views/Artiste/Index.cshtml b/Webzine.WebApplication/Views/Artiste/Index.cshtml index 59716b8..fe66f72 100644 --- a/Webzine.WebApplication/Views/Artiste/Index.cshtml +++ b/Webzine.WebApplication/Views/Artiste/Index.cshtml @@ -56,7 +56,7 @@ else @dureeFormatee @titre.Libelle diff --git a/Webzine.WebApplication/Views/Recherche/Index.cshtml b/Webzine.WebApplication/Views/Recherche/Index.cshtml index 53e3853..ef89879 100644 --- a/Webzine.WebApplication/Views/Recherche/Index.cshtml +++ b/Webzine.WebApplication/Views/Recherche/Index.cshtml @@ -15,7 +15,7 @@ @if (!Model.Artistes.Any()) {
-

Aucun artiste n'a été trouvé.

+

Aucun artiste n'a été trouvé.

} @@ -35,7 +35,7 @@ @if (!Model.Titres.Any()) {
-

Aucun titre n'a été trouvé.

+

Aucun titre n'a été trouvé.

} @@ -43,7 +43,7 @@ {
@titre.Libelle @@ -58,7 +58,7 @@ - @titre.Libelle diff --git a/Webzine.WebApplication/Views/Titre/Details.cshtml b/Webzine.WebApplication/Views/Titre/Index.cshtml similarity index 100% rename from Webzine.WebApplication/Views/Titre/Details.cshtml rename to Webzine.WebApplication/Views/Titre/Index.cshtml diff --git a/scripts/test-endpoints.sh b/scripts/test-endpoints.sh index 146cfcb..0c96983 100644 --- a/scripts/test-endpoints.sh +++ b/scripts/test-endpoints.sh @@ -131,7 +131,7 @@ info "── Titre – Par style ─────────────── STYLES=("Rock" "Pop" "Rap" "Jazz" "Metal" "Electronic" "Hip-Hop" "Soul" "Funk") for STYLE in "${STYLES[@]}"; do ENCODE=$(python3 -c "import urllib.parse; print(urllib.parse.quote('$STYLE'))" 2>/dev/null || echo "$STYLE") - verifier_endpoint GET "$BASE_URL/titre/style/$ENCODE" "GET /titre/style/$STYLE" + verifier_endpoint GET "$BASE_URL/titres/style/$ENCODE" "GET /titres/style/$STYLE" done log "" @@ -160,26 +160,26 @@ verifier_endpoint GET "$BASE_URL/Administration/Dashboard" "GET /A log "" info "── Administration – Artiste ──────────────────────────────" -verifier_endpoint GET "$BASE_URL/Administration/Artiste" "GET /Administration/Artiste (liste)" +verifier_endpoint GET "$BASE_URL/Administration/Artistes" "GET /Administration/Artistes (liste)" verifier_endpoint GET "$BASE_URL/Administration/Artiste/Create" "GET /Administration/Artiste/Create" verifier_endpoint GET "$BASE_URL/Administration/Artiste/Edit/1" "GET /Administration/Artiste/Edit/1" verifier_endpoint GET "$BASE_URL/Administration/Artiste/Delete/1" "GET /Administration/Artiste/Delete/1" log "" info "── Administration – Commentaire ──────────────────────────" -verifier_endpoint GET "$BASE_URL/Administration/Commentaire" "GET /Administration/Commentaire (liste)" +verifier_endpoint GET "$BASE_URL/Administration/Commentaires" "GET /Administration/Commentaires (liste)" verifier_endpoint GET "$BASE_URL/Administration/Commentaire/Delete/1" "GET /Administration/Commentaire/Delete/1" log "" info "── Administration – Style ────────────────────────────────" -verifier_endpoint GET "$BASE_URL/Administration/Style" "GET /Administration/Style (liste)" +verifier_endpoint GET "$BASE_URL/Administration/Styles" "GET /Administration/Styles (liste)" verifier_endpoint GET "$BASE_URL/Administration/Style/Create" "GET /Administration/Style/Create" verifier_endpoint GET "$BASE_URL/Administration/Style/Edit/1" "GET /Administration/Style/Edit/1" verifier_endpoint GET "$BASE_URL/Administration/Style/Delete/1" "GET /Administration/Style/Delete/1" log "" info "── Administration – Titre ────────────────────────────────" -verifier_endpoint GET "$BASE_URL/Administration/Titre" "GET /Administration/Titre (liste)" +verifier_endpoint GET "$BASE_URL/Administration/Titres" "GET /Administration/Titres (liste)" verifier_endpoint GET "$BASE_URL/Administration/Titre/Create" "GET /Administration/Titre/Create" verifier_endpoint GET "$BASE_URL/Administration/Titre/Edit/1" "GET /Administration/Titre/Edit/1" verifier_endpoint GET "$BASE_URL/Administration/Titre/Delete/1" "GET /Administration/Titre/Delete/1"