/// <summary>
        /// Converti une Bibliothèque et une liste de Bibliothèques en Json
        /// </summary>
        /// <param name="listePrincipale">La bibliothèque à convertir</param>
        /// <param name="lesBibliothèques">La collection de bibliothèque à convertir</param>
        /// <returns>Le JObject de bibliothèques converties</returns>
        public static JObject BibliothèquesVersJson(Bibliothèque listePrincipale, IEnumerable <Bibliothèque> lesBibliothèques)
        {
            var biliothèquesElts = lesBibliothèques.Select(
                biblio => new JObject(
                    new JProperty("bibliothèque",
                                  new JObject(
                                      new JProperty("guid", biblio.Guid),
                                      JPropertySiNonNull("nom", biblio.Nom),
                                      JPropertySiNonNull("image", biblio.Image),
                                      JPropertySiNonNull("oeuvres",
                                                         biblio.LesOeuvres.Select(oeuvre => new JObject(new JProperty("oeuvre", JObjectOeuvre(oeuvre)))))))));

            var principaleElt = new JObject(
                new JProperty("bibliothèque",
                              new JObject(
                                  new JProperty("guid", listePrincipale.Guid),
                                  JPropertySiNonNull("nom", listePrincipale.Nom),
                                  JPropertySiNonNull("image", listePrincipale.Image),
                                  JPropertySiNonNull("oeuvres",
                                                     listePrincipale.LesOeuvres.Select(oeuvre => new JObject(new JProperty("oeuvre", JObjectOeuvre(oeuvre))))))));

            var JsonObject = new JObject(new JProperty("laPrincipale", principaleElt), new JProperty("lesBibliothèques", biliothèquesElts));

            return(JsonObject);
        }
예제 #2
0
        /// <summary>
        /// Permet de retirer une Bibliothèque de la persistance
        /// </summary>
        /// <param name="élément">La bibliothèque à retirer</param>
        /// <returns>True si elle a bien été retirée, False si elle n'y été pas</returns>
        public bool Retirer(Bibliothèque élément)
        {
            bool retour = MaCollection.Remove(élément);

            Sauvegarder();
            return(retour);
        }
 /// <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();
 }
예제 #4
0
 /// <summary>
 /// Permet d'ajouter une bibliothèque à la persistance
 /// </summary>
 /// <param name="bibliothèque">La bibliothèque à ajouter</param>
 /// <returns>Retourne la Bibliothèque si elle a été ajoutée, null sinon</returns>
 public Bibliothèque Ajouter(Bibliothèque bibliothèque)
 {
     if (!MaCollection.Contains(bibliothèque) && !ListePrincipale.Equals(bibliothèque))
     {
         bibliothèque.LesOeuvres.ToList().ForEach(oeuvre => AjouterOeuvre(oeuvre));
         MaCollection.Add(bibliothèque);
         Sauvegarder();
         return(bibliothèque);
     }
     return(null);
 }
예제 #5
0
        /// <summary>
        /// Écrit les données dans le fichier de la persistance
        /// </summary>
        /// <param name="listePrincipale">La Bibliothèque à écrire dans le fichier</param>
        /// <param name="lesBibliothèques">La collection de bibliothèques à écrire dans le fichier</param>
        public void SauvegarderDonnées(Bibliothèque listePrincipale, IEnumerable <Bibliothèque> lesBibliothèques)
        {
            var MasterAnimeFichier = ConvertisseurJson.BibliothèquesVersJson(listePrincipale, lesBibliothèques);

            if (!Directory.Exists(RépertoireFichier))
            {
                Directory.CreateDirectory(RépertoireFichier);
            }

            File.WriteAllText(CheminFichier, MasterAnimeFichier.ToString());
            Charger();
        }
        public static void Test_D_Une_Bibliothèque(Bibliothèque bibliothèque)
        {
            Clear();
            WriteLine("Test de la classe Manager\n");
            WriteLine($"Informations de la Bibliothèque :\n\n\tNom : {bibliothèque.Nom}\n\tImage : {bibliothèque.Image}\n");
            WriteLine("\n\nTappez sur entrez pour continuer et voir ses oeuvres");
            ReadLine();
            Clear();

            foreach (Oeuvre oeuvre in bibliothèque.LesOeuvres)
            {
                WriteLine("Test de la classe Manager\n");
                WriteLine("\n\tSes oeuvres :\n");
                WriteLine(oeuvre);

                WriteLine("\n\nTappez sur entrez pour continuer");
                ReadLine();
                Clear();
            }
        }
        /// <summary>
        /// Converti un JObject en une Bibliothèque et une collection de Biblitohèques
        /// </summary>
        /// <param name="json">Le JObject à convertir</param>
        /// <returns>La Bibliothèque et la collection de Biblitohèques converties</returns>
        public static (Bibliothèque, IEnumerable <Bibliothèque>) JsonVersBibliothèques(JObject json)
        {
            Bibliothèque laPrincipale = new Bibliothèque(
                (string)json["laPrincipale"]["bibliothèque"]["nom"],
                (string)json["laPrincipale"]["bibliothèque"]["image"],
                JObjectVersObservableCollectionOeuvre(json["laPrincipale"]["bibliothèque"]["oeuvres"]),
                (string)json["laPrincipale"]["bibliothèque"]["guid"]
                );


            var laCollection = new ObservableCollection <Bibliothèque>();

            json["lesBibliothèques"].Select(j => new Bibliothèque(
                                                (string)j["bibliothèque"]["nom"],
                                                (string)j["bibliothèque"]["image"],
                                                JObjectVersObservableCollectionOeuvre(j["bibliothèque"]["oeuvres"]),
                                                (string)json["laPrincipale"]["bibliothèque"]["guid"])
                                            ).ToList().ForEach(biblio => laCollection.Add(biblio));

            return(laPrincipale, laCollection);
        }
예제 #8
0
        /// <summary>
        /// Vérifie les données d'une bibliothèque. Modifie directement les données via la référence
        /// </summary>
        /// <param name="laBibliothèque">La bibliothèque à vérifier</param>
        public static void VérifierUneBibliothèque(Bibliothèque laBibliothèque)
        {
            //Change le nom de la Bilbiothèque si celui-ci n'est pas correct
            if (String.IsNullOrEmpty(laBibliothèque.Nom) || laBibliothèque.Nom.Length > 16)
            {
                laBibliothèque.Nom = "Inconnu";
            }

            //Vérifie si la Bilbiothèque ne contient pas de doublons d'oeuvres
            for (int i = 0; i < laBibliothèque.LesOeuvres.Count; i++)
            {
                List <Oeuvre> desOeuvres = laBibliothèque.LesOeuvres.Where(oeuvre => laBibliothèque[i].Equals(oeuvre)).ToList();
                if (desOeuvres.Count > 1)
                {
                    //Retire les oeuvres dupliquées de la Bilbiothèque
                    for (int j = 0; i < desOeuvres.Count - 1; j++)
                    {
                        laBibliothèque.RetirerOeuvre(desOeuvres[0]);
                    }
                }
            }
        }
        /// <summary>
        /// Une Bibliothèque et une collection de bibliothèques déjà crées
        /// </summary>
        /// <returns>La Bibliothèque et la collection de bibliothèques crées</returns>
        public static (Bibliothèque, List <Bibliothèque>) DonnéesDeBibliothèques()
        {
            List <Oeuvre> desOeuvres = DonnéesDOeuvres();

            Bibliothèque listePrincipale = new Bibliothèque("Liste Principale", "Luffy.jpg", new ObservableCollection <Oeuvre>(desOeuvres));

            List <Bibliothèque> lesBibliothèques = new List <Bibliothèque>()
            {
                new Bibliothèque("Liste de Films", "Soinc.jpg", new ObservableCollection <Oeuvre>(desOeuvres.Where(oeuvre => oeuvre is Film))),

                new Bibliothèque("Liste de Séries", "LuciferBiblio.jpg", new ObservableCollection <Oeuvre>(desOeuvres.Where(oeuvre => oeuvre is Série))),

                new Bibliothèque("Liste de Livres", "livre-illustration-lire.jpg", new ObservableCollection <Oeuvre>(desOeuvres.Where(oeuvre => oeuvre is Livre))),

                new Bibliothèque("Liste de Scan", "Scan.jpg", new ObservableCollection <Oeuvre>(desOeuvres.Where(oeuvre => oeuvre is Scan))),

                new Bibliothèque("Liste d'Animés", "Animé.png", new ObservableCollection <Oeuvre>(desOeuvres.Where(oeuvre => oeuvre is Animé))),

                new Bibliothèque("Liste d'Autres", "Autre.jpg", new ObservableCollection <Oeuvre>(desOeuvres.Where(oeuvre => oeuvre is Autre))),
            };

            return(listePrincipale, lesBibliothèques);
        }
        /// <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();
        }
        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();
        }
예제 #12
0
        /// <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++;
                        }
                    }
                }
            }
        }
예제 #13
0
        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)");
        }