Esempio n. 1
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!");
        }
Esempio n. 2
0
        public void creationTablesXml()
        {
            //le logiciel lit le fichier xml correspondant au restaurant
            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++;
            }

            //Lecture des informations concernants les Tables Carrées
            XmlNodeList occupationsNodes = doc.SelectNodes("//Restaurant/Tables/TableCarees/TableCaree/occupations/occupation");
            List<DateTime> _dateDebutOccupee = new List<DateTime>();
            List<DateTime> _dateFinOccupee = new List<DateTime>();

            //parcours chaque noeuds "occupation"
            foreach (XmlNode occNode in occupationsNodes)
            {
                XmlNode dateDebutOccupee = occNode.SelectSingleNode("dateDebutOccupee");
                XmlNode dateFinOccupee = occNode.SelectSingleNode("dateFinOccupee");

                if (dateDebutOccupee != null)
                {
                DateTime datedebut = Convert.ToDateTime(dateDebutOccupee.InnerText);
                _dateDebutOccupee.Add(datedebut);
                DateTime datefin = Convert.ToDateTime(dateFinOccupee.InnerText);
                _dateFinOccupee.Add(datefin);

                }

            }

            //CREATION DES TABLES CAREES
            //elles se créent à partir de la lecture du fichier xml, comme ça le logiciel s'adapte à chaque restaurant disposant de ces trois types de tables
            for (int i = 0; i < nbTableCarree; i++)
            {
                TableCarree table = new TableCarree();

                if (i < _dateDebutOccupee.Count)
                {
                    DateTime hdebut = new DateTime();
                    hdebut = _dateDebutOccupee[i];
                    DateTime hfin = new DateTime();
                    hfin = _dateFinOccupee[i];
                    Occupation occ = new Occupation(hdebut, hfin);
                    table.PlanningResa.Add(occ);

                }
                //ajout des tables lues à la liste de tables de la salle
                this.tables.Add(table);
            }

            //Lecture des informations concernants les Tables Rectangulaires
            XmlNodeList occupationNodes = doc.SelectNodes("//Restaurant/Tables/TableRectangulaires/TableRectangulaire/occupations/occupation");
            //parcours chaque noeuds "occupation"
            foreach (XmlNode occNode in occupationNodes)
            {
                XmlNode dateDebutOccupee = occNode.SelectSingleNode("dateDebutOccupee");
                XmlNode dateFinOccupee = occNode.SelectSingleNode("dateFinOccupee");

                if (dateDebutOccupee != null)
                {

                    DateTime datedebut = Convert.ToDateTime(dateDebutOccupee.InnerText);
                    _dateDebutOccupee.Add(datedebut);
                    DateTime datefin = Convert.ToDateTime(dateFinOccupee.InnerText);
                    _dateFinOccupee.Add(datefin);
                }
            }
            for (int i = 0; i < nbTableRect; i++)
            {
                TableRectangulaire table = new TableRectangulaire();

                if (i<_dateDebutOccupee.Count)
                {
                    DateTime hdebut = new DateTime();
                hdebut = _dateDebutOccupee[i];
                DateTime hfin = new DateTime();
                hfin = _dateFinOccupee[i];
                Occupation occ = new Occupation(hdebut, hfin);
                table.PlanningResa.Add(occ);
                }

                //ajout des tables lues à la liste de tables de la salle
                this.tables.Add(table);
            }

            //Lecture des informations concernants les Tables Rondes
            XmlNodeList occupNodes = doc.SelectNodes("//Restaurant/Tables/TableRondes/TableRonde/occupations/occupation");
            //parcours chaque noeuds "occupation"
            foreach (XmlNode occNode in occupNodes)
            {
                XmlNode dateDebutOccupee = occNode.SelectSingleNode("dateDebutOccupee");
                XmlNode dateFinOccupee = occNode.SelectSingleNode("dateFinOccupee");

                if (dateDebutOccupee != null)
                {

                    DateTime datedebut = Convert.ToDateTime(dateDebutOccupee.InnerText);
                    _dateDebutOccupee.Add(datedebut);
                    DateTime datefin = Convert.ToDateTime(dateFinOccupee.InnerText);
                    _dateFinOccupee.Add(datefin);
                }
            }
            for (int i = 0; i < nbTableRonde; i++)
            {
                TableRonde table = new TableRonde();

                if (i < _dateDebutOccupee.Count)
                {
                    DateTime hdebut = new DateTime();
                    hdebut = _dateDebutOccupee[i];
                    DateTime hfin = new DateTime();
                    hfin = _dateFinOccupee[i];
                    Occupation occ = new Occupation(hdebut, hfin);
                    table.PlanningResa.Add(occ);
                }
                //ajout des tables lues à la liste de tables de la salle
                this.tables.Add(table);
            }
        }
Esempio n. 3
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;
            }
        }
Esempio n. 4
0
        public void lecureXMLCuisto()
        {
            XmlDocument doc = new XmlDocument();
            doc.Load("restaurant.xml");

            //Cuisiniers
            XmlNodeList itemNodes = doc.SelectNodes("//Restaurant/Cuisiniers/Cuisinier");
            List<int> _noCuisto = new List<int>();
            foreach (XmlNode itemNode in itemNodes)
            {
                XmlNode noCuisto = itemNode.SelectSingleNode("noCuisto");
                if ((noCuisto != null))
                {
                    int nc = int.Parse(noCuisto.InnerText);
                    _noCuisto.Add(nc);
                }
            }
            XmlNodeList occupationsNodes = doc.SelectNodes("//Restaurant/Cuisiniers/Cuisinier/occupations");
            List<DateTime> _dateDebutOccupee = new List<DateTime>();
            List<DateTime> _dateFinOccupee = new List<DateTime>();
            foreach (XmlNode occNode in occupationsNodes)
            {
                XmlNode dateDebutOccupee = occNode.SelectSingleNode("dateDebutOccupee");
                XmlNode dateFinOccupee = occNode.SelectSingleNode("dateFinOccupee");

                if (dateDebutOccupee != null)
                {
                    DateTime datedebut = Convert.ToDateTime(dateDebutOccupee.InnerText);
                    _dateDebutOccupee.Add(datedebut);
                    DateTime datefin = Convert.ToDateTime(dateFinOccupee.InnerText);
                    _dateFinOccupee.Add(datefin);
                }
            }

            //CREATION DES CUISINIERS
            for (int i = 0; i < _noCuisto.Count(); i++)
            {
                Cuisinier cuisto = new Cuisinier(_noCuisto[i]);
                if (i<_dateDebutOccupee.Count)
                {
                     DateTime hdebut = new DateTime();
                    hdebut = _dateDebutOccupee[i];
                    DateTime hfin = new DateTime();
                    hfin = _dateFinOccupee[i];
                    Occupation occ = new Occupation(hdebut, hfin);
                    cuisto.PlanningCuisto.Add(occ);
                }
                this.brigade.Add(cuisto);
            }
        }
Esempio n. 5
0
 public void ajoutOccupationCuisto(Occupation occupation)
 {
     planningCuisto.Add(occupation);
 }