public static async System.Threading.Tasks.Task <int> Main(string[] args = null) { Console.OutputEncoding = System.Text.Encoding.UTF8; Console.WriteLine("Welcome to FlysasClient 0.9.3"); Console.WriteLine("SAS flight data from api.flysas.com"); Console.WriteLine("Additional offline data (airports,airlines and routes) from openflights.org"); Console.WriteLine(""); var data = new OpenFlightsData.OFData(); try { data.LoadData(); } catch { Console.WriteLine("Error loading Openfligts data"); } var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", true); var config = builder.Build(); Options options = new Options(config.AsEnumerable()); var client = new ConsoleClient(options, data); await client.InputLoop(); return(0); }
public ConsoleClient(Options options, OpenFlightsData.OFData data) { var httpClient = FlysasLib.HttpClientFactory.CreateClient(); this.client = new SASRestClient(httpClient); this.options = options; this.data = data; }
public List <FlightExport> Convert(List <Transaction> transactions) { var OFData = new OpenFlightsData.OFData(); OFData.LoadData(); var exports = new List <FlightExport>(); var map = new Dictionary <string, string>() { { "KF", "SK" } }; foreach (var r in transactions) { if (!r.Origin.IsNullOrEmpty() && !string.IsNullOrEmpty(r.FlightNumber)) { var o = OFData.Airports.Where(a => a.City.Equals(r.Origin, StringComparison.OrdinalIgnoreCase)).ToList(); var d = OFData.Airports.Where(a => a.City.Equals(r.Destination, StringComparison.OrdinalIgnoreCase)).ToList(); var tmp = OFData.Routes.Where(route => o.Any(a => a.IATA == route.FromIATA) && d.Any(a => a.IATA == route.ToIATA)).ToList(); var airline = OFData.Airlines.FirstOrDefault(a => a.IATA == r.Airline); var airlineId = airline != null ? new int?(airline.ID) : new int?(); var matches = tmp.Where(route => route.AirlineCode == r.Airline || map.ContainsKey(route.AirlineCode) && map[route.AirlineCode] == r.Airline).ToList(); if (matches.Count == 0) { if (o.Count == 1 && d.Count == 1) { exports.Add(new FlightExport(r, o.First().IATA, d.First().IATA, airlineId, 50)); } else { exports.Add(new FlightExport(r, r.Origin, r.Destination, airlineId, 0)); } } if (matches.Count > 1) { exports.Add(new FlightExport(r, r.Origin, r.Destination, airlineId, 0)); } if (matches.Count == 1) { exports.Add(new FlightExport(r, matches.First().FromIATA, matches.First().ToIATA, airlineId, 99)); } } } return(exports); }
public ConsoleClient(Options options, OpenFlightsData.OFData data) { this.options = options; this.data = data; }
public static void Seed(AwardData.AwardContext ctx, Microsoft.AspNetCore.Identity.UserManager <ApplicationUser> userManager) { var routes = getRoutes(); ctx.Routes.AddRange(routes); ctx.SaveChanges(); var client = new HttpClient(); using (HttpResponseMessage response = client.GetAsync("https://awardhacks.se/export/flights").Result) { using (HttpContent content = response.Content) { var json = content.ReadAsStringAsync().Result; var export = Newtonsoft.Json.JsonConvert.DeserializeObject <List <AwardExport> >(json); foreach (var e in export) { var tmp = new Crawl { Id = e.Id, Departure = e.Departure, Arrival = e.Arrival, Business = e.Business, Plus = e.Plus, Go = e.Go, Flight = e.Flight, TravelDate = e.Departure.Date, CrawlDate = DateTime.Now, Equipment = e.Equipment, Success = true }; tmp.RouteId = routes.Where(r => r.To == e.Destination && r.From == e.Origin).Select(r => r.Id).FirstOrDefault(); if (tmp.RouteId == 0) { tmp.RouteId = routes.Where(r => r.To == e.Origin && r.From == e.Destination).Select(r => r.Id).FirstOrDefault(); tmp.Return = true; } ctx.Crawls.Add(tmp); } } } ctx.SaveChanges(); var ofData = new OpenFlightsData.OFData(); ofData.LoadData(); int id = 0; foreach (var iata in ctx.Routes.Select(r => r.To).Union(ctx.Routes.Select(r => r.From)).Distinct()) { var ap = ofData.Airports.FirstOrDefault(ap => iata.Equals(ap.IATA, StringComparison.OrdinalIgnoreCase)); if (ap != null) { ctx.Airports.Add(new Airport { Id = ++id, City = ap.City, IATA = ap.IATA, Country = ap.Country, //This is not correct for Africa etc but will do for the current routes. Zone = ap.Country == "United States" ? "North & Central America" : ap.Timezone > -4 && ap.Timezone < 5 ? "Europe" : "Central Asia & Far East Asia" } ); } ; } ctx.SaveChanges(); userManager.CreateAsync(new ApplicationUser { Email = "*****@*****.**", EmailConfirmed = true, UserName = "******" }, "someweaktestpwd"); ctx.SaveChanges(); }