/// <summary>
        /// Metoda sprawdzająca wprowadzone dane, wyświetlająca odpowiedź API
        /// i zapisująca do bazy ostatnich.
        /// </summary>
        /// <remarks>
        /// <para>
        /// Metoda sprawdzająca wprowadzone dane, wyświetlająca odpowiedź API
        /// i zapisująca do bazy ostatnich.
        /// </para>
        /// </remarks>
        /// <exception cref="System.IndexOutOfRangeException">Wyrzucany, gdy data
        /// jest zbyt odległa lub przeszła.</exception>
        /// <exception cref="System.Exception">Wyrzucany, gdy walidacja zgłosiła
        /// błędy.</exception>
        public async void Wyszukaj_podroz(object sender, RoutedEventArgs e)
        {
            var Mod_Tekst = new String_mod();
            var input     = new UserInput();

            // odczyt danych
            input.Start = start_city.Text;
            input.Stop  = stop_city.Text;
            input.Date  = data.Text;
            // sprawdzenie warunku - wszystkie pola musza byc wypelnione
            if (start_city.Text.Length > 0 && stop_city.Text.Length > 0 && data.Text.Length > 0 && Mod_Tekst.Popraw_Date(data.Text) != "-1")
            {
                // sproawdzenie daty do prawidlowego formatu
                string new_data = Mod_Tekst.Popraw_Date(data.Text);
                // warunek - miasta poczatkowe i koncowe musza byc rozne
                if (Mod_Tekst.Popraw_Tekst2(start_city.Text) != Mod_Tekst.Popraw_Tekst2(stop_city.Text))
                {
                    try
                    {
                        input.Walidacja();
                        // uruchomienie wyszukiwania planera - pogoda
                        Wyswietlanie_pogody(stop_city.Text, new_data);
                        // podsumowanie podrozy
                        start_opis.Text = "beginning of the trip: " + $"{ Mod_Tekst.Popraw_Tekst(start_city.Text) }";
                        stop_opis.Text  = "destination of the trip: " + $"{ Mod_Tekst.Popraw_Tekst(stop_city.Text) }";
                        data_opis.Text  = "date of the trip: " + $"{ data.Text }";
                        // zapis do bazy danych
                        Zapisz_do_bazy_ostatnie(Mod_Tekst.Popraw_Tekst(start_city.Text), Mod_Tekst.Popraw_Tekst(stop_city.Text), data.Text);
                        // planer - informacje o hotelach, dzielnicach, transporcie
                        Wyswietlenie_hoteli(stop_city.Text);
                    }
                    // warunek - api pogodowe dziala do 3 dni do przodu
                    catch (System.IndexOutOfRangeException)
                    {
                        MessageBox.Show("Data może wykraczać 3 dni do przodu.");
                    }
                    //
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.ToString().Substring(ex.ToString().IndexOf(" ") + 1, ex.ToString().IndexOf("\n") - 15));
                    }
                }
                // warunek - te same miasta poczatkowe i koncowe
                if (Mod_Tekst.Popraw_Tekst2(start_city.Text) == Mod_Tekst.Popraw_Tekst2(stop_city.Text))
                {
                    MessageBox.Show("The starting city and the end city are the same :(");
                }
            }
            // warunek - nie wszystkie pola wypelnione
            else
            {
                MessageBox.Show("Please complete all fields :)");
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Metoda realizująca zapis danych do Ulubione_tabela.
        /// </summary>
        /// <remarks>
        /// <para>Metoda realizuje zapis danych do Ulubione_tabela.</para>
        /// </remarks>
        /// <param name="poczatek">Nazwa miasta startowego.</param>
        /// <param name="koniec">Nazwa miasta docelowego.</param>
        /// <param name="data_">Data podróży.</param>
        public void Zapis_BD_ulubione(string poczatek, string koniec, string data_)
        {
            var Mod_Tekst            = new String_mod();
            Trip_planerDBEntities db = new Trip_planerDBEntities();
            // stworzenie nowego wiersza zawierajacego informacje o podrozy
            Ulubione_tabela ulubione_wyszukanie = new Ulubione_tabela()
            {
                poczatek_wycieczki = Mod_Tekst.Popraw_Tekst(poczatek),
                cel_wycieczki      = Mod_Tekst.Popraw_Tekst(koniec),
                data = data_
            };

            // dodanie go do bazy danych i zapisanie rezulatu
            db.Ulubione_tabela.Add(ulubione_wyszukanie);
            db.SaveChanges();
        }
        /// <summary>
        /// Metoda wywietlająca informacje o punktach w mieście.
        /// </summary>
        /// <remarks>
        /// <para>
        /// Metoda wywietlająca informacje o punktach w mieście.
        /// </para>
        /// </remarks>
        /// <param name="stop_city">Nazwa miasta docelowego.</param>
        /// <exception cref="System.Exception">Wyrzucany, gdy podano
        /// błędnąnazwe miasta.</exception>
        /// <exception cref="System.Exception">Wyrzucany, gdy
        /// nie otrzymano odpowiednich informacji.</exception>
        public async void Wyswietlenie_hoteli(string stop_city)
        {
            var Mod_Tekst = new String_mod();
            // odczyt informacji
            var infohotels = await HotelsProcessor.Wczytaj(Mod_Tekst.Popraw_Tekst2(stop_city));

            try
            {
                // czyszczenie list box'a
                listBoxhotele.Items.Clear();
                listBoxhotele.Items.Add($"Info about city { Mod_Tekst.Popraw_Tekst(stop_city) }:");
                // wyswietlenie informacji
                if (infohotels.Suggestions[1].Entities.Length != 0)
                {
                    listBoxhotele.Items.Add("Hotels:");
                    foreach (HotelsEntity entity in infohotels.Suggestions[1].Entities) // 0 - hotele, 1 - transport, 2 - pkty orientacyjne, 3 - części miasta
                    {
                        listBoxhotele.Items.Add($"Name of hotel: {entity.Name}");
                    }
                }
                else
                {
                    listBoxhotele.Items.Add("No information about hotels.");
                }
                if (infohotels.Suggestions[3].Entities.Length != 0)
                {
                    listBoxhotele.Items.Add("Means of transport:");
                    foreach (HotelsEntity entity in infohotels.Suggestions[3].Entities) // 0 - hotele, 1 - transport, 2 - pkty orientacyjne, 3 - części miasta
                    {
                        listBoxhotele.Items.Add($"Name of mean of transport: {entity.Name}");
                    }
                }
                else
                {
                    listBoxhotele.Items.Add("No information about means of transport.");
                }
                if (infohotels.Suggestions[2].Entities.Length != 0)
                {
                    listBoxhotele.Items.Add("Landmarks:");
                    foreach (HotelsEntity entity in infohotels.Suggestions[2].Entities) // 0 - hotele, 1 - transport, 2 - pkty orientacyjne, 3 - części miasta
                    {
                        listBoxhotele.Items.Add($"Name of landmark: {entity.Name}");
                    }
                }
                else
                {
                    listBoxhotele.Items.Add("No information about landmarks.");
                }
                if (infohotels.Suggestions[0].Entities.Length != 0)
                {
                    listBoxhotele.Items.Add("City ​​districts:");
                    foreach (HotelsEntity entity in infohotels.Suggestions[0].Entities) // 0 - hotele, 1 - transport, 2 - pkty orientacyjne, 3 - części miasta
                    {
                        listBoxhotele.Items.Add($"Name of district: {entity.Name}");
                    }
                }
                else
                {
                    listBoxhotele.Items.Add("No information about city districts.");
                }
            }
            catch
            {
                MessageBox.Show("No information found :(");
            }
        }
        /// <summary>
        /// Metoda wywietlająca informacje o pogodzie.
        /// </summary>
        /// <remarks>
        /// <para>
        /// Metoda wywietlająca informacje o pogodzie.
        /// </para>
        /// </remarks>
        /// <param name="stop_city">Nazwa miasta docelowego.</param>
        /// <param name="new_data">Nazwa miasta docelowego.</param>
        /// <exception cref="System.Exception">Wyrzucany, gdy podano
        /// błędnąnazwe miasta.</exception>
        /// <exception cref="System.IndexOutOfRangeException">Wyrzucany, gdy
        /// podano nieprawidłową datę.</exception>
        public async void Wyswietlanie_pogody(string stop_city, string new_data)
        {
            var Mod_Tekst = new String_mod();

            try
            {
                // modyfikacja tekstu + odczyt
                var infoweather = await WeatherProcessor.Wczytaj(Mod_Tekst.Popraw_Tekst2(stop_city));

                int index = 0;
                foreach (WeatherList list in infoweather.List)
                {
                    if (list.Dt_txt.Equals(new_data))
                    {
                        break;
                    }
                    ++index;
                }
                // wyczyszczenie list box'a z poprzednich danych
                listBoxpogoda.Items.Clear();
                try
                {
                    // wypisanie informacji
                    listBoxpogoda.Items.Add($"Weather in city { Mod_Tekst.Popraw_Tekst(stop_city) }:");

                    listBoxpogoda.Items.Add($"Temperature 1st day: {infoweather.List[index].Main.Temp} \u00B0C");
                    listBoxpogoda.Items.Add($"Pressure 1st day: {infoweather.List[index].Main.Pressure} hPa");
                    listBoxpogoda.Items.Add($"Humidity 1st day: {infoweather.List[index].Main.Humidity}%");
                    listBoxpogoda.Items.Add($"Description 1st day: {infoweather.List[index].Weather[0].Description}");
                    // wyswietlenie ikonki pogody
                    Obraz_pogoda1.Source = new BitmapImage(new Uri($@"/icons/{ $"{infoweather.List[index].Weather[0].Icon}.png" }", UriKind.Relative));

                    listBoxpogoda.Items.Add($"Temperature 2nd day: {infoweather.List[index + 8].Main.Temp} \u00B0C");
                    listBoxpogoda.Items.Add($"Pressure 2nd day: {infoweather.List[index + 8].Main.Pressure} hPa");
                    listBoxpogoda.Items.Add($"Humidity 2nd day: {infoweather.List[index + 8].Main.Humidity}%");
                    listBoxpogoda.Items.Add($"Description 2nd day: {infoweather.List[index + 8].Weather[0].Description}");
                    Obraz_pogoda2.Source = new BitmapImage(new Uri($@"/icons/{ $"{infoweather.List[index + 8].Weather[0].Icon}.png" }", UriKind.Relative));

                    listBoxpogoda.Items.Add($"Temperature 3rd day: {infoweather.List[index + 16].Main.Temp} \u00B0C");
                    listBoxpogoda.Items.Add($"Pressure 3rd day: {infoweather.List[index + 16].Main.Pressure} hPa");
                    listBoxpogoda.Items.Add($"Humidity 3rd day: {infoweather.List[index + 16].Main.Humidity}%");
                    listBoxpogoda.Items.Add($"Description 3rd day: {infoweather.List[index + 16].Weather[0].Description}");
                    Obraz_pogoda3.Source = new BitmapImage(new Uri($@"/icons/{ $"{infoweather.List[index + 16].Weather[0].Icon}.png" }", UriKind.Relative));

                    Wyswietlenie_wykresu(infoweather.List[index].Main.Temp, infoweather.List[index + 8].Main.Temp, infoweather.List[index + 16].Main.Temp, true);
                }
                // warunek - pogoda moze wybiegac do 3 dni do przodu - ograniczenia api
                catch (System.IndexOutOfRangeException)
                {
                    listBoxpogoda.Items.Clear();
                    Obraz_pogoda1.Source = new BitmapImage(new Uri($@"/icons/unknown.png", UriKind.Relative));
                    Obraz_pogoda2.Source = new BitmapImage(new Uri($@"/icons/unknown.png", UriKind.Relative));
                    Obraz_pogoda3.Source = new BitmapImage(new Uri($@"/icons/unknown.png", UriKind.Relative));
                    Wyswietlenie_wykresu(0, 0, 0, false);
                    MessageBox.Show("The date of the first day can be up to three days ahead.");
                }
            }
            // literowka lub brak polaczenia z internetem
            catch (System.Exception)
            {
                MessageBox.Show("You probably made a typo in the name of the town.");
            }
        }