Commande dotnet format

This commit is contained in:
josephine.vetu
2026-03-28 10:09:18 +01:00
parent 291a008d8d
commit d5dd75ed9d
51 changed files with 265 additions and 228 deletions

View File

@@ -5,6 +5,7 @@
namespace Webzine.EntitiesContext namespace Webzine.EntitiesContext
{ {
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Webzine.Entity; using Webzine.Entity;
public class WebzineDbContext : DbContext public class WebzineDbContext : DbContext
@@ -14,7 +15,9 @@ namespace Webzine.EntitiesContext
/// </summary> /// </summary>
/// <param name="options">Options.</param> /// <param name="options">Options.</param>
public WebzineDbContext(DbContextOptions<WebzineDbContext> options) public WebzineDbContext(DbContextOptions<WebzineDbContext> options)
: base(options) { } : base(options)
{
}
/// <summary> /// <summary>
/// Gets Obtient les artistes de la base. /// Gets Obtient les artistes de la base.

View File

@@ -3,6 +3,7 @@ namespace Webzine.Entity.Tests
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.Linq; using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.VisualStudio.TestTools.UnitTesting;
/// <summary> /// <summary>
@@ -13,8 +14,8 @@ namespace Webzine.Entity.Tests
/// <summary> /// <summary>
/// Vérifie que l'entité possède bien la propriété passée en paramètre. /// Vérifie que l'entité possède bien la propriété passée en paramètre.
/// </summary> /// </summary>
/// <param name="typeObjet">type de l'entité</param> /// <param name="typeObjet">type de l'entité.</param>
/// <param name="nomPropriete">nom de la propriété de l'entité</param> /// <param name="nomPropriete">nom de la propriété de l'entité.</param>
public static void HasProperty(Type typeObjet, string nomPropriete) public static void HasProperty(Type typeObjet, string nomPropriete)
{ {
var property = typeObjet.GetProperty(nomPropriete); var property = typeObjet.GetProperty(nomPropriete);
@@ -24,9 +25,9 @@ namespace Webzine.Entity.Tests
/// <summary> /// <summary>
/// Vérifie que l'attribut de l'entité a l'annotation [Display(Name = "xxx")] avec la valeur attendue. /// Vérifie que l'attribut de l'entité a l'annotation [Display(Name = "xxx")] avec la valeur attendue.
/// </summary> /// </summary>
/// <param name="typeObjet">type de l'entité</param> /// <param name="typeObjet">type de l'entité.</param>
/// <param name="nomPropriete">nom de la propriété de l'entité</param> /// <param name="nomPropriete">nom de la propriété de l'entité.</param>
/// <param name="chaineAttendue">valeur attendue pour l'affichage de cette propriété</param> /// <param name="chaineAttendue">valeur attendue pour l'affichage de cette propriété.</param>
public static void AttributDisplay(Type typeObjet, string nomPropriete, string chaineAttendue) public static void AttributDisplay(Type typeObjet, string nomPropriete, string chaineAttendue)
{ {
var property = typeObjet.GetProperty(nomPropriete); var property = typeObjet.GetProperty(nomPropriete);
@@ -38,9 +39,9 @@ namespace Webzine.Entity.Tests
/// <summary> /// <summary>
/// Vérifie que l'attribut de l'entité a l'annotation [MinLength(xx)] avec la longueur attendue. /// Vérifie que l'attribut de l'entité a l'annotation [MinLength(xx)] avec la longueur attendue.
/// </summary> /// </summary>
/// <param name="typeObjet">type de l'entité</param> /// <param name="typeObjet">type de l'entité.</param>
/// <param name="nomPropriete">nom de la propriété de l'entité</param> /// <param name="nomPropriete">nom de la propriété de l'entité.</param>
/// <param name="max">longueur maximum</param> /// <param name="max">longueur maximum.</param>
public static void AttributLongueurMax(Type typeObjet, string nomPropriete, int max) public static void AttributLongueurMax(Type typeObjet, string nomPropriete, int max)
{ {
var property = typeObjet.GetProperty(nomPropriete); var property = typeObjet.GetProperty(nomPropriete);
@@ -52,9 +53,9 @@ namespace Webzine.Entity.Tests
/// <summary> /// <summary>
/// Vérifie que l'attribut de l'entité a l'annotation [MinLength(xx)] avec la longueur attendue. /// Vérifie que l'attribut de l'entité a l'annotation [MinLength(xx)] avec la longueur attendue.
/// </summary> /// </summary>
/// <param name="typeObjet">type de l'entité</param> /// <param name="typeObjet">type de l'entité.</param>
/// <param name="nomPropriete">nom de la propriété de l'entité</param> /// <param name="nomPropriete">nom de la propriété de l'entité.</param>
/// <param name="min">longueur minimum</param> /// <param name="min">longueur minimum.</param>
public static void AttributLongueurMin(Type typeObjet, string nomPropriete, int min) public static void AttributLongueurMin(Type typeObjet, string nomPropriete, int min)
{ {
var property = typeObjet.GetProperty(nomPropriete); var property = typeObjet.GetProperty(nomPropriete);
@@ -66,8 +67,8 @@ namespace Webzine.Entity.Tests
/// <summary> /// <summary>
/// Vérifie que l'attribut de l'entité a l'annotation [Required]. /// Vérifie que l'attribut de l'entité a l'annotation [Required].
/// </summary> /// </summary>
/// <param name="typeObjet">type de l'entité</param> /// <param name="typeObjet">type de l'entité.</param>
/// <param name="nomPropriete">nom de la propriété de l'entité</param> /// <param name="nomPropriete">nom de la propriété de l'entité.</param>
public static void AttributRequis(Type typeObjet, string nomPropriete) public static void AttributRequis(Type typeObjet, string nomPropriete)
{ {
var property = typeObjet.GetProperty(nomPropriete); var property = typeObjet.GetProperty(nomPropriete);
@@ -78,8 +79,8 @@ namespace Webzine.Entity.Tests
/// <summary> /// <summary>
/// Vérifie que l'attribut de l'entité n'a pas l'annotation [Url]. /// Vérifie que l'attribut de l'entité n'a pas l'annotation [Url].
/// </summary> /// </summary>
/// <param name="typeObjet">type de l'entité</param> /// <param name="typeObjet">type de l'entité.</param>
/// <param name="nomPropriete">nom de la propriété de l'entité</param> /// <param name="nomPropriete">nom de la propriété de l'entité.</param>
public static void AttributHasNotUrlValidation(Type typeObjet, string nomPropriete) public static void AttributHasNotUrlValidation(Type typeObjet, string nomPropriete)
{ {
var property = typeObjet.GetProperty(nomPropriete); var property = typeObjet.GetProperty(nomPropriete);

View File

@@ -1,7 +1,7 @@
using System.ComponentModel.DataAnnotations; namespace Webzine.Entity
namespace Webzine.Entity
{ {
using System.ComponentModel.DataAnnotations;
/// <summary> /// <summary>
/// Classe représentant un artiste. /// Classe représentant un artiste.
/// Lien avec l'entité <see cref="Titre"/> : un artiste peut avoir plusieurs titres, mais un titre n'a qu'un seul artiste. /// Lien avec l'entité <see cref="Titre"/> : un artiste peut avoir plusieurs titres, mais un titre n'a qu'un seul artiste.

View File

@@ -1,7 +1,7 @@
using System.ComponentModel.DataAnnotations; namespace Webzine.Entity
namespace Webzine.Entity
{ {
using System.ComponentModel.DataAnnotations;
/// <summary> /// <summary>
/// Classe représentant un commentaire laissé par un utilisateur sur un titre. /// Classe représentant un commentaire laissé par un utilisateur sur un titre.
/// Lien avec l'entité <see cref="Titre"/> : un titre peut avoir plusieurs commentaires, mais un commentaire n'a qu'un seul titre. /// Lien avec l'entité <see cref="Titre"/> : un titre peut avoir plusieurs commentaires, mais un commentaire n'a qu'un seul titre.

View File

@@ -1,7 +1,7 @@
using Bogus; namespace Webzine.Entity.Fixtures
namespace Webzine.Entity.Fixtures
{ {
using Bogus;
/// <summary> /// <summary>
/// Factory pour générer des artistes avec des titres associés, à l'aide de la bibliothèque Bogus. /// Factory pour générer des artistes avec des titres associés, à l'aide de la bibliothèque Bogus.
/// </summary> /// </summary>
@@ -18,7 +18,7 @@ namespace Webzine.Entity.Fixtures
var albumsData = new[] var albumsData = new[]
{ {
new { Nom = "Bohemian Rhapsody", Image = "https://upload.wikimedia.org/wikipedia/en/9/9f/Bohemian_Rhapsody.png" }, new { Nom = "Bohemian Rhapsody", Image = "https://upload.wikimedia.org/wikipedia/en/9/9f/Bohemian_Rhapsody.png" },
new { Nom = "Born This Way", Image = "https://static.wikia.nocookie.net/ladygaga/images/2/2d/BornThisWay-DeluxeEdition.jpg/revision/latest/scale-to-width-down/3500?cb=20111120030308" } new { Nom = "Born This Way", Image = "https://static.wikia.nocookie.net/ladygaga/images/2/2d/BornThisWay-DeluxeEdition.jpg/revision/latest/scale-to-width-down/3500?cb=20111120030308" },
}; };
var faker = new Bogus.Faker("fr"); var faker = new Bogus.Faker("fr");

View File

@@ -2,12 +2,11 @@
// Copyright (c) PlaceholderCompany. All rights reserved. // Copyright (c) PlaceholderCompany. All rights reserved.
// </copyright> // </copyright>
using Bogus;
namespace Webzine.Entity.Fixtures namespace Webzine.Entity.Fixtures
{ {
using Bogus;
public class CommentaireFactory public class CommentaireFactory
{ {
} }
} }

View File

@@ -1,11 +1,13 @@
namespace Webzine.Entity.Fixtures; namespace Webzine.Entity.Fixtures;
using Entity;
using Faker;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Entity;
using Faker;
public class DataFactory public class DataFactory
{ {
/// <summary> /// <summary>
@@ -14,54 +16,69 @@ public class DataFactory
public Dictionary<string, (string TrackUrl, string ImageUrl)> RealMusicData { get; set; } public Dictionary<string, (string TrackUrl, string ImageUrl)> RealMusicData { get; set; }
= new Dictionary<string, (string TrackUrl, string ImageUrl)> = new Dictionary<string, (string TrackUrl, string ImageUrl)>
{ {
{ "juliana_chahayed_1", ("https://open.spotify.com/intl-fr/track/0qYLUdJQMhrCFA9dNZGcnm?si=b4fd45727a354a31", {
"https://i.scdn.co/image/ab67616d0000b2738e8e7b8f8f8f8f8f8f8f8f8") }, "juliana_chahayed_1", ("https://open.spotify.com/intl-fr/track/0qYLUdJQMhrCFA9dNZGcnm?si=b4fd45727a354a31",
"https://i.scdn.co/image/ab67616d0000b2738e8e7b8f8f8f8f8f8f8f8f8")
{ "mister_v_1", ("https://youtu.be/JeqUw7sGUK8?si=FnmFR2EgkVY6MhqQ", },
"https://img.youtube.com/vi/JeqUw7sGUK8/maxresdefault.jpg") }, {
"mister_v_1", ("https://youtu.be/JeqUw7sGUK8?si=FnmFR2EgkVY6MhqQ",
{ "compagnie_creole_1", ("https://youtu.be/wfxt1SGWAI8", "https://img.youtube.com/vi/JeqUw7sGUK8/maxresdefault.jpg")
"https://img.youtube.com/vi/wfxt1SGWAI8/maxresdefault.jpg") }, },
{
{ "femto_1", ("https://open.spotify.com/intl-fr/track/0qYLUdJQMhrCFA9dNZGcnm?si=b4fd45727a354a31", "compagnie_creole_1", ("https://youtu.be/wfxt1SGWAI8",
"https://i.scdn.co/image/ab67616d0000b2738e8e7b8f8f8f8f8f8f8f8f8") }, "https://img.youtube.com/vi/wfxt1SGWAI8/maxresdefault.jpg")
},
{ "chat_noir_1", ("https://youtu.be/OTi4-q-_Tj0?si=SNnLd-6Y893nL5Au", {
"https://img.youtube.com/vi/OTi4-q-_Tj0/maxresdefault.jpg") }, "femto_1", ("https://open.spotify.com/intl-fr/track/0qYLUdJQMhrCFA9dNZGcnm?si=b4fd45727a354a31",
"https://i.scdn.co/image/ab67616d0000b2738e8e7b8f8f8f8f8f8f8f8f8")
{ "chat_noir_2", ("https://youtu.be/X-rJ01EyiAI?si=gH9m_U8oXI35OgWu", },
"https://img.youtube.com/vi/X-rJ01EyiAI/maxresdefault.jpg") }, {
"chat_noir_1", ("https://youtu.be/OTi4-q-_Tj0?si=SNnLd-6Y893nL5Au",
{ "chat_noir_3", ("https://youtu.be/7lIM0wSx7kQ?si=S-RAsLzd4SiCQhE4", "https://img.youtube.com/vi/OTi4-q-_Tj0/maxresdefault.jpg")
"https://img.youtube.com/vi/7lIM0wSx7kQ/maxresdefault.jpg") }, },
{
{ "chat_noir_4", ("https://youtu.be/dbxyKR1P8vA?si=aRzdYBhwvKptV8Ff", "chat_noir_2", ("https://youtu.be/X-rJ01EyiAI?si=gH9m_U8oXI35OgWu",
"https://img.youtube.com/vi/dbxyKR1P8vA/maxresdefault.jpg") }, "https://img.youtube.com/vi/X-rJ01EyiAI/maxresdefault.jpg")
},
{ "chat_noir_5", ("https://youtu.be/DDHvKo5NnII?si=NFRkdVQL2mELP0yn", {
"https://img.youtube.com/vi/DDHvKo5NnII/maxresdefault.jpg") }, "chat_noir_3", ("https://youtu.be/7lIM0wSx7kQ?si=S-RAsLzd4SiCQhE4",
"https://img.youtube.com/vi/7lIM0wSx7kQ/maxresdefault.jpg")
{ "chat_noir_6", ("https://youtu.be/J9LgHNf2Qy0?si=YGO1ggiLkefa9901", },
"https://img.youtube.com/vi/J9LgHNf2Qy0/maxresdefault.jpg") }, {
"chat_noir_4", ("https://youtu.be/dbxyKR1P8vA?si=aRzdYBhwvKptV8Ff",
{ "chat_noir_7", ("https://youtu.be/oadhHk2xs6c?si=mbnJCA6SGsoYXnUK", "https://img.youtube.com/vi/dbxyKR1P8vA/maxresdefault.jpg")
"https://img.youtube.com/vi/oadhHk2xs6c/maxresdefault.jpg") }, },
{
{ "chat_noir_8", ("https://youtu.be/6K1zCgkBaoE?si=quq9vQLJ-AmzjRJJ", "chat_noir_5", ("https://youtu.be/DDHvKo5NnII?si=NFRkdVQL2mELP0yn",
"https://img.youtube.com/vi/6K1zCgkBaoE/maxresdefault.jpg") }, "https://img.youtube.com/vi/DDHvKo5NnII/maxresdefault.jpg")
},
{ "german_rapper_1", ("https://www.youtube.com/watch?v=DWpg71HJt24", {
"https://img.youtube.com/vi/DWpg71HJt24/maxresdefault.jpg") }, "chat_noir_6", ("https://youtu.be/J9LgHNf2Qy0?si=YGO1ggiLkefa9901",
"https://img.youtube.com/vi/J9LgHNf2Qy0/maxresdefault.jpg")
{ "nizard_1", ("https://youtu.be/1fjA68k8DAU?si=2PuZSquVQGvfmQkZ", },
"https://img.youtube.com/vi/1fjA68k8DAU/maxresdefault.jpg") }, {
"chat_noir_7", ("https://youtu.be/oadhHk2xs6c?si=mbnJCA6SGsoYXnUK",
"https://img.youtube.com/vi/oadhHk2xs6c/maxresdefault.jpg")
},
{
"chat_noir_8", ("https://youtu.be/6K1zCgkBaoE?si=quq9vQLJ-AmzjRJJ",
"https://img.youtube.com/vi/6K1zCgkBaoE/maxresdefault.jpg")
},
{
"german_rapper_1", ("https://www.youtube.com/watch?v=DWpg71HJt24",
"https://img.youtube.com/vi/DWpg71HJt24/maxresdefault.jpg")
},
{
"nizard_1", ("https://youtu.be/1fjA68k8DAU?si=2PuZSquVQGvfmQkZ",
"https://img.youtube.com/vi/1fjA68k8DAU/maxresdefault.jpg")
},
}; };
/// <summary> /// <summary>
/// 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. /// 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.
/// </summary> /// </summary>
/// <param name="count">Nombre d'artistes à générer</param> /// <param name="count">Nombre d'artistes à générer.</param>
/// <returns>Liste d'artistes de musique générés</returns> /// <returns>Liste d'artistes de musique générés.</returns>
public List<Artiste> GenerateArtists(int count) public List<Artiste> GenerateArtists(int count)
{ {
var artists = new List<Artiste>(); var artists = new List<Artiste>();
@@ -73,7 +90,7 @@ public class DataFactory
IdArtiste = i + 1, IdArtiste = i + 1,
Nom = Name.FullName(), Nom = Name.FullName(),
Biographie = Lorem.Paragraph(), Biographie = Lorem.Paragraph(),
Titres = new List<Titre>() Titres = new List<Titre>(),
}); });
} }
@@ -83,8 +100,8 @@ public class DataFactory
/// <summary> /// <summary>
/// Génère une liste de styles de musique à partir d'une liste prédéfinie de noms de styles. /// Génère une liste de styles de musique à partir d'une liste prédéfinie de noms de styles.
/// </summary> /// </summary>
/// <param name="count">Nombre de styles à générer (maximum 15, car il y a 15 styles prédéfinis)</param> /// <param name="count">Nombre de styles à générer (maximum 15, car il y a 15 styles prédéfinis).</param>
/// <returns>Liste de styles de musique générés</returns> /// <returns>Liste de styles de musique générés.</returns>
public List<Style> GenerateStyles(int count) public List<Style> GenerateStyles(int count)
{ {
var styleNames = new[] { "Rock", "Pop", "Rap", "Électro", "Jazz", "Classique", "Reggae", "Blues", "Metal", "Folk", "Chanson française", "Hip-Hop", "R&B", "Soul", "Punk" }; var styleNames = new[] { "Rock", "Pop", "Rap", "Électro", "Jazz", "Classique", "Reggae", "Blues", "Metal", "Folk", "Chanson française", "Hip-Hop", "R&B", "Soul", "Punk" };
@@ -106,15 +123,15 @@ public class DataFactory
/// <summary> /// <summary>
/// Génère une liste de titres de musique en utilisant des données de musique réelles pour les URL d'écoute et les jaquettes. /// Génère une liste de titres de musique en utilisant des données de musique réelles pour les URL d'écoute et les jaquettes.
/// </summary> /// </summary>
/// <param name="count">Nombre de titres à générer</param> /// <param name="count">Nombre de titres à générer.</param>
/// <param name="artists">Liste des artistes à associer aux titres générés</param> /// <param name="artists">Liste des artistes à associer aux titres générés.</param>
/// <param name="styles">Liste des styles à associer aux titres générés</param> /// <param name="styles">Liste des styles à associer aux titres générés.</param>
/// <returns>Liste de titres de musique générés</returns> /// <returns>Liste de titres de musique générés.</returns>
public List<Titre> GenerateTitres(int count, List<Artiste> artists, List<Style> styles) public List<Titre> GenerateTitres(int count, List<Artiste> artists, List<Style> styles)
{ {
var titres = new List<Titre>(); var titres = new List<Titre>();
var random = new Random(); var random = new Random();
var musicItems = RealMusicData.Values.ToList(); var musicItems = this.RealMusicData.Values.ToList();
for (int i = 0; i < count; i++) for (int i = 0; i < count; i++)
{ {
@@ -162,9 +179,9 @@ public class DataFactory
/// <summary> /// <summary>
/// Génère une liste de commentaires pour les titres de musique générés, en associant chaque commentaire à un titre aléatoire. /// Génère une liste de commentaires pour les titres de musique générés, en associant chaque commentaire à un titre aléatoire.
/// </summary> /// </summary>
/// <param name="count">Nombre de commentaires à générer</param> /// <param name="count">Nombre de commentaires à générer.</param>
/// <param name="titres">Liste des titres de musique à associer aux commentaires générés</param> /// <param name="titres">Liste des titres de musique à associer aux commentaires générés.</param>
/// <returns>Liste de commentaires générés</returns> /// <returns>Liste de commentaires générés.</returns>
public List<Commentaire> GenerateCommentaires(int count, List<Titre> titres) public List<Commentaire> GenerateCommentaires(int count, List<Titre> titres)
{ {
var commentaires = new List<Commentaire>(); var commentaires = new List<Commentaire>();
@@ -181,7 +198,7 @@ public class DataFactory
Auteur = Name.FullName(), Auteur = Name.FullName(),
DateCreation = DateTime.Now.AddDays(-random.Next(1, 30)), // Commentaires créés dans les 30 derniers jours DateCreation = DateTime.Now.AddDays(-random.Next(1, 30)), // Commentaires créés dans les 30 derniers jours
IdTitre = randomTitre.IdTitre, IdTitre = randomTitre.IdTitre,
Titre = randomTitre Titre = randomTitre,
}); });
randomTitre.Commentaires.Add(commentaires.Last()); randomTitre.Commentaires.Add(commentaires.Last());

View File

@@ -5,11 +5,11 @@
namespace Webzine.Entity.Fixtures namespace Webzine.Entity.Fixtures
{ {
using Bogus; using Bogus;
public class SeedDataLocal public class SeedDataLocal
{ {
public SeedDataLocal() public SeedDataLocal()
{ {
} }
/// <summary> /// <summary>
@@ -41,8 +41,7 @@ namespace Webzine.Entity.Fixtures
int count, int count,
List<Artiste> artistes, List<Artiste> artistes,
List<Style> styles, List<Style> styles,
List<string> albums List<string> albums)
)
{ {
Random random = new Random(); Random random = new Random();
int idStart = 1; int idStart = 1;

View File

@@ -2,5 +2,4 @@ namespace Webzine.Entity.Fixtures;
public class SeedDataSpotify public class SeedDataSpotify
{ {
} }

View File

@@ -5,8 +5,8 @@
namespace Webzine.Entity.Fixtures namespace Webzine.Entity.Fixtures
{ {
using Webzine.Entity; using Webzine.Entity;
public class StyleFactory public class StyleFactory
{ {
} }
} }

View File

@@ -1,17 +1,18 @@
using Bogus; namespace Webzine.Repository.Fake
using Faker;
using System;
using System.Collections.Generic;
using Webzine.Entity;
namespace Webzine.Repository.Fake
{ {
using System;
using System.Collections.Generic;
using Bogus;
using Faker;
using Webzine.Entity;
/// <summary> /// <summary>
/// Classe de fabrique pour générer des données factices (fake data) pour les entités Artiste et Titre. /// Classe de fabrique pour générer des données factices (fake data) pour les entités Artiste et Titre.
/// </summary> /// </summary>
public static class FakeDataFactory public static class FakeDataFactory
{ {
//https://cdn-images.dzcdn.net/images/cover/311bba0fc112d15f72c8b5a65f0456c1/1900x1900-000000-80-0-0.jpg", // https://cdn-images.dzcdn.net/images/cover/311bba0fc112d15f72c8b5a65f0456c1/1900x1900-000000-80-0-0.jpg",
/// <summary> /// <summary>
/// Génère une liste d'artistes avec des données factices, incluant des titres associés à chaque artiste. /// Génère une liste d'artistes avec des données factices, incluant des titres associés à chaque artiste.
/// </summary> /// </summary>
@@ -28,7 +29,7 @@ namespace Webzine.Repository.Fake
IdArtiste = i, IdArtiste = i,
Nom = Name.FullName(), Nom = Name.FullName(),
Biographie = Lorem.Paragraph(), Biographie = Lorem.Paragraph(),
Titres = new List<Titre>() Titres = new List<Titre>(),
}); });
} }
@@ -64,7 +65,7 @@ namespace Webzine.Repository.Fake
NbLectures = RandomNumber.Next(0, 500), NbLectures = RandomNumber.Next(0, 500),
NbLikes = RandomNumber.Next(0, 200), NbLikes = RandomNumber.Next(0, 200),
Album = Lorem.Sentence(2), Album = Lorem.Sentence(2),
Commentaires = new List<Commentaire>() Commentaires = new List<Commentaire>(),
}; };
titres.Add(titre); titres.Add(titre);

View File

@@ -1,7 +1,7 @@
using System.ComponentModel.DataAnnotations; namespace Webzine.Entity
namespace Webzine.Entity
{ {
using System.ComponentModel.DataAnnotations;
/// <summary> /// <summary>
/// Classe représentant un style de musique. /// Classe représentant un style de musique.
/// </summary> /// </summary>

View File

@@ -1,7 +1,7 @@
using System.ComponentModel.DataAnnotations; namespace Webzine.Entity
namespace Webzine.Entity
{ {
using System.ComponentModel.DataAnnotations;
/// <summary> /// <summary>
/// Classe représentant un titre de musique. /// Classe représentant un titre de musique.
/// Lien avec l'entité <see cref="Artiste"/> : un artiste peut avoir plusieurs titres, mais un titre n'a qu'un seul artiste. /// Lien avec l'entité <see cref="Artiste"/> : un artiste peut avoir plusieurs titres, mais un titre n'a qu'un seul artiste.
@@ -107,4 +107,4 @@ namespace Webzine.Entity
/// </summary> /// </summary>
public List<Style> Styles { get; set; } = new List<Style>(); public List<Style> Styles { get; set; } = new List<Style>();
} }
} }

View File

@@ -1,6 +1,7 @@
namespace Webzine.Repository.Contracts namespace Webzine.Repository.Contracts
{ {
using Webzine.Entity; using Webzine.Entity;
/// <summary> /// <summary>
/// Défini une interface <see cref="IArtisteRepository"/> pour gérer les opérations de base de données liées aux artistes. /// Défini une interface <see cref="IArtisteRepository"/> pour gérer les opérations de base de données liées aux artistes.
/// </summary> /// </summary>

View File

@@ -1,7 +1,7 @@
using Webzine.Entity;
namespace Webzine.Repository.Contracts namespace Webzine.Repository.Contracts
{ {
using Webzine.Entity;
public interface ICommentaireRepository public interface ICommentaireRepository
{ {
void Add(Commentaire commentaire); void Add(Commentaire commentaire);

View File

@@ -1,7 +1,7 @@
using Webzine.Entity;
namespace Webzine.Repository.Contracts namespace Webzine.Repository.Contracts
{ {
using Webzine.Entity;
/// <summary> /// <summary>
/// Interface définissant les opérations de base pour le repository de styles, permettant d'ajouter, supprimer, trouver et mettre à jour des styles dans la source de données. /// Interface définissant les opérations de base pour le repository de styles, permettant d'ajouter, supprimer, trouver et mettre à jour des styles dans la source de données.
/// </summary> /// </summary>

View File

@@ -1,7 +1,7 @@
using Webzine.Entity; namespace Webzine.Repository.Contracts
namespace Webzine.Repository.Contracts
{ {
using Webzine.Entity;
/// <summary> /// <summary>
/// Interface qui définit les opérations de base pour la gestion des titres dans une source de données. /// Interface qui définit les opérations de base pour la gestion des titres dans une source de données.
/// </summary> /// </summary>

View File

@@ -5,8 +5,10 @@
namespace Webzine.Repository namespace Webzine.Repository
{ {
using System.Data.Common; using System.Data.Common;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Webzine.EntitiesContext; using Webzine.EntitiesContext;
using Webzine.Entity; using Webzine.Entity;
using Webzine.Repository.Contracts; using Webzine.Repository.Contracts;
@@ -17,7 +19,7 @@ namespace Webzine.Repository
/// </summary> /// </summary>
public class DbArtisteRepository : IArtisteRepository public class DbArtisteRepository : IArtisteRepository
{ {
private WebzineDbContext context; private readonly WebzineDbContext context;
private readonly ILogger<LocalArtisteRepository> logger; private readonly ILogger<LocalArtisteRepository> logger;
/// <summary> /// <summary>
@@ -115,7 +117,7 @@ namespace Webzine.Repository
/// <inheritdoc/> /// <inheritdoc/>
public IEnumerable<Artiste> FindAll() public IEnumerable<Artiste> FindAll()
{ {
try try
{ {
// .AsNoTracking() rend la requête beaucoup plus rapide pour de la lecture // .AsNoTracking() rend la requête beaucoup plus rapide pour de la lecture
var artistes = this.context.Artistes.AsNoTracking().ToList(); var artistes = this.context.Artistes.AsNoTracking().ToList();
@@ -127,15 +129,15 @@ namespace Webzine.Repository
this.logger.LogError(ex, "Erreur lors de la récupération de tous les artistes."); this.logger.LogError(ex, "Erreur lors de la récupération de tous les artistes.");
return Enumerable.Empty<Artiste>(); // Retourne une liste vide au lieu de faire crash l'UI return Enumerable.Empty<Artiste>(); // Retourne une liste vide au lieu de faire crash l'UI
} }
} }
/// <inheritdoc/> /// <inheritdoc/>
public void Update(Artiste artiste) public void Update(Artiste artiste)
{ {
if (artiste == null) if (artiste == null)
{ {
throw new ArgumentNullException(nameof(artiste)); throw new ArgumentNullException(nameof(artiste));
} }
try try
{ {

View File

@@ -1,6 +1,6 @@
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Webzine.EntitiesContext;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Webzine.EntitiesContext;
using Webzine.Entity; using Webzine.Entity;
using Webzine.Repository.Contracts; using Webzine.Repository.Contracts;
@@ -15,6 +15,7 @@ public class DbCommentaireRepository : ICommentaireRepository
private readonly WebzineDbContext context; private readonly WebzineDbContext context;
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="DbCommentaireRepository"/> class.
/// Initialisation de <see cref="DbCommentaireRepository"/>. /// Initialisation de <see cref="DbCommentaireRepository"/>.
/// </summary> /// </summary>
/// <param name="logger">Le service de journalisation injecté pour suivre les opérations du repository.</param> /// <param name="logger">Le service de journalisation injecté pour suivre les opérations du repository.</param>

View File

@@ -1,6 +1,6 @@
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Webzine.EntitiesContext;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Webzine.EntitiesContext;
using Webzine.Entity; using Webzine.Entity;
using Webzine.Repository.Contracts; using Webzine.Repository.Contracts;

View File

@@ -1,7 +1,7 @@
using Webzine.Entity; namespace Webzine.Repository
namespace Webzine.Repository
{ {
using Webzine.Entity;
/// <summary> /// <summary>
/// Représente un entrepôt de données en mémoire (Mock) pour l'application. /// Représente un entrepôt de données en mémoire (Mock) pour l'application.
/// Cette classe simule une base de données en stockant les entités dans des listes statiques /// Cette classe simule une base de données en stockant les entités dans des listes statiques
@@ -12,21 +12,21 @@ namespace Webzine.Repository
/// <summary> /// <summary>
/// Obtient ou définit la liste des artistes enregistrés. /// Obtient ou définit la liste des artistes enregistrés.
/// </summary> /// </summary>
public List<Artiste> Artistes { get; set; } = new(); public List<Artiste> Artistes { get; set; } = new ();
/// <summary> /// <summary>
/// Obtient ou définit la liste des titres (morceaux) musicaux. /// Obtient ou définit la liste des titres (morceaux) musicaux.
/// </summary> /// </summary>
public List<Titre> Titres { get; set; } = new(); public List<Titre> Titres { get; set; } = new ();
/// <summary> /// <summary>
/// Obtient ou définit la liste des styles musicaux disponibles. /// Obtient ou définit la liste des styles musicaux disponibles.
/// </summary> /// </summary>
public List<Style> Styles { get; set; } = new(); public List<Style> Styles { get; set; } = new ();
/// <summary> /// <summary>
/// Obtient ou définit la liste des commentaires rédigés par les utilisateurs. /// Obtient ou définit la liste des commentaires rédigés par les utilisateurs.
/// </summary> /// </summary>
public List<Commentaire> Commentaires { get; set; } = new(); public List<Commentaire> Commentaires { get; set; } = new ();
} }
} }

View File

@@ -5,6 +5,7 @@
namespace Webzine.Repository namespace Webzine.Repository
{ {
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Webzine.Entity; using Webzine.Entity;
using Webzine.Repository.Contracts; using Webzine.Repository.Contracts;
@@ -15,9 +16,9 @@ namespace Webzine.Repository
public class LocalArtisteRepository : IArtisteRepository public class LocalArtisteRepository : IArtisteRepository
{ {
private readonly ILogger<LocalArtisteRepository> logger; private readonly ILogger<LocalArtisteRepository> logger;
//private readonly List<Artiste> artistes;
private readonly InMemoryDataStore dataStore;
// private readonly List<Artiste> artistes;
private readonly InMemoryDataStore dataStore;
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="LocalArtisteRepository"/> class. /// Initializes a new instance of the <see cref="LocalArtisteRepository"/> class.
@@ -28,7 +29,8 @@ namespace Webzine.Repository
public LocalArtisteRepository(InMemoryDataStore dataStore, ILogger<LocalArtisteRepository> logger) public LocalArtisteRepository(InMemoryDataStore dataStore, ILogger<LocalArtisteRepository> logger)
{ {
this.logger = logger; this.logger = logger;
//this.artistes = artistes;
// this.artistes = artistes;
this.dataStore = dataStore; this.dataStore = dataStore;
} }

View File

@@ -7,9 +7,11 @@ namespace Webzine.Repository
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Webzine.Entity;
using Webzine.Repository.Contracts; using Webzine.Entity;
using Webzine.Repository.Contracts;
/// <summary> /// <summary>
/// Initialise une classe <see cref="LocalCommentaireRepository"/> qui implémente l'interface <see cref="ICommentaireRepository"/> pour gérer les opérations liées aux commentaires. /// Initialise une classe <see cref="LocalCommentaireRepository"/> qui implémente l'interface <see cref="ICommentaireRepository"/> pour gérer les opérations liées aux commentaires.
@@ -21,6 +23,7 @@ using Webzine.Repository.Contracts;
private readonly InMemoryDataStore dataStore; private readonly InMemoryDataStore dataStore;
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="LocalCommentaireRepository"/> class.
/// Initialise une nouvelle instance du <see cref="LocalCommentaireRepository"/> . /// Initialise une nouvelle instance du <see cref="LocalCommentaireRepository"/> .
/// Est liée à un magasin de données en mémoire et utilise un logger pour enregistrer les opérations. /// Est liée à un magasin de données en mémoire et utilise un logger pour enregistrer les opérations.
/// </summary> /// </summary>
@@ -55,7 +58,7 @@ using Webzine.Repository.Contracts;
{ {
var commentaire = this.dataStore.Commentaires.FirstOrDefault(c => c.IdCommentaire == idCommentaire); var commentaire = this.dataStore.Commentaires.FirstOrDefault(c => c.IdCommentaire == idCommentaire);
if (commentaire == null) if (commentaire == null)
{ {
return new Commentaire(); return new Commentaire();
} }

View File

@@ -10,7 +10,8 @@ namespace Webzine.Repository;
public class LocalStyleRepository : IStyleRepository public class LocalStyleRepository : IStyleRepository
{ {
private readonly ILogger<LocalStyleRepository> logger; private readonly ILogger<LocalStyleRepository> logger;
//private readonly List<Style> styles;
// private readonly List<Style> styles;
private readonly InMemoryDataStore dataStore; private readonly InMemoryDataStore dataStore;
/// <summary> /// <summary>

View File

@@ -16,6 +16,7 @@ public class ArtisteController : Controller
private readonly IArtisteRepository artisteRepository; private readonly IArtisteRepository artisteRepository;
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="ArtisteController"/> class.
/// Initialise une nouvelle instance de la classe <see cref="ArtisteController"/>. /// Initialise une nouvelle instance de la classe <see cref="ArtisteController"/>.
/// </summary> /// </summary>
/// <param name="logger">Logger.</param> /// <param name="logger">Logger.</param>

View File

@@ -1,10 +1,10 @@
using Microsoft.AspNetCore.Mvc;
using Webzine.Entity;
using Webzine.Repository.Contracts;
using Webzine.WebApplication.Areas.Administration.ViewModels.Commentaire;
namespace Webzine.WebApplication.Areas.Administration.Controllers namespace Webzine.WebApplication.Areas.Administration.Controllers
{ {
using Microsoft.AspNetCore.Mvc;
using Webzine.Entity;
using Webzine.Repository.Contracts;
using Webzine.WebApplication.Areas.Administration.ViewModels.Commentaire;
[Area("Administration")] [Area("Administration")]
public class CommentaireController : Controller public class CommentaireController : Controller
{ {
@@ -12,6 +12,7 @@ namespace Webzine.WebApplication.Areas.Administration.Controllers
private readonly ICommentaireRepository commentaireRepository; private readonly ICommentaireRepository commentaireRepository;
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="CommentaireController"/> class.
/// Initialise une nouvelle instance de la classe <see cref="CommentaireController"/>. /// Initialise une nouvelle instance de la classe <see cref="CommentaireController"/>.
/// Utilise l'injection de dépendances pour récupérer le repository. /// Utilise l'injection de dépendances pour récupérer le repository.
/// </summary> /// </summary>
@@ -37,10 +38,10 @@ namespace Webzine.WebApplication.Areas.Administration.Controllers
// Initialisation du ViewModel // Initialisation du ViewModel
var viewModel = new CommentaireViewModel var viewModel = new CommentaireViewModel
{ {
Commentaires = commentaires Commentaires = commentaires,
}; };
return View(viewModel); return this.View(viewModel);
} }
/// <summary> /// <summary>
@@ -58,10 +59,10 @@ namespace Webzine.WebApplication.Areas.Administration.Controllers
Auteur = commentaire.Auteur, Auteur = commentaire.Auteur,
Contenu = commentaire.Contenu, Contenu = commentaire.Contenu,
DateCreation = commentaire.DateCreation, DateCreation = commentaire.DateCreation,
TitreLibelle = commentaire.Titre?.Libelle TitreLibelle = commentaire.Titre?.Libelle,
}; };
return View(model); return this.View(model);
} }
/// <summary> /// <summary>
@@ -79,7 +80,7 @@ namespace Webzine.WebApplication.Areas.Administration.Controllers
this.commentaireRepository.Delete(commentaire); this.commentaireRepository.Delete(commentaire);
} }
return RedirectToAction("Index"); return this.RedirectToAction("Index");
} }
} }
} }

View File

@@ -16,6 +16,7 @@ public class DashboardController : Controller
private readonly ITitreRepository titreRepository; private readonly ITitreRepository titreRepository;
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="DashboardController"/> class.
/// Initialise une nouvelle instance de la classe <see cref="DashboardController"/>. /// Initialise une nouvelle instance de la classe <see cref="DashboardController"/>.
/// </summary> /// </summary>
/// <param name="logger">Service de journalisation injecté.</param> /// <param name="logger">Service de journalisation injecté.</param>

View File

@@ -1,9 +1,9 @@
using Microsoft.AspNetCore.Mvc;
using Webzine.Repository.Contracts;
using Webzine.WebApplication.Areas.Administration.ViewModels.Style;
namespace Webzine.WebApplication.Areas.Administration.Controllers namespace Webzine.WebApplication.Areas.Administration.Controllers
{ {
using Microsoft.AspNetCore.Mvc;
using Webzine.Repository.Contracts;
using Webzine.WebApplication.Areas.Administration.ViewModels.Style;
/// <summary> /// <summary>
/// Contrôleur pour la gestion des styles dans l'administration du webzine. /// Contrôleur pour la gestion des styles dans l'administration du webzine.
/// </summary> /// </summary>
@@ -14,6 +14,7 @@ namespace Webzine.WebApplication.Areas.Administration.Controllers
private readonly IStyleRepository styleRepository; private readonly IStyleRepository styleRepository;
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="StyleController"/> class.
/// Initialise une nouvelle instance de la classe <see cref="StyleController"/>. /// Initialise une nouvelle instance de la classe <see cref="StyleController"/>.
/// </summary> /// </summary>
/// <param name="logger">Service de journalisation injecté.</param> /// <param name="logger">Service de journalisation injecté.</param>
@@ -93,7 +94,7 @@ namespace Webzine.WebApplication.Areas.Administration.Controllers
[HttpGet] [HttpGet]
public IActionResult Edit(int id) public IActionResult Edit(int id)
{ {
var style = styleRepository.Find(id); var style = this.styleRepository.Find(id);
var model = new StyleEditViewModel var model = new StyleEditViewModel
{ {

View File

@@ -18,8 +18,8 @@ public class TitreController : Controller
private readonly IArtisteRepository artisteRepository; private readonly IArtisteRepository artisteRepository;
private readonly IStyleRepository styleRepository; private readonly IStyleRepository styleRepository;
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="TitreController"/> class.
/// Initialise une nouvelle instance de la classe <see cref="TitreController"/>. /// Initialise une nouvelle instance de la classe <see cref="TitreController"/>.
/// </summary> /// </summary>
/// <param name="logger">Service de journalisation injecté.</param> /// <param name="logger">Service de journalisation injecté.</param>

View File

@@ -9,10 +9,12 @@
/// Définit l'identifiant de l'artiste. /// Définit l'identifiant de l'artiste.
/// </summary> /// </summary>
public int Id { get; set; } public int Id { get; set; }
/// <summary> /// <summary>
/// Définit le nom de l'artiste. /// Définit le nom de l'artiste.
/// </summary> /// </summary>
public string Nom { get; set; } public string Nom { get; set; }
/// <summary> /// <summary>
/// Définit la biographie de l'artiste. /// Définit la biographie de l'artiste.
/// </summary> /// </summary>

View File

@@ -1,5 +1,5 @@
// <copyright file="CommentaireViewModel.cs" company="Webzine"> // <copyright file="CommentaireViewModel.cs" company="PlaceholderCompany">
// Copyright (c) Webzine. All rights reserved. // Copyright (c) PlaceholderCompany. All rights reserved.
// </copyright> // </copyright>
namespace Webzine.WebApplication.Areas.Administration.ViewModels.Commentaire namespace Webzine.WebApplication.Areas.Administration.ViewModels.Commentaire

View File

@@ -8,7 +8,7 @@ public class DashboardViewModel
/// <summary> /// <summary>
/// Définit le nombre total d'artistes chroniqués dans le webzine. /// Définit le nombre total d'artistes chroniqués dans le webzine.
/// </summary> /// </summary>
public int NombreArtistes { get; set; } public int NombreArtistes { get; set; }
/// <summary> /// <summary>
/// Définit le nom de l'artiste le plus chroniqué dans le webzine. /// Définit le nom de l'artiste le plus chroniqué dans le webzine.
@@ -29,6 +29,7 @@ public class DashboardViewModel
/// Définit l'identifiant de la biographie d'artiste la plus lue dans le webzine. /// Définit l'identifiant de la biographie d'artiste la plus lue dans le webzine.
/// </summary> /// </summary>
public int IdMusiqueLaPlusJouee { get; set; } public int IdMusiqueLaPlusJouee { get; set; }
/// <summary> /// <summary>
/// Définit le nom de la biographie d'artiste la plus lue dans le webzine. /// Définit le nom de la biographie d'artiste la plus lue dans le webzine.
/// </summary> /// </summary>

View File

@@ -1,20 +1,17 @@
// <copyright file="StyleDeleteViewModel.cs" company="Webzine"> // <copyright file="StyleCreateViewModel.cs" company="PlaceholderCompany">
// Copyright (c) Webzine. Tout droit réservé. // Copyright (c) PlaceholderCompany. All rights reserved.
// </copyright> // </copyright>
namespace Webzine.WebApplication.Areas.Administration.ViewModels.Style namespace Webzine.WebApplication.Areas.Administration.ViewModels.Style
{ {
/// <summary> /// <summary>
/// ViewModel pour la création d'un style en administration. /// ViewModel pour la création d'un style en administration.
/// </summary> /// </summary>
public class StyleCreateViewModel public class StyleCreateViewModel
{ {
/// <summary> /// <summary>
/// Obtient ou définit le libellé du style. /// Obtient ou définit le libellé du style.
/// </summary> /// </summary>
public string Libelle { get; set; } public string Libelle { get; set; }
} }
} }

View File

@@ -1,26 +1,22 @@
// <copyright file="StyleDeleteViewModel.cs" company="Webzine"> // <copyright file="StyleDeleteViewModel.cs" company="PlaceholderCompany">
// Copyright (c) Webzine. Tout droit réservé. // Copyright (c) PlaceholderCompany. All rights reserved.
// </copyright> // </copyright>
namespace Webzine.WebApplication.Areas.Administration.ViewModels.Style namespace Webzine.WebApplication.Areas.Administration.ViewModels.Style
{ {
/// <summary> /// <summary>
/// ViewModel pour la suppression d'un style en administration. /// ViewModel pour la suppression d'un style en administration.
/// </summary> /// </summary>
public class StyleDeleteViewModel public class StyleDeleteViewModel
{ {
/// <summary> /// <summary>
/// Obtient ou définit l'identifiant du style à supprimer. /// Obtient ou définit l'identifiant du style à supprimer.
/// </summary> /// </summary>
public int IdStyle { get; set; } public int IdStyle { get; set; }
/// <summary> /// <summary>
/// Obtient ou définit le libellé du style. /// Obtient ou définit le libellé du style.
/// </summary> /// </summary>
public string Libelle { get; set; } public string Libelle { get; set; }
} }
} }

View File

@@ -1,27 +1,22 @@
// <copyright file="StyleDeleteViewModel.cs" company="Webzine"> // <copyright file="StyleEditViewModel.cs" company="PlaceholderCompany">
// Copyright (c) Webzine. Tout droit réservé. // Copyright (c) PlaceholderCompany. All rights reserved.
// </copyright> // </copyright>
namespace Webzine.WebApplication.Areas.Administration.ViewModels.Style namespace Webzine.WebApplication.Areas.Administration.ViewModels.Style
{ {
/// <summary> /// <summary>
/// ViewModel pour la modification d'un style en administration. /// ViewModel pour la modification d'un style en administration.
/// </summary> /// </summary>
public class StyleEditViewModel public class StyleEditViewModel
{ {
/// <summary> /// <summary>
/// Obtient ou définit le libellé du style. /// Obtient ou définit le libellé du style.
/// </summary> /// </summary>
public int IdStyle { get; set; } public int IdStyle { get; set; }
/// <summary> /// <summary>
/// Obtient ou définit le libellé du style. /// Obtient ou définit le libellé du style.
/// </summary> /// </summary>
public string Libelle { get; set; } public string Libelle { get; set; }
} }
} }

View File

@@ -65,7 +65,7 @@ public class AdminTitreForm
/// <summary> /// <summary>
/// Définit la liste des identifiants des styles associés au titre. /// Définit la liste des identifiants des styles associés au titre.
/// </summary> /// </summary>
public List<int> Styles { get; set; } = new(); public List<int> Styles { get; set; } = new ();
/// <summary> /// <summary>
/// Définit la liste des artistes disponibles pour la sélection dans le formulaire de création ou de modification d'un titre. /// Définit la liste des artistes disponibles pour la sélection dans le formulaire de création ou de modification d'un titre.

View File

@@ -1,10 +1,11 @@
// <copyright file="AccueilController.cs" company=" Equipe 1 - "> // <copyright file="AccueilController.cs" company="PlaceholderCompany">
// Copyright (c) Equipe 1 - . All rights reserved. // Copyright (c) PlaceholderCompany. All rights reserved.
// </copyright> // </copyright>
namespace Webzine.WebApplication.Controllers namespace Webzine.WebApplication.Controllers
{ {
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Webzine.Repository.Contracts; using Webzine.Repository.Contracts;
using Webzine.WebApplication.ViewModels.Accueil; using Webzine.WebApplication.ViewModels.Accueil;
@@ -19,6 +20,7 @@ namespace Webzine.WebApplication.Controllers
private readonly ITitreRepository titreRepository; private readonly ITitreRepository titreRepository;
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="AccueilController"/> class.
/// Initialise une nouvelle instance de la classe <see cref="AccueilController"/>. /// Initialise une nouvelle instance de la classe <see cref="AccueilController"/>.
/// </summary> /// </summary>
/// <param name="logger">Service de journalisation injecté pour enregistrer les événements et les erreurs.</param> /// <param name="logger">Service de journalisation injecté pour enregistrer les événements et les erreurs.</param>

View File

@@ -7,6 +7,7 @@ public class ApiController : ControllerBase
private readonly ILogger<ApiController> logger; private readonly ILogger<ApiController> logger;
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="ApiController"/> class.
/// Initialise une nouvelle instance de la classe <see cref="ApiController"/>. /// Initialise une nouvelle instance de la classe <see cref="ApiController"/>.
/// </summary> /// </summary>
/// <param name="logger">Service de journalisation injecté pour enregistrer les événements et les erreurs.</param> /// <param name="logger">Service de journalisation injecté pour enregistrer les événements et les erreurs.</param>
@@ -25,10 +26,10 @@ public class ApiController : ControllerBase
{ {
this.logger.LogInformation("Get Version was called"); this.logger.LogInformation("Get Version was called");
return Ok(new return this.Ok(new
{ {
nom = "webzine", nom = "webzine",
version = "2.0", version = "2.0",
}); });
} }
} }

View File

@@ -1,6 +1,7 @@
namespace Webzine.WebApplication.Controllers namespace Webzine.WebApplication.Controllers
{ {
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Webzine.Entity.Fixtures; using Webzine.Entity.Fixtures;
using Webzine.Repository.Contracts; using Webzine.Repository.Contracts;
using Webzine.WebApplication.ViewModels.Artiste; using Webzine.WebApplication.ViewModels.Artiste;
@@ -9,18 +10,20 @@
{ {
// Injection du logger via le constructeur // Injection du logger via le constructeur
private readonly ILogger<ArtisteController> logger; private readonly ILogger<ArtisteController> logger;
private readonly IArtisteRepository _artisteRepository; private readonly IArtisteRepository artisteRepository;
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="ArtisteController"/> class.
/// Initialise une nouvelle instance du <see cref="ArtisteController"/>. avec un service de journalisation injecté. /// Initialise une nouvelle instance du <see cref="ArtisteController"/>. avec un service de journalisation injecté.
/// </summary> /// </summary>
/// <param name="logger">Service de journalisation injecté pour enregistrer les événements et les erreurs.</param> /// <param name="logger">Service de journalisation injecté pour enregistrer les événements et les erreurs.</param>
public ArtisteController(ILogger<ArtisteController> logger, public ArtisteController(
ILogger<ArtisteController> logger,
IArtisteRepository artisteRepository) IArtisteRepository artisteRepository)
{ {
this.logger = logger; this.logger = logger;
this.logger.LogDebug("Initialisation du ArtisteController"); this.logger.LogDebug("Initialisation du ArtisteController");
this._artisteRepository = artisteRepository; this.artisteRepository = artisteRepository;
} }
/// <summary> /// <summary>
@@ -44,7 +47,7 @@
.ToTitleCase(nom.Replace("-", " ")); .ToTitleCase(nom.Replace("-", " "));
// On appelle la factory pour obtenir l'artiste unique // On appelle la factory pour obtenir l'artiste unique
var artiste = this._artisteRepository.FindByName(nomPropre); var artiste = this.artisteRepository.FindByName(nomPropre);
// Check if artiste was found // Check if artiste was found
if (artiste == null) if (artiste == null)

View File

@@ -1,7 +1,7 @@
using Microsoft.AspNetCore.Mvc; namespace Webzine.WebApplication.Controllers
namespace Webzine.WebApplication.Controllers
{ {
using Microsoft.AspNetCore.Mvc;
/// <summary> /// <summary>
/// Controller pour la page contact. /// Controller pour la page contact.
/// </summary> /// </summary>
@@ -11,6 +11,7 @@ namespace Webzine.WebApplication.Controllers
private readonly ILogger<ContactController> logger; private readonly ILogger<ContactController> logger;
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="ContactController"/> class.
/// Initialise une nouvelle instance de la classe <see cref="ContactController"/>. /// Initialise une nouvelle instance de la classe <see cref="ContactController"/>.
/// </summary> /// </summary>
/// <param name="logger">Service de journalisation injecté pour enregistrer les événements et les erreurs.</param> /// <param name="logger">Service de journalisation injecté pour enregistrer les événements et les erreurs.</param>

View File

@@ -1,10 +1,11 @@
// <copyright file="RechercheController.cs" company=" Equipe 1 - "> // <copyright file="RechercheController.cs" company="PlaceholderCompany">
// Copyright (c) Equipe 1 - . All rights reserved. // Copyright (c) PlaceholderCompany. All rights reserved.
// </copyright> // </copyright>
namespace Webzine.WebApplication.Controllers namespace Webzine.WebApplication.Controllers
{ {
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Webzine.Repository.Contracts; using Webzine.Repository.Contracts;
using Webzine.WebApplication.ViewModels.Recherche; using Webzine.WebApplication.ViewModels.Recherche;
using Webzine.WebApplication.ViewModels.Titre; using Webzine.WebApplication.ViewModels.Titre;

View File

@@ -1,10 +1,11 @@
// <copyright file="TitreController.cs" company=" Equipe 1 - "> // <copyright file="TitreController.cs" company="PlaceholderCompany">
// Copyright (c) Equipe 1 - . All rights reserved. // Copyright (c) PlaceholderCompany. All rights reserved.
// </copyright> // </copyright>
namespace Webzine.WebApplication.Controllers namespace Webzine.WebApplication.Controllers
{ {
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Webzine.Entity; using Webzine.Entity;
using Webzine.Repository.Contracts; using Webzine.Repository.Contracts;
using Webzine.WebApplication.ViewModels.Titre; using Webzine.WebApplication.ViewModels.Titre;
@@ -21,6 +22,7 @@ namespace Webzine.WebApplication.Controllers
private readonly ITitreRepository titreRepository; private readonly ITitreRepository titreRepository;
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="TitreController"/> class.
/// Initialise une nouvelle instance de la classe <see cref="TitreController"/>. /// Initialise une nouvelle instance de la classe <see cref="TitreController"/>.
/// </summary> /// </summary>
/// <param name="logger">Service de journalisation injecte.</param> /// <param name="logger">Service de journalisation injecte.</param>

View File

@@ -18,6 +18,7 @@ try
// Ajoute les services necessaires pour permettre l'utilisation des // Ajoute les services necessaires pour permettre l'utilisation des
// controllers avec des vues. // controllers avec des vues.
builder.Services.AddControllersWithViews() builder.Services.AddControllersWithViews()
// Ajoute la compilation des vues lors de l'execution de l'application. // Ajoute la compilation des vues lors de l'execution de l'application.
// Cela nous evite de recompiler l'application a chaque modification de vue. // Cela nous evite de recompiler l'application a chaque modification de vue.
// Necessite le package Nuget Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation. // Necessite le package Nuget Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.
@@ -42,6 +43,7 @@ try
builder.Services.AddDbContext<WebzineDbContext>(options => builder.Services.AddDbContext<WebzineDbContext>(options =>
options.UseNpgsql(builder.Configuration.GetConnectionString("PostGreSQLConnection"))); options.UseNpgsql(builder.Configuration.GetConnectionString("PostGreSQLConnection")));
} }
builder.Services.AddScoped<DbEntityRepository>(); builder.Services.AddScoped<DbEntityRepository>();
builder.Services.AddScoped<ITitreRepository, DbTitreRepository>(); builder.Services.AddScoped<ITitreRepository, DbTitreRepository>();
builder.Services.AddScoped<IStyleRepository, DbStyleRepository>(); builder.Services.AddScoped<IStyleRepository, DbStyleRepository>();

View File

@@ -1,8 +1,8 @@
using Microsoft.AspNetCore.Mvc;
using Webzine.Repository.Contracts;
namespace Webzine.WebApplication.ViewComponents namespace Webzine.WebApplication.ViewComponents
{ {
using Microsoft.AspNetCore.Mvc;
using Webzine.Repository.Contracts;
/// <summary> /// <summary>
/// View component pour la sidebar, récupère les styles depuis le repository. /// View component pour la sidebar, récupère les styles depuis le repository.
/// </summary> /// </summary>

View File

@@ -1,6 +1,7 @@
namespace Webzine.WebApplication.ViewModels.Artiste namespace Webzine.WebApplication.ViewModels.Artiste
{ {
using Webzine.Entity; using Webzine.Entity;
/// <summary> /// <summary>
/// ViewModel pour afficher les informations d'un artiste et ses titres groupés par album. /// ViewModel pour afficher les informations d'un artiste et ses titres groupés par album.
/// </summary> /// </summary>

View File

@@ -15,10 +15,10 @@ public class RechercheIndexViewModel
/// <summary> /// <summary>
/// Artistes trouves. /// Artistes trouves.
/// </summary> /// </summary>
public List<RechercheArtisteItem> Artistes { get; set; } = new(); public List<RechercheArtisteItem> Artistes { get; set; } = new ();
/// <summary> /// <summary>
/// Titres trouves. /// Titres trouves.
/// </summary> /// </summary>
public List<TitreStyleItem> Titres { get; set; } = new(); public List<TitreStyleItem> Titres { get; set; } = new ();
} }

View File

@@ -50,10 +50,10 @@ public class TitreContent
/// <summary> /// <summary>
/// Définit le nom de l'album associé au titre. /// Définit le nom de l'album associé au titre.
/// </summary> /// </summary>
public List<Style> Styles { get; set; } = new(); public List<Style> Styles { get; set; } = new ();
/// <summary> /// <summary>
/// Définit la liste des commentaires associés au titre. /// Définit la liste des commentaires associés au titre.
/// </summary> /// </summary>
public List<Commentaire> Commentaires { get; set; } = new(); public List<Commentaire> Commentaires { get; set; } = new ();
} }

View File

@@ -13,5 +13,5 @@ public class TitreStyle
/// <summary> /// <summary>
/// Définit la liste des items de titre associés au style musical. /// Définit la liste des items de titre associés au style musical.
/// </summary> /// </summary>
public List<TitreStyleItem> Titres { get; set; } = new(); public List<TitreStyleItem> Titres { get; set; } = new ();
} }