using Model; using System.Collections.ObjectModel; using System.IO; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace MyProject; class Program { static private Theque Theque { get; set; } = new(); static void Main(string[] args) { MenusPrincipal(); } static private void MenusPrincipal() { while (true) { Console.WriteLine("MENUS PRINCIPAL"); Console.WriteLine("\t1- Les espèces"); Console.WriteLine("\t2- Vos animaux"); Console.WriteLine("\t9- Quitter"); Console.Write("\n\tEntrer votre choix : "); int choix = Convert.ToInt32(Console.ReadLine()); switch (choix) { case 1: Console.Clear(); MenusEspece(); break; case 2: Console.Clear(); MenusAnimal(); break; case 9: return; default: Console.WriteLine("\tChoix incorrect\n"); break; } } } static private void MenusEspece() { while (true) { Console.WriteLine("LES ESPECES"); Console.WriteLine("\t1- Afficher les espèces"); Console.WriteLine("\t2- Sélectionner une espèce"); Console.WriteLine("\t9- Retour"); Console.Write("\n\tEntrer votre choix : "); int choix = Convert.ToInt32(Console.ReadLine()); switch (choix) { case 1: Console.Clear(); AfficherListeEspece(); break; case 2: Console.Clear(); SelectionnerEspece(); break; case 9: Console.Clear(); return; default: Console.WriteLine("\tChoix incorrect\n"); break; } } } static private void AfficherListeEspece() { Console.WriteLine("LISTE DES ESPECES : "); foreach (Espece espece in Theque.ListeEspeces) { Console.WriteLine("\t" + espece.Nom + " (" + espece.NomScientifique + ")"); } Console.WriteLine("\n"); } static private void SelectionnerEspece() { string choix = ""; while (choix != "-1") { AfficherListeEspece(); Console.Write("\n\tEntrer le nom de l'espèce à sélectionner (-1 pour annuler) : "); choix = Console.ReadLine(); Espece? espece = Theque.RechercherEspece(choix); if (espece != null) { AfficherEspece(espece); } else Console.WriteLine("\tChoix incorrect\n"); } } static private void AfficherEspece(Espece espece) { Console.WriteLine("\n" + espece.Nom); Console.WriteLine("\tNom scientifique : " + espece.NomScientifique); Console.WriteLine("\tEspérance de vie : " + espece.EsperanceVie); Console.WriteLine("\tPoids moyen : " + espece.PoidsMoyen); Console.WriteLine("\tTaille moyenne : " + espece.TailleMoyenne); Console.WriteLine("\tComportement : " + espece.Comportement); Console.WriteLine("\tSanté : " + espece.Sante); Console.WriteLine("\tEducation : " + espece.Education); Console.WriteLine("\tEntretien : " + espece.Entretien); Console.WriteLine("\tCout : " + espece.Cout); Console.WriteLine("\tConseil : " + espece.Conseil); AfficherListeRace(espece); while (true) { Console.WriteLine("\n\t1- Sélectionner une race"); Console.WriteLine("\t9- Retour"); Console.Write("\n\tEntrer votre choix : "); int decision = Convert.ToInt32(Console.ReadLine()); switch (decision) { case 1: SelectionnerRace(espece); break; case 9: return; default: Console.WriteLine("\tChoix incorrect\n"); break; } } } static private void AfficherListeRace(Espece espece) { Console.WriteLine("\nLISTE DES RACES : "); if (espece.ListeRaces != null) { foreach (Race race in espece.ListeRaces) { Console.WriteLine("\t" + race.Nom + " (" + race.NomScientifique + ")"); } Console.WriteLine("\n"); } else Console.WriteLine("\tAucune race connue.\n"); } static private void SelectionnerRace(Espece espece) { string choix = ""; while (choix != "-1") { Console.Write("\n\tEntrer le nom de la race à sélectionner (-1 pour annuler) : "); choix = Console.ReadLine(); if (choix != "-1") { Race? race = espece.RechercherRace(choix); if (race != null) { AfficherRace(race); } else Console.WriteLine("\tChoix incorrect\n"); } } } static private void AfficherRace(Race race) { Console.WriteLine("\n " + race.Nom); Console.WriteLine("\tNom scientifique : " + race.NomScientifique); Console.WriteLine("\tEspérance de vie : " + race.EsperanceVie); Console.WriteLine("\tPoids moyen : " + race.PoidsMoyen); Console.WriteLine("\tTaille moyenne : " + race.TailleMoyenne); Console.WriteLine("\tComportement : " + race.Comportement); Console.WriteLine("\tSante : " + race.Sante); Console.WriteLine("\tEducation : " + race.Education); Console.WriteLine("\tEntretien : " + race.Entretien); Console.WriteLine("\tCout : " + race.Cout); Console.WriteLine("\tConseil : " + race.Conseil + "\n\n"); } static private void MenusAnimal() { while (true) { Console.WriteLine("LES ANIMAUX"); Console.WriteLine("\t1- Afficher les animaux"); Console.WriteLine("\t2- Ajouter un animal"); Console.WriteLine("\t3- Sélectionner un animal"); Console.WriteLine("\t9- Retour"); Console.Write("\n\tEntrer votre choix : "); int choix = Convert.ToInt32(Console.ReadLine()); switch (choix) { case 1: Console.Clear(); AfficherListeAnimaux(); break; case 2: Console.Clear(); Animal animal = Theque.AjouterAnimal(); ModifierNom(animal); ModifierAnimal(animal); break; case 3: Console.Clear(); SelectionnerAnimal(); break; case 9: Console.Clear(); return; default: Console.WriteLine("\tChoix incorrect\n"); break; } } } static private void AfficherListeAnimaux() { Console.WriteLine("VOS ANIMAUX : "); foreach (Animal animal in Theque.ListeAnimaux) { Console.WriteLine(animal.Nom); } } static private void SelectionnerAnimal() { string choix = ""; while (choix != "-1") { AfficherListeAnimaux(); Console.Write("\n\tEntrer le nom de l'animal à sélectionner (-1 pour annuler) : "); choix = Console.ReadLine(); Animal? animal = Theque.RechercherAnimal(choix); if (animal != null) { AfficherAnimal(animal); } else Console.WriteLine("\tChoix incorrect\n"); } } static private void AfficherAnimal(Animal animal) { Console.Clear(); while (true) { Console.WriteLine("\n" + animal.Nom); if (animal.Espece != null) Console.WriteLine("\tEspece : " + animal.Espece.Nom); if (animal.Race != null) Console.WriteLine("\tRace : " + animal.Race.Nom); Console.WriteLine("\tDate de naissance : " + animal.DateNaissance); Console.WriteLine("\tSexe : " + animal.Sexe); Console.WriteLine("\tDate d'adoption : " + animal.DateAdoption); Console.WriteLine("\tTaille : " + animal.Taille); Console.WriteLine("\tPoids : " + animal.Poids); Console.WriteLine("\tAlimentation : " + animal.Alimentation); Console.WriteLine("\tPETSITTER : "); AfficherEntite(animal.Petsitter); Console.WriteLine("\tCHENIL : "); AfficherEntite(animal.Chenil); Console.WriteLine("\tVETERINAIRE : "); AfficherEntite(animal.Veterinaire); Console.WriteLine("\tMAGASIN ALIMENTAIRE : "); AfficherEntite(animal.MagasinAlimentaire); Console.WriteLine("\tREFUGE, ELEVAGE, CHENIL DE PROVENANCE : "); AfficherEntite(animal.Provenance); Console.WriteLine("\n\t1- Modifier"); Console.WriteLine("\t2- Supprimer"); Console.WriteLine("\t9- Retour"); Console.Write("\n\tEntrer votre choix : "); int decision = Convert.ToInt32(Console.ReadLine()); switch (decision) { case 1: ModifierAnimal(animal); break; case 2: Theque.SupprimerAnimal(animal); return; case 9: return; default: Console.WriteLine("\tChoix incorrect\n"); break; } } } static private void AfficherEntite(Entite entite) { Console.WriteLine("\t\tNom : " + entite.Nom); Console.WriteLine("\t\tAdresse : " + entite.Adresse + "," + Convert.ToInt32(entite.CodePostal) + " " + entite.Ville); Console.WriteLine("\t\tNuméro de téléphone : " + entite.NumTel); } static private void ModifierAnimal(Animal animal) { while (true) { Console.WriteLine("MODIFIER L'ANIMAL ", animal.Nom); Console.WriteLine("\t1- Nom"); Console.WriteLine("\t2- Espece"); Console.WriteLine("\t3- Race"); Console.WriteLine("\t4- Date de naissance"); Console.WriteLine("\t5- Sexe"); Console.WriteLine("\t6- Date d'adoption"); Console.WriteLine("\t7- Taille"); Console.WriteLine("\t8- Poids"); Console.WriteLine("\t9- Alimentation"); Console.WriteLine("\t10- Petsitter"); Console.WriteLine("\t11- Chenil"); Console.WriteLine("\t12- Vétérinaire"); Console.WriteLine("\t13- Magasin alimentaire"); Console.WriteLine("\t14- Refuge, élevage et chenil de provenance"); Console.WriteLine("\t19- Retour"); Console.Write("\n\tEntrer votre choix : "); int decision = Convert.ToInt32(Console.ReadLine()); switch (decision) { case 1: ModifierNom(animal); break; case 2: ModifierEspece(animal); break; case 3: ModifierRace(animal); break; case 4: ModifierDateNaissance(animal); break; case 5: ModifierSexe(animal); break; case 6: ModifierDateAdoption(animal); break; case 7: ModifierTaille(animal); break; case 8: ModifierPoids(animal); break; case 9: ModifierAlimentation(animal); break; case 10: ModifierEntite(animal.Petsitter); break; case 11: ModifierEntite(animal.Chenil); break; case 12: ModifierEntite(animal.Veterinaire); break; case 13: ModifierEntite(animal.MagasinAlimentaire); break; case 14: ModifierEntite(animal.Provenance); break; case 19: return; default: Console.WriteLine("\tChoix incorrect\n"); break; } } } static private void ModifierNom(Animal animal) { while (animal.Nom.Length <= 0 || animal.Nom.StartsWith(" ")) { Console.Write("\tNom : "); animal.Nom = Console.ReadLine(); } } static private void ModifierEspece(Animal animal) { Espece? espece = null; while (espece == null) { Console.Write("\tEspèce : "); string nomEspece = Console.ReadLine(); espece = Theque.RechercherEspece(nomEspece); if (espece == null) { Console.WriteLine("Espece inconnue\n"); } } animal.Espece = espece; } static private void ModifierSexe(Animal animal) { string sexe = "sexe"; while (sexe != "Male" && sexe != "Femelle" && sexe != "") { Console.Write("\tSexe [Male|Femelle|] (appuyer sur entrer pour passer) : "); sexe = Console.ReadLine(); } animal.Sexe = sexe; } static private void ModifierTaille(Animal animal) { Console.Write("\tTaille (appuyer sur entrer pour passer) : "); string taille = Console.ReadLine(); if (taille == "") animal.Taille = null; else animal.Taille = Single.Parse(taille); } static private void ModifierPoids(Animal animal) { Console.Write("\tPoids (appuyer sur entrer pour passer) : "); string poids = Console.ReadLine(); if (poids == "") animal.Poids = null; else animal.Poids = Single.Parse(poids); } static private void ModifierAlimentation(Animal animal) { Console.Write("\tAlimentation (appuyer sur entrer pour passer) : "); animal.Alimentation = Console.ReadLine(); } static private void ModifierDateNaissance(Animal animal) { Console.Write("\tDate de naissance (appuyer sur entrer pour passer) : "); animal.DateNaissance = Console.ReadLine(); } static private void ModifierDateAdoption(Animal animal) { Console.Write("\tDate d'adoption (appuyer sur entrer pour passer) : "); animal.DateAdoption = Console.ReadLine(); } static private void ModifierRace(Animal animal) { Console.Write("\tRace (appuyer sur entrer pour passer) : "); string nomRace = Console.ReadLine(); animal.Race = animal.Espece.RechercherRace(nomRace); } static private void ModifierEntite(Entite entite) { while (true) { Console.WriteLine("MODIFIER L'ENTITE ", entite); Console.WriteLine("\t1- Nom"); Console.WriteLine("\t2- Adresse"); Console.WriteLine("\t3- Code postal"); Console.WriteLine("\t4- Ville"); Console.WriteLine("\t9- Retour"); Console.Write("\n\tEntrer votre choix : "); int decision = Convert.ToInt32(Console.ReadLine()); switch (decision) { case 1: ModifierNomEntite(entite); break; case 2: ModifierAdresseEntite(entite); break; case 3: ModifierCodePostalEntite(entite); break; case 4: ModifierVilleEntite(entite); break; case 9: return; default: Console.WriteLine("\tChoix incorrect\n"); break; } } } static private void ModifierNomEntite(Entite entite) { Console.Write("\tNom (appuyer sur entrer pour passer) : "); entite.Nom = Console.ReadLine(); } static private void ModifierAdresseEntite(Entite entite) { Console.Write("\tAdresse (appuyer sur entrer pour passer) : "); entite.Adresse = Console.ReadLine(); } static private void ModifierCodePostalEntite(Entite entite) { int? codePostal = null; while(codePostal != null || (codePostal < 10000 && codePostal > 99999)) { Console.Write("\tCode postal (appuyer sur entrer pour passer) : "); codePostal = Convert.ToInt32(Console.ReadLine()); } entite.CodePostal = codePostal; } static private void ModifierVilleEntite(Entite entite) { Console.Write("\tVille(appuyer sur entrer pour passer) : "); entite.Ville = Console.ReadLine(); } }