private static List <PolaczenieLotnicze> SzukajNatalia(DaneWyszukiwania dane) { var HAPparser = new WebsiteDataService(); List <PolaczenieLotnicze> pol = new List <PolaczenieLotnicze>(); List <Flight> lista; try { lista = HAPparser.Kayak_go(dane); } catch (Exception) { return(pol); } var en = lista.GetEnumerator(); while (en.MoveNext()) { try { PolaczenieLotnicze pp = Konwerter.KonwertujFlight(en.Current, dane); pp.Zrodlo = Lotniska.NazwaLotniska(pp.Zrodlo); pp.Cel = Lotniska.NazwaLotniska(pp.Cel); pol.Add(pp); } catch { } } return(pol); }
private static List <PolaczenieLotnicze> SzukajPiotr(DaneWyszukiwania dane) { Process p; lock (sl) { if (kolejka.Count > 0) { p = kolejka.Dequeue(); } else { p = UtworzProces(); } } try { dane.Zrodlo = char.ToUpper(dane.Zrodlo[0]) + dane.Zrodlo.Substring(1); dane.Cel = char.ToUpper(dane.Cel[0]) + dane.Cel.Substring(1); } catch { } p.StandardInput.WriteLine(dane.Zrodlo); p.StandardInput.WriteLine(dane.Cel); p.StandardInput.WriteLine(miesiace[dane.Data.Month]); p.StandardInput.WriteLine(dane.Data.Year); p.StandardInput.WriteLine(dane.Data.Day); p.StandardInput.WriteLine(dane.Osoby.Dorosli); p.StandardInput.WriteLine(dane.Osoby.Mlodziez); p.StandardInput.WriteLine(dane.Osoby.Dzieci); p.StandardInput.WriteLine(dane.Osoby.Niemowleta); List <PolaczenieLotnicze> pol = new List <PolaczenieLotnicze>(); int ilosc = int.Parse(p.StandardOutput.ReadLine()); for (int i = 0; i < ilosc; i++) { string[] czas; PolaczenieLotnicze pp = new PolaczenieLotnicze(); pp.Przewoznik = p.StandardOutput.ReadLine(); pp.Cena = double.Parse(p.StandardOutput.ReadLine()); pp.Zrodlo = Lotniska.NazwaLotniska(p.StandardOutput.ReadLine()); pp.Cel = Lotniska.NazwaLotniska(p.StandardOutput.ReadLine()); pp.DataWylotu = dane.Data.Add(TimeSpan.Parse(p.StandardOutput.ReadLine())); pp.DataPrzylotu = dane.Data.Add(TimeSpan.Parse(p.StandardOutput.ReadLine())); czas = p.StandardOutput.ReadLine().Split(' '); pp.Link = p.StandardOutput.ReadLine(); p.StandardOutput.ReadLine(); //kreski int poz; int godz = 0, min = 0; for (int j = 0; j < czas.Length; j++) { poz = czas[j].IndexOf('h'); if (poz > 0) { godz = pobierzLiczbe(czas[j], poz); } else { poz = czas[j].IndexOf("min"); if (poz > 0) { min = pobierzLiczbe(czas[j], poz); } } } pp.Czas = new TimeSpan(godz, min, 0); if (pp.Zrodlo != "" && pp.Cel != "") { pol.Add(pp); } } lock (sl) { kolejka.Enqueue(p); } return(pol); }
public static WyszukanePolaczenia WyszukajPolaczenia(DaneWyszukiwania dane) { if (dane == null) { return(null); } if (!Lotniska.CzyIstnieje(dane.Zrodlo) || !Lotniska.CzyIstnieje(dane.Cel)) { return(null); } if (dane.Zrodlo == null || dane.Cel == null || dane.Data <= DateTime.Now || dane.PrzewTak == null || dane.PrzewNie == null || dane.Osoby == null) { return(null); } if (dane.PrzewTak.Length == 0) { return(null); } if (dane.Osoby.Dorosli <= 0 || dane.Osoby.Mlodziez < 0 || dane.Osoby.Dzieci < 0 || dane.Osoby.Niemowleta < 0) { return(null); } int niepelnoletni = dane.Osoby.Dzieci + dane.Osoby.Mlodziez + dane.Osoby.Niemowleta; if (niepelnoletni + dane.Osoby.Dorosli > 9) { return(null); } if (dane.Osoby.Dorosli < niepelnoletni) { return(null); } List <PolaczenieLotnicze> pol = new List <PolaczenieLotnicze>(); var Piotr = Task.Run(() => SzukajPiotr(dane.Klonuj())); var Natalia = Task.Run(() => Szukaj2(dane.Klonuj())); Task.WaitAll(Piotr, Natalia); pol.AddRange(Piotr.Result); if (Natalia.Result != null) { pol.AddRange(Natalia.Result); } if (dane.PrzewTak.Contains("inni")) { dane.PrzewNie = (from d in dane.PrzewNie select d.ToLower()).ToArray(); pol = pol.Where(p => !dane.PrzewNie.Contains(p.Przewoznik.ToLower())).ToList(); } else { dane.PrzewTak = (from d in dane.PrzewTak select d.ToLower()).ToArray(); pol = pol.Where(p => dane.PrzewTak.Contains(p.Przewoznik.ToLower())).ToList(); } WyszukanePolaczenia wysz = new WyszukanePolaczenia(); wysz.Polaczenia = pol.OrderBy(l => l.DataWylotu).ToArray(); wysz.Zasoby = Wydajnosc.PobierzZasoby(); return(wysz); }