/// <summary> /// Permet de définir les oeuvres qui seront présentes dans l'affichage, étant donnée que les oeuvres déjà présentes dans la bibliothèque ne seront pas affichées /// </summary> public void SetOeuvres() { DesOeuvres = (Manager.ListePrincipale.LesOeuvres.ToList()); Manager.BibliothèqueSélectionnée.LesOeuvres.ToList().ForEach(oeuvre => DesOeuvres.Remove(oeuvre)); Bibliothèque.LesOeuvres.Clear(); DesOeuvres.ForEach(oeuvre => Bibliothèque.AjouterOeuvre(oeuvre)); TrierOeuvres(); }
/// <summary> /// Permet de trier l'affichage des oeuvres suivant ce que l'utilisateur a souhaité /// </summary> public void TrierOeuvres() { if (ordreTri == null || duType == null) { return; } TypeOeuvre leTypeOeuvre = TypeOeuvre.Tout; var lesOeuvres = new ObservableCollection <Oeuvre>(); DesOeuvres.ForEach(oeuvre => lesOeuvres.Add(oeuvre)); //Sélectionne le type des oeuvres à afficher if (duType.SelectedItem.ToString().Contains("Film")) { leTypeOeuvre = TypeOeuvre.Film; } else if (duType.SelectedItem.ToString().Contains("Série")) { leTypeOeuvre = TypeOeuvre.Série; } else if (duType.SelectedItem.ToString().Contains("Livre")) { leTypeOeuvre = TypeOeuvre.Livre; } else if (duType.SelectedItem.ToString().Contains("Scan")) { leTypeOeuvre = TypeOeuvre.Scan; } else if (duType.SelectedItem.ToString().Contains("Animé")) { leTypeOeuvre = TypeOeuvre.Animé; } else if (duType.SelectedItem.ToString().Contains("Autre")) { leTypeOeuvre = TypeOeuvre.Autre; } //Tri les oeuvres suivant ce que l'utilisateur a sélectionné if (ordreTri.SelectedItem.ToString().Contains("Décroissant")) { lesOeuvres = lesOeuvres.OeuvresDuType(leTypeOeuvre).TriDécroissant(); } else if (ordreTri.SelectedItem.ToString().Contains("Type")) { lesOeuvres = lesOeuvres.OeuvresDuType(leTypeOeuvre).TriType(); } else if (ordreTri.SelectedItem.ToString().Contains("Date")) { lesOeuvres = lesOeuvres.OeuvresDuType(leTypeOeuvre).TriDate(); } else { lesOeuvres = lesOeuvres.OeuvresDuType(leTypeOeuvre).TriCroissant(); } //Met à jour l'affichage Bibliothèque.LesOeuvres.Clear(); lesOeuvres.ToList().ForEach(oeuvre => Bibliothèque.AjouterOeuvre(oeuvre)); CocherSélectionnées(); }
/// <summary> /// Vérifie les données et leurs concordances entre elles. Modifie directement les données via les références /// </summary> /// <param name="listePrincipale">La liste principale à vérifier</param> /// <param name="lesBibliothèques">La collection de bibliothèques à vérifier</param> public static void VérifierDonnéesBibliothèques(Bibliothèque listePrincipale, IEnumerable <Bibliothèque> lesBibliothèques) { //Change le nom de la liste principale si celui-ci n'est pas correct if (String.IsNullOrEmpty(listePrincipale.Nom) || listePrincipale.Nom.Length > 16) { listePrincipale.Nom = "Liste Principale"; } //Vérifie si la liste principale ne contient pas de doublons d'oeuvres for (int i = 0; i < listePrincipale.LesOeuvres.Count; i++) { List <Oeuvre> desOeuvres = listePrincipale.LesOeuvres.Where(oeuvre => listePrincipale[i].Equals(oeuvre)).ToList(); if (desOeuvres.Count > 1) { //Retire les oeuvres dupliquées de la liste principale et des bibliothèques for (int j = 0; j < desOeuvres.Count; j++) { lesBibliothèques.ToList().ForEach(biblio => biblio.RetirerOeuvre(desOeuvres[j])); listePrincipale.RetirerOeuvre(desOeuvres[j]); } } } //Vérifie chaques bibliothèques unes par unes lesBibliothèques.ToList().ForEach(biblio => VérifierUneBibliothèque(biblio)); //Vérifie si les bibliothèques n'ont pas le même nom for (int i = 0; i < lesBibliothèques.ToList().Count; i++) { List <Bibliothèque> desBiblios = lesBibliothèques.ToList().Where(biblio => lesBibliothèques.ToList().ElementAt(i).Nom.Equals(biblio.Nom)).ToList(); if (desBiblios.Count > 1) { //Pour les bibliothèques possédants le même nom, sauf la première, étant celle qu'on va considérée comme l'originale for (int k = 1; k < desBiblios.Count; k++) { Bibliothèque biblio = desBiblios[k]; if (biblio.Nom.Contains("Inconnu")) { biblio.Nom = "Inconnu"; } int j = 0; //Change le nom de la bibliothèque pour ajouter un numéro à la fin while (desBiblios.Where(uneBiblio => uneBiblio.Nom.Equals($"{biblio.Nom} {j}")).Count() > 0) { j++; } //Si en ajoutant le numéro la taille est supérieur à 16 on change le nom pour qu'il devienne 'Inconnu' if ($"{biblio.Nom} {j}".Length > 16) { biblio.Nom = "Inconnu"; int v = 0; while (desBiblios.Where(uneBiblio => uneBiblio.Nom.Equals($"{biblio.Nom} {v}")).Count() > 0) { v++; } } biblio.Nom = $"{biblio.Nom} {j}"; } } } foreach (Bibliothèque bibliothèque in lesBibliothèques) { //Vérifie chaques oeuvres de la bibliothèque bibliothèque.LesOeuvres.ToList().ForEach(oeuvre => VérifierUneOeuve(oeuvre)); for (int i = 0; i < bibliothèque.LesOeuvres.Count; i++) { Oeuvre oeuvre = bibliothèque[i]; //Met à jour la bibliothèque par rapport aux oeuvres de la liste principale if (listePrincipale.ContientOeuvre(oeuvre.Nom)) { bibliothèque.RetirerOeuvre(oeuvre.Nom); bibliothèque.AjouterOeuvre(listePrincipale.ObtenirOeuvre(oeuvre.Nom)); } //Met à jour la liste principale par rapport aux oeuvres de la bibliothèque else { //listePrincipale.AjouterOeuvre(oeuvre); int j = 0; //Tant que le nom de l'oeuvre est déjà existant dans la page principale while (!listePrincipale.AjouterOeuvre(oeuvre)) { if ($"{oeuvre.Nom} {j}".Length > 16) { oeuvre.Nom = $"Inconnu {j}"; } else { oeuvre.Nom = $"{oeuvre.Nom} {j}"; } j++; } } } } }
static void Main(string[] args) { WriteLine("Test de la classe Manager\n"); StubBibliothèqueDataManager bibliothèqueDataManager = new StubBibliothèqueDataManager(); bibliothèqueDataManager.ToutRetirer(); bibliothèqueDataManager.ObtenirPrincipale().AjouterOeuvre(new Film("unFilmListePrincipale", "CheminImageFilmListePrincipale", new DateTime(2016, 01, 25), "unRéalisateur", "unStudio", new ObservableDictionary <StringVérifié, StringVérifié>(), "Ceci est un synopsis - Film - ListePrincipale", "Ceci est un commentaire personnel - Film - ListePrincipale")); bibliothèqueDataManager.ObtenirPrincipale().AjouterOeuvre(new Livre("unLivreListePrincipale", "CheminImageLivreListePrincipale", new DateTime(1998, 02, 23), "unAuteur", "unÉditeur", new ObservableDictionary <StringVérifié, StringVérifié>(), "Ceci est un synopsis - Livre - ListePrincipale", "Ceci est un commentaire personnel - Livre - ListePrincipale")); bibliothèqueDataManager.Ajouter(new Bibliothèque("laBibliothèque1", "CheminImageBiblio1", new ObservableCollection <Oeuvre>())); bibliothèqueDataManager.AjouterOeuvre(new Autre("unAutreBibliothèque1", "CheminImageAutreBibliothèque1", DateTime.Today, "unCréateur", new ObservableDictionary <StringVérifié, StringVérifié>(), "Ceci est un synopsis - Autre - Bibliothèque1", "Ceci est un commentaire personnel - Autre - Bibliothèque1"), bibliothèqueDataManager.ObtenirParNom("laBibliothèque1")); bibliothèqueDataManager.AjouterOeuvre(new Film("unFilmBibliothèque1", "CheminImageFilmBibliothèque1", new DateTime(2019, 05, 25), "unRéalisateur", "unStudio", new ObservableDictionary <StringVérifié, StringVérifié>(), "Ceci est un synopsis - Film - Bibliothèque1", "Ceci est un commentaire personnel - Film - Bibliothèque1"), bibliothèqueDataManager.ObtenirParNom("laBibliothèque1")); bibliothèqueDataManager.AjouterOeuvre(new Série("uneSérieBibliothèque1", "CheminImageSérieBibliothèque1", new DateTime(2001, 06, 05), "unRéalisateur", "unStudio", new ObservableDictionary <StringVérifié, StringVérifié>(), "Ceci est un synopsis - Série - Bibliothèque1", "Ceci est un commentaire personnel - Série - Bibliothèque1"), bibliothèqueDataManager.ObtenirParNom("laBibliothèque1")); Manager manager = new Manager(bibliothèqueDataManager); Bibliothèque bibliothèque2 = new Bibliothèque("laBibliothèque2", "CheminImageBiblio2", new ObservableCollection <Oeuvre>()); bibliothèque2.AjouterOeuvre(new Livre("unLivreBibliothèque2", "CheminImageLivreBibliothèque2", DateTime.Today, "unAuteur", "unÉditeur", new ObservableDictionary <StringVérifié, StringVérifié>(), "Ceci est un synopsis - Livre - Bibliothèque2", "Ceci est un commentaire personnel - Livre - Bibliothèque2")); bibliothèque2.AjouterOeuvre(new Animé("unAniméBibliothèque2", "CheminImageAniméBibliothèque2", new DateTime(2015, 05, 01), "unAuteur", "unStudio", new ObservableDictionary <StringVérifié, StringVérifié>(), "Ceci est un synopsis - Animé - Bibliothèque2", "Ceci est un commentaire personnel - Animé - Bibliothèque2")); bibliothèque2.AjouterOeuvre(new Scan("unScanBibliothèque2", "CheminImageScanBibliothèque2", DateTime.Today, "unAuteur", "unÉditeur", new ObservableDictionary <StringVérifié, StringVérifié>(), "Ceci est un synopsis - Scan - Bibliothèque2", "Ceci est un commentaire personnel - Scan - Bibliothèque2")); manager.AjouterOeuvre(new Livre("unLivreManager", "CheminImageLivreManager", new DateTime(1998, 02, 23), "unAuteur", "unÉditeur", new ObservableDictionary <StringVérifié, StringVérifié>(), "Ceci est un synopsis - Livre - Manager", "Ceci est un commentaire personnel - Livre - Manager")); manager.AjouterBibliothèque(bibliothèque2); WriteLine("Regardons les informations du manager"); WriteLine("\n\nTappez sur entrez pour continuer"); ReadLine(); Test_Du_Manager(manager, false); Clear(); WriteLine("Test de la classe Manager\n"); WriteLine("Réinitialisons le manager, et réaffichons ses informations"); WriteLine("\n\nTappez sur entrez pour continuer"); ReadLine(); manager.RéinitialiserManager(); Test_Du_Manager(manager, true); Clear(); WriteLine("Test de la classe Manager\n"); WriteLine("On remet les deux bibliothèques et on suprrime la première via son nom, et la seconde via son Objet :"); WriteLine($"Ajout de la première : {manager.AjouterBibliothèque(new Bibliothèque("laBibliothèque1", "CheminImageBiblio1", new ObservableCollection<Oeuvre>()))}"); WriteLine($"Ajout de la seconde : {manager.AjouterBibliothèque(bibliothèque2)}"); WriteLine($"Suppression de la première : {manager.RetirerBibliothèque("laBibliothèque1")}"); WriteLine($"Suppression de la seconde : {manager.RetirerBibliothèque(bibliothèque2)}"); manager.RetirerOeuvre(bibliothèque2[0].Nom); //Car bibliothèque2 contient 3 oeuvres non supprimées de la liste principale manager.RetirerOeuvre(bibliothèque2[1].Nom); //Car bibliothèque2 contient 3 oeuvres non supprimées de la liste principale manager.RetirerOeuvre(bibliothèque2[2].Nom); //Car bibliothèque2 contient 3 oeuvres non supprimées de la liste principale Livre livre = new Livre("unLivreManager", "CheminImageLivreManager", new DateTime(1998, 02, 23), "unAuteur", "unÉditeur", new ObservableDictionary <StringVérifié, StringVérifié>(), "Ceci est un synopsis - Livre - Manager", "Ceci est un commentaire personnel - Livre - Manager"); Film film = new Film("unFilmManager", "CheminImageFilmManager", new DateTime(1998, 02, 23), "unAuteur", "unÉditeur", new ObservableDictionary <StringVérifié, StringVérifié>(), "Ceci est un synopsis - Film - Manager", "Ceci est un commentaire personnel - Film - Manager"); WriteLine("\nOn remet deux oeuvres dans le manager et on suprrime la première via son nom, et la seconde via son Objet :"); WriteLine($"Ajout de la première : {manager.AjouterOeuvre(livre)}"); WriteLine($"Ajout de la seconde : {manager.AjouterOeuvre(film)}"); WriteLine($"Suppression de la première : {manager.RetirerOeuvre("unLivreManager")}"); WriteLine($"Suppression de la seconde : {manager.RetirerOeuvre(film)}"); WriteLine("\nVérifions : "); WriteLine("\n\nTappez sur entrez pour continuer"); ReadLine(); Test_Du_Manager(manager, true); manager.RéinitialiserManager(); WriteLine($"On réinitialise le manager puis on ajoute une oeuvre : {manager.AjouterOeuvre(livre)}"); WriteLine("\nEt on l'affiche : \n"); WriteLine(manager.ListePrincipale[0]); WriteLine("\n\nTappez sur entrez pour continuer et voir ses oeuvres"); ReadLine(); Clear(); bool modif = manager.ModifierOeuvre("unLivreManager", "unLivreManagerModifié", "CheminImageLivreManagerModifié", DateTime.Today, null, "unÉditeurModifié", new ObservableDictionary <StringVérifié, StringVérifié>() { { new StringVérifié("UnNomInfoModifié"), new StringVérifié("UneInfoModifiée") }, { new StringVérifié("UnAutreNomInfoModifiée"), new StringVérifié("UneAutreInfoModifiée") } }, "Ceci est un synopsis modifié - Livre - Manager", "Ceci est un commentaire personnel modifié - Livre - Manager"); WriteLine($"On la modifie (sauf l'auteur) : {modif}"); WriteLine("\nEt on l'affiche : \n"); WriteLine(manager.ListePrincipale[0]); WriteLine("\n\nTappez sur entrez pour continuer"); ReadLine(); Bibliothèque uneBibliothèque = new Bibliothèque("uneBibliothèque", "CheminImageuneBiblio", new ObservableCollection <Oeuvre>()); uneBibliothèque.AjouterOeuvre(new Autre("unAutreUneBibliothèque", "CheminImageAutreUneBibliothèque", DateTime.Today, "unCréateur", new ObservableDictionary <StringVérifié, StringVérifié>(), "Ceci est un synopsis - Autre - UneBibliothèque", "Ceci est un commentaire personnel - Autre - UneBibliothèque")); uneBibliothèque.AjouterOeuvre(new Film("unFilmUneBibliothèque", "CheminImageFilmUneBibliothèque", new DateTime(2019, 05, 25), "unRéalisateur", "unStudio", new ObservableDictionary <StringVérifié, StringVérifié>(), "Ceci est un synopsis - Film - UneBibliothèque", "Ceci est un commentaire personnel - Film - UneBibliothèque")); uneBibliothèque.AjouterOeuvre(new Série("uneSérieUneBibliothèque", "CheminImageSérieUneBibliothèque", new DateTime(2001, 06, 05), "unRéalisateur", "unStudio", new ObservableDictionary <StringVérifié, StringVérifié>(), "Ceci est un synopsis - Série - UneBibliothèque", "Ceci est un commentaire personnel - Série - UneBibliothèque")); Clear(); WriteLine("Test de la classe Manager\n"); manager.RéinitialiserManager(); WriteLine($"On réinitialise le manager puis on ajoute une bibliothèque : {manager.AjouterBibliothèque(uneBibliothèque)}"); WriteLine("Et on l'affiche via ObtenirBibliothèque : "); WriteLine("\n\nTappez sur entrez pour continuer"); ReadLine(); Test_D_Une_Bibliothèque(manager.ObtenirBibliothèque("uneBibliothèque")); WriteLine("Test de la classe Manager\n"); WriteLine("\nOn la modifie (sauf le chemin de l'image) et la réaffiche (via l'indexeur avec le nom) :"); WriteLine("\n\nTappez sur entrez pour continuer"); ReadLine(); Clear(); ObservableCollection <Oeuvre> desOeuvres = new ObservableCollection <Oeuvre>(); desOeuvres.Add(new Livre("unLivreBiblioModifiée", "CheminImageLivreBiblioModifiée", DateTime.Today, "unAuteur", "unÉditeur", new ObservableDictionary <StringVérifié, StringVérifié>(), "Ceci est un synopsis - Livre - BiblioModifiée", "Ceci est un commentaire personnel - Livre - BiblioModifiée")); desOeuvres.Add(new Animé("unAniméBiblioModifiée", "CheminImageAniméBiblioModifiée", new DateTime(2015, 05, 01), "unAuteur", "unStudio", new ObservableDictionary <StringVérifié, StringVérifié>(), "Ceci est un synopsis - Animé - BiblioModifiée", "Ceci est un commentaire personnel - Animé - BiblioModifiée")); desOeuvres.Add(new Scan("unScanBiblioModifiée", "CheminImageScanBiblioModifiée", DateTime.Today, "unAuteur", "unÉditeur", new ObservableDictionary <StringVérifié, StringVérifié>(), "Ceci est un synopsis - Scan - BiblioModifiée", "Ceci est un commentaire personnel - Scan - BiblioModifiée")); manager.ModifierBibliothèque("uneBibliothèque", "uneBibliothèqueModifiée", null, desOeuvres); Test_D_Une_Bibliothèque(manager["uneBibliothèqueModifiée"]); WriteLine("On remarque que la Bibliothèque a été modifiée"); WriteLine("\n\nTappez sur entrez pour continuer"); ReadLine(); Clear(); WriteLine("Test de la classe Manager\n"); WriteLine("Ajoutons maintenant les bibliothèques 1 et 2 comme précédemment"); manager.AjouterBibliothèque(new Bibliothèque("laBibliothèque1", "CheminImageBiblio1", new ObservableCollection <Oeuvre>())); manager.AjouterBibliothèque(bibliothèque2); WriteLine($"Il devrait donc y avoir 3 bibliothèques, comptons : {manager.NombreBibliothèque()}"); WriteLine("\nCherchons les bibliothèques avec \'1\' dans le nom : "); foreach (Bibliothèque bibliothèque in manager.RechercherBibliothèque("1")) { WriteLine($"Trouvée : {bibliothèque.Nom}"); } WriteLine("\nCherchons les bibliothèques avec \'biblio\' dans le nom : "); foreach (Bibliothèque bibliothèque in manager.RechercherBibliothèque("biblio")) { WriteLine($"Trouvée : {bibliothèque.Nom}"); } WriteLine("\n\nTappez sur entrez pour continuer"); ReadLine(); Clear(); WriteLine("Test de la classe Manager\n"); WriteLine("Enfin on test l'indexeur du numéro, en affichant le juste le nom des bibliothèques :"); for (int i = 0; i < manager.NombreBibliothèque(); i++) { WriteLine(manager[i].Nom); } WriteLine("\n\nTappez sur entrez pour continuer"); ReadLine(); Clear(); }
static void Main(string[] args) { WriteLine("Test de la classe Bibliothèque"); StubBibliothèqueDataManager bibliothèqueDataManager = new StubBibliothèqueDataManager(); bibliothèqueDataManager.ToutRetirer(); bibliothèqueDataManager.Ajouter(new Bibliothèque("laBibliothèque", "CheminImageBiblio", new ObservableCollection <Oeuvre>())); Bibliothèque bibliothèque = bibliothèqueDataManager.ObtenirParNom("laBibliothèque"); bibliothèque.AjouterOeuvre(new Autre("unAutre", "CheminImageAutre", DateTime.Today, "unCréateur", new ObservableDictionary <StringVérifié, StringVérifié>(), "Ceci est un synopsis - Autre", "Ceci est un commentaire personnel - Autre")); bibliothèque.AjouterOeuvre(new Film("unFilm", "CheminImageFilm", DateTime.Today, "unRéalisateur", "unStudio", new ObservableDictionary <StringVérifié, StringVérifié>(), "Ceci est un synopsis - Film", "Ceci est un commentaire personnel - Film")); bibliothèque.AjouterOeuvre(new Série("uneSérie", "CheminImageSérie", DateTime.Today, "unRéalisateur", "unStudio", new ObservableDictionary <StringVérifié, StringVérifié>(), "Ceci est un synopsis - Série", "Ceci est un commentaire personnel - Série")); bibliothèque.AjouterOeuvre(new Livre("unLivre", "CheminImageLivre", DateTime.Today, "unAuteur", "unÉditeur", new ObservableDictionary <StringVérifié, StringVérifié>(), "Ceci est un synopsis - Livre", "Ceci est un commentaire personnel - Livre")); bibliothèque.AjouterOeuvre(new Animé("unAnimé", "CheminImageAnimé", DateTime.Today, "unAuteur", "unStudio", new ObservableDictionary <StringVérifié, StringVérifié>(), "Ceci est un synopsis - Animé", "Ceci est un commentaire personnel - Animé")); bibliothèque.AjouterOeuvre(new Scan("unScan", "CheminImageScan", DateTime.Today, "unAuteur", "unÉditeur", new ObservableDictionary <StringVérifié, StringVérifié>(), "Ceci est un synopsis - Scan", "Ceci est un commentaire personnel - Scan")); WriteLine($"Informations de la Bibliothèque :\nNom : {bibliothèqueDataManager.ObtenirParNom("laBibliothèque").Nom}\nImage : {bibliothèque.Image}\n"); WriteLine("\n\nTappez sur entrez pour continuer et voir ses oeuvres"); ReadLine(); Clear(); foreach (Oeuvre oeuvre in bibliothèqueDataManager.ObtenirParNom("laBibliothèque").LesOeuvres) { WriteLine("Ses oeuvres :\n"); WriteLine(oeuvre); WriteLine("\n\nTappez sur entrez pour continuer"); ReadLine(); Clear(); } WriteLine("On retire toutes ses oeuvres sauf la série\n"); bibliothèque.RetirerOeuvre("unAutre"); bibliothèque.RetirerOeuvre(bibliothèqueDataManager.ObtenirParNom("laBibliothèque").ObtenirOeuvre("unFilm")); bibliothèque.RetirerOeuvre("unLivre"); bibliothèque.RetirerOeuvre("unAnimé"); bibliothèque.RetirerOeuvre("unScan"); WriteLine($"unAutre présente ? : {bibliothèqueDataManager.ObtenirParNom("laBibliothèque").ContientOeuvre("unAutre")} (Doit être False)"); WriteLine($"unFilm présente ? : {bibliothèqueDataManager.ObtenirParNom("laBibliothèque").ContientOeuvre("unFilm")} (Doit être False)"); WriteLine($"unLivre présente ? : {bibliothèqueDataManager.ObtenirParNom("laBibliothèque").ContientOeuvre("unLivre")} (Doit être False)"); WriteLine($"unAnimé présente ? : {bibliothèque.ContientOeuvre(bibliothèque.ObtenirOeuvre("unAnimé"))} (Doit être False)"); WriteLine($"unScan présente ? : {bibliothèque.ContientOeuvre(bibliothèque.ObtenirOeuvre("unScan"))} (Doit être False)"); WriteLine($"uneSérie présente ? : {bibliothèque.ContientOeuvre("uneSérie")} (Doit être True)"); }