using Microsoft.Extensions.Logging; using Webzine.Entity; using Webzine.Entity.Fixtures; using Webzine.Repository.Contracts; namespace Webzine.Repository; /// /// Classe qui permet d'initialiser un jeu de données /// pour tester l'application /// public class LocalEntityRepository : ITitreRepository { private readonly ILogger _logger; private readonly List _titres; /// /// Initialise une nouvelle instance du avec un service de journalisation injecte. /// /// Service de journalisation injecte pour suivre les operations du repository. public LocalEntityRepository(ILogger logger) { this._logger = logger; this._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 Search(string mot) { if (string.IsNullOrWhiteSpace(mot)) { return Enumerable.Empty(); } 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 FindAll() { return _titres; } public IEnumerable SearchByStyle(string libelle) { if (string.IsNullOrWhiteSpace(libelle)) { return Enumerable.Empty(); } return _titres .Where(t => t.Styles.Any(s => !string.IsNullOrWhiteSpace(s.Libelle) && s.Libelle.Contains(libelle, StringComparison.OrdinalIgnoreCase))) .OrderBy(t => t.Libelle) .ToList(); } }