public ActionResult Create(AircraftType aircrafttype) { if (ModelState.IsValid) { aircrafttypeRepository.Insert(aircrafttype); aircrafttypeRepository.Save(); return RedirectToAction("Index"); } else { ViewBag.PossibleDivision = divisionRepository.All; return View(); } }
public ActionResult ImportSchedule() { DirectoryInfo directoryInfo = new DirectoryInfo(HttpContext.Server.MapPath("~") + @"Schedule\"); FileInfo[] fileInfos = directoryInfo.GetFiles("*.txt"); string line; Dictionary<string, Airport> airportsDictionary = new Dictionary<string, Airport>(); Dictionary<string, Connection> scheduleDictionary = new Dictionary<string, Connection>(); IEnumerable<ScheduleAircraftReplacement> scheduleAircraftReplacements = scheduleAircraftReplacementRepository.All; IEnumerable<Airline> airlines = airlineRepository.All; foreach (FileInfo info in fileInfos) { StreamReader file = new StreamReader(info.FullName); string dep = null; string dest = null; while ((line = file.ReadLine()) != null) { MatchCollection airportMatches = Regex.Matches(line, AirportAndTimeZonePattern, RegexOptions.Singleline); Match connectionMatch = Regex.Match(line, FlightPattern, RegexOptions.Singleline); if (airportMatches.Count > 0) { try { dep = IataToIcaoTable[airportMatches[0].Value.Substring(0, 3)]; } catch (KeyNotFoundException e) { Debug.WriteLine("No ICAO code found for IATA code: " + airportMatches[0].Value.Substring(0, 3)); dep = null; } try { dest = IataToIcaoTable[airportMatches[1].Value.Substring(0, 3)]; } catch (KeyNotFoundException e) { Debug.WriteLine("No ICAO code found for IATA code: " + airportMatches[1].Value.Substring(0, 3)); dest = null; } if (dep != null && dest != null) { foreach (Match airportMatch in airportMatches) { string airportICAO = IataToIcaoTable[airportMatch.Value.Substring(0, 3)]; if (!airportsDictionary.ContainsKey(airportICAO)) { airportsDictionary.Add(airportICAO, GetAirport(airportMatch)); } } } } else if (connectionMatch.Success && dep != null && dest != null) { int flightNumber = int.Parse(Regex.Match(connectionMatch.Groups[4].Value, @"(\d){1,4}").Groups[0].Value); string prefix = connectionMatch.Groups[4].Value.Substring(0, 2); string sourceAircraftType = connectionMatch.Groups[6].Value; bool excluded = !(flightNumber > 0 && flightNumber < 5000 && prefix == "LH" && sourceAircraftType != "BUS"); string key = connectionMatch.Groups[4].Value + "," + dep + "," + dest; // adds only non-codeshare flights of Lufthansa, they are between 0 and approx. 5000 (see wikipedia for more information) if (!scheduleDictionary.ContainsKey(key) && line.Contains("non stop") && !excluded) { scheduleDictionary.Add(key, GetConnection(connectionMatch, dep, dest, scheduleAircraftReplacements, airlines)); } } } } // 1. delete all Connections // 2. update Airports // 3. add all missing AircraftTypes // 4. add all new Connections DatabaseContext.Database.ExecuteSqlCommand("DELETE FROM Connections WHERE FlightNumber < 8000"); IEnumerable<Airport> airports = airportRepository.All; foreach (var airportItem in airportsDictionary) { Airport currentAirport = airports.SingleOrDefault(t => t.IATA == airportItem.Value.IATA); if (currentAirport == null) { throw new Exception("Airport not found!"); //airportRepository.Insert(airportItem.Value); } } airportRepository.Save(); IEnumerable<AircraftType> aircraftTypes = aircraftTypeRepository.All; foreach (var aircraftType in scheduleDictionary.Select(t => t.Value.AircraftTypeICAO).Distinct()) { if (!aircraftTypes.Any(t => t.ICAO == aircraftType)) { AircraftType currentAircraftType = new AircraftType(); currentAircraftType.ICAO = aircraftType; aircraftTypeRepository.Insert(currentAircraftType); } } aircraftTypeRepository.Save(); foreach (var airline in scheduleDictionary.Select(t => t.Value.AirlineICAO).Distinct()) { if (!airlines.Any(t => t.ICAO == airline)) { Airline currentAirline = new Airline(); currentAirline.ICAO = airline; airlineRepository.Insert(currentAirline); } } airlineRepository.Save(); foreach (var connection in scheduleDictionary) { connectionRepository.InsertOrUpdate(connection.Value); } connectionRepository.Save(); return View(); }
public ActionResult ImportCargoSchedule() { string[] csvFiles = Directory.GetFiles(HttpContext.Server.MapPath("~") + @"\Schedule\", "*.csv", SearchOption.TopDirectoryOnly); StreamReader file = new StreamReader(csvFiles.First()); string line; Dictionary<string, Airport> airportsDictionary = new Dictionary<string, Airport>(); Dictionary<string, Connection> scheduleDictionary = new Dictionary<string, Connection>(); int lineNumber = 1; IEnumerable<ScheduleAircraftReplacement> scheduleAircraftReplacements = scheduleAircraftReplacementRepository.All; while ((line = file.ReadLine()) != null) { string[] c = line.Split(';'); if (lineNumber > 2) { if (c.Length >= 22 && c[7] != "0" && (c[21].Equals("77F") || c[21].Equals("M1F"))) { Connection cargoConn = GetCargoConnection(c, scheduleAircraftReplacements); if (cargoConn.FlightNumber > 8000) { if (!airportsDictionary.ContainsKey(cargoConn.DepartureAirportICAO)) { airportsDictionary.Add(cargoConn.DepartureAirportICAO, new Airport() { ICAO = cargoConn.DepartureAirportICAO }); } if (!airportsDictionary.ContainsKey(cargoConn.DestinationAirportICAO)) { airportsDictionary.Add(cargoConn.DestinationAirportICAO, new Airport() { ICAO = cargoConn.DestinationAirportICAO }); } scheduleDictionary.Add(cargoConn.FlightNumber + "," + cargoConn.DepartureAirportICAO + "," + cargoConn.DestinationAirportICAO + "," + cargoConn.StartsOn.Value.Date + "," + cargoConn.EndsOn.Value.Date, cargoConn); } } } lineNumber++; } DatabaseContext.Database.ExecuteSqlCommand("DELETE FROM Connections WHERE FlightNumber > 8000"); IEnumerable<Airport> airports = airportRepository.All; foreach (var airportItem in airportsDictionary) { Airport currentAirport = airports.SingleOrDefault(t => t.ICAO == airportItem.Value.ICAO); if (currentAirport == null) { throw new Exception("Airport not found!"); //airportRepository.Insert(airportItem.Value); } } airportRepository.Save(); IEnumerable<AircraftType> aircraftTypes = aircraftTypeRepository.All; foreach (var aircraftType in scheduleDictionary.Select(t => t.Value.AircraftTypeICAO).Distinct()) { if (!aircraftTypes.Any(t => t.ICAO == aircraftType)) { AircraftType currentAircraftType = new AircraftType(); currentAircraftType.ICAO = aircraftType; aircraftTypeRepository.Insert(currentAircraftType); } } aircraftTypeRepository.Save(); IEnumerable<Airline> airlines = airlineRepository.All; foreach (var airline in scheduleDictionary.Select(t => t.Value.AirlineICAO).Distinct()) { if (!airlines.Any(t => t.ICAO == airline)) { Airline currentAirline = new Airline(); currentAirline.ICAO = airline; airlineRepository.Insert(currentAirline); } } airlineRepository.Save(); foreach (var connection in scheduleDictionary) { Connection conn = connection.Value; connectionRepository.InsertOrUpdate(conn); } connectionRepository.Save(); return View(); }
public void Update(AircraftType aircrafttype) { context.AircraftType.Attach(aircrafttype); context.Entry(aircrafttype).State = EntityState.Modified; }
public void Insert(AircraftType aircrafttype) { context.AircraftType.Add(aircrafttype); }