refactor: simplifier les actions du contrôleur en supprimant les contrôles ModelState redondants et en améliorant la récupération des données

This commit is contained in:
mirage
2026-04-02 15:57:52 +02:00
parent 6ccb8173ee
commit 8acafbfe49
16 changed files with 158 additions and 61 deletions

View File

@@ -21,6 +21,7 @@
/// </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>
/// <param name="titreRepository"></param>
public AccueilController(
ILogger<AccueilController> logger,
IConfiguration configuration,

View File

@@ -2,12 +2,14 @@ namespace Webzine.WebApplication.Controllers;
using Microsoft.AspNetCore.Mvc;
/// <summary>
/// Controller de version de l'API.
/// </summary>
public class ApiController : ControllerBase
{
private readonly ILogger<ApiController> logger;
/// <summary>
/// Initializes a new instance of the <see cref="ApiController"/> class.
/// Initialise une nouvelle instance de la classe <see cref="ApiController"/>.
/// </summary>
/// <param name="logger">Service de journalisation injecté pour enregistrer les événements et les erreurs.</param>
@@ -21,7 +23,6 @@ public class ApiController : ControllerBase
/// Endpoint de test pour vérifier que l'API fonctionne correctement. Retourne un objet JSON contenant le nom et la version de l'application.
/// </summary>
/// <returns>Un objet JSON avec les propriétés "nom" et "version".</returns>
[HttpGet]
public IActionResult Version()
{
this.logger.LogInformation("Get Version was called");

View File

@@ -5,6 +5,9 @@
using Webzine.Repository.Contracts;
using Webzine.WebApplication.ViewModels.Artiste;
/// <summary>
///
/// </summary>
public class ArtisteController : Controller
{
// Injection du logger via le constructeur
@@ -16,6 +19,7 @@
/// Initialise une nouvelle instance du <see cref="ArtisteController"/>. avec un service de journalisation injecté.
/// </summary>
/// <param name="logger">Service de journalisation injecté pour enregistrer les événements et les erreurs.</param>
/// <param name="artisteRepository"></param>
public ArtisteController(
ILogger<ArtisteController> logger,
IArtisteRepository artisteRepository)

View File

@@ -9,12 +9,21 @@ namespace Webzine.WebApplication.Controllers
using Webzine.Repository.Contracts;
using Webzine.WebApplication.ViewModels.Recherche;
/// <summary>
///
/// </summary>
public class RechercheController : Controller
{
private readonly ILogger<RechercheController> logger;
private readonly ITitreRepository titreRepository;
private readonly IArtisteRepository artisteRepository;
/// <summary>
/// Initialise une nouvelle instance de la classe <see cref="RechercheController"/>.
/// </summary>
/// <param name="logger"></param>
/// <param name="titreRepository"></param>
/// <param name="artisteRepository"></param>
public RechercheController(
ILogger<RechercheController> logger,
ITitreRepository titreRepository,

View File

@@ -119,7 +119,7 @@ namespace Webzine.WebApplication.Controllers
this.titreRepository.IncrementNbLikes(titre);
}
return this.RedirectToAction("Details", new { id = model.IdTitre });
return this.RedirectToAction("Index", new { id = model.IdTitre });
}
/// <summary>
@@ -130,12 +130,6 @@ namespace Webzine.WebApplication.Controllers
[HttpPost]
public IActionResult Comment(TitreComment model)
{
if (!this.ModelState.IsValid)
{
this.logger.LogWarning("Echec de validation du modele de commentaire pour le titre ID {Id}.", model.IdTitre);
return this.RedirectToAction("Details", new { id = model.IdTitre });
}
var titre = this.titreRepository.Find(model.IdTitre);
if (titre == null)
@@ -156,7 +150,7 @@ namespace Webzine.WebApplication.Controllers
this.logger.LogInformation("Commentaire ajoute avec succes au titre ID {Id}.", model.IdTitre);
return this.RedirectToAction("Details", new { id = model.IdTitre });
return this.RedirectToAction("Index", new { id = model.IdTitre });
}
private static TitreStyleItem MapTitreItem(Titre titre)