// // Copyright (c) PlaceholderCompany. All rights reserved. // namespace Webzine.Repository { using Microsoft.Extensions.Logging; using Webzine.Entity; using Webzine.Repository.Contracts; /// /// Initialise une classe qui implémente l'interface . /// Gère les opérations liées aux artistes en utilisant une source de données locale (en mémoire). /// public class LocalArtisteRepository : IArtisteRepository { private readonly ILogger logger; private readonly InMemoryDataStore dataStore; /// /// Initializes a new instance of the class. /// Est liéee à une liste d'artistes en local et utilise un logger pour enregistrer les opérations effectuées sur les artistes. /// /// Le logger à utiliser pour enregistrer les messages de journalisation. Ne peut pas être null. /// Le magasin de données en mémoire. public LocalArtisteRepository(InMemoryDataStore dataStore, ILogger logger) { this.logger = logger; // this.artistes = artistes; this.dataStore = dataStore; } /// public void Add(Artiste artiste) { this.dataStore.Artistes.Add(artiste); } /// public void Delete(Artiste artiste) { this.dataStore.Artistes.Remove(artiste); } /// public Artiste Find(int id) { return this.dataStore.Artistes.SingleOrDefault(a => a.IdArtiste == id); } /// public Artiste FindByName(string nom) { var artiste = this.dataStore.Artistes.FirstOrDefault(a => a.Nom == nom); if (artiste != null) { artiste.Titres = this.dataStore.Titres .Where(t => t.IdArtiste == artiste.IdArtiste) .ToList(); } return artiste; } /// public IEnumerable FindAll() { return this.dataStore.Artistes; } /// public void Update(Artiste artiste) { Artiste existingArtiste = this.Find(artiste.IdArtiste); if (existingArtiste == null) { this.logger.LogWarning("L'artiste {Id} n'a pas été trouvé pour l'update.", artiste.IdArtiste); return; } existingArtiste.Nom = artiste.Nom; existingArtiste.Biographie = artiste.Biographie; existingArtiste.Titres = artiste.Titres; } /// public IEnumerable Search(string mot) { return this.dataStore.Artistes .Where(a => a.Nom.ToLower().Contains(mot.ToLower())) .ToList(); } /// public int Count() { return this.dataStore.Artistes.Count; } /// public int Count(Func predicate) { return this.dataStore.Artistes.Count(predicate); } } }