public bool AddAirportsTripProviderItem(string fromAirportCode, string toAirportCode, int ProviderId) { bool result = false; try { AirportsTrip airportsTrip = _airportsTripRepo.FindAllBy(a => (a.Airport.Code.ToLower() == toAirportCode && a.Airport1.Code.ToLower() == fromAirportCode) || ((a.Airport.Code.ToLower() == fromAirportCode && a.Airport1.Code.ToLower() == toAirportCode))).FirstOrDefault(); if (airportsTrip == null) { airportsTrip = new AirportsTrip(); airportsTrip.FromAirportId = (_airportRepo.FindAllBy(a => a.Code.ToLower() == fromAirportCode)?.FirstOrDefault())?.Id ?? 0; airportsTrip.ToAirportId = (_airportRepo.FindAllBy(a => a.Code.ToLower() == toAirportCode)?.FirstOrDefault())?.Id ?? 0; if (airportsTrip.ToAirportId > 0 && airportsTrip.FromAirportId > 0) { airportsTrip.Attractiveness = 100; _airportsTripRepo.Add(airportsTrip); _airportsTripRepo.Save(); } } if (airportsTrip != null && airportsTrip.Id > 0 && !airportsTrip.Providers.Where(p => p.Id == ProviderId).Any()) { airportsTrip.Providers.Add(_providerRepo.Get(ProviderId)); } } catch (Exception e) { FlightsEngine.Utils.Logger.GenerateError(e, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "fromAirportCode = " + fromAirportCode + " and ToAirpoderCode = " + toAirportCode + " and ProviderId = " + ProviderId); } finally { result = _airportsTripRepo.Save(); } return(result); }
public AirportsTrip GetAirportsTripForProviderRoute(int ProviderId) { AirportsTrip result = null; try { var airportsTrips = _airportsTripRepo.FindAllBy(a => a.Providers.Where(p => p.Id == ProviderId).Any()).ToList(); if (airportsTrips != null && airportsTrips.Count > 0) { return(airportsTrips.OrderBy(a => a.Id).OrderBy(t => t.Airport1.Code).OrderBy(t => t.Airport.Code).FirstOrDefault()); } } catch (Exception e) { FlightsEngine.Utils.Logger.GenerateError(e, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "ProviderId = " + ProviderId); } return(result); }
static bool GetAirportsRoutes(string Key) { bool resultRoutes = true;; List <AirportItem> Airports = new List <AirportItem>(); try { var context = new TemplateEntities1(); AirportService _airportService = new AirportService(context); // _airportService.DeleteAirportsTripProvider(Providers.BritishAirways); List <AirportItem> AirportsList = getBADestinations(Key); AirportsList = AirportsList.OrderBy(a => a.Code).ToList(); AirportsTrip lastAirportsTrip = _airportService.GetAirportsTripForProviderRoute(Providers.BritishAirways); bool result = false; int AttemptsNumber = 0; int MaxRequestAttempts = FlightsEngine.Models.Constants.Constants.MaxRequestAttempts; bool NeedToContinueSearch = true; foreach (var fromAirport in AirportsList) { foreach (var toAirport in AirportsList) { if (lastAirportsTrip != null) { int test = string.Compare(lastAirportsTrip.Airport.Code, fromAirport.Code); int tets2 = string.Compare(lastAirportsTrip.Airport1.Code, toAirport.Code); } if (!String.IsNullOrWhiteSpace(fromAirport.Code) && !String.IsNullOrWhiteSpace(toAirport.Code) && (lastAirportsTrip == null || (string.Compare(lastAirportsTrip.Airport.Code, fromAirport.Code) <= 0 && string.Compare(lastAirportsTrip.Airport1.Code, toAirport.Code) <= 0))) { result = false; AttemptsNumber = 0; NeedToContinueSearch = true; while (!result && AttemptsNumber <= MaxRequestAttempts && NeedToContinueSearch) { AttemptsNumber++; var client = new HttpClient(); var queryString = HttpUtility.ParseQueryString(string.Empty); var url = "https://api.ba.com/rest-v1/v1/flightOfferBasic;departureCity=" + fromAirport.CityCode + ";arrivalCity=" + toAirport.CityCode + ";cabin=economy;journeyType=roundTrip;range=yearLow"; var httpWebRequest = (HttpWebRequest)WebRequest.Create(url); // httpWebRequest.ContentType = "application/json"; httpWebRequest.Method = "GET"; httpWebRequest.Headers.Add("client-key", Key); HttpWebResponse httpResponse = null; try { AttemptsNumber++; httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); result = true; } catch (WebException e) { result = false; if (!e.ToString().Contains("404")) { string webError = FlightsEngine.Utils.Logger.GenerateWebError(e, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "FromAirportId = " + fromAirport.Id + " and toAirportId = " + toAirport.Id); } else { NeedToContinueSearch = false; } } if (result) { NeedToContinueSearch = false; using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { var requestResult = streamReader.ReadToEnd(); if (!String.IsNullOrWhiteSpace(requestResult)) { _airportService.AddAirportsTripProviderItem(fromAirport.Code, toAirport.Code, Providers.BritishAirways); } } } System.Threading.Thread.Sleep(1000); } } } } } catch (Exception e) { resultRoutes = false; FlightsEngine.Utils.Logger.GenerateError(e, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); } return(resultRoutes); }