72 lines
2.1 KiB
C#
72 lines
2.1 KiB
C#
using Microsoft.Extensions.Logging;
|
|
using Webzine.Entity;
|
|
using Webzine.Entity.Fixtures;
|
|
using Webzine.Repository.Contracts;
|
|
|
|
namespace Webzine.Repository;
|
|
|
|
/// <summary>
|
|
/// Classe qui permet d'initialiser un jeu de données
|
|
/// pour tester l'application
|
|
/// </summary>
|
|
public class LocalEntityRepository : ITitreRepository
|
|
{
|
|
private readonly ILogger<LocalEntityRepository> _logger;
|
|
private readonly List<Titre> _titres;
|
|
|
|
/// <summary>
|
|
/// Initialise une nouvelle instance du <see cref="LocalEntityRepository"/> avec un service de journalisation injecte.
|
|
/// </summary>
|
|
/// <param name="logger">Service de journalisation injecte pour suivre les operations du repository.</param>
|
|
public LocalEntityRepository(ILogger<LocalEntityRepository> logger)
|
|
{
|
|
_logger = logger;
|
|
_logger.LogDebug(1, "NLog injected into LocalEntityRepository");
|
|
|
|
var factory = new DataFactory();
|
|
var artistes = factory.GenerateArtists(10);
|
|
var styles = factory.GenerateStyles(10);
|
|
|
|
_titres = factory.GenerateTitres(30, artistes, styles);
|
|
factory.GenerateCommentaires(50, _titres);
|
|
}
|
|
|
|
public IEnumerable<Titre> Search(string mot)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(mot))
|
|
{
|
|
return Enumerable.Empty<Titre>();
|
|
}
|
|
|
|
return _titres
|
|
.Where(t => !string.IsNullOrWhiteSpace(t.Libelle)
|
|
&& t.Libelle.Contains(mot, StringComparison.OrdinalIgnoreCase))
|
|
.OrderBy(t => t.Libelle)
|
|
.ToList();
|
|
}
|
|
|
|
public Titre? Find(int idTitre)
|
|
{
|
|
return _titres.FirstOrDefault(t => t.IdTitre == idTitre);
|
|
}
|
|
|
|
public IEnumerable<Titre> FindAll()
|
|
{
|
|
return _titres;
|
|
}
|
|
|
|
public IEnumerable<Titre> SearchByStyle(string libelle)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(libelle))
|
|
{
|
|
return Enumerable.Empty<Titre>();
|
|
}
|
|
|
|
return _titres
|
|
.Where(t => t.Styles.Any(s => !string.IsNullOrWhiteSpace(s.Libelle)
|
|
&& s.Libelle.Contains(libelle, StringComparison.OrdinalIgnoreCase)))
|
|
.OrderBy(t => t.Libelle)
|
|
.ToList();
|
|
}
|
|
}
|