Esempio n. 1
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;
        }
Esempio n. 2
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;
        }
Esempio n. 3
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);
        }