public async Task <IActionResult> Create([Bind("FlightId,AirportStart,AirportEnd,FlightDate,FlightTime,NumFCSeats,FCSeatPrice,NumBusSeats,BusSeatPrice")] Flight flight, string AirportStart, string AirportEnd) { if (ModelState.IsValid) { var startAirport = _context.Airports.First(m => m.IATA == AirportStart); var stopAirport = _context.Airports.First(m => m.IATA == AirportEnd); double latStart = startAirport.Latitude; double lonStart = startAirport.Longitude; double latEnd = stopAirport.Latitude; double lonEnd = stopAirport.Longitude; flight.TravelDistance = GeoDistance.Calculate(latStart, lonStart, latEnd, lonEnd, 'M'); flight.AirportStart = startAirport; flight.AirportEnd = stopAirport; _context.Add(flight); await _context.SaveChangesAsync(); return(RedirectToAction("Index")); } //ViewBag.Message = "Flight Added!"; return(View(flight)); }
public static void Initialize(AirlineContext context) { context.Database.EnsureCreated(); if (!context.Users.Any()) { var users = new User[] { new User { UserName = "******", Password = Crypto.HashPassword("password"), Email = "*****@*****.**", Role = "admin" } }; foreach (User s in users) { context.Users.Add(s); } context.SaveChanges(); } if (!context.Airports.Any()) { var csv = new CsvReader((TextReader)File.OpenText("Data\\us_airports.csv")); try { while (csv.Read()) { context.Airports.Add(new Airport { AirportName = csv.GetField <string>("AirportName"), City = csv.GetField <string>("City"), Country = csv.GetField <string>("Country"), IATA = csv.GetField <string>("IATA"), ICAO = csv.GetField <string>("ICAO"), Latitude = csv.GetField <double>(5), Longitude = csv.GetField <double>(6), Altitude = csv.GetField <int>(7), UTC = csv.GetField <int>(8), DST = csv.GetField <string>("DST"), TimeZone = csv.GetField <string>("TimeZone"), Type = csv.GetField <string>("Type"), Source = csv.GetField <string>("Source") }); } } catch (CsvTypeConverterException ex) { Console.WriteLine(ex.Data.Values); //ex.Data.Values has more info... } context.SaveChanges(); } if (!context.Flights.Any()) { // Fake test data...should be removed once we have data entry ready var flightCsv = new CsvReader((TextReader)File.OpenText("Data\\rand_flights.csv")); try { while (flightCsv.Read()) { var startAirport = context.Airports.First(m => m.IATA == flightCsv.GetField <string>(0)); var endAirport = context.Airports.First(m => m.IATA == flightCsv.GetField <string>(1)); double latStart = startAirport.Latitude; double lonStart = startAirport.Longitude; double latEnd = endAirport.Latitude; double lonEnd = endAirport.Longitude; context.Flights.Add(new Flight { AirportStart = startAirport, AirportEnd = endAirport, FlightDate = flightCsv.GetField <DateTime>(2).Date, FlightTime = flightCsv.GetField <DateTime>(3), TravelDistance = GeoDistance.Calculate(latStart, lonStart, latEnd, lonEnd, 'M'), // flightCsv.GetField<int>(4), NumFCSeats = flightCsv.GetField <int>(4), FCSeatPrice = flightCsv.GetField <int>(5), NumBusSeats = flightCsv.GetField <int>(6), BusSeatPrice = flightCsv.GetField <int>(7) }); } } catch (CsvTypeConverterException ex) { Console.WriteLine(ex.Data.Values); //ex.Data.Values has more info... } context.SaveChanges(); } }