Beispiel #1
0
        public async void DodajRezerwacje(string imie, string nazwisko, int pesel, string adres, int nRezerwacji, int nrPokoju)
        {
            this.imie     = imie;
            this.nazwisko = nazwisko;
            this.pesel    = pesel;
            this.adres    = adres;



            Przyjazd = await MSB.InputDate();

            double dlugosc;

            if (!double.TryParse(await MSB.Input("Podaj ilość dni"), out dlugosc))
            {
                await MSB.Print("Podaj poprawne dane");
            }

            Dlugosc          = dlugosc;
            this.nRezerwacji = nRezerwacji;
            this.nrPokoju    = nrPokoju;

            //baza musi zawierac nr pokojow


            using (var ctx = new DbModel())
            {
                var wolnepokoje = new List <int>();



                int i = nrPokoju; // sprawdza pokoj ktory podano


                var rezerwacjewpokoju = ctx.TRezerwacja.Where(a => a.nrPokoju == i);

                int lwarunkow = 0;

                foreach (var item in rezerwacjewpokoju)
                {
                    try
                    {
                        DateTime wyjazdzpokoju = item.Przyjazd.AddDays(item.Dlugosc); // opuszczenie pokoju hotelowego

                        DateTime wyjazdgoscia = this.Przyjazd.AddDays(this.Dlugosc);  // opuszczenie pokoju przez goscia

                        if (wyjazdzpokoju < this.Przyjazd)
                        {
                            // po terminie zajetego pokoju
                            lwarunkow++;
                        }
                        else if (wyjazdgoscia < item.Przyjazd)
                        {
                            // przed terminem zajetego pokoju
                            lwarunkow++;
                        }
                    }
                    catch { }
                }

                if (lwarunkow == rezerwacjewpokoju.Count())
                {
                    wolnepokoje.Add(i); // kazder rezerwacji nie przeszkadza termin
                }



                if (wolnepokoje.Count == 0)
                {
                    var res = await MSB.InputChoise("Brak wolnych pokoi\nWprowadź inny termin\n", "Szukaj dalej", "Rezygnuj");

                    if (res == Windows.UI.Xaml.Controls.ContentDialogResult.Primary)
                    {
                        //szukaj dalej
                        DodajRezerwacje(imie, nazwisko, pesel, adres, nRezerwacji, nrPokoju);
                        return;
                    }
                    else
                    {
                        //anulowano albo zrezygnowano
                        await MSB.Print("Zrezygnowano"); // zrezygnowano

                        return;
                    }
                }


                string str = "wolnego pokoju spośród: ";

                foreach (var item in wolnepokoje)
                {
                    str += item;
                    str += ", ";
                }

                while (true)
                {
                    var res = await MSB.PobierzNrAsync(str);  // zapytaj ktory pokój

                    foreach (var item in wolnepokoje)
                    {
                        if (item == res)
                        {//podano poprawny wolny nr pokoju
                            ctx.Add(this);
                            ctx.SaveChanges();
                            await MSB.Print(String.Format("Dodałem rezerwację on numerze {0} dla {1} {2} na {3}", nRezerwacji, imie, nazwisko, Przyjazd));

                            return;
                        }
                        else
                        {
                            await MSB.Print("Wybierz poprawny numer");
                        }
                    }
                }
            }
        }