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!"); }
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); } }
//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; } }
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); } }
public void ajoutOccupationCuisto(Occupation occupation) { planningCuisto.Add(occupation); }