using Microsoft.Win32.SafeHandles; using Model; using System.Collections.ObjectModel; using System.IO; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Serialization; using System.Runtime.Serialization.Json; using System.Xml; namespace MyProject; class Program { static private Theque Theque { get; set; } = Stub.LoadTheque(); 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 : "); string? choix = Console.ReadLine(); while(!Theque.IntValidate(choix)) { Console.Write("\n\tChoix incorrect. Entrer votre choix : "); choix = Console.ReadLine(); } switch (Convert.ToInt32(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 : "); string? choix = Console.ReadLine(); while (!Theque.IntValidate(choix)) { Console.Write("\n\tChoix incorrect. Entrer votre choix : "); choix = Console.ReadLine(); } switch (Convert.ToInt32(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 = null; while (choix != "-1") { AfficherListeEspece(); Console.Write("\n\tEntrer le nom de l'espèce à sélectionner (-1 pour annuler) : "); choix = Console.ReadLine(); if(choix != null) { 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 : "); string? choix = Console.ReadLine(); while (!Theque.IntValidate(choix)) { Console.Write("\n\tChoix incorrect. Entrer votre choix : "); choix = Console.ReadLine(); } switch (Convert.ToInt32(choix)) { 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 : "); string? choix = Console.ReadLine(); while (!Theque.IntValidate(choix)) { Console.Write("\n\tChoix incorrect. Entrer votre choix : "); choix = Console.ReadLine(); } switch (Convert.ToInt32(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 : "); string? choix = Console.ReadLine(); while (!Theque.IntValidate(choix)) { Console.Write("\n\tChoix incorrect. Entrer votre choix : "); choix = Console.ReadLine(); } switch (Convert.ToInt32(choix)) { 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 : "); string? choix = Console.ReadLine(); while (!Theque.IntValidate(choix)) { Console.Write("\n\tChoix incorrect. Entrer votre choix : "); choix = Console.ReadLine(); } switch (Convert.ToInt32(choix)) { 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) { Console.Write("\tNom : "); string nom = Console.ReadLine()??""; while(!animal.NomValidate(nom)) { Console.WriteLine("\nNom incorrect. Nom : "); nom = Console.ReadLine() ??""; } animal.Nom = nom; } static private void ModifierEspece(Animal animal) { Console.Write("\tEspèce (appuyer sur entrée pour passer): "); string? nomEspece = Console.ReadLine(); Espece? espece = Theque.RechercherEspece(nomEspece); while (nomEspece != null && espece == null) { Console.Write("\tEspèce inconnue. Espèce : "); nomEspece = Console.ReadLine(); espece = Theque.RechercherEspece(nomEspece); } animal.Espece = espece; } static private void ModifierSexe(Animal animal) { string? sexe = null; while (sexe != "Male" && sexe != "Femelle" && sexe != null) { 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(); while(taille != null && !Theque.FloatValidate(taille)) { Console.WriteLine("\tTaille incorrect. Taille : "); taille = Console.ReadLine(); } animal.Taille = Convert.ToSingle(taille); } static private void ModifierPoids(Animal animal) { Console.Write("\tPoids (appuyer sur entrer pour passer) : "); string? poids = Console.ReadLine(); while (poids != null && !Theque.FloatValidate(poids)) { Console.WriteLine("\tTaille incorrect. Poids : "); poids = Console.ReadLine(); } animal.Poids = Convert.ToSingle(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) : "); string? dateNaissance = Console.ReadLine(); while (dateNaissance != null && !Theque.DateTimeValidate(dateNaissance)) { Console.WriteLine("\tTaille incorrect. Date de naissance : "); dateNaissance = Console.ReadLine(); } animal.DateNaissance = Convert.ToDateTime(dateNaissance); } static private void ModifierDateAdoption(Animal animal) { Console.Write("\tDate d'adoption (appuyer sur entrer pour passer) : "); string? dateAdoption = Console.ReadLine(); while (dateAdoption != null && !Theque.DateTimeValidate(dateAdoption)) { Console.WriteLine("\tTaille incorrect. Date d'adoption : "); dateAdoption = Console.ReadLine(); } animal.DateAdoption = Convert.ToDateTime(dateAdoption); } static private void ModifierRace(Animal animal) { if (animal.Espece != null) { Console.Write("\tRace (appuyer sur entrée pour passer): "); string? nomRace = Console.ReadLine(); Race? race = animal.Espece.RechercherRace(nomRace); while (nomRace != null && race == null) { Console.Write("\tRace inconnue. Race : "); nomRace = Console.ReadLine(); race = animal.Espece.RechercherRace(nomRace); } animal.Race = race; } else Console.WriteLine("\tL'animal ne peut pas avoir une race sans espèce"); } 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 : "); string? choix = Console.ReadLine(); while (!Theque.IntValidate(choix)) { Console.Write("\n\tChoix incorrect. Entrer votre choix : "); choix = Console.ReadLine(); } switch (Convert.ToInt32(choix)) { 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) { Console.Write("\tCode postal (appuyer sur entrer pour passer) : "); string? codePostal = Console.ReadLine(); while((codePostal != null && !Theque.IntValidate(codePostal)) || (codePostal != null && Theque.IntValidate(codePostal) && Convert.ToInt32(codePostal) < 10000 && Convert.ToInt32(codePostal) > 99999)) { Console.Write("\tCode postal (appuyer sur entrer pour passer) : "); codePostal = Console.ReadLine(); } entite.CodePostal = Convert.ToInt32(codePostal); } static private void ModifierVilleEntite(Entite entite) { Console.Write("\tVille(appuyer sur entrer pour passer) : "); entite.Ville = Console.ReadLine(); } }