// // 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 pour gérer les opérations de base de données liées aux artistes. /// Utilise en injection de dépendances. /// public class LocalArtisteRepository : IArtisteRepository { private readonly ILogger logger; //private readonly List artistes; 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. /// /// La liste des artistes à initialiser. Ne peut pas être null. /// Le logger à utiliser pour enregistrer les messages de journalisation. Ne peut pas être null. public LocalArtisteRepository(InMemoryDataStore dataStore, ILogger logger) { this.logger = logger; //this.artistes = artistes; this.dataStore = dataStore; } /// public void Add(Artiste artiste) { throw new NotSupportedException("Mode Local"); } /// public void Delete(Artiste artiste) { throw new NotSupportedException("Mode Local"); } /// public Artiste Find(int id) { var artiste = this.dataStore.Artistes.First(a => a.IdArtiste == id); if (artiste == null) { return new Artiste(); } return artiste; } /// 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; } /// /// La liste retournée est une copie de la liste interne, donc elle ne peut être nulle. public IEnumerable FindAll() { return this.dataStore.Artistes; } /// public void Update(Artiste artiste) { throw new NotSupportedException("Mode Local"); } } }