예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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();
        }