diff --git a/Webzine.Entity/Artiste.cs b/Webzine.Entity/Artiste.cs
index 257fe56..6db6bc0 100644
--- a/Webzine.Entity/Artiste.cs
+++ b/Webzine.Entity/Artiste.cs
@@ -12,16 +12,28 @@ namespace Webzine.Entity
///
public class Artiste
{
+ ///
+ /// Identifiant unique de l'artiste.
+ ///
public int IdArtiste { get; set; }
+ ///
+ /// Nom de l'artiste. Doit être compris entre 2 et 50 caractères et est obligatoire.
+ ///
[Required]
[MinLength(2)]
[MaxLength(50)]
[Display(Name = "Nom de l'artiste")]
public string Nom { get; set; }
+ ///
+ /// Biographie de l'artiste, qui peut contenir une description de sa carrière, de son style musical, etc. Doit être compris entre 10 et 4000 caractères et est obligatoire.
+ ///
public string Biographie { get; set; }
+ ///
+ /// Date de création de l'artiste. Représente la date à laquelle l'artiste a été ajouté à la base de données. Doit être une date valide et est obligatoire.
+ ///
public List Titres { get; set; }
}
}
diff --git a/Webzine.Entity/Commentaire.cs b/Webzine.Entity/Commentaire.cs
index 36530b6..baaa852 100644
--- a/Webzine.Entity/Commentaire.cs
+++ b/Webzine.Entity/Commentaire.cs
@@ -11,26 +11,44 @@ namespace Webzine.Entity
///
public class Commentaire
{
+ ///
+ /// Identifiant unique du commentaire.
+ ///
public int IdCommentaire { get; set; }
+ ///
+ /// Contenu du commentaire laissé par l'utilisateur. Doit être compris entre 10 et 1000 caractères et est obligatoire.
+ ///
[Required]
[MinLength(10)]
[MaxLength(1000)]
[Display(Name = "Commentaire")]
public string Contenu { get; set; }
+ ///
+ /// Nom de l'auteur du commentaire. Doit être compris entre 2 et 30 caractères et est obligatoire.
+ ///
[Required]
[MinLength(2)]
[MaxLength(30)]
[Display(Name = "Nom")]
public string Auteur { get; set; }
+ ///
+ /// Date de création du commentaire. Représente la date à laquelle le commentaire a été laissé par l'utilisateur. Doit être une date valide et est obligatoire.
+ ///
[Required]
[Display(Name = "Date de création")]
public DateTime DateCreation { get; set; }
+ ///
+ /// Identifiant du titre associé à ce commentaire. Clé étrangère vers l'entité .
+ ///
public int IdTitre { get; set; }
+ ///
+ /// Référence au titre associé à ce commentaire. Permet d'accéder aux informations du titre à partir du commentaire.
+ ///
public Titre Titre { get; set; }
}
}
diff --git a/Webzine.Entity/Fixtures/ArtisteFactory.cs b/Webzine.Entity/Fixtures/ArtisteFactory.cs
index e9af87b..d8ecb26 100644
--- a/Webzine.Entity/Fixtures/ArtisteFactory.cs
+++ b/Webzine.Entity/Fixtures/ArtisteFactory.cs
@@ -4,15 +4,14 @@ namespace Webzine.Entity.Fixtures
{
///
/// Factory pour générer des artistes avec des titres associés, à l'aide de la bibliothèque Bogus.
- ///
///
public class ArtisteFactory
{
///
/// Récupère un artiste par son nom, en générant des données fictives pour ses titres associés.
///
- ///
- ///
+ /// Le nom de l'artiste à générer.
+ /// Un objet Artiste avec des titres associés générés de manière aléatoire.
public static Artiste SeedArtisteByName(string nom)
{
// On définit nos albums "bouchonnés"
diff --git a/Webzine.Entity/Fixtures/DataFactory.cs b/Webzine.Entity/Fixtures/DataFactory.cs
index 5199a8a..8b6617d 100644
--- a/Webzine.Entity/Fixtures/DataFactory.cs
+++ b/Webzine.Entity/Fixtures/DataFactory.cs
@@ -57,6 +57,11 @@ public class DataFactory
"https://img.youtube.com/vi/1fjA68k8DAU/maxresdefault.jpg") },
};
+ ///
+ /// Génère une liste d'artistes de musique en utilisant la bibliothèque Faker pour créer des noms d'artistes et des biographies réalistes.
+ ///
+ /// Nombre d'artistes à générer
+ /// Liste d'artistes de musique générés
public List GenerateArtists(int count)
{
var artists = new List();
@@ -103,6 +108,7 @@ public class DataFactory
///
/// Nombre de titres à générer
/// Liste des artistes à associer aux titres générés
+ /// Liste des styles à associer aux titres générés
/// Liste de titres de musique générés
public List GenerateTitres(int count, List artists, List
\ No newline at end of file
+
\ No newline at end of file
diff --git a/Webzine.WebApplication/Controllers/AccueilController.cs b/Webzine.WebApplication/Controllers/AccueilController.cs
index 7e18194..354f1f3 100644
--- a/Webzine.WebApplication/Controllers/AccueilController.cs
+++ b/Webzine.WebApplication/Controllers/AccueilController.cs
@@ -10,13 +10,22 @@ namespace Webzine.WebApplication.Controllers
private readonly ILogger _logger;
private readonly IConfiguration _configuration;
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// Service de journalisation injecté pour enregistrer les événements et les erreurs.
+ /// Service d'injection de configuration pour accéder aux paramètres de l'application.
public AccueilController(ILogger logger, IConfiguration configuration)
{
_logger = logger;
_configuration = configuration;
+ this._logger.LogDebug(1, "NLog injected into AccueilController");
}
- // GET: AccueilController
+ ///
+ /// Affiche la page d'accueil du webzine, présentant les derniers titres et les titres les plus populaires.
+ ///
+ /// La vue Index avec le ViewModel contenant les listes de titres à afficher.
public ActionResult Index()
{
_logger.LogInformation("Arrivée sur la page d'accueil");
diff --git a/Webzine.WebApplication/Controllers/ApiController.cs b/Webzine.WebApplication/Controllers/ApiController.cs
index 39e8825..40e6ba2 100644
--- a/Webzine.WebApplication/Controllers/ApiController.cs
+++ b/Webzine.WebApplication/Controllers/ApiController.cs
@@ -6,18 +6,30 @@ public class ApiController : ControllerBase
{
private readonly ILogger _logger;
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// Service de journalisation injecté pour enregistrer les événements et les erreurs.
public ApiController(ILogger logger)
{
this._logger = logger;
this._logger.LogDebug(1, "NLog injected into VersionController");
}
+ ///
+ /// Endpoint de test pour vérifier que l'API fonctionne correctement. Retourne une chaîne de caractères "Hello World !".
+ ///
+ /// Une chaîne de caractères "Hello World !".
[HttpGet]
public string HelloWorld()
{
return "Hello World !";
}
+ ///
+ /// Endpoint de test pour vérifier que l'API fonctionne correctement. Retourne un objet JSON contenant le nom et la version de l'application.
+ ///
+ /// Un objet JSON avec les propriétés "nom" et "version".
[HttpGet]
public IActionResult Version()
{
diff --git a/Webzine.WebApplication/Controllers/ArtisteController.cs b/Webzine.WebApplication/Controllers/ArtisteController.cs
index 0f5b91a..08df8f6 100644
--- a/Webzine.WebApplication/Controllers/ArtisteController.cs
+++ b/Webzine.WebApplication/Controllers/ArtisteController.cs
@@ -9,16 +9,21 @@ namespace Webzine.WebApplication.Controllers
// Injection du logger via le constructeur
private readonly ILogger _logger;
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// Service de journalisation injecté pour enregistrer les événements et les erreurs.
public ArtisteController(ILogger logger)
{
_logger = logger;
+ this._logger.LogDebug(1, "NLog injected into ArtisteController");
}
///
/// Prend en paramètre le nom de l'artiste (ex: "fatal-bazooka"), utilise la factory pour trouver l'artiste correspondant, et affiche sa page dédiée.
///
- ///
- ///
+ /// 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)
{
diff --git a/Webzine.WebApplication/Controllers/ContactController.cs b/Webzine.WebApplication/Controllers/ContactController.cs
index 557e1fb..2aa8c32 100644
--- a/Webzine.WebApplication/Controllers/ContactController.cs
+++ b/Webzine.WebApplication/Controllers/ContactController.cs
@@ -7,6 +7,23 @@ namespace Webzine.WebApplication.Controllers
///
public class ContactController : Controller
{
+ // Injection du logger via le constructeur
+ private readonly ILogger _logger;
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// Service de journalisation injecté pour enregistrer les événements et les erreurs.
+ public ContactController(ILogger logger)
+ {
+ _logger = logger;
+ this._logger.LogDebug(1, "NLog injected into ContactController");
+ }
+
+ ///
+ /// Affiche la page de contact du webzine.
+ ///
+ /// La vue Index de la page de contact.
public IActionResult Index()
{
return View();
diff --git a/Webzine.WebApplication/Controllers/TitreController.cs b/Webzine.WebApplication/Controllers/TitreController.cs
index b89c757..3cfdfbd 100644
--- a/Webzine.WebApplication/Controllers/TitreController.cs
+++ b/Webzine.WebApplication/Controllers/TitreController.cs
@@ -19,6 +19,7 @@ public class TitreController : Controller
private readonly List _artistes;
///
+ /// Initializes a new instance of the class.
/// Initialise une nouvelle instance du .
/// Les données sont générées dynamiquement via .
///
diff --git a/Webzine.WebApplication/ViewModels/Accueil/AccueilIndexViewModel.cs b/Webzine.WebApplication/ViewModels/Accueil/AccueilIndexViewModel.cs
index 8a163d1..fa29cd2 100644
--- a/Webzine.WebApplication/ViewModels/Accueil/AccueilIndexViewModel.cs
+++ b/Webzine.WebApplication/ViewModels/Accueil/AccueilIndexViewModel.cs
@@ -1,10 +1,20 @@
-using Webzine.Entity;
+using Webzine.Entity;
namespace Webzine.WebApplication.ViewModels.Accueil
{
+ ///
+ /// ViewModel pour la page d'accueil du webzine, affichant les derniers titres et les titres les plus populaires.
+ ///
public class AccueilIndexViewModel
{
+ ///
+ /// Définit la liste des derniers titres ajoutés au webzine.
+ ///
public List DerniersTitres { get; set; } = [];
+
+ ///
+ /// Définit la liste des titres les plus populaires du webzine.
+ ///
public List TopTitres { get; set; } = [];
}
}
\ No newline at end of file
diff --git a/Webzine.WebApplication/ViewModels/ArtisteModel.cs b/Webzine.WebApplication/ViewModels/ArtisteModel.cs
index c362cd9..426af29 100644
--- a/Webzine.WebApplication/ViewModels/ArtisteModel.cs
+++ b/Webzine.WebApplication/ViewModels/ArtisteModel.cs
@@ -1,7 +1,10 @@
-using Webzine.Entity;
+using Webzine.Entity;
namespace Webzine.WebApplication.ViewModels
{
+ ///
+ /// ViewModel pour afficher les détails d'un artiste, incluant les informations de l'artiste et la liste de ses titres.
+ ///
public class ArtisteModel
{
///
diff --git a/Webzine.WebApplication/ViewModels/Titre/TitreComment.cs b/Webzine.WebApplication/ViewModels/Titre/TitreComment.cs
index da0dc16..1281c77 100644
--- a/Webzine.WebApplication/ViewModels/Titre/TitreComment.cs
+++ b/Webzine.WebApplication/ViewModels/Titre/TitreComment.cs
@@ -2,16 +2,28 @@ using System.ComponentModel.DataAnnotations;
namespace Webzine.WebApplication.ViewModels.Titre;
+///
+/// Classe représentant un commentaire sur un titre, utilisée pour la validation des données lors de la soumission d'un commentaire.
+///
public class TitreComment
{
+ ///
+ /// Définit l'identifiant du titre auquel le commentaire est associé.
+ ///
[Required]
public int IdTitre { get; set; }
+ ///
+ /// Définit le nom de l'auteur du commentaire.
+ ///
[Required]
[MinLength(2)]
[MaxLength(30)]
public string Auteur { get; set; }
+ ///
+ /// Définit le contenu du commentaire.
+ ///
[Required]
[MinLength(10)]
[MaxLength(1000)]
diff --git a/Webzine.WebApplication/ViewModels/Titre/TitreContent.cs b/Webzine.WebApplication/ViewModels/Titre/TitreContent.cs
index b1ee798..7c49ce4 100644
--- a/Webzine.WebApplication/ViewModels/Titre/TitreContent.cs
+++ b/Webzine.WebApplication/ViewModels/Titre/TitreContent.cs
@@ -2,25 +2,58 @@ using Webzine.Entity;
namespace Webzine.WebApplication.ViewModels.Titre;
+///
+/// Contient les détails d'un titre, ainsi que les commentaires associés.
+///
public class TitreContent
{
+ ///
+ /// Définit l'identifiant du titre.
+ ///
public int IdTitre { get; set; }
+ ///
+ /// Définit le titre du titre.
+ ///
public string Libelle { get; set; }
+ ///
+ /// Définit la chronique du titre.
+ ///
public string Chronique { get; set; }
+ ///
+ /// Définit la date de sortie du titre.
+ ///
public DateTime DateSortie { get; set; }
+ ///
+ /// Définit le nombre de likes du titre.
+ ///
public int NbLikes { get; set; }
+ ///
+ /// Définit l'url de la jaquette de l'album associé au titre.
+ ///
public string UrlJaquette { get; set; }
+ ///
+ /// Définit l'url d'écoute du titre.
+ ///
public string UrlEcoute { get; set; }
+ ///
+ /// Définit le nom de l'artiste associé au titre.
+ ///
public string ArtisteNom { get; set; }
+ ///
+ /// Définit le nom de l'album associé au titre.
+ ///
public List