/// <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 :)"); } }
/// <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."); } }