Пример #1
0
 // public Formule formuleRetenue {get; set;}
 //Constructeur
 public Reservation(Table _table, string _nomClient, int _numClient, DateTime _dateReservation, int _nbConvives, Formule _formuleRetenue)
 {
     Table = _table;
     NomClient = _nomClient;
     NumClient = _numClient;
     DateReservation = _dateReservation;
     NbConvives = _nbConvives;
     FormuleRetenue = _formuleRetenue;
 }
Пример #2
0
        // public Formule formuleRetenue {get; set;}

        //Constructeur
        public Reservation(Table _table, string _nomClient, int _numClient, DateTime _dateReservation, int _nbConvives, Formule _formuleRetenue)
        {
            Table           = _table;
            NomClient       = _nomClient;
            NumClient       = _numClient;
            DateReservation = _dateReservation;
            NbConvives      = _nbConvives;
            FormuleRetenue  = _formuleRetenue;
        }
Пример #3
0
        public Formule retourneFormule(int noFormule)
        {
            Formule form = new Formule();
            int     i    = 0;

            while (i < formules.Count)
            {
                if (noFormule == i + 1)
                {
                    form = formules[i];
                }
                i++;
            }
            return(form);
        }
Пример #4
0
        public void creationReservationXml()
        {
            //chargement du document
            XmlDocument doc = new XmlDocument();
            doc.Load("restaurant.xml");

            //recherche du noeud "reservation"
            XmlNodeList itemNodes = doc.SelectNodes("//Restaurant/Reservations/Reservation");
            List<int> _noTable = new List<int>();
            List<string> _nomClient = new List<string>();
            List<int> _numClient = new List<int>();
            List<int> _nbConvive = new List<int>();
            List<string> _nomFormule = new List<string>();
            List<DateTime> _dateResa = new List<DateTime>();
            //parcourt tous les noeuds "reservation" du document
            foreach (XmlNode itemNode in itemNodes)
            {
                XmlNode noTable = itemNode.SelectSingleNode("tableResa");
                XmlNode nomClient = itemNode.SelectSingleNode("nomClient");
                XmlNode numClient = itemNode.SelectSingleNode("numClient");
                XmlNode dateResa = itemNode.SelectSingleNode("dateResa");
                XmlNode nbConvive = itemNode.SelectSingleNode("nbConvive");
                XmlNode nomFormule = itemNode.SelectSingleNode("formuleResa");

                if (nomClient != null)
                {

                    _nomFormule.Add(nomFormule.InnerText);
                    int numclient = int.Parse(numClient.InnerText);
                    _numClient.Add(numclient);
                    _nomClient.Add(nomClient.InnerText);
                    int notable = int.Parse(noTable.InnerText);
                    _noTable.Add(notable);
                    int nbconvive = int.Parse(nbConvive.InnerText);
                    _nbConvive.Add(nbconvive);
                    DateTime dateresa = Convert.ToDateTime(dateResa.InnerText);
                    _dateResa.Add(dateresa);

                }
            }

            //CREATION RESERVATIONS DANS LE PROGRAMME
            for (int i = 0; i < _nomClient.Count(); i++)
            {

                Reservation newResa = new Reservation() ;
                Formule formuleChoisie=new Formule();
                int j=0;
                while (j<formules.Count)
                    {
                        for (int k = 0; k < formules.Count; k++)
                        {
                            if (_nomFormule[i].Equals(formules[k].NomFormule))
                            {
                                formuleChoisie=formules[k];
                            }
                        }
                        j++;
                    }

                j = 0;
                while (j < tables.Count)
                    {

                        if (j==_noTable[i])
                         {
                            if (tables[j].NbPlaceMax==4)
                                {
                                    TableCarree tableResa = new TableCarree();
                                    tableResa=tables[j] as TableCarree;
                                    newResa = new Reservation(tableResa, _nomClient[i], _numClient[i], _dateResa[i], _nbConvive[i], formuleChoisie);

                                }
                            else
                            {
                                if (tables[j].NbPlaceMax == 6)
                                {
                                    TableRectangulaire tableResa = new TableRectangulaire();
                                    tableResa = tables[j] as TableRectangulaire;
                                    newResa = new Reservation(tableResa, _nomClient[i], _numClient[i], _dateResa[i], _nbConvive[i], formuleChoisie);

                                }
                                else
                                {
                                    TableRonde tableResa = new TableRonde();
                                    tableResa = tables[j] as TableRonde;
                                    newResa = new Reservation(tableResa, _nomClient[i], _numClient[i], _dateResa[i], _nbConvive[i], formuleChoisie);

                                }

                            }

                         }
                j++;
                    }

                this.reservations.Add(newResa);
            }
        }
Пример #5
0
        public void creationFormulesXml()
        {
            //le logiciel lit le fichier xml correspondant au restaurant
               XmlDocument doc = new XmlDocument();
            doc.Load("restaurant.xml");

            //Lecture des informations nomFormule et TableRequise de chaque formule du fichier XML
            XmlNodeList itemNodes = doc.SelectNodes("//Restaurant/Formules/Formule");
            List<string> _nomFormule = new List<string>();
            List<bool> _tableRequise = new List<bool>();
            foreach (XmlNode itemNode in itemNodes)
            {
                XmlNode nomFormule = itemNode.SelectSingleNode("nomFormule");
                XmlNode tableRequise = itemNode.SelectSingleNode("tableRequise");
                if ((nomFormule != null) && (tableRequise != null))
                {
                    _nomFormule.Add(nomFormule.InnerText);
                    bool tablereq = bool.Parse(tableRequise.InnerText);
                    _tableRequise.Add(tablereq);
                }
            }

            //Lecture des durées de préparations et de présence clients pour chaque formule du fichier XML
            XmlNodeList dureePrepaNodes = doc.SelectNodes("//Restaurant/Formules/Formule/dureePreparation");
            List<int> _hDureePrepa = new List<int>();
            List<int> _minDureePrepa = new List<int>();
            List<int> _secDureePrepa = new List<int>();
            foreach (XmlNode dureeNode in dureePrepaNodes)
            {
                XmlNode hDureePrepa = dureeNode.SelectSingleNode("heure1");
                XmlNode minDureePrepa = dureeNode.SelectSingleNode("min1");
                XmlNode secDureePrepa = dureeNode.SelectSingleNode("sec1");
                if ((hDureePrepa != null) && (minDureePrepa != null) && (secDureePrepa != null))
                {
                    int hdp = int.Parse(hDureePrepa.InnerText);
                    _hDureePrepa.Add(hdp);
                    int mdp = int.Parse(minDureePrepa.InnerText);
                    _minDureePrepa.Add(mdp);
                    int sdp = int.Parse(secDureePrepa.InnerText);
                    _secDureePrepa.Add(sdp);
                }
            }
            XmlNodeList dureePresenceNodes = doc.SelectNodes("//Restaurant/Formules/Formule/dureePresenceClient");
            List<int> _hDureePresence = new List<int>();
            List<int> _minDureePresence = new List<int>();
            List<int> _secDureePresence = new List<int>();
            foreach (XmlNode dureePNode in dureePresenceNodes)
            {
                XmlNode hDureePresence = dureePNode.SelectSingleNode("heure2");
                XmlNode minDureePresence = dureePNode.SelectSingleNode("min2");
                XmlNode secDureePresence = dureePNode.SelectSingleNode("sec2");
                if ((hDureePresence != null) && (minDureePresence != null) && (secDureePresence != null))

                {
                    int hdpc = int.Parse(hDureePresence.InnerText);
                    _hDureePresence.Add(hdpc);
                    int mdpc = int.Parse(minDureePresence.InnerText);
                    _minDureePresence.Add(mdpc);
                    int sdpc = int.Parse(secDureePresence.InnerText);
                    _secDureePresence.Add(sdpc);
                }
            }

            //CREATION DES FORMULES
            //elles se créent à partir de la lecture du fichier xml, comme ça le logiciel s'adapte à chaque restaurant
            for (int i = 0; i < _nomFormule.Count(); i++)
            {
                TimeSpan dureePreparation = new TimeSpan(_hDureePrepa[i], _minDureePrepa[i], _secDureePrepa[i]);
                TimeSpan dureePresenceClient = new TimeSpan(_hDureePresence[i], _minDureePresence[i], _secDureePresence[i]);
                Formule formule = new Formule(_nomFormule[i], dureePreparation, dureePresenceClient, _tableRequise[i]);
                this.formules.Add(formule);
            }
        }
Пример #6
0
        public void newOccupationTableXml(DateTime dateDeDebut, Formule formuleChoisie, int indiceTable)
        {
            DateTime datefincuisto = new DateTime();
                datefincuisto = dateDeDebut + formuleChoisie.DureePreparation;

                //Modification du fichier XML: Ajout de la réservation
                XmlDocument doc = new XmlDocument();
                doc.Load("restaurant.xml");

                //Comptage du nombre de tables en fonction de chaque type(carrées, rectangulaires et rondes)
                XmlNodeList tablecarreeNodes = doc.SelectNodes("//Restaurant/Tables/TableCarees/TableCaree");
                XmlNodeList tablerectNodes = doc.SelectNodes("//Restaurant/Tables/TableRectangulaires/TableRectangulaire");
                XmlNodeList tablerondeNodes = doc.SelectNodes("//Restaurant/Tables/TableRondes/TableRonde");
                int nbTableCarree = 0;
                int nbTableRect = 0;
                int nbTableRonde = 0;
                foreach (XmlNode tablecaree in tablecarreeNodes)
                {
                    nbTableCarree++;
                }
                foreach (XmlNode tablerect in tablerectNodes)
                {
                    nbTableRect++;
                }
                foreach (XmlNode tableronde in tablerondeNodes)
                {
                    nbTableRonde++;
                }

                if (indiceTable < nbTableCarree)
                {
                    int j = 0;
                    while (j < tablecarreeNodes.Count)
                    {
                        if (j==indiceTable)
                        {
                            XmlNode noeudBase = doc.CreateElement("occupations");
                            XmlNode occupationNode = doc.CreateElement("dateDebutOccupee");
                            tablecarreeNodes[j].AppendChild(noeudBase);

                            string dateDebut = dateDeDebut.ToString();
                            occupationNode.InnerText = dateDebut;
                            noeudBase.AppendChild(occupationNode);

                            XmlNode occupation2Node = doc.CreateElement("dateFinOccupee");
                            string dateFin = datefincuisto.ToString();
                            occupation2Node.InnerText = dateFin;
                            noeudBase.AppendChild(occupation2Node);

                            doc.Save("restaurant.xml");
                        }
                        j++;
                    }
                }
                else
                {
                    if(indiceTable<nbTableRect+nbTableCarree)
                    {
                        int j = 0;
                        while (j < tablerectNodes.Count)
                        {
                            if (j == (indiceTable-nbTableCarree))
                            {
                                XmlNode noeudBase = doc.CreateElement("occupations");
                                XmlNode occupationNode = doc.CreateElement("dateDebutOccupee");
                                tablerectNodes[j].AppendChild(noeudBase);

                                string dateDebut = dateDeDebut.ToString();
                                occupationNode.InnerText = dateDebut;
                                noeudBase.AppendChild(occupationNode);

                                XmlNode occupation2Node = doc.CreateElement("dateFinOccupee");
                                string dateFin = datefincuisto.ToString();
                                occupation2Node.InnerText = dateFin;
                                noeudBase.AppendChild(occupation2Node);

                                doc.Save("restaurant.xml");
                            }
                            j++;
                        }
                    }
                    else
                    {
                        int j = 0;
                        while (j < tablerondeNodes.Count)
                        {
                            if (j == (indiceTable - (nbTableRect+nbTableCarree)))
                            {
                                XmlNode noeudBase = doc.CreateElement("occupations");
                                XmlNode occupationNode = doc.CreateElement("dateDebutOccupee");
                                tablerondeNodes[j].AppendChild(noeudBase);

                                string dateDebut = dateDeDebut.ToString();
                                occupationNode.InnerText = dateDebut;
                                noeudBase.AppendChild(occupationNode);

                                XmlNode occupation2Node = doc.CreateElement("dateFinOccupee");
                                string dateFin = datefincuisto.ToString();
                                occupation2Node.InnerText = dateFin;
                                noeudBase.AppendChild(occupation2Node);

                                doc.Save("restaurant.xml");
                            }
                            j++;
                        }
                    }
                }
                //XmlNodeList cuistoNodes = doc.SelectNodes("//Restaurant/Tables/Table");
                //XmlNodeList noCuistoNodes = doc.SelectNodes("//Restaurant/Cuisiniers/Cuisinier/noCuisto");
                //string noCuisto = n.ToString();
        }
Пример #7
0
        }// fin creationTablesXml

        public void creationReservationXml()
        {
            //chargement du document
            XmlDocument doc = new XmlDocument();

            doc.Load("restaurant.xml");

            //recherche du noeud "reservation"
            XmlNodeList     itemNodes   = doc.SelectNodes("//Restaurant/Reservations/Reservation");
            List <int>      _noTable    = new List <int>();
            List <string>   _nomClient  = new List <string>();
            List <int>      _numClient  = new List <int>();
            List <int>      _nbConvive  = new List <int>();
            List <string>   _nomFormule = new List <string>();
            List <DateTime> _dateResa   = new List <DateTime>();

            //parcourt tous les noeuds "reservation" du document
            foreach (XmlNode itemNode in itemNodes)
            {
                XmlNode noTable    = itemNode.SelectSingleNode("tableResa");
                XmlNode nomClient  = itemNode.SelectSingleNode("nomClient");
                XmlNode numClient  = itemNode.SelectSingleNode("numClient");
                XmlNode dateResa   = itemNode.SelectSingleNode("dateResa");
                XmlNode nbConvive  = itemNode.SelectSingleNode("nbConvive");
                XmlNode nomFormule = itemNode.SelectSingleNode("formuleResa");

                if (nomClient != null)
                {
                    _nomFormule.Add(nomFormule.InnerText);
                    int numclient = int.Parse(numClient.InnerText);
                    _numClient.Add(numclient);
                    _nomClient.Add(nomClient.InnerText);
                    int notable = int.Parse(noTable.InnerText);
                    _noTable.Add(notable);
                    int nbconvive = int.Parse(nbConvive.InnerText);
                    _nbConvive.Add(nbconvive);
                    DateTime dateresa = Convert.ToDateTime(dateResa.InnerText);
                    _dateResa.Add(dateresa);
                }
            }

            //CREATION RESERVATIONS DANS LE PROGRAMME
            for (int i = 0; i < _nomClient.Count(); i++)
            {
                Reservation newResa        = new Reservation();
                Formule     formuleChoisie = new Formule();
                int         j = 0;
                while (j < formules.Count)
                {
                    for (int k = 0; k < formules.Count; k++)
                    {
                        if (_nomFormule[i].Equals(formules[k].NomFormule))
                        {
                            formuleChoisie = formules[k];
                        }
                    }
                    j++;
                }

                j = 0;
                while (j < tables.Count)
                {
                    if (j == _noTable[i])
                    {
                        if (tables[j].NbPlaceMax == 4)
                        {
                            TableCarree tableResa = new TableCarree();
                            tableResa = tables[j] as TableCarree;
                            newResa   = new Reservation(tableResa, _nomClient[i], _numClient[i], _dateResa[i], _nbConvive[i], formuleChoisie);
                        }
                        else
                        {
                            if (tables[j].NbPlaceMax == 6)
                            {
                                TableRectangulaire tableResa = new TableRectangulaire();
                                tableResa = tables[j] as TableRectangulaire;
                                newResa   = new Reservation(tableResa, _nomClient[i], _numClient[i], _dateResa[i], _nbConvive[i], formuleChoisie);
                            }
                            else
                            {
                                TableRonde tableResa = new TableRonde();
                                tableResa = tables[j] as TableRonde;
                                newResa   = new Reservation(tableResa, _nomClient[i], _numClient[i], _dateResa[i], _nbConvive[i], formuleChoisie);
                            }
                        }
                    }
                    j++;
                }

                this.reservations.Add(newResa);
            }
        } //fin creationReservationXML
Пример #8
0
       /* public void ajoutCuisto(int noCuisto)
        {
            Cuisinier cuisto = new Cuisinier(noCuisto);
            brigade.Add(cuisto);
            nbCuistoTotal = brigade.Count;
            nbCuistoDispo++;
            //Verifie que le cuisto est crée
            Console.WriteLine(cuisto);
            Console.ReadLine();
        }*/

        public bool verifierCuisiniersDispo(int nbConvives, DateTime dateDeDebut, Formule formuleChoisie) //ca marche pas, pas la foi de le faire 
        {
           // On regarde combien de cuisiniers sont disponibles
            DateTime dateDeFin = dateDeDebut + formuleChoisie.DureePreparation;
            int nbDispo = 0;
            List<int> cuistoDispo= new List<int>();
            for (int i = 0; i < brigade.Count; i++) //on regarde les cuisiniers un par un
            {
                if (brigade[i].PlanningCuisto.Count==0)
                {
                    nbDispo++;
                    cuistoDispo.Add(i);
                }
                else
                {
                    int k = 0;
                    while (k < brigade[i].PlanningCuisto.Count)//on regarde toutes les heures où les cuisiniers peuvent être occupés
                    {
                        int comparaisonDebut = DateTime.Compare(dateDeDebut, brigade[i].PlanningCuisto[k].DateDebutOccupee);
                        int comparaisonFin = DateTime.Compare(dateDeFin, brigade[i].PlanningCuisto[k].DateFinOccupee);
                        if ((comparaisonDebut < 0 && comparaisonFin < 0) || (comparaisonDebut > 0 && comparaisonFin > 0))//la date n'est pas la même
                        {
                            nbDispo++;
                            cuistoDispo.Add(i);
                        }
                        else
                        {
                            if ((comparaisonDebut < 0 && comparaisonFin > 0) || (comparaisonDebut > 0 && comparaisonFin < 0))
                            {
                                nbDispo++;
                                cuistoDispo.Add(i);

                            }

                        }
                        k++;
                    }
                }    
            }

            if (nbConvives>nbDispo)
            {
                Console.WriteLine("La cuisine est occupée, la reservation n'est pas possible. Veuillez essayer à un autre horaire");
                return false;
            }
            else
            {
                Console.WriteLine("Il y a assez de cuisiniers disponibles pour effectuer la réservation");
                //Création de l'occupation du cuisinier attribué à la réservation
                for (int n = 0; n < cuistoDispo.Count; n++)
			{
			    DateTime datefincuisto = new DateTime();
                datefincuisto = dateDeDebut + formuleChoisie.DureePreparation;
                Occupation occCuisto = new Occupation(dateDeDebut, datefincuisto);
                this.Brigade[n].PlanningCuisto.Add(occCuisto);

                //Modification du fichier XML: Ajout de la réservation
                XmlDocument doc = new XmlDocument();
                doc.Load("restaurant.xml");
                XmlNodeList cuistoNodes = doc.SelectNodes("//Restaurant/Cuisiniers/Cuisinier");
                XmlNodeList noCuistoNodes = doc.SelectNodes("//Restaurant/Cuisiniers/Cuisinier/noCuisto");
                string noCuisto= n.ToString();
                int j = 0;
                while (j<noCuistoNodes.Count)
                {
                    if (noCuistoNodes[j].InnerText == noCuisto)
                    {
                        XmlNode noeudBase = doc.CreateElement("occupations");
                        XmlNode occupationNode = doc.CreateElement("dateDebutOccupee");
                        cuistoNodes[j].AppendChild(noeudBase);

                        string dateDebut = dateDeDebut.ToString();
                        occupationNode.InnerText = dateDebut;
                        noeudBase.AppendChild(occupationNode);
                        

                        XmlNode occupation2Node = doc.CreateElement("dateFinOccupee");
                        string dateFin = datefincuisto.ToString();
                        occupation2Node.InnerText = dateFin;
                        noeudBase.AppendChild(occupation2Node);

                        doc.Save("restaurant.xml");
                    }
                    j++;
                }
               

			}


               



                return true;
            }

            
        }
Пример #9
0
        public void validerResa(Table table, DateTime dateResa, int nbconvive, Formule formuleChoisie)
        {
            Console.WriteLine("Quel est le nom du client pour la réservation?");
            string nomResa=Console.ReadLine();
            Console.WriteLine("Quel est le numéro du client?");
            string noClient = Console.ReadLine();
            int numClient = int.Parse(noClient);
            int i=0;
            string noTable="";
            int notable=0;
            //Recherche du numéro de la table
            while (i<tables.Count)
            {
                if (tables[i]==table)
                {
                    noTable = i.ToString();
                    notable = i;
                }
                i++;
            }
            //Recherche du nom de la formule choisie
            int j = 0;
            string nomFormule = "";
            while (j < formules.Count)
            {
                if (formules[j] == formuleChoisie)
                {
                    nomFormule = formules[j].NomFormule.ToString();
                }
                j++;
            }
            //Création de la réservation dans le programme
            Reservation newResa = new Reservation(table, nomResa, numClient, dateResa, nbconvive, formuleChoisie);
            reservations.Add(newResa);
            //Création de l'occupation de la table réservée
            DateTime datefinresa = new DateTime();
            datefinresa = dateResa + formuleChoisie.DureePresenceClient;
            Occupation occTable = new Occupation(dateResa, datefinresa);
            tables[notable].PlanningResa.Add(occTable);

            //Modification du fichier XML: Ajout de la réservation
            XmlDocument doc = new XmlDocument();
            doc.Load("restaurant.xml");
            XmlNode resaNodes = doc.SelectSingleNode("//Restaurant/Reservations");
            XmlNode noeudBase = doc.CreateElement("Reservation");
            XmlNode tableNode = doc.CreateElement("tableResa");
            tableNode.InnerText = noTable;
            noeudBase.AppendChild(tableNode);

            resaNodes.AppendChild(noeudBase);

            XmlNode nomClientNode = doc.CreateElement("nomClient");
            nomClientNode.InnerText = nomResa;
            noeudBase.AppendChild(nomClientNode);
            XmlNode numClientNode = doc.CreateElement("numClient");
            numClientNode.InnerText = noClient;
            noeudBase.AppendChild(numClientNode);
            XmlNode dateNode = doc.CreateElement("dateResa");
            string date = dateResa.ToString();
            dateNode.InnerText = date;
            noeudBase.AppendChild(dateNode);
            XmlNode nbConviveNode = doc.CreateElement("nbConvive");
            nbConviveNode.InnerText = nbconvive.ToString();
            noeudBase.AppendChild(nbConviveNode);
            XmlNode formuleNode = doc.CreateElement("formuleResa");
            formuleNode.InnerText = nomFormule;
            noeudBase.AppendChild(formuleNode);

            doc.Save("restaurant.xml");

            //sauvegarder les occupations dans le xml (classes table et cuisiniers)

            Console.WriteLine("La réservation a été réalisée avec succès!");
        }
Пример #10
0
        public bool jumelage(DateTime dateDeDebut, int nbconvive, Formule formuleChoisie, Cuisine C)
        {
            DateTime dateDeFin = dateDeDebut + formuleChoisie.DureePresenceClient;
            int      i         = 0;

            while (i < tables.Count) //on parcoure la liste des tables
            {
                int k = 0;
                if (tables[i].Jumelable == true)             //on verifie si la premiere table est jumelable
                {
                    while (k < tables[k].PlanningResa.Count) //on verifie qu'elle est dispo
                    {
                        int comparaisonDebut1 = DateTime.Compare(dateDeDebut, tables[i].PlanningResa[k].DateDebutOccupee);
                        int comparaisonFin1   = DateTime.Compare(dateDeFin, tables[i].PlanningResa[k].DateFinOccupee);
                        //l'heure de la résa n'est pas comprise dans le temps pendant lequel la table est occup
                        int j = i + 1;

                        if ((comparaisonDebut1 < 0 && comparaisonFin1 < 0) || (comparaisonDebut1 > 0 && comparaisonFin1 > 0)) //la date n'est pas la même
                        {
                            while (j < tables.Count)                                                                          //on parcourt une deuxieme fois la liste pour trouver une deuxieme table jumelable et dispo
                            {
                                if (tables[j].Jumelable == true)                                                              //on verifie si la deuxième table est jumelable
                                {
                                    int l = 0;
                                    while (l < tables[l].PlanningResa.Count) //on verifie qu'elle est dispo
                                    {
                                        int comparaisonDebut2 = DateTime.Compare(dateDeDebut, tables[j].PlanningResa[l].DateDebutOccupee);
                                        int comparaisonFin2   = DateTime.Compare(dateDeFin, tables[j].PlanningResa[l].DateFinOccupee);

                                        if ((comparaisonDebut2 < 0 && comparaisonFin2 < 0) || (comparaisonDebut2 > 0 && comparaisonFin2 > 0))
                                        //la date n'est pas la même
                                        {
                                            //ON JUMELE LES TABLES
                                            TablesJumelees newjumellee = new TablesJumelees(tables[i], tables[j]);

                                            bool cuisiniersDispo;
                                            cuisiniersDispo = C.verifierCuisiniersDispo(nbconvive, dateDeDebut, formuleChoisie);
                                            if (cuisiniersDispo == true)
                                            {
                                                validerResa(newjumellee, dateDeDebut, nbconvive, formuleChoisie);
                                                return(true);
                                            }
                                        }
                                        else
                                        {
                                            if ((comparaisonDebut2 < 0 && comparaisonFin2 > 0) || (comparaisonDebut2 > 0 && comparaisonFin2 < 0))
                                            //la date est la même mais l'horraire n'est pas simultané
                                            {
                                                //ON JUMELE LES TABLES
                                                TablesJumelees newjumellee = new TablesJumelees(tables[i], tables[j]);

                                                bool cuisiniersDispo;
                                                cuisiniersDispo = C.verifierCuisiniersDispo(nbconvive, dateDeDebut, formuleChoisie);
                                                if (cuisiniersDispo == true)
                                                {
                                                    validerResa(newjumellee, dateDeDebut, nbconvive, formuleChoisie);
                                                    return(true);
                                                }
                                            }
                                            else
                                            {
                                                Console.WriteLine("La reservation n'est pas possible. Recommencez en tapant sur ENTREE.");
                                                Console.ReadLine();
                                                return(false);
                                            }
                                        }


                                        l++;
                                    }
                                }
                                j++;
                            }
                        }

                        else
                        {
                            if ((comparaisonDebut1 < 0 && comparaisonFin1 > 0) || (comparaisonDebut1 > 0 && comparaisonFin1 < 0))
                            //la date est la même mais les horaires ne se mélangent pas
                            {
                                if (tables[j].Jumelable == true)    //on verifie si la deuxième table est jumelable
                                {
                                    int m = 0;
                                    while (m < tables[m].PlanningResa.Count)     //on verifie qu'elle est dispo
                                    {
                                        int comparaisonDebut2 = DateTime.Compare(dateDeDebut, tables[j].PlanningResa[m].DateDebutOccupee);
                                        int comparaisonFin2   = DateTime.Compare(dateDeFin, tables[j].PlanningResa[m].DateFinOccupee);

                                        if ((comparaisonDebut2 < 0 && comparaisonFin2 < 0) || (comparaisonDebut2 > 0 && comparaisonFin2 > 0))
                                        //la date n'est pas la même
                                        {
                                            //ON JUMELE LES TABLES
                                            TablesJumelees newjumellee = new TablesJumelees(tables[i], tables[j]);

                                            bool cuisiniersDispo;
                                            cuisiniersDispo = C.verifierCuisiniersDispo(nbconvive, dateDeDebut, formuleChoisie);
                                            if (cuisiniersDispo == true)
                                            {
                                                validerResa(newjumellee, dateDeDebut, nbconvive, formuleChoisie);
                                                return(true);
                                            }
                                        }
                                        else
                                        {
                                            if ((comparaisonDebut2 < 0 && comparaisonFin2 > 0) || (comparaisonDebut2 > 0 && comparaisonFin2 < 0))
                                            //la date est la même mais l'horraire n'est pas simultané
                                            {
                                                //ON JUMELE LES TABLES
                                                TablesJumelees newjumellee = new TablesJumelees(tables[i], tables[j]);

                                                bool cuisiniersDispo;
                                                cuisiniersDispo = C.verifierCuisiniersDispo(nbconvive, dateDeDebut, formuleChoisie);
                                                if (cuisiniersDispo == true)
                                                {
                                                    validerResa(newjumellee, dateDeDebut, nbconvive, formuleChoisie);
                                                    return(true);
                                                }
                                            }
                                            else
                                            {
                                                Console.WriteLine("La reservation n'est pas possible. Recommencez en tapant sur ENTREE.");
                                                Console.ReadLine();
                                                return(false);
                                            }
                                        }
                                        k++;
                                    }
                                }
                            }
                        }
                    }
                    k++;
                }
                i++;
            }
            Console.WriteLine("La reservation n'est pas possible. Recommencez en tapant sur ENTREE.");
            Console.ReadLine();
            return(false);
        }
Пример #11
0
        //voir si la reservation est possible
        public bool verifierResa(DateTime dateDeDebut, int nbconvive, Formule formuleChoisie, Cuisine C)
        {
            DateTime dateDeFin = dateDeDebut + formuleChoisie.DureePresenceClient;
            //pour l'instant on regarde si il y a une table dispo pour cette horaire
            int i = 0;

            int heureDebut = dateDeDebut.Hour;
            int min        = dateDeDebut.Minute;
            int mois       = dateDeDebut.Month;
            int jour       = dateDeDebut.Day;

            int nbMaxPlaceTable = rechercheNombrePlaceMax();

            if (nbconvive <= nbMaxPlaceTable)              //on regarde si les convives rentrent sur une seule table
            {
                while (i < tables.Count)                   //on parcoure la liste des tables
                {
                    if (tables[i].NbPlaceMax >= nbconvive) //on regarde si la table peut accueillir toute les personnes
                    {
                        int k = 0;
                        while (k < tables[i].PlanningResa.Count)//parcoure la liste des occupations
                        {
                            int comparaisonDebut = DateTime.Compare(dateDeDebut, tables[i].PlanningResa[k].DateDebutOccupee);
                            int comparaisonFin   = DateTime.Compare(dateDeFin, tables[i].PlanningResa[k].DateFinOccupee);

                            //l'heure de la résa n'est pas comprise dans le temps pendant lequel la table est occup
                            if ((comparaisonDebut < 0 && comparaisonFin < 0) || (comparaisonDebut > 0 && comparaisonFin > 0))//la date n'est pas la même
                            {
                                bool cuisiniersDispo;
                                Console.WriteLine("Reservation possible sur la table " + i);
                                cuisiniersDispo = C.verifierCuisiniersDispo(nbconvive, dateDeDebut, formuleChoisie);
                                if (cuisiniersDispo == true)
                                {
                                    tables[i].newOccupationTableXml(dateDeDebut, formuleChoisie, i);
                                    validerResa(tables[i], dateDeDebut, nbconvive, formuleChoisie);
                                    return(true);
                                }
                            }
                            else
                            {
                                if ((comparaisonDebut < 0 && comparaisonFin > 0) || (comparaisonDebut > 0 && comparaisonFin < 0))
                                {
                                    bool cuisiniersDispo;
                                    Console.WriteLine("Reservation possible sur la table " + i);
                                    cuisiniersDispo = C.verifierCuisiniersDispo(nbconvive, dateDeDebut, formuleChoisie);
                                    if (cuisiniersDispo == true)
                                    {
                                        tables[i].newOccupationTableXml(dateDeDebut, formuleChoisie, i);
                                        validerResa(tables[i], dateDeDebut, nbconvive, formuleChoisie);
                                        return(true);
                                    }
                                }
                                else
                                {
                                    Console.WriteLine("La reservation n'est pas possible. Recommencez en tapant sur ENTREE.");
                                    Console.ReadLine();
                                    return(false);
                                }
                            }


                            k++;
                        }
                    }

                    i++;
                }
            }
            else // le nombre de convive ne rentre pas sur une seule table --> jumelage
            {
                if (nbconvive < nbMaxPlaceTable + 4)
                {
                    Console.WriteLine("La fonction jumelage n'est pas aboutie. Le nombre de convives maximum accepté est " + nbMaxPlaceTable);
                    Console.WriteLine("Recommencez en tapant sur ENTREE.");
                    //jumelage(dateDeDebut, nbconvive, formuleChoisie, C);
                    return(false);
                }
                else
                {
                    Console.WriteLine(@"La reservation n'est pas possible. 
Le restaurant n'accepte pas autant de personnes sur une même table.
Recommencez en tapant sur ENTREE.");
                    Console.ReadLine();
                    return(false);
                }
            }


            Console.WriteLine("La reservation n'est pas possible. Recommencez en tapant sur ENTREE.");
            Console.ReadLine();
            return(false);
        }
Пример #12
0
        //ca marche pas, pas la foi de le faire
        /* public void ajoutCuisto(int noCuisto)
        {
            Cuisinier cuisto = new Cuisinier(noCuisto);
            brigade.Add(cuisto);
            nbCuistoTotal = brigade.Count;
            nbCuistoDispo++;
            //Verifie que le cuisto est crée
            Console.WriteLine(cuisto);
            Console.ReadLine();
        }*/
        public bool verifierCuisiniersDispo(int nbConvives, DateTime dateDeDebut, Formule formuleChoisie)
        {
            // On regarde combien de cuisiniers sont disponibles
            DateTime dateDeFin = dateDeDebut + formuleChoisie.DureePreparation;
            int nbDispo = 0;
            List<int> cuistoDispo= new List<int>();
            for (int i = 0; i < brigade.Count; i++) //on regarde les cuisiniers un par un
            {
                if (brigade[i].PlanningCuisto.Count==0)
                {
                    nbDispo++;
                    cuistoDispo.Add(i);
                }
                else
                {
                    int k = 0;
                    while (k < brigade[i].PlanningCuisto.Count)//on regarde toutes les heures où les cuisiniers peuvent être occupés
                    {
                        int comparaisonDebut = DateTime.Compare(dateDeDebut, brigade[i].PlanningCuisto[k].DateDebutOccupee);
                        int comparaisonFin = DateTime.Compare(dateDeFin, brigade[i].PlanningCuisto[k].DateFinOccupee);
                        if ((comparaisonDebut < 0 && comparaisonFin < 0) || (comparaisonDebut > 0 && comparaisonFin > 0))//la date n'est pas la même
                        {
                            nbDispo++;
                            cuistoDispo.Add(i);
                        }
                        else
                        {
                            if ((comparaisonDebut < 0 && comparaisonFin > 0) || (comparaisonDebut > 0 && comparaisonFin < 0))
                            {
                                nbDispo++;
                                cuistoDispo.Add(i);

                            }

                        }
                        k++;
                    }
                }
            }

            if (nbConvives>nbDispo)
            {
                Console.WriteLine("La cuisine est occupée, la reservation n'est pas possible. Veuillez essayer à un autre horaire");
                return false;
            }
            else
            {
                Console.WriteLine("Il y a assez de cuisiniers disponibles pour effectuer la réservation");
                //Création de l'occupation du cuisinier attribué à la réservation
                for (int n = 0; n < cuistoDispo.Count; n++)
            {
                DateTime datefincuisto = new DateTime();
                datefincuisto = dateDeDebut + formuleChoisie.DureePreparation;
                Occupation occCuisto = new Occupation(dateDeDebut, datefincuisto);
                this.Brigade[n].PlanningCuisto.Add(occCuisto);

                //Modification du fichier XML: Ajout de la réservation
                XmlDocument doc = new XmlDocument();
                doc.Load("restaurant.xml");
                XmlNodeList cuistoNodes = doc.SelectNodes("//Restaurant/Cuisiniers/Cuisinier");
                XmlNodeList noCuistoNodes = doc.SelectNodes("//Restaurant/Cuisiniers/Cuisinier/noCuisto");
                string noCuisto= n.ToString();
                int j = 0;
                while (j<noCuistoNodes.Count)
                {
                    if (noCuistoNodes[j].InnerText == noCuisto)
                    {
                        XmlNode noeudBase = doc.CreateElement("occupations");
                        XmlNode occupationNode = doc.CreateElement("dateDebutOccupee");
                        cuistoNodes[j].AppendChild(noeudBase);

                        string dateDebut = dateDeDebut.ToString();
                        occupationNode.InnerText = dateDebut;
                        noeudBase.AppendChild(occupationNode);

                        XmlNode occupation2Node = doc.CreateElement("dateFinOccupee");
                        string dateFin = datefincuisto.ToString();
                        occupation2Node.InnerText = dateFin;
                        noeudBase.AppendChild(occupation2Node);

                        doc.Save("restaurant.xml");
                    }
                    j++;
                }

            }

                return true;
            }
        }
Пример #13
0
        static void Main(string[] args)
        {
            DateTime maintenant = DateTime.Now;

            //CREATION DE LA CUISINE
            Cuisine C = new Cuisine();

            //CREATION DE LA SALLE
            Salle restau = new Salle();

            //LECTURE DU FICHIER XML
               restau.creationFormulesXml();
               restau.creationTablesXml();
               C.lecureXMLCuisto();
               restau.creationReservationXml();
               //test sérialisation
               //DateTime dateresa=new DateTime(2015, 05, 15, 21, 00, 00);
               //restau.validerResa(restau.tables[0], dateresa, 2, restau.formules[0]);
               //Console.WriteLine(C);
               //Console.ReadLine();

            int choix = 0;
            bool menu = true;
            do
            {
                switch (choix)
                {
                        case 0:
                        Console.Clear();
                        Console.WriteLine(@"Bonjour et bienvenue !
            Que souhaitez-vous réaliser?

            1- Consulter tout le planning de réservations
            2- Ajouter une réservation
            3- Consulter les réservations correspondant à une date donnée
            4- Consulter les réservations correspondant à une date et une heure données

            * Pour quitter le programme: 99 *

            Entrez le chiffre correspondant à l'action que vous souhaitez réaliser");

                        bool ok = false;
                        while (ok == false)
                        {
                            try
                            {
                                choix = int.Parse(Console.ReadLine());
                                ok = true;
                            }
                            catch (Exception)
                            {
                                Console.WriteLine("Veuillez entrer un chiffre s'il vous plait.");
                                ok = false;
                            }
                        }

                        break;

                    //AJOUTER UN CUISINIER
                    case 1:
                        Console.Clear();
                        Console.WriteLine("Voici le planning des réservations: \n\n");
                        restau.affichePlanningResa();

                        //bool format = false;
                        //string chaine;
                        //do
                        //{
                        //    Console.WriteLine("Vous souhaitez ajouter un cuisinier. Quel est le numéro de ce cuisinier?");
                        //    chaine = Console.ReadLine();
                        //    format = chaine.All(Char.IsDigit);
                        //    // Renvoie true si la saisie de l'utilisateur est bien un entier, false dans les autres cas
                        //    if (format == false)
                        //    {
                        //        Console.WriteLine("Veuillez saisir uniquement des chiffres, svp.");
                        //    }
                        //}
                        //while (format == false);
                        //int noCuisto = int.Parse(chaine);
                        //C.ajoutCuisto(noCuisto);

                        Console.WriteLine("Appuyez sur une touche afin de retourner au menu");
                        Console.ReadLine();
                        choix = 0;
                        break;

                    case 2:
                        Console.Clear();
                        DateTime dateResa = new DateTime();;
                        int nbConvive=new int();
                        int formuleChoisie=new int();
                        TimeSpan heureResa= new TimeSpan();
                        ok = false;

                        Console.WriteLine("Vous souhaitez entrer une réservation. \nEntrez la date sous le format AAAA/MM/JJ:");
                        while (ok==false)
                        {
                            try
                            {
                                dateResa = DateTime.Parse(Console.ReadLine());
                                ok = true;
                            }
                            catch (Exception)
                            {
                                Console.WriteLine("Le format n'est pas bon veuillez recommencer la saisie.");
                                ok = false;
                            }
                        }
                        ok = false;
                        Console.WriteLine("Entrez l'heure sous le format hh:mm:");
                        while (ok == false)
                        {

                            try
                            {
                                heureResa = TimeSpan.Parse(Console.ReadLine());
                                ok = true;
                            }
                            catch (Exception)
                            {
                                Console.WriteLine("Le format n'est pas bon veuillez recommencer la saisie.");
                                ok = false;
                            }
                            //TimeSpan max = new TimeSpan(22, 59, 00);
                            //bool heureService = false;

                            //do
                            //{

                            //    try
                            //    {
                            //        heureResa = TimeSpan.Parse(Console.ReadLine());
                            //        heureService = true;
                            //    }
                            //    catch (Exception)
                            //    {
                            //        Console.WriteLine("L'heure de réservation n'est pas correcte. Veuillez recommencer.");
                            //        heureService = false;
                            //    }
                            // } while (heureResa>max || heureService==false);
                        }

                        dateResa = dateResa + heureResa;

                        Console.WriteLine("Entrez le nombre de personne souhaitant manger dans le restaurant");
                        ok = false;
                        while (ok == false)
                        {
                            try
                            {
                                nbConvive = int.Parse(Console.ReadLine());
                                ok = true;
                            }
                            catch (Exception)
                            {
                                Console.WriteLine("Le format n'est pas bon veuillez recommencer la saisie.");
                                ok = false;
                            }
                        }

                        Formule formuleResa = new Formule();
                        bool pb = false;
                        do
                        {
                            if (pb==true)
                            {
                                Console.WriteLine("La formule n'a pas été trouvée");
                            }

                            Console.WriteLine("Entrez le numéro de la formule retenue: \nVoici la liste de celles ci.");
                            restau.afficheFormule();
                            ok = false;
                            while (ok == false)
                            {
                                try
                                {
                                    formuleChoisie = int.Parse(Console.ReadLine());
                                    ok = true;
                                }
                                catch (Exception)
                                {
                                    Console.WriteLine("Entrez un numéro s'il vous plait.");
                                    ok = false;
                                }
                            }

                            formuleResa = restau.retourneFormule(formuleChoisie); //--> permet de retouver la formule par rapport au numéro rentré

                            if (heureResa > formuleResa.HoraireLimiteService)
                            {
                                Console.WriteLine("Malheureusement, cette formule n'est plus servie à cette heure-ci. Veuillez recommencer");
                            }
                            else
                            {

                                if (formuleResa.DureePreparation != null)
                                {
                                    restau.verifierResa(dateResa, nbConvive, formuleResa, C);
                                }
                                pb = true;
                            }

                        } while (formuleResa.DureePreparation == null);

                        Console.WriteLine("Appuyez sur une touche afin de retourner au menu");
                        Console.ReadLine();
                        choix = 0;// permet de retourner au menu
                        break;

                    case 3:
                        Console.Clear();

                        restau.afficheResaDate();

                        Console.WriteLine("Appuyez sur une touche afin de retourner au menu");
                        Console.ReadLine();
                        choix = 0;// permet de retourner au menu
                        break;

                    case 4:
                        Console.Clear();

                        restau.afficheResaDateHeure();

                        Console.WriteLine("Appuyez sur une touche afin de retourner au menu");
                        Console.ReadLine();
                        choix = 0;// permet de retourner au menu
                        break;

                    case 99:
                        menu = false;
                        break;

                    default:
                        Console.Clear();
                        Console.WriteLine("Le chiffre saisi n'est pas présent dans le menu. \nAppuyez sur une touche pour recommencer");
                        Console.ReadLine();
                        choix = 0;
                        break;

                }//fin switch

            } while (menu == true);
        }
Пример #14
0
        public void newOccupationTableXml(DateTime dateDeDebut, Formule formuleChoisie, int indiceTable)
        {
            DateTime datefincuisto = new DateTime();

            datefincuisto = dateDeDebut + formuleChoisie.DureePreparation;

            //Modification du fichier XML: Ajout de la réservation
            XmlDocument doc = new XmlDocument();

            doc.Load("restaurant.xml");

            //Comptage du nombre de tables en fonction de chaque type(carrées, rectangulaires et rondes)
            XmlNodeList tablecarreeNodes = doc.SelectNodes("//Restaurant/Tables/TableCarees/TableCaree");
            XmlNodeList tablerectNodes   = doc.SelectNodes("//Restaurant/Tables/TableRectangulaires/TableRectangulaire");
            XmlNodeList tablerondeNodes  = doc.SelectNodes("//Restaurant/Tables/TableRondes/TableRonde");
            int         nbTableCarree    = 0;
            int         nbTableRect      = 0;
            int         nbTableRonde     = 0;

            foreach (XmlNode tablecaree in tablecarreeNodes)
            {
                nbTableCarree++;
            }
            foreach (XmlNode tablerect in tablerectNodes)
            {
                nbTableRect++;
            }
            foreach (XmlNode tableronde in tablerondeNodes)
            {
                nbTableRonde++;
            }


            if (indiceTable < nbTableCarree)
            {
                int j = 0;
                while (j < tablecarreeNodes.Count)
                {
                    if (j == indiceTable)
                    {
                        XmlNode noeudBase      = doc.CreateElement("occupations");
                        XmlNode occupationNode = doc.CreateElement("dateDebutOccupee");
                        tablecarreeNodes[j].AppendChild(noeudBase);

                        string dateDebut = dateDeDebut.ToString();
                        occupationNode.InnerText = dateDebut;
                        noeudBase.AppendChild(occupationNode);


                        XmlNode occupation2Node = doc.CreateElement("dateFinOccupee");
                        string  dateFin         = datefincuisto.ToString();
                        occupation2Node.InnerText = dateFin;
                        noeudBase.AppendChild(occupation2Node);

                        doc.Save("restaurant.xml");
                    }
                    j++;
                }
            }
            else
            {
                if (indiceTable < nbTableRect + nbTableCarree)
                {
                    int j = 0;
                    while (j < tablerectNodes.Count)
                    {
                        if (j == (indiceTable - nbTableCarree))
                        {
                            XmlNode noeudBase      = doc.CreateElement("occupations");
                            XmlNode occupationNode = doc.CreateElement("dateDebutOccupee");
                            tablerectNodes[j].AppendChild(noeudBase);

                            string dateDebut = dateDeDebut.ToString();
                            occupationNode.InnerText = dateDebut;
                            noeudBase.AppendChild(occupationNode);


                            XmlNode occupation2Node = doc.CreateElement("dateFinOccupee");
                            string  dateFin         = datefincuisto.ToString();
                            occupation2Node.InnerText = dateFin;
                            noeudBase.AppendChild(occupation2Node);

                            doc.Save("restaurant.xml");
                        }
                        j++;
                    }
                }
                else
                {
                    int j = 0;
                    while (j < tablerondeNodes.Count)
                    {
                        if (j == (indiceTable - (nbTableRect + nbTableCarree)))
                        {
                            XmlNode noeudBase      = doc.CreateElement("occupations");
                            XmlNode occupationNode = doc.CreateElement("dateDebutOccupee");
                            tablerondeNodes[j].AppendChild(noeudBase);

                            string dateDebut = dateDeDebut.ToString();
                            occupationNode.InnerText = dateDebut;
                            noeudBase.AppendChild(occupationNode);


                            XmlNode occupation2Node = doc.CreateElement("dateFinOccupee");
                            string  dateFin         = datefincuisto.ToString();
                            occupation2Node.InnerText = dateFin;
                            noeudBase.AppendChild(occupation2Node);

                            doc.Save("restaurant.xml");
                        }
                        j++;
                    }
                }
            }
            //XmlNodeList cuistoNodes = doc.SelectNodes("//Restaurant/Tables/Table");
            //XmlNodeList noCuistoNodes = doc.SelectNodes("//Restaurant/Cuisiniers/Cuisinier/noCuisto");
            //string noCuisto = n.ToString();
        }// fin newOcupationTableXml
Пример #15
0
        public bool jumelage(DateTime dateDeDebut, int nbconvive, Formule formuleChoisie, Cuisine C)
        {
            DateTime dateDeFin = dateDeDebut + formuleChoisie.DureePresenceClient;
            int i = 0;
            while (i < tables.Count) //on parcoure la liste des tables
            {
                int k = 0;
                if (tables[i].Jumelable == true)//on verifie si la premiere table est jumelable
                {
                    while (k < tables[k].PlanningResa.Count) //on verifie qu'elle est dispo
                    {
                        int comparaisonDebut1 = DateTime.Compare(dateDeDebut, tables[i].PlanningResa[k].DateDebutOccupee);
                        int comparaisonFin1 = DateTime.Compare(dateDeFin, tables[i].PlanningResa[k].DateFinOccupee);
                        //l'heure de la résa n'est pas comprise dans le temps pendant lequel la table est occup
                        int j = i + 1;

                        if ((comparaisonDebut1 < 0 && comparaisonFin1 < 0) || (comparaisonDebut1 > 0 && comparaisonFin1 > 0))//la date n'est pas la même
                        {
                            while (j < tables.Count) //on parcourt une deuxieme fois la liste pour trouver une deuxieme table jumelable et dispo
                            {
                                if (tables[j].Jumelable == true)//on verifie si la deuxième table est jumelable
                                {
                                    int l = 0;
                                    while (l < tables[l].PlanningResa.Count) //on verifie qu'elle est dispo
                                    {
                                        int comparaisonDebut2 = DateTime.Compare(dateDeDebut, tables[j].PlanningResa[l].DateDebutOccupee);
                                        int comparaisonFin2 = DateTime.Compare(dateDeFin, tables[j].PlanningResa[l].DateFinOccupee);

                                        if ((comparaisonDebut2 < 0 && comparaisonFin2 < 0) || (comparaisonDebut2 > 0 && comparaisonFin2 > 0))
                                        //la date n'est pas la même
                                        {
                                            //ON JUMELE LES TABLES
                                            TablesJumelees newjumellee = new TablesJumelees(tables[i], tables[j]);

                                            bool cuisiniersDispo;
                                            cuisiniersDispo = C.verifierCuisiniersDispo(nbconvive, dateDeDebut, formuleChoisie);
                                            if (cuisiniersDispo == true)
                                            {
                                                validerResa(newjumellee, dateDeDebut, nbconvive, formuleChoisie);
                                                return true;
                                            }
                                        }
                                        else
                                        {
                                            if ((comparaisonDebut2 < 0 && comparaisonFin2 > 0) || (comparaisonDebut2 > 0 && comparaisonFin2 < 0))
                                            //la date est la même mais l'horraire n'est pas simultané
                                            {
                                                //ON JUMELE LES TABLES
                                                TablesJumelees newjumellee = new TablesJumelees(tables[i], tables[j]);

                                                bool cuisiniersDispo;
                                                cuisiniersDispo = C.verifierCuisiniersDispo(nbconvive, dateDeDebut, formuleChoisie);
                                                if (cuisiniersDispo == true)
                                                {
                                                    validerResa(newjumellee, dateDeDebut, nbconvive, formuleChoisie);
                                                    return true;
                                                }

                                            }
                                            else
                                            {
                                                Console.WriteLine("La reservation n'est pas possible. Recommencez en tapant sur ENTREE.");
                                                Console.ReadLine();
                                                return false;
                                            }
                                        }

                                        l++;
                                    }

                                }
                                j++;
                            }
                        }

                        else
                        {
                            if ((comparaisonDebut1 < 0 && comparaisonFin1 > 0) || (comparaisonDebut1 > 0 && comparaisonFin1 < 0))
                                //la date est la même mais les horaires ne se mélangent pas
                                {
                                    if (tables[j].Jumelable == true)//on verifie si la deuxième table est jumelable
                                    {
                                        int m = 0;
                                        while (m < tables[m].PlanningResa.Count) //on verifie qu'elle est dispo
                                        {
                                            int comparaisonDebut2 = DateTime.Compare(dateDeDebut, tables[j].PlanningResa[m].DateDebutOccupee);
                                            int comparaisonFin2 = DateTime.Compare(dateDeFin, tables[j].PlanningResa[m].DateFinOccupee);

                                            if ((comparaisonDebut2 < 0 && comparaisonFin2 < 0) || (comparaisonDebut2 > 0 && comparaisonFin2 > 0))
                                            //la date n'est pas la même
                                            {
                                                //ON JUMELE LES TABLES
                                                TablesJumelees newjumellee = new TablesJumelees(tables[i], tables[j]);

                                                bool cuisiniersDispo;
                                                cuisiniersDispo = C.verifierCuisiniersDispo(nbconvive, dateDeDebut, formuleChoisie);
                                                if (cuisiniersDispo == true)
                                                {
                                                    validerResa(newjumellee, dateDeDebut, nbconvive, formuleChoisie);
                                                    return true;
                                                }
                                            }
                                            else
                                            {
                                                if ((comparaisonDebut2 < 0 && comparaisonFin2 > 0) || (comparaisonDebut2 > 0 && comparaisonFin2 < 0))
                                                //la date est la même mais l'horraire n'est pas simultané
                                                {
                                                    //ON JUMELE LES TABLES
                                                    TablesJumelees newjumellee = new TablesJumelees(tables[i], tables[j]);

                                                    bool cuisiniersDispo;
                                                    cuisiniersDispo = C.verifierCuisiniersDispo(nbconvive, dateDeDebut, formuleChoisie);
                                                    if (cuisiniersDispo == true)
                                                    {
                                                        validerResa(newjumellee, dateDeDebut, nbconvive, formuleChoisie);
                                                        return true;
                                                    }

                                                }
                                                else
                                                {
                                                    Console.WriteLine("La reservation n'est pas possible. Recommencez en tapant sur ENTREE.");
                                                    Console.ReadLine();
                                                    return false;
                                                }
                                            }
                                            k++;

                                        }

                                    }
                                }
                            }

                        }
                        k++;
                    }
                    i++;
                }
            Console.WriteLine("La reservation n'est pas possible. Recommencez en tapant sur ENTREE.");
            Console.ReadLine();
            return false;
        }
Пример #16
0
        public void validerResa(Table table, DateTime dateResa, int nbconvive, Formule formuleChoisie)
        {
            Console.WriteLine("Quel est le nom du client pour la réservation?");
            string nomResa = Console.ReadLine();

            Console.WriteLine("Quel est le numéro du client?");
            string noClient  = Console.ReadLine();
            int    numClient = int.Parse(noClient);
            int    i         = 0;
            string noTable   = "";
            int    notable   = 0;

            //Recherche du numéro de la table
            while (i < tables.Count)
            {
                if (tables[i] == table)
                {
                    noTable = i.ToString();
                    notable = i;
                }
                i++;
            }
            //Recherche du nom de la formule choisie
            int    j          = 0;
            string nomFormule = "";

            while (j < formules.Count)
            {
                if (formules[j] == formuleChoisie)
                {
                    nomFormule = formules[j].NomFormule.ToString();
                }
                j++;
            }
            //Création de la réservation dans le programme
            Reservation newResa = new Reservation(table, nomResa, numClient, dateResa, nbconvive, formuleChoisie);

            reservations.Add(newResa);
            //Création de l'occupation de la table réservée
            DateTime datefinresa = new DateTime();

            datefinresa = dateResa + formuleChoisie.DureePresenceClient;
            Occupation occTable = new Occupation(dateResa, datefinresa);

            tables[notable].PlanningResa.Add(occTable);


            //Modification du fichier XML: Ajout de la réservation
            XmlDocument doc = new XmlDocument();

            doc.Load("restaurant.xml");
            XmlNode resaNodes = doc.SelectSingleNode("//Restaurant/Reservations");
            XmlNode noeudBase = doc.CreateElement("Reservation");
            XmlNode tableNode = doc.CreateElement("tableResa");

            tableNode.InnerText = noTable;
            noeudBase.AppendChild(tableNode);

            resaNodes.AppendChild(noeudBase);

            XmlNode nomClientNode = doc.CreateElement("nomClient");

            nomClientNode.InnerText = nomResa;
            noeudBase.AppendChild(nomClientNode);
            XmlNode numClientNode = doc.CreateElement("numClient");

            numClientNode.InnerText = noClient;
            noeudBase.AppendChild(numClientNode);
            XmlNode dateNode = doc.CreateElement("dateResa");
            string  date     = dateResa.ToString();

            dateNode.InnerText = date;
            noeudBase.AppendChild(dateNode);
            XmlNode nbConviveNode = doc.CreateElement("nbConvive");

            nbConviveNode.InnerText = nbconvive.ToString();
            noeudBase.AppendChild(nbConviveNode);
            XmlNode formuleNode = doc.CreateElement("formuleResa");

            formuleNode.InnerText = nomFormule;
            noeudBase.AppendChild(formuleNode);

            doc.Save("restaurant.xml");

            //sauvegarder les occupations dans le xml (classes table et cuisiniers)


            Console.WriteLine("La réservation a été réalisée avec succès!");
        }//fin validerResa
Пример #17
0
 public Formule retourneFormule(int noFormule)
 {
     Formule form=new Formule();
     int i = 0;
     while (i<formules.Count)
     {
         if (noFormule==i+1)
         {
             form = formules[i];
         }
         i++;
     }
     return form;
 }
Пример #18
0
        }//fin validerResa

        public void creationFormulesXml()
        {
            //le logiciel lit le fichier xml correspondant au restaurant
            XmlDocument doc = new XmlDocument();

            doc.Load("restaurant.xml");

            //Lecture des informations nomFormule et TableRequise de chaque formule du fichier XML
            XmlNodeList   itemNodes     = doc.SelectNodes("//Restaurant/Formules/Formule");
            List <string> _nomFormule   = new List <string>();
            List <bool>   _tableRequise = new List <bool>();

            foreach (XmlNode itemNode in itemNodes)
            {
                XmlNode nomFormule   = itemNode.SelectSingleNode("nomFormule");
                XmlNode tableRequise = itemNode.SelectSingleNode("tableRequise");
                if ((nomFormule != null) && (tableRequise != null))
                {
                    _nomFormule.Add(nomFormule.InnerText);
                    bool tablereq = bool.Parse(tableRequise.InnerText);
                    _tableRequise.Add(tablereq);
                }
            }

            //Lecture des durées de préparations et de présence clients pour chaque formule du fichier XML
            XmlNodeList dureePrepaNodes = doc.SelectNodes("//Restaurant/Formules/Formule/dureePreparation");
            List <int>  _hDureePrepa    = new List <int>();
            List <int>  _minDureePrepa  = new List <int>();
            List <int>  _secDureePrepa  = new List <int>();

            foreach (XmlNode dureeNode in dureePrepaNodes)
            {
                XmlNode hDureePrepa   = dureeNode.SelectSingleNode("heure1");
                XmlNode minDureePrepa = dureeNode.SelectSingleNode("min1");
                XmlNode secDureePrepa = dureeNode.SelectSingleNode("sec1");
                if ((hDureePrepa != null) && (minDureePrepa != null) && (secDureePrepa != null))
                {
                    int hdp = int.Parse(hDureePrepa.InnerText);
                    _hDureePrepa.Add(hdp);
                    int mdp = int.Parse(minDureePrepa.InnerText);
                    _minDureePrepa.Add(mdp);
                    int sdp = int.Parse(secDureePrepa.InnerText);
                    _secDureePrepa.Add(sdp);
                }
            }
            XmlNodeList dureePresenceNodes = doc.SelectNodes("//Restaurant/Formules/Formule/dureePresenceClient");
            List <int>  _hDureePresence    = new List <int>();
            List <int>  _minDureePresence  = new List <int>();
            List <int>  _secDureePresence  = new List <int>();

            foreach (XmlNode dureePNode in dureePresenceNodes)
            {
                XmlNode hDureePresence   = dureePNode.SelectSingleNode("heure2");
                XmlNode minDureePresence = dureePNode.SelectSingleNode("min2");
                XmlNode secDureePresence = dureePNode.SelectSingleNode("sec2");
                if ((hDureePresence != null) && (minDureePresence != null) && (secDureePresence != null))

                {
                    int hdpc = int.Parse(hDureePresence.InnerText);
                    _hDureePresence.Add(hdpc);
                    int mdpc = int.Parse(minDureePresence.InnerText);
                    _minDureePresence.Add(mdpc);
                    int sdpc = int.Parse(secDureePresence.InnerText);
                    _secDureePresence.Add(sdpc);
                }
            }

            //CREATION DES FORMULES
            //elles se créent à partir de la lecture du fichier xml, comme ça le logiciel s'adapte à chaque restaurant
            for (int i = 0; i < _nomFormule.Count(); i++)
            {
                TimeSpan dureePreparation    = new TimeSpan(_hDureePrepa[i], _minDureePrepa[i], _secDureePrepa[i]);
                TimeSpan dureePresenceClient = new TimeSpan(_hDureePresence[i], _minDureePresence[i], _secDureePresence[i]);
                Formule  formule             = new Formule(_nomFormule[i], dureePreparation, dureePresenceClient, _tableRequise[i]);
                this.formules.Add(formule);
            }
        }// fin creationFormulesXml
Пример #19
0
        //voir si la reservation est possible
        public bool verifierResa(DateTime dateDeDebut, int nbconvive, Formule formuleChoisie, Cuisine C)
        {
            DateTime dateDeFin = dateDeDebut + formuleChoisie.DureePresenceClient;
            //pour l'instant on regarde si il y a une table dispo pour cette horaire
            int i = 0;

            int heureDebut = dateDeDebut.Hour;
            int min = dateDeDebut.Minute;
            int mois = dateDeDebut.Month;
            int jour = dateDeDebut.Day;

            int nbMaxPlaceTable=rechercheNombrePlaceMax();

            if (nbconvive<=nbMaxPlaceTable) //on regarde si les convives rentrent sur une seule table
            {
                while (i < tables.Count) //on parcoure la liste des tables
                {
                    if (tables[i].NbPlaceMax >= nbconvive) //on regarde si la table peut accueillir toute les personnes
                    {
                        int k = 0;
                        while (k < tables[i].PlanningResa.Count)//parcoure la liste des occupations
                        {
                            int comparaisonDebut = DateTime.Compare(dateDeDebut, tables[i].PlanningResa[k].DateDebutOccupee);
                            int comparaisonFin = DateTime.Compare(dateDeFin, tables[i].PlanningResa[k].DateFinOccupee);

                            //l'heure de la résa n'est pas comprise dans le temps pendant lequel la table est occup
                            if ((comparaisonDebut < 0 && comparaisonFin < 0) || (comparaisonDebut > 0 && comparaisonFin > 0))//la date n'est pas la même
                            {
                                bool cuisiniersDispo;
                                Console.WriteLine("Reservation possible sur la table " + i);
                                cuisiniersDispo = C.verifierCuisiniersDispo(nbconvive, dateDeDebut, formuleChoisie);
                                if (cuisiniersDispo == true)
                                {
                                    tables[i].newOccupationTableXml(dateDeDebut, formuleChoisie, i);
                                    validerResa(tables[i], dateDeDebut, nbconvive, formuleChoisie);
                                    return true;
                                }

                            }
                            else
                            {
                                if ((comparaisonDebut < 0 && comparaisonFin > 0) || (comparaisonDebut > 0 && comparaisonFin < 0))
                                {
                                    bool cuisiniersDispo;
                                    Console.WriteLine("Reservation possible sur la table " + i);
                                    cuisiniersDispo = C.verifierCuisiniersDispo(nbconvive, dateDeDebut, formuleChoisie);
                                    if (cuisiniersDispo == true)
                                    {
                                        tables[i].newOccupationTableXml(dateDeDebut, formuleChoisie, i);
                                        validerResa(tables[i], dateDeDebut, nbconvive, formuleChoisie);
                                        return true;
                                    }

                                }
                                else
                                {
                                    Console.WriteLine("La reservation n'est pas possible. Recommencez en tapant sur ENTREE.");
                                    Console.ReadLine();
                                    return false;
                                }
                            }

                            k++;
                        }

                    }

                    i++;
                }
            }
            else // le nombre de convive ne rentre pas sur une seule table --> jumelage
            {
                if (nbconvive<nbMaxPlaceTable+4)
                {
                    Console.WriteLine("La fonction jumelage n'est pas aboutie. Le nombre de convives maximum accepté est "+nbMaxPlaceTable);
                    Console.WriteLine("Recommencez en tapant sur ENTREE.");
                    //jumelage(dateDeDebut, nbconvive, formuleChoisie, C);
                    return false;
                }
                else
                {
                    Console.WriteLine(@"La reservation n'est pas possible.
            Le restaurant n'accepte pas autant de personnes sur une même table.
            Recommencez en tapant sur ENTREE.");
                    Console.ReadLine();
                    return false;

                }

            }

            Console.WriteLine("La reservation n'est pas possible. Recommencez en tapant sur ENTREE.");
            Console.ReadLine();
            return false;
        }
Пример #20
0
        static void Main(string[] args)
        {
            DateTime maintenant = DateTime.Now;

            //CREATION DE LA CUISINE
            Cuisine C = new Cuisine();

            //CREATION DE LA SALLE
            Salle restau = new Salle();

            //LECTURE DU FICHIER XML
            restau.creationFormulesXml();
            restau.creationTablesXml();
            C.lecureXMLCuisto();
            restau.creationReservationXml();
            //test sérialisation
            //DateTime dateresa=new DateTime(2015, 05, 15, 21, 00, 00);
            //restau.validerResa(restau.tables[0], dateresa, 2, restau.formules[0]);
            //Console.WriteLine(C);
            //Console.ReadLine();

            int  choix = 0;
            bool menu  = true;

            do
            {
                switch (choix)
                {
                case 0:
                    Console.Clear();
                    Console.WriteLine(@"Bonjour et bienvenue !
Que souhaitez-vous réaliser?

1- Consulter tout le planning de réservations
2- Ajouter une réservation
3- Consulter les réservations correspondant à une date donnée
4- Consulter les réservations correspondant à une date et une heure données

* Pour quitter le programme: 99 *

Entrez le chiffre correspondant à l'action que vous souhaitez réaliser");

                    bool ok = false;
                    while (ok == false)
                    {
                        try
                        {
                            choix = int.Parse(Console.ReadLine());
                            ok    = true;
                        }
                        catch (Exception)
                        {
                            Console.WriteLine("Veuillez entrer un chiffre s'il vous plait.");
                            ok = false;
                        }
                    }

                    break;

                //AJOUTER UN CUISINIER
                case 1:
                    Console.Clear();
                    Console.WriteLine("Voici le planning des réservations: \n\n");
                    restau.affichePlanningResa();

                    //bool format = false;
                    //string chaine;
                    //do
                    //{
                    //    Console.WriteLine("Vous souhaitez ajouter un cuisinier. Quel est le numéro de ce cuisinier?");
                    //    chaine = Console.ReadLine();
                    //    format = chaine.All(Char.IsDigit);
                    //    // Renvoie true si la saisie de l'utilisateur est bien un entier, false dans les autres cas
                    //    if (format == false)
                    //    {
                    //        Console.WriteLine("Veuillez saisir uniquement des chiffres, svp.");
                    //    }
                    //}
                    //while (format == false);
                    //int noCuisto = int.Parse(chaine);
                    //C.ajoutCuisto(noCuisto);

                    Console.WriteLine("Appuyez sur une touche afin de retourner au menu");
                    Console.ReadLine();
                    choix = 0;
                    break;


                case 2:
                    Console.Clear();
                    DateTime dateResa       = new DateTime();;
                    int      nbConvive      = new int();
                    int      formuleChoisie = new int();
                    TimeSpan heureResa      = new TimeSpan();
                    ok = false;

                    Console.WriteLine("Vous souhaitez entrer une réservation. \nEntrez la date sous le format AAAA/MM/JJ:");
                    while (ok == false)
                    {
                        try
                        {
                            dateResa = DateTime.Parse(Console.ReadLine());
                            ok       = true;
                        }
                        catch (Exception)
                        {
                            Console.WriteLine("Le format n'est pas bon veuillez recommencer la saisie.");
                            ok = false;
                        }
                    }
                    ok = false;
                    Console.WriteLine("Entrez l'heure sous le format hh:mm:");
                    while (ok == false)
                    {
                        try
                        {
                            heureResa = TimeSpan.Parse(Console.ReadLine());
                            ok        = true;
                        }
                        catch (Exception)
                        {
                            Console.WriteLine("Le format n'est pas bon veuillez recommencer la saisie.");
                            ok = false;
                        }
                        //TimeSpan max = new TimeSpan(22, 59, 00);
                        //bool heureService = false;

                        //do
                        //{

                        //    try
                        //    {
                        //        heureResa = TimeSpan.Parse(Console.ReadLine());
                        //        heureService = true;
                        //    }
                        //    catch (Exception)
                        //    {
                        //        Console.WriteLine("L'heure de réservation n'est pas correcte. Veuillez recommencer.");
                        //        heureService = false;
                        //    }
                        // } while (heureResa>max || heureService==false);
                    }

                    dateResa = dateResa + heureResa;

                    Console.WriteLine("Entrez le nombre de personne souhaitant manger dans le restaurant");
                    ok = false;
                    while (ok == false)
                    {
                        try
                        {
                            nbConvive = int.Parse(Console.ReadLine());
                            ok        = true;
                        }
                        catch (Exception)
                        {
                            Console.WriteLine("Le format n'est pas bon veuillez recommencer la saisie.");
                            ok = false;
                        }
                    }


                    Formule formuleResa = new Formule();
                    bool    pb          = false;
                    do
                    {
                        if (pb == true)
                        {
                            Console.WriteLine("La formule n'a pas été trouvée");
                        }

                        Console.WriteLine("Entrez le numéro de la formule retenue: \nVoici la liste de celles ci.");
                        restau.afficheFormule();
                        ok = false;
                        while (ok == false)
                        {
                            try
                            {
                                formuleChoisie = int.Parse(Console.ReadLine());
                                ok             = true;
                            }
                            catch (Exception)
                            {
                                Console.WriteLine("Entrez un numéro s'il vous plait.");
                                ok = false;
                            }
                        }

                        formuleResa = restau.retourneFormule(formuleChoisie);     //--> permet de retouver la formule par rapport au numéro rentré

                        if (heureResa > formuleResa.HoraireLimiteService)
                        {
                            Console.WriteLine("Malheureusement, cette formule n'est plus servie à cette heure-ci. Veuillez recommencer");
                        }
                        else
                        {
                            if (formuleResa.DureePreparation != null)
                            {
                                restau.verifierResa(dateResa, nbConvive, formuleResa, C);
                            }
                            pb = true;
                        }
                    } while (formuleResa.DureePreparation == null);


                    Console.WriteLine("Appuyez sur une touche afin de retourner au menu");
                    Console.ReadLine();
                    choix = 0;    // permet de retourner au menu
                    break;


                case 3:
                    Console.Clear();

                    restau.afficheResaDate();

                    Console.WriteLine("Appuyez sur une touche afin de retourner au menu");
                    Console.ReadLine();
                    choix = 0;    // permet de retourner au menu
                    break;

                case 4:
                    Console.Clear();

                    restau.afficheResaDateHeure();

                    Console.WriteLine("Appuyez sur une touche afin de retourner au menu");
                    Console.ReadLine();
                    choix = 0;    // permet de retourner au menu
                    break;

                case 99:
                    menu = false;
                    break;

                default:
                    Console.Clear();
                    Console.WriteLine("Le chiffre saisi n'est pas présent dans le menu. \nAppuyez sur une touche pour recommencer");
                    Console.ReadLine();
                    choix = 0;
                    break;
                } //fin switch
            } while (menu == true);
        }         // fin main