public static CAppartementRBNP SelectionUnAppartement(string nomFichier) { StreamReader fileReader = new StreamReader(nomFichier); JsonSerializer jsonSerialiser = new JsonSerializer(); List <CAppartementRBNP> ListDesAppartements = new List <CAppartementRBNP>(); //Construction de la liste avec tous les appartements et leurs attributs //Si il n'y a pas de overall_satisfaction alors = -1 // !!! NB !!! //ICI je ne comprends pas pourquoi les host_id ne sont pas bien stocké dans la variable et donc sont égaux à -1 //C'est un probleme que je n'ai pas réussi à résoudre //Ainsi je traite les appartement dans la suite du code grace au room_id ListDesAppartements = (List <CAppartementRBNP>)jsonSerialiser.Deserialize(fileReader, typeof(List <CAppartementRBNP>)); //Ainsi dans le sujet, on veut faire des recherches d'appartements par : // - arrondissement (4eme attribut) 16 // - Nombre de chambres (9eme attribut) 1 // - Evaluation (7eme attribut) => min de 4,5 // - Disponibilité (15eme attribut) => yes //On prend les 3 Premiers appartements qui répondent à ces critères List <CAppartementRBNP> ListAppartementsConvenables = new List <CAppartementRBNP>(); foreach (CAppartementRBNP a in ListDesAppartements) { //Si l'appartement répond aux critères ci-dessus, alors on l'ajoute à notre liste convenables if (a.borough == 16 && a.bedrooms == 1 && a.overall_satisfaction >= 4.5 && a.availability == "yes") { ListAppartementsConvenables.Add(a); } //Si on a déjà 3 appartements convenables à porposer au client alors on sort du foreach if (ListAppartementsConvenables.Count == 3) { break; } } //Affichage des appartements retenus Console.WriteLine("Voici les 3 appartements retenus pour votre recherche : "); AffichageConsoleAppartements(ListAppartementsConvenables); Console.WriteLine("Pour la démonstration, nous choisissons l'appartement numéro 1"); Console.WriteLine("Appuyer sur une touche pour continuer...."); Console.ReadKey(); CAppartementRBNP appartementChoisiParLeClient = ListAppartementsConvenables.ElementAt(1); return(appartementChoisiParLeClient); }
public static void GenerationMessageJsonConfirmationReservation(string nomFichier, CAppartementRBNP appart) { //On change la disponibilité de l'appartement appart.availability = "no"; //instanciations des outils //StreamWriter et JsonTextWriter StreamWriter fileWritter = new StreamWriter("messageConfirmationRBNP.json"); JsonTextWriter jsonWriter = new JsonTextWriter(fileWritter); JsonSerializer serializer = new JsonSerializer(); String json = JsonConvert.SerializeObject(appart); //----------- //Sérialisation // serializer.Serialize(jsonWriter, appart); // //fermeture des writer // //à compléter fileWritter.Close(); jsonWriter.Close(); //----------- //relecture du fichier créé //----------------------------- Console.WriteLine("\nlecture des informations de messageConfirmationRBNP.json\n"); AfficherPrettyJson("messageConfirmationRBNP.json"); Console.WriteLine("Affichage string json : \n" + json); }
public static void CheckIn() { //Variable qui sont demandées en console string nomClientStr = "JOSSE"; string adresseClientStr = "4 rue des Lilas"; string adresseMail = "*****@*****.**"; string numeroTel = "0786950301"; //Un séjour est définit par un thème (sur 3 caractères) et une date. A chaque thème correspond un arrondissement de Paris //et à chaque date (uniquement des week - ends), un numéro de semaine //ENONCE string dateSejour = "14"; string themeSejour = "A15"; //------------------------------------------------- //E1 // Un client choisit un séjour définit par un thème et une date. Pour cela, il rempli le formulaire du site et pour pour //finaliser sa demande il précise son numéro d'inscription s'il est déjà client et sinon son nom, son adresse(en version //atomique – 1 seul champ de …. caractères -) son numéro de tel, son email. //Si le demandeur est un nouveau client le système informatique l'enregistrera comme nouveau client et lui attribuera //un numéro client(un numéro séquentiel d'inscription est suffisant). XmlDocument docXml = new XmlDocument(); // nom du client séjour souhaité, date. // création de l'en-tête XML (no <=> pas de DTD associée) docXml.CreateXmlDeclaration("1.0", "UTF-8", "no"); XmlElement racine = docXml.CreateElement("reservation"); docXml.AppendChild(racine); XmlElement autreBalise = docXml.CreateElement("nomClient"); autreBalise.InnerText = nomClientStr; racine.AppendChild(autreBalise); autreBalise = docXml.CreateElement("Telephone"); autreBalise.InnerText = numeroTel; racine.AppendChild(autreBalise); autreBalise = docXml.CreateElement("Date"); autreBalise.InnerText = dateSejour; racine.AppendChild(autreBalise); autreBalise = docXml.CreateElement("Sejour"); autreBalise.InnerText = themeSejour; racine.AppendChild(autreBalise); // enregistrement du document XML ==> à retrouver dans le dossier bin\Debug de Visual Studio docXml.Save("M1.xml"); //Affichage XML M1 AffichageConsoleXMLM1(); //E2 Console.WriteLine("Grace à votre NOM et votre TELEPHONE, le systeme va regarder si vous etes deja client ..."); string matriculeClient = ""; //Parsing du fichier M1 if (!VerificationExistenceClient("M1.xml"))//Dans le cas où le client n'existe pas // P1 { Console.WriteLine("Client : " + nomClientStr + " n'existe pas dans la BD, création de son identité ... (appuyer sur une touche pour continuer"); Console.ReadKey(); //Retourne aussi le matricule du client matriculeClient = creationNouveauClient(nomClientStr, adresseClientStr, adresseMail, numeroTel); } else //Le client existe { Console.WriteLine("Select IDClient where Nom = \u0022" + nomClientStr + "\u0022 and NumTel = \u0022" + numeroTel + "\u0022;"); List <string> result = ExecuterUneCommandeSQLStr("Select IDclient from Client where Nom = \u0022" + nomClientStr + "\u0022 and NumTel = \u0022" + numeroTel + "\u0022;"); matriculeClient = result.ElementAt(0); } //A partir de ce stade, le client est dans la base de donnée SQL //Creation de la demande de réservation Console.WriteLine("\nNous pouvons ainsi nous occuper des données de la réservation de séjour\n"); //E3 Console.WriteLine("Le systeme va s'occuper de trouver une voiture et de la reserver...\n"); string immatriculationVoitureChoisie = SelectionVoitureSelonArrondissementSejour(themeSejour); //retourne aussi l'immatriculation de la voiture //E4 //A partir de maintenant, il faut prendre les critères de logements du client //Retourner un appartement dans la bibliotheque .json Console.WriteLine("Envoie d'une requete pour connaitre les disponibilités des appartements à Paris ..."); Console.WriteLine("\n\n\nNous allons maintenant chercher 3 appartements répondant à vos critères : \n"); //Stockage de l'appartement choisi par le client //E5 // !!! NB !!! //ICI je ne comprends pas pourquoi les host_id ne sont pas bien stocké dans la variable et donc sont égaux à -1 lors de la désérialisation //C'est un probleme que je n'ai pas réussi à résoudre.... //Ainsi je traite les appartement dans la suite du code grace au room_id CAppartementRBNP appartementChoisiParLeClient = SelectionUnAppartement("RBNP.json"); //Génération d'un message Json pour que availibility soit = "no" Console.WriteLine("Generation d'un message Json pour la confirmation de la réservation de l'appartement"); Console.WriteLine("Avaibility est changé en no"); GenerationMessageJsonConfirmationReservation("RBNP.json", appartementChoisiParLeClient); Console.WriteLine("Fin de la generation"); Console.ReadKey(); //E6 //On doit creer une reservation avec le statut non confirmé avec la valuer 1 dans la requete SQL => attribut StatutValidation //Comme pour la création d'un client, il faut sortir un sejour_id unique qui n'est pas utilisé dans la base de donnée string idSejour = creationIDSejourUnique(); //Creation dans la BD d'un nouveau séjour Console.WriteLine("\nNous allons maintenant créér une réservation de sejour "); //On créé un nouveau séjour non validé ExecuterUneCommandeSQLStr("INSERT INTO Sejour VALUES('" + idSejour + "', 1, '" + themeSejour + "'," + dateSejour + ",'" + appartementChoisiParLeClient.room_id + "');"); Console.WriteLine("Le sejour a bien été ajouté à la BD en non confirmé : "); ExecuterUneCommandeSQLStr("select * from Sejour"); //Le sejour est créé //Creation d'une réservation dans la table réservation Console.WriteLine("\n Nous allons maintenant créer la réservation dans la BD"); string idReservation = creationIDReservationUnique(); ExecuterUneCommandeSQLStr("INSERT INTO `Reservation` (`IDReservation`, `Client_IDclient`, `Sejour_IDsejour`,`Vehicule_Immatriculation`,`Parking_Arrondissement` ) VALUES ('" + idReservation + "', '" + matriculeClient + "', '" + idSejour + "', '" + immatriculationVoitureChoisie + "', '" + themeSejour + "');"); Console.WriteLine("\nFin de la création de la réservation au nom de " + nomClientStr); //Creation d'un message xml de la reservation POUR l'intégrer dans un xml //M2 Console.WriteLine("Creation du message de confirmation xml"); creationMessageXmlConfirmation(idReservation, matriculeClient, idSejour, immatriculationVoitureChoisie, themeSejour); //E7 //Creation d'un fichier xml "réponse de l'utilisateur" //M3 Console.WriteLine("Creation du sms de validation du client"); creationMessageSmsClient(idReservation, matriculeClient, idSejour, immatriculationVoitureChoisie, themeSejour); //Il faut maintenant aller chercher la reponse validation dans M3 pour pouvoir valider le séjour //P2 validationSejourSelonReponseClient(); }