/// <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); }
/// <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); }
// 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)); }
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); }
// 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)); }
/// <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); } }
/// <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[] {}); }
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")}"); }
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(); }
/// <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++; } } } } }
/// <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); }
// 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 }
// 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()); }