#131 Fix de l'affichage des modifications car les id de tous les éléments des listes sont égaux à 0. Ajout de la génération des id dans la SeedDbLocal + les commentaires sont ajoutés aux titres directement dans le seed. Correction de documentation de méthodes.
This commit is contained in:
@@ -19,7 +19,9 @@ namespace Webzine.Entity.Fixtures
|
||||
/// <returns>Liste d'artiste.</returns>
|
||||
public static List<Artiste> GenererListeArtiste(int nombre)
|
||||
{
|
||||
int idStart = 1;
|
||||
Faker<Artiste> artistes = new Faker<Artiste>("fr")
|
||||
.RuleFor(a => a.IdArtiste, f => f.IndexFaker + idStart) // Créé les id des artistes de manière incrémentale
|
||||
.RuleFor(a => a.Nom, f => f.Person.FullName)
|
||||
.RuleFor(a => a.Biographie, f => f.Lorem.Paragraph(2));
|
||||
|
||||
@@ -27,21 +29,27 @@ namespace Webzine.Entity.Fixtures
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Generer une liste de titre.
|
||||
/// Generer une liste de titres.
|
||||
/// </summary>
|
||||
/// <param name="count">Nombre de titre à créer.</param>
|
||||
/// <param name="artistes">Liste d'artiste.</param>
|
||||
/// <param name="styles">Liste de style.</param>
|
||||
/// <returns>Liste de titre.</returns>
|
||||
/// <param name="count">Nombre de titres à créer.</param>
|
||||
/// <param name="artistes">Liste d'artistes.</param>
|
||||
/// <param name="styles">Liste de styles.</param>
|
||||
/// <param name="albums">Liste d'albums.</param>
|
||||
/// <param name="commentaires">Liste de commentaires.</param>
|
||||
/// <returns>Liste de titres.</returns>
|
||||
public static List<Titre> GenererListeTitre(
|
||||
int count,
|
||||
List<Artiste> artistes,
|
||||
List<Style> styles,
|
||||
List<string> albums)
|
||||
List<string> albums,
|
||||
List<Commentaire> commentaires
|
||||
)
|
||||
{
|
||||
Random random = new Random();
|
||||
int idStart = 1;
|
||||
|
||||
Faker<Titre> faker = new Faker<Titre>("fr")
|
||||
.RuleFor(a => a.IdTitre, f => f.IndexFaker + idStart)
|
||||
.RuleFor(t => t.Libelle, f => f.Lorem.Sentence(3).Replace(".", string.Empty))
|
||||
.RuleFor(t => t.Chronique, f => f.Lorem.Paragraphs(3))
|
||||
.RuleFor(t => t.DateCreation, f => DateTime.SpecifyKind(f.Date.Recent(120), DateTimeKind.Utc))
|
||||
@@ -52,8 +60,8 @@ namespace Webzine.Entity.Fixtures
|
||||
.RuleFor(t => t.NbLectures, f => f.Random.Int(0, 5000))
|
||||
.RuleFor(t => t.NbLikes, f => f.Random.Int(0, 1000))
|
||||
.RuleFor(t => t.Album, f => f.PickRandom(albums))
|
||||
.RuleFor(t => t.Artiste, f => f.PickRandom(artistes));
|
||||
|
||||
.RuleFor(t => t.Artiste, f => f.PickRandom(artistes))
|
||||
.RuleFor(t => t.Commentaires, f => commentaires ?? new List<Commentaire>());
|
||||
List<Titre> titres = faker.Generate(count);
|
||||
|
||||
foreach (Titre titre in titres)
|
||||
@@ -72,10 +80,12 @@ namespace Webzine.Entity.Fixtures
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Générer une liste de style pour seeder la base
|
||||
/// Générer une liste de styles pour seeder la base
|
||||
/// de données.
|
||||
/// </summary>
|
||||
/// <returns>Liste de style.</returns>
|
||||
/// <param name="minCount">Le nombre minimum de styles pouvant être créés.</params>
|
||||
/// <param name="maxCount">Le nombre maximun de styles pouvant être créés.</params>
|
||||
/// <returns>Liste de styles.</returns>
|
||||
public static List<Style> GenererListeStyle(int minCount = 15, int maxCount = 20)
|
||||
{
|
||||
List<string> libelles = new List<string>
|
||||
@@ -107,26 +117,30 @@ namespace Webzine.Entity.Fixtures
|
||||
|
||||
return libelles
|
||||
.Take(count)
|
||||
.Select(libelle => new Style
|
||||
.Select((libelle, index) => new Style
|
||||
{
|
||||
IdStyle = index + 1,
|
||||
Libelle = libelle,
|
||||
})
|
||||
.ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Seeder pour la base de données.
|
||||
/// Générer une liste de commentaires pour seeder la base
|
||||
/// de données.
|
||||
/// </summary>
|
||||
/// <param name="titre">Titre.</param>
|
||||
/// <param name="min">Min.</param>
|
||||
/// <param name="max">Max.</param>
|
||||
/// <param name="min">Le nombre minimum de commentaires pouvant être créés. La valeur par défaut est 0.</params>
|
||||
/// <param name="max">Le nombre maximun de commentaires pouvant être créés. La valeur par défaut est 5.</params>
|
||||
/// <returns>Liste de commentaire.</returns>
|
||||
public static List<Commentaire> GenererListeCommentaire(Titre titre, int min = 0, int max = 5)
|
||||
{
|
||||
Random random = new Random();
|
||||
int count = random.Next(min, max + 1);
|
||||
int idStart = 1;
|
||||
|
||||
Faker<Commentaire> faker = new Faker<Commentaire>("fr")
|
||||
.RuleFor(a => a.IdCommentaire, f => f.IndexFaker + idStart)
|
||||
.RuleFor(c => c.Auteur, f => f.Internet.UserName())
|
||||
.RuleFor(c => c.Contenu, f => f.Lorem.Sentences(2))
|
||||
.RuleFor(c => c.DateCreation, f => DateTime.SpecifyKind(f.Date.Recent(60), DateTimeKind.Utc))
|
||||
@@ -136,6 +150,12 @@ namespace Webzine.Entity.Fixtures
|
||||
return faker.Generate(count);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Générer une liste d'albums pour seeder la base
|
||||
/// de données.
|
||||
/// </summary>
|
||||
/// <param name="nombre">Le nombre d'albums à générer.</param>
|
||||
/// <returns>Liste d'albums.</returns>
|
||||
public static List<string> GenererListeAlbums(int nombre)
|
||||
{
|
||||
Faker faker = new Faker("fr");
|
||||
|
||||
@@ -24,15 +24,11 @@ namespace Webzine.Repository
|
||||
/// <param name="nbTitres">Nombre de titre.</param>
|
||||
/// <param name="minStyles">Nombre min de style.</param>
|
||||
/// <param name="maxStyles">Nombre mac de style.</param>
|
||||
/// <param name="minCommentairesParTitre">Min commentaire par titre.</param>
|
||||
/// <param name="maxCommentairesParTitre">Max commentaire par titre</param>
|
||||
public void SeedBaseDeDonnees(
|
||||
int nbArtistes = 100,
|
||||
int nbTitres = 500,
|
||||
int minStyles = 15,
|
||||
int maxStyles = 20,
|
||||
int minCommentairesParTitre = 0,
|
||||
int maxCommentairesParTitre = 5)
|
||||
int maxStyles = 20)
|
||||
{
|
||||
if (this.context.Artistes.Any() ||
|
||||
this.context.Titres.Any() ||
|
||||
@@ -50,23 +46,11 @@ namespace Webzine.Repository
|
||||
this.context.SaveChanges();
|
||||
|
||||
List<string> albums = SeedDataLocal.GenererListeAlbums(3);
|
||||
|
||||
List<Titre> titres = SeedDataLocal.GenererListeTitre(nbTitres, artistes, styles, albums);
|
||||
List<Commentaire> commentaires = new List<Commentaire>();
|
||||
List<Titre> titres = SeedDataLocal.GenererListeTitre(nbTitres, artistes, styles, albums, commentaires);
|
||||
this.context.Titres.AddRange(titres);
|
||||
this.context.SaveChanges();
|
||||
|
||||
List<Commentaire> commentaires = new List<Commentaire>();
|
||||
|
||||
foreach (Titre titre in titres)
|
||||
{
|
||||
commentaires.AddRange(
|
||||
SeedDataLocal.GenererListeCommentaire(
|
||||
titre,
|
||||
minCommentairesParTitre,
|
||||
maxCommentairesParTitre));
|
||||
}
|
||||
|
||||
this.context.Commentaires.AddRange(commentaires);
|
||||
this.context.SaveChanges();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,15 +1,32 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using Webzine.Entity;
|
||||
using Webzine.Entity;
|
||||
|
||||
namespace Webzine.Repository
|
||||
{
|
||||
/// <summary>
|
||||
/// 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
|
||||
/// durant le cycle de vie de l'application.
|
||||
/// </summary>
|
||||
public class InMemoryDataStore
|
||||
{
|
||||
/// <summary>
|
||||
/// Obtient ou définit la liste des artistes enregistrés.
|
||||
/// </summary>
|
||||
public List<Artiste> Artistes { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Obtient ou définit la liste des titres (morceaux) musicaux.
|
||||
/// </summary>
|
||||
public List<Titre> Titres { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Obtient ou définit la liste des styles musicaux disponibles.
|
||||
/// </summary>
|
||||
public List<Style> Styles { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Obtient ou définit la liste des commentaires rédigés par les utilisateurs.
|
||||
/// </summary>
|
||||
public List<Commentaire> Commentaires { get; set; } = new();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -40,16 +40,18 @@ public class TitreController : Controller
|
||||
/// <returns>La vue Index avec le ViewModel contenant la liste des titres.</returns>
|
||||
public IActionResult Index()
|
||||
{
|
||||
var model = this.titreRepository.FindAll().Take(10).Select(t => new AdminTitreList
|
||||
IEnumerable<Titre> titres = this.titreRepository.FindAll().Take(10);
|
||||
|
||||
var model = titres.Select(t => new AdminTitreList
|
||||
{
|
||||
Id = t.IdTitre,
|
||||
Artiste = t.Artiste.Nom,
|
||||
Nom = t.Artiste.Nom,
|
||||
Titre = t.Libelle,
|
||||
Duree = TimeSpan.FromSeconds(t.Duree).ToString(@"mm\:ss"),
|
||||
DateSortie = t.DateSortie,
|
||||
NbLectures = t.NbLectures,
|
||||
NbLikes = t.NbLikes,
|
||||
NbCommentaires = t.Commentaires.Count,
|
||||
NbCommentaires = t.Commentaires?.Count ?? 0,
|
||||
}).ToList();
|
||||
|
||||
return this.View(model);
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace Webzine.WebApplication.Areas.Administration.ViewModels.Titre
|
||||
/// <summary>
|
||||
/// Définit le nom de l'artiste associé au titre.
|
||||
/// </summary>
|
||||
public string Artiste { get; set; }
|
||||
public string Nom { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Définit le titre du titre.
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
@foreach (var item in Model)
|
||||
{
|
||||
<tr>
|
||||
<td>@item.Artiste</td>
|
||||
<td>@item.Nom</td>
|
||||
<td>@item.Titre</td>
|
||||
<td>@item.Duree</td>
|
||||
<td>@item.DateSortie.ToString("dd/MM/yyyy")</td>
|
||||
|
||||
@@ -98,9 +98,8 @@ try
|
||||
var artistes = SeedDataLocal.GenererListeArtiste(100);
|
||||
var styles = SeedDataLocal.GenererListeStyle(15, 20);
|
||||
var albums = SeedDataLocal.GenererListeAlbums(50);
|
||||
var titres = SeedDataLocal.GenererListeTitre(500, artistes, styles, albums);
|
||||
|
||||
var commentaires = new List<Commentaire>();
|
||||
var titres = SeedDataLocal.GenererListeTitre(500, artistes, styles, albums, commentaires);
|
||||
|
||||
foreach (var titre in titres)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user