コード例 #1
0
        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));
        }
コード例 #2
0
        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();
            }
        }