private static List <PolaczenieLotnicze> Szukaj2(DaneWyszukiwania dane) { List <List <PolaczenieLotnicze> > pp = new List <List <PolaczenieLotnicze> >(); int max = -1; int ix = -1; for (int i = 0; i < 5; i++) { var a = SzukajNatalia(dane.Klonuj()); pp.Add(a); } for (int i = 0; i < pp.Count; i++) { if (pp[i].Count > max) { max = pp[i].Count; ix = i; } } if (ix != -1) { return(pp[ix]); } return(null); }
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); }