/// <summary>
        /// Permet d'ajouter une bibliothèque à la persistance et à différentes bibliothèques
        /// </summary>
        /// <param name="oeuvre">L'oeuvre à ajouter</param>
        /// <param name="bibliothèques">Les bibliothèques à laquelle l'ajouter</param>
        /// <returns>True si elle a bien été ajoutée, false si elle existe déjà</returns>
        public bool AjouterOeuvre(Oeuvre oeuvre, params Bibliothèque[] bibliothèques)
        {
            bool retour = ListePrincipale.AjouterOeuvre(oeuvre);

            if (retour)
            {
                bibliothèques.ToList().ForEach(biblio => biblio.AjouterOeuvre(oeuvre));
            }
            return(retour);
        }
示例#2
0
        /// <summary>
        /// Permet de récupérer un fichier de sauvegarde et de l'incorporer à la persistance
        /// </summary>
        /// <param name="chemin">Le fichier et son chemin</param>
        /// <returns>Retourne dans l'ordre : Nombre Bibliothèque importées, Nombre Bibliothèque à importer, Nombre Oeuvre importées, Nombre Oeuvre à importer</returns>
        public (int, int, int, int) ImporterPersistance(string cheminFichierAImporter)
        {
            int nombreBiblioImportée  = 0;
            int nombreBiblioAImporter = 0;
            int nombreOeuvreImportée  = 0;
            int nombreOeuvreAImporter = 0;

            string  jsonText = File.ReadAllText(cheminFichierAImporter);
            JObject json     = JObject.Parse(jsonText);

            Bibliothèque laPrincipale;
            IEnumerable <Bibliothèque> laCollection;

            (laPrincipale, laCollection) = ConvertisseurJson.JsonVersBibliothèques(json);

            //Ajoute les oeuvres à la liste principale en indiquant si elles étaient déjà présentes ou non
            foreach (Oeuvre oeuvre in laPrincipale.LesOeuvres)
            {
                nombreOeuvreAImporter++;
                if (AjouterOeuvre(oeuvre))
                {
                    nombreOeuvreImportée++;
                }
            }

            //Ajoute les bibliothèques à la collection en indiquant si elles étaient déjà présentes ou non
            foreach (Bibliothèque biblio in laCollection)
            {
                nombreBiblioAImporter++;
                //Met à jour les oeuvres de la bibliothèque à partir de celles de la liste principale
                for (int i = 0; i < biblio.NombreOeuvre(); i++)
                {
                    if (ListePrincipale.ContientOeuvre(biblio[i]))
                    {
                        Oeuvre oeuvre = ListePrincipale.ObtenirOeuvre(biblio[i].Nom);
                        biblio.RetirerOeuvre(biblio[i]);
                        biblio.AjouterOeuvre(oeuvre);
                    }
                    else
                    {
                        ListePrincipale.AjouterOeuvre(biblio[i]);
                    }
                }

                if (Ajouter(biblio) != null)
                {
                    nombreBiblioImportée++;
                }
            }

            Sauvegarder();
            return(nombreBiblioImportée, nombreBiblioAImporter, nombreOeuvreImportée, nombreOeuvreAImporter);
        }
示例#3
0
        // GET: Oeuvres/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Oeuvre oeuvre = db.Oeuvre.Find(id);

            if (oeuvre == null)
            {
                return(HttpNotFound());
            }
            return(View(oeuvre));
        }
示例#4
0
        public static int ComparerOeuvresParPrix(Oeuvre o1, Oeuvre o2)
        {
            List <Oeuvre_Achetee> lesOeuvres = new List <Oeuvre_Achetee>();

            if (o1.GetType() == typeof(Oeuvre_Achetee) && o2.GetType() == typeof(Oeuvre_Achetee))
            {
                lesOeuvres.Add((Oeuvre_Achetee)o1);
                lesOeuvres.Add((Oeuvre_Achetee)o2);
                if (lesOeuvres[0].GetPrixOeuvre() < lesOeuvres[1].GetPrixOeuvre())
                {
                    return(-1);
                }
                else if (lesOeuvres[0].GetPrixOeuvre() > lesOeuvres[1].GetPrixOeuvre())
                {
                    return(1);
                }
            }
            return(0);
        }
示例#5
0
        // GET: Oeuvres/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Oeuvre oeuvre = db.Oeuvre.Find(id);

            if (oeuvre == null)
            {
                return(HttpNotFound());
            }

            var data = (from o in db.Oeuvre
                        join comp in db.Composer on o.Code_Oeuvre equals comp.Code_Oeuvre
                        join mus in db.Musicien on comp.Code_Musicien equals mus.Code_Musicien
                        where o.Code_Oeuvre == id
                        select mus).Single();

            ViewBag.Nom    = data.Nom_Musicien;
            ViewBag.Prenom = data.Prenom_Musicien;

            return(View(oeuvre));
        }
示例#6
0
        /// <summary>
        /// Fonction pour vendre une oeuvre
        /// </summary>
        public static void VendreUneOeuvre()
        {
            Console.Clear();
            Console.ForegroundColor = ConsoleColor.Blue;
            Console.BackgroundColor = ConsoleColor.White;
            Console.WriteLine("Vendre oeuvre");
            Console.ResetColor();
            Console.WriteLine("- - - - - - - - - - - -");

            bool   codeValid    = false;
            double PrixOeuvre   = 0;
            string oeuvreCode   = "";
            Oeuvre retourOeuvre = null;

            do
            {
                Console.WriteLine("Entrez le code de l'Ouevre a vendre");
                oeuvreCode = Console.ReadLine().ToUpper();

                if (oeuvreCode.Length == 5)
                {
                    retourOeuvre = gal.TableauOeuvres.TrouveParID(oeuvreCode);

                    if (retourOeuvre != null)
                    {
                        codeValid = true;
                    }

                    if (!codeValid)
                    {
                        Console.WriteLine("L'oeuvre avec ce code n'existe pas, voulez vous re-essayer? Oui ou Non (O/N)");
                        string sortiroeuvre = Console.ReadLine();
                        if (sortiroeuvre != "O")
                        {
                            break;
                        }
                    }
                }
                else
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("Code invalid - doit avoir 5 characteres ");
                    Console.WriteLine("Entrez le code de l'oeuvre");
                    Console.ResetColor();
                }
            } while (!codeValid);

            if (codeValid)
            {
                Console.WriteLine("Entrez le prix de vente :");
                string saisiePrixOeuvre = Console.ReadLine();

                try
                {
                    PrixOeuvre = double.Parse(saisiePrixOeuvre);
                }
                catch (FormatException e)
                {
                    Console.WriteLine(e.Message);
                    Console.ReadKey();
                }
                gal.VendreOeuvre(retourOeuvre, PrixOeuvre);
            }
        }
示例#7
0
        /// <summary>
        /// Ajouter un oeuvre
        /// </summary>
        private static object[] NouvelleOeuvre()
        {
            Console.Clear();
            Console.ForegroundColor = ConsoleColor.Blue;
            Console.BackgroundColor = ConsoleColor.White;
            Console.WriteLine("Ajouter Oeuvre");
            Console.ResetColor();
            Console.WriteLine("- - - - - - - - - - - -");

            bool   codeValid         = false;
            bool   nomValid          = false;
            bool   artisteValid      = false;
            bool   anneeValid        = false;
            bool   valeurValid       = false;
            string oeuvreArtisteCode = "";
            string oeuvreCode        = "";
            string oeuvreNom         = "";
            string nonExiste         = "";
            string anneOeuvrestr     = "";
            int    anneOeuvre        = 1700;
            double valeurOeuvre      = 0;

            do
            {
                Console.WriteLine("Entrez le code de l'Oeuvre");
                oeuvreCode = Console.ReadLine().ToUpper();

                if (validCodeLongueur(oeuvreCode, 5))
                {
                    Oeuvre retourOeuvre = gal.TableauOeuvres.TrouveParID(oeuvreCode);

                    if (retourOeuvre == null)
                    {
                        codeValid = true;
                    }
                    else
                    {
                        Console.WriteLine("L'Oeuvre avec ce code {0} existe déja, voulez vous re-essayer? Oui ou Non (O/N)", retourOeuvre.Titre);
                        string sortirOeuvre = Console.ReadLine();
                        if (sortirOeuvre != "O")
                        {
                            break;
                        }
                    }
                }
                else
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("Code invalid - doit avoir 5 characteres ");
                    Console.WriteLine("Entrez le code de l'oeuvre");
                    Console.ResetColor();
                }
            } while (codeValid == false);

            if (codeValid)
            {
                do
                {
                    Console.WriteLine("Entrez le nom de l'Oeuvre");
                    oeuvreNom = Console.ReadLine();
                    if (validCodeLongueur(oeuvreNom, 40, false))
                    {
                        nomValid = true;
                    }
                    else
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("Nom invalid - doit avoir 40 characteres ");
                        Console.ResetColor();
                    }
                } while (nomValid == false);

                do
                {
                    Console.WriteLine("Entrez le code de l'artiste qui a fait cette oeuvre");
                    oeuvreArtisteCode = Console.ReadLine().ToUpper();

                    Artiste artisteTrouve = gal.TableauArtistes.TrouveParID(oeuvreArtisteCode);
                    if (artisteTrouve != null)
                    {
                        nonExiste = artisteTrouve.Prenom + " " + artisteTrouve.Nom;
                    }

                    if (nonExiste != "")
                    {
                        artisteValid = true;
                    }
                    else
                    {
                        Console.WriteLine("Artiste non trouvé voulez vous re-essayer? oui ou non = O/N");
                        string sortirOeuvreArtiste = Console.ReadLine();
                        if (sortirOeuvreArtiste != "O")
                        {
                            break;
                        }
                    }
                } while (artisteValid == false);

                if (artisteValid)
                {
                    do
                    {
                        Console.WriteLine("Entrez l'année de realisation de l'oeuvre (AAAA)");
                        anneOeuvrestr = Console.ReadLine();

                        if (anneOeuvrestr.Length == 4)
                        {
                            try
                            {
                                anneOeuvre = Int32.Parse(anneOeuvrestr);
                                anneeValid = true;
                            }
                            catch (FormatException e)
                            {
                                Console.WriteLine(e.Message);
                                Console.ReadKey();
                            }
                        }
                        else
                        {
                            Console.WriteLine("La date doit etre du format (AAAA)");
                        }
                    } while (anneeValid == false);

                    do
                    {
                        Console.WriteLine("Entrez la valeur estimée de l'oeuvre");
                        string saisieOeuvre = Console.ReadLine();

                        try
                        {
                            valeurOeuvre = double.Parse(saisieOeuvre);
                            valeurValid  = true;
                        }
                        catch (FormatException e)
                        {
                            Console.WriteLine(e.Message);
                            Console.ReadKey();
                        }
                    } while (valeurValid == false);
                }
            }
            if (codeValid && artisteValid)
            {
                return(new object[] { (string)oeuvreCode, (string)oeuvreNom, (int)anneOeuvre, (double)valeurOeuvre, (string)oeuvreArtisteCode });
            }
            return(new object[] {});
        }
示例#8
0
        static void Main(string[] args)
        {
            Console.WriteLine("Test de la classe Oeuvre\n");

            //Pour faire ce test, la classe n'était plus abstract

            /*
             * Oeuvre oeuvre = new Oeuvre("oeuvre", "CheminOeuvre", DateTime.Now, new ObservableDictionary<StringVérifié, StringVérifié>(),
             *  "Ceci est le synopsis de l'oeuvre 1", "Ceci est le commentaire de l'oeuvre 1");
             *
             * Console.WriteLine($"Nom : {oeuvre.Nom}\nImage : {oeuvre.Image}\nSortie : {oeuvre.Sortie}\n" +
             *                $"Synopsis : {oeuvre.Synopsis}\nCommentaire : {oeuvre.Commentaire}");
             *
             * oeuvre.AjouterInformation(new StringVérifié("PremièreInfo"), new StringVérifié("L'infoUtile"));
             * oeuvre.AjouterInformation(new StringVérifié("SecondeInfo"), new StringVérifié("L'infoNonIndispensable"));
             * oeuvre.AjouterInformation(new StringVérifié("TroisièmeInfo"), new StringVérifié("L'infoInutile"));
             *
             * Console.WriteLine("\nLes informations de l'oeuvre :");
             * Console.WriteLine(oeuvre.InfoToString());
             *
             * Console.WriteLine("\nModification des informations de l'oeuvre :");
             * Console.WriteLine($"Suppression de l'info inutile : {oeuvre.RetirerInformation("TroisièmeInfo")}");
             *
             * String? info2 = oeuvre.RechercherInformation("SecondeInfo");
             * Console.WriteLine(info2 == null ? "SecondeInfo introuvable par RechercherInformation !(pas bien)" :
             *  "SecondeInfo trouvée par RechercherInformation !(bien)");
             * String? info3 = oeuvre.RechercherInformation("TroisièmeInfo");
             * Console.WriteLine(info3 == null ? "TroisièmeInfo introuvable par RechercherInformation car supprimée (bien)" :
             *  "TroisièmeInfo trouvée par RechercherInformation alors que supprimée !(pas bien)");
             *
             * Console.WriteLine("\nCompte combien de fois apparait la chaine \"Oeuvre\"");
             * Console.WriteLine($"Doit en trouver 2, et en trouve : {oeuvre.ContientMotClé("Oeuvre")}");
             * Console.WriteLine();
             * Console.WriteLine("Compte combien de fois apparait la chaine \"info\"");
             * Console.WriteLine($"Doit en trouver 4, et en trouve : {oeuvre.ContientMotClé("info")}");
             */

            //Ce test permet de ne pas instancier une Oeuvre directement
            StubOeuvreDataManager oeuvreDataManager = new StubOeuvreDataManager();

            oeuvreDataManager.ToutRetirer();
            oeuvreDataManager.Ajouter(new Autre("unAutre", "CheminImageAutre", DateTime.Today, "unCréateur",
                                                new ObservableDictionary <StringVérifié, StringVérifié>()
            {
                { new StringVérifié("NomPremièreInfo"), new StringVérifié("UnePremièreInfo") }, { new StringVérifié("NomSecondeInfo"),
                                                                                                  new StringVérifié("UneSecondeInfo") }
            }, "Ceci est un synopsis - Autre",
                                                "Ceci est un commentaire personnel - Autre"));

            Oeuvre oeuvre = (oeuvreDataManager.ObtenirParNom("unAutre") as Oeuvre);

            WriteLine(oeuvre);

            oeuvre.AjouterInformation(new StringVérifié("TroisièmeInfo"), new StringVérifié("L'infoInutile"));

            WriteLine("\nModification des informations de l'oeuvre :");
            WriteLine($"Suppression de l'info inutile : {oeuvre.RetirerInformation(new StringVérifié("TroisièmeInfo"))}");

            StringVérifié info1 = oeuvre.RechercherInformation(new StringVérifié("NomPremièreInfo"));

            WriteLine(info1 == null ? "PremièreInfo introuvable par RechercherInformation !(pas bien)" : "SecondeInfo trouvée par RechercherInformation !(bien)");

            StringVérifié info3 = oeuvre.RechercherInformation(new StringVérifié("TroisièmeInfo"));

            WriteLine(info3 == null ? "TroisièmeInfo introuvable par RechercherInformation car supprimée (bien)" :
                      "TroisièmeInfo trouvée par RechercherInformation alors que supprimée !(pas bien)");

            WriteLine("\nCompte combien de fois apparait la chaine \"Autre\"");
            WriteLine($"Doit en trouver 2, et en trouve : {oeuvre.ContientMotClé("Autre")}");
            WriteLine();
            WriteLine("Compte combien de fois apparait la chaine \"info\"");
            WriteLine($"Doit en trouver 4, et en trouve : {oeuvre.ContientMotClé("info")}");
        }
示例#9
0
        static void Main(string[] args)
        {
            try
            {
                #region CREER UN MUSEE

                string nom       = "Musee des Celestins - VICHY";
                Musee  celestins = new Musee(nom);
                Console.WriteLine("*** Création du musee {0} ***\n", nom);

                // -- Ajouter des ARTISTES
                Artiste monet   = new Artiste("Monet", "Francaise");
                Artiste manet   = new Artiste("Manet", "Francaise");
                Artiste vangogh = new Artiste("Van Gogh", "Neelandaise");
                Console.WriteLine(celestins.CreerArtiste(monet));
                Console.WriteLine(celestins.CreerArtiste(manet));
                Console.WriteLine(celestins.CreerArtiste(vangogh));

                // -- Ajouter des SALLES
                Salle francaise    = new Salle("Francaise", 2000000);
                Salle neerlandaise = new Salle("Neerlandaise", 2000000);
                Console.WriteLine(celestins.CreerSalle(francaise));
                Console.WriteLine(celestins.CreerSalle(neerlandaise));

                // -- Ajouter des ETATS des OEUVRES
                Etat_Oeuvre bon     = new Etat_Oeuvre("Bon", 365);
                Etat_Oeuvre moyen   = new Etat_Oeuvre("Moyen", 180);
                Etat_Oeuvre mauvais = new Etat_Oeuvre("Mauvais", 30);

                // -- Ajouter des OEUVRES

                // MONET
                Oeuvre o1 = new Oeuvre_Achetee("Le Déjeuner sur l'herbe", 500000, new DateTime(2018, 09, 15), new DateTime(2018, 07, 15), moyen, monet);
                Oeuvre o2 = new Oeuvre_Achetee("Au bord de l'eau", 350000, new DateTime(2018, 09, 15), new DateTime(2018, 05, 15), bon);
                Oeuvre o3 = new Oeuvre_Achetee("La Plage à Honfleur", 90000, new DateTime(2018, 09, 15), new DateTime(2018, 07, 1), mauvais, monet); // A expertiser
                Oeuvre o4 = new Oeuvre_Achetee("Quai du Louvre", 110000, new DateTime(2018, 09, 15), new DateTime(2018, 07, 15), mauvais, monet);    // A expertiser

                // MANET
                Oeuvre o5 = new Oeuvre_Pretee("La Partie de croquet", "Museé d'Orsay", new DateTime(2018, 05, 03), new DateTime(2019, 01, 15));
                Oeuvre o6 = new Oeuvre_Pretee("Le Joueur de fifre", "Musée du Prado", new DateTime(2018, 08, 01), new DateTime(2019, 12, 31));
                Oeuvre o7 = new Oeuvre_Achetee("Le petit Lange", 110000, new DateTime(2018, 09, 15), new DateTime(2018, 08, 25), mauvais, manet);
                Oeuvre o8 = new Oeuvre_Achetee("L'Exécution de Maximilien", 250000, new DateTime(2018, 09, 15), new DateTime(2018, 08, 1), mauvais, manet); // A expertiser
                Oeuvre o9 = new Oeuvre_Achetee("Portrait d'Émile Zola", 95000, new DateTime(2018, 09, 15), new DateTime(2018, 06, 15), moyen, manet);

                // VAN GOGH
                Oeuvre o10 = new Oeuvre_Achetee("Tournesols dans un vase", 750000, new DateTime(2018, 09, 15), new DateTime(2018, 07, 15), mauvais); // A expertiser
                Oeuvre o11 = new Oeuvre_Pretee("Champ de ble avec cypres", "Metropolitan Museum", new DateTime(2016, 10, 24), new DateTime(2018, 10, 24));
                Oeuvre o12 = new Oeuvre_Achetee("Autoportrait", 1000000, new DateTime(2018, 09, 15), new DateTime(2018, 08, 30), mauvais);
                Oeuvre o13 = new Oeuvre_Achetee("Le Champ de blé aux iris", 95000, new DateTime(2018, 09, 15), new DateTime(2018, 07, 15), moyen);

                // SALLE FRANCAISE - MONET
                Console.WriteLine(celestins.CreerOeuvre(o1, celestins.GetSalle(0)));
                Console.WriteLine(celestins.CreerOeuvre(o2, monet, celestins.GetSalle(0)));
                Console.WriteLine(celestins.CreerOeuvre(o3, celestins.GetSalle(0)));
                Console.WriteLine(celestins.CreerOeuvre(o4, celestins.GetSalle(0)));

                // SALLE FRANCAISE - MANET
                Console.WriteLine(celestins.CreerOeuvre(o5, manet, celestins.GetSalle(0)));
                Console.WriteLine(celestins.CreerOeuvre(o6, manet, celestins.GetSalle(0)));
                Console.WriteLine(celestins.CreerOeuvre(o7, celestins.GetSalle(0)));
                Console.WriteLine(celestins.CreerOeuvre(o8, celestins.GetSalle(0)));
                Console.WriteLine(celestins.CreerOeuvre(o9, celestins.GetSalle(0)));

                // SALLE NEERLANDAISE - VAN GOGH
                Console.WriteLine(celestins.CreerOeuvre(o10, vangogh, celestins.GetSalle(1)));
                Console.WriteLine(celestins.CreerOeuvre(o11, vangogh, celestins.GetSalle(1)));
                Console.WriteLine(celestins.CreerOeuvre(o12, vangogh, celestins.GetSalle(1)));
                Console.WriteLine(celestins.CreerOeuvre(o13, vangogh, celestins.GetSalle(1)));

                #endregion

                Console.ReadKey();
                Console.Clear();

                #region AFFICHER LE MUSEE
                Console.WriteLine(celestins.ToString());
                #endregion

                Console.ReadKey();
                Console.Clear();

                #region TESTS DES INDEXEURS

                // -- Sur le RANG
                Oeuvre uneOeuvre = francaise[1];
                if (uneOeuvre != null)
                {
                    Console.WriteLine(uneOeuvre.GetNomOeuvre() + " TROUVEE");
                }
                else
                {
                    Console.WriteLine("Oeuvre non TROUVEE");
                }

                uneOeuvre = francaise[10];
                if (uneOeuvre != null)
                {
                    Console.WriteLine(uneOeuvre.GetNomOeuvre() + " TROUVEE");
                }
                else
                {
                    Console.WriteLine("Oeuvre non TROUVEE");
                }

                // -- Sur le PRIX
                Console.WriteLine();
                Console.WriteLine("*** Oeuvres de la salle française de prix <= 500000 Euros");
                List <Oeuvre> lesOeuvres = francaise[500000F];
                if (lesOeuvres != null)
                {
                    foreach (Oeuvre o in lesOeuvres)
                    {
                        Console.WriteLine(o.ToString());
                    }
                }

                // -- Sur l'ARTISTE
                Console.WriteLine();
                Console.WriteLine("*** Oeuvres de MONET dans la salle française ");
                lesOeuvres = francaise[monet];
                if (lesOeuvres != null)
                {
                    foreach (Oeuvre o in lesOeuvres)
                    {
                        Console.WriteLine(o.ToString());
                    }
                }

                // -- Sur le NOM de l'ARTISTE
                Console.WriteLine();
                Console.WriteLine("*** Oeuvres de MANET dans la salle française ");
                lesOeuvres = francaise[manet.GetNomArtiste()];
                if (lesOeuvres.Count != 0)
                {
                    foreach (Oeuvre o in lesOeuvres)
                    {
                        Console.WriteLine(o.ToString());
                    }
                }

                Console.WriteLine();
                Console.WriteLine("*** Oeuvres de DAVOLIO dans la salle française");
                lesOeuvres = francaise["Davolio"];
                if (lesOeuvres.Count != 0)
                {
                    foreach (Oeuvre o in lesOeuvres)
                    {
                        Console.WriteLine(o.ToString());
                    }
                }

                #endregion

                Console.ReadKey();
                Console.Clear();

                #region TEST PREDICATS ET TRIS

                // Méthode "FIND".
                // Renvoie le PREMIER élement de la collection pour
                // lequel le prédicat est VRAI...
                Console.WriteLine("\n\n*** Recherche des OEUVRES de VAN GOGH ***");
                Predicats.nomArtiste = "Van Gogh";

                // A COMPLETER

                // Utilisation de la méthode "Sort" pour TRIER
                // les élements de la collection d'OEUVRE suivant le NOM
                lesOeuvres = new List <Oeuvre>()
                {
                    o1, o2, o3, o4, o5, o6, o7, o8, o9, o10, o11, o12, o13
                };

                lesOeuvres.Sort(Predicats.ComparerOeuvresParNom);
                Console.WriteLine("\n\n*** TRI par NOM ***");
                foreach (Oeuvre o in lesOeuvres)
                {
                    Console.WriteLine(o.ToString());
                }

                Console.WriteLine();

                // 05, 06 et o11 sont des oeuvres prêtées
                lesOeuvres = new List <Oeuvre>()
                {
                    o1, o2, o3, o4, o7, o8, o9, o10, o12, o13
                };
                lesOeuvres.Sort(Predicats.ComparerOeuvresParPrix);
                Console.WriteLine("\n\n*** TRI par Prix ***");
                foreach (Oeuvre o in lesOeuvres)
                {
                    Console.WriteLine(o.ToString());
                }

                #endregion

                Console.ReadKey();
                Console.Clear();

                #region TEST DES OEUVRES À EXPERTISER

                Console.WriteLine("*** OEUVRES A EXPERTISER (parmi l'ensemble des oeuvres de chause salle) ***\n\n");

                // A COMPLETER

                #endregion
            }
            catch (Exception ex)
            { Console.WriteLine(ex.Message); }

            Console.ReadKey();
        }
示例#10
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++;
                        }
                    }
                }
            }
        }
示例#11
0
        /// <summary>
        /// Vérifie les données d'une oeuvre. Modifie directement les données via la référence
        /// </summary>
        /// <param name="oeuvre">L'oeuvre à vérifier</param>
        public static void VérifierUneOeuve(Oeuvre oeuvre)
        {
            //Vérifie le nom
            if (String.IsNullOrEmpty(oeuvre.Nom) || oeuvre.Nom.Length > 16)
            {
                oeuvre.Nom = "Inconnu";
            }

            //Vérifie les informations complémentaires
            foreach (StringVérifié key in oeuvre.InformationsComplémentaires.Keys)
            {
                if (key.LeString.Length > 16)
                {
                    key.LeString = "Inconnu";
                }
            }
            foreach (StringVérifié value in oeuvre.InformationsComplémentaires.Values)
            {
                if (value.LeString.Length > 16)
                {
                    value.LeString = "Inconnu";
                }
            }
            //Vérifie si des informations ont le même nom
            foreach (StringVérifié info in oeuvre.InformationsComplémentaires.Keys)
            {
                List <KeyValuePair <StringVérifié, StringVérifié> > desInfos = oeuvre.InformationsComplémentaires.Where(kvp => kvp.Key.LeString.Equals(info.LeString)).ToList();

                //Si des informations ont le même nom
                if (desInfos.Count > 1)
                {
                    foreach (KeyValuePair <StringVérifié, StringVérifié> kvp in desInfos)
                    {
                        int j = 0;
                        //Change le nom de l'information pour ajouter un numéro à la fin
                        while (desInfos.Where(unKvp => unKvp.Key.LeString.Equals($"{kvp.Key.LeString} {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 ($"{kvp.Key.LeString} {j}".Length > 16)
                        {
                            kvp.Key.LeString = "Inconnu";
                            int v = 0;
                            while (desInfos.Where(unKvp => unKvp.Key.LeString.Equals($"{kvp.Key.LeString} {v}")).Count() > 0)
                            {
                                v++;
                            }
                        }

                        kvp.Key.LeString = $"{kvp.Key.LeString} {j}";
                    }
                }
            }

            //Vérifie les informations par défault
            if (oeuvre is Autre)
            {
                if ((oeuvre as Autre).Créateur.Length > 16)
                {
                    (oeuvre as Autre).Créateur = "Inconnu";
                }
            }
            else if (oeuvre is Cinématographique)
            {
                if ((oeuvre as Cinématographique).Réalisateur.Length > 16)
                {
                    (oeuvre as Cinématographique).Réalisateur = "Inconnu";
                }
                if ((oeuvre as Cinématographique).Studio.Length > 16)
                {
                    (oeuvre as Cinématographique).Studio = "Inconnu";
                }
            }
            else if (oeuvre is Littéraire)
            {
                if ((oeuvre as Littéraire).Auteur.Length > 16)
                {
                    (oeuvre as Littéraire).Auteur = "Inconnu";
                }
                if ((oeuvre as Littéraire).Éditeur.Length > 16)
                {
                    (oeuvre as Littéraire).Éditeur = "Inconnu";
                }
            }
            else if (oeuvre is Animé)
            {
                if ((oeuvre as Animé).Auteur.Length > 16)
                {
                    (oeuvre as Animé).Auteur = "Inconnu";
                }
                if ((oeuvre as Animé).Studio.Length > 16)
                {
                    (oeuvre as Animé).Studio = "Inconnu";
                }
            }
        }
        /// <summary>
        /// Converti une Oeuvre JObject de Json
        /// </summary>
        /// <param name="oeuvre">L'Oeuvre à convertir</param>
        /// <returns>Le JObject de l'Oeuvre convertie</returns>
        private static JObject JObjectOeuvre(Oeuvre oeuvre)
        {
            JObject jObjectRetour;

            if (oeuvre is Autre)
            {
                jObjectRetour = new JObject(
                    new JProperty("type", TypeOeuvre.Autre),
                    new JProperty("guid", oeuvre.Guid),
                    JPropertySiNonNull("nom", oeuvre.Nom),
                    JPropertySiNonNull("image", oeuvre.Image),
                    JPropertySiNonNull("sortie", oeuvre.Sortie),
                    JPropertySiNonNull("créateur", (oeuvre as Autre).Créateur),
                    new JProperty("infos", oeuvre.InformationsComplémentaires.Select(
                                      kvp => new JObject(
                                          new JProperty("nomInfo", kvp.Key.LeString),
                                          JPropertySiNonNull("lInfo", kvp.Value.LeString)))),
                    JPropertySiNonNull("synopsis", oeuvre.Synopsis),
                    JPropertySiNonNull("commentaire", oeuvre.Commentaire));
            }
            else if (oeuvre is Cinématographique)
            {
                jObjectRetour = new JObject(
                    new JProperty("type", oeuvre is Film ? TypeOeuvre.Film : TypeOeuvre.Série),
                    new JProperty("guid", oeuvre.Guid),
                    JPropertySiNonNull("nom", oeuvre.Nom),
                    JPropertySiNonNull("image", oeuvre.Image),
                    JPropertySiNonNull("sortie", oeuvre.Sortie),
                    JPropertySiNonNull("réalisateur", oeuvre is Film ? (oeuvre as Film).Réalisateur : (oeuvre as Série).Réalisateur),
                    JPropertySiNonNull("studio", oeuvre is Film ? (oeuvre as Film).Studio : (oeuvre as Série).Studio),
                    JPropertySiNonNull("infos", oeuvre.InformationsComplémentaires.Select(
                                           kvp => new JObject(
                                               new JProperty("nomInfo", kvp.Key.LeString),
                                               JPropertySiNonNull("lInfo", kvp.Value.LeString)))),
                    JPropertySiNonNull("synopsis", oeuvre.Synopsis),
                    JPropertySiNonNull("commentaire", oeuvre.Commentaire));
            }
            else if (oeuvre is Littéraire)
            {
                jObjectRetour = new JObject(
                    new JProperty("type", oeuvre is Livre ? TypeOeuvre.Livre : TypeOeuvre.Scan),
                    new JProperty("guid", oeuvre.Guid),
                    JPropertySiNonNull("nom", oeuvre.Nom),
                    JPropertySiNonNull("image", oeuvre.Image),
                    JPropertySiNonNull("sortie", oeuvre.Sortie),
                    JPropertySiNonNull("auteur", oeuvre is Livre ? (oeuvre as Livre).Auteur : (oeuvre as Scan).Auteur),
                    JPropertySiNonNull("éditeur", oeuvre is Livre ? (oeuvre as Livre).Éditeur : (oeuvre as Scan).Éditeur),
                    JPropertySiNonNull("infos", oeuvre.InformationsComplémentaires.Select(
                                           kvp => new JObject(
                                               new JProperty("nomInfo", kvp.Key.LeString),
                                               JPropertySiNonNull("lInfo", kvp.Value.LeString)))),
                    JPropertySiNonNull("synopsis", oeuvre.Synopsis),
                    JPropertySiNonNull("commentaire", oeuvre.Commentaire));
            }
            else
            {
                jObjectRetour = new JObject(
                    new JProperty("type", TypeOeuvre.Animé),
                    new JProperty("guid", oeuvre.Guid),
                    JPropertySiNonNull("nom", oeuvre.Nom),
                    JPropertySiNonNull("image", oeuvre.Image),
                    JPropertySiNonNull("sortie", oeuvre.Sortie),
                    JPropertySiNonNull("auteur", (oeuvre as Animé).Auteur),
                    JPropertySiNonNull("studio", (oeuvre as Animé).Studio),
                    JPropertySiNonNull("infos", oeuvre.InformationsComplémentaires.Select(
                                           kvp => new JObject(
                                               new JProperty("nomInfo", kvp.Key.LeString),
                                               JPropertySiNonNull("lInfo", kvp.Value.LeString)))),
                    JPropertySiNonNull("synopsis", oeuvre.Synopsis),
                    JPropertySiNonNull("commentaire", oeuvre.Commentaire));
            }
            return(jObjectRetour);
        }
示例#13
0
 // Méthodes de COMPARAISON (pour "Sort()") entre deux objets OEUVRE ACHETEE
 // Cette méthode doit retourner, suivant le critère de comparaison
 //      0 si = égalité
 //      1 = si o1 > o2
 //      -1 = si o1 < o2
 public static int ComparerOeuvresParNom(Oeuvre o1, Oeuvre o2)
 {
     // A COMPLETER
 }
示例#14
0
 // Méthode PREDICAT (pour "Find()", "FindAll()"...)
 // Cette fonction sera appliquée, à tour de rôle, à chaque élement
 // d'une collection d'OEUVRES pour une SALLE...
 public static bool RechercheOeuvresArtiste(Oeuvre o)
 {
     return(nomArtiste == o.GetArtiste().GetNomArtiste());
 }