示例#1
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++;
                        }
                    }
                }
            }
        }
示例#2
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)");
        }