private List <FlightBoxData> ReadFile() { if (File.Exists(ImportFileName) == false) { throw new FileNotFoundException($"Datei {ImportFileName} existiert nicht!"); } OnLogEventRaised($"Lese Datei: {ImportFileName}..."); var flightBoxDataList = new List <FlightBoxData>(); FlightBoxData.ResetCurrentDataRecordId(); using (var reader = new StreamReader(ImportFileName, Encoding.UTF8)) { var lineNr = 0; var headLines = 0; var errorLines = 0; var additionalLines = 0; FlightBoxData lastLineFlightBoxData = null; while (reader.EndOfStream == false) { var line = reader.ReadLine(); lineNr++; if (line == null) { errorLines++; OnLogEventRaised($"Fehlerhafte Zeile gefunden (Zeile = null) bei Zeile {lineNr}"); continue; } if (string.IsNullOrEmpty(line)) { errorLines++; OnLogEventRaised($"Leere Zeile gefunden bei Zeile {lineNr}"); continue; } if (line.StartsWith("ARP")) { headLines++; continue; } var values = line.Split(','); if (values.Length < 23) { if (values.Length == 1 && values.Last().EndsWith("\"") && lastLineFlightBoxData.Remarks.StartsWith("\"")) { lastLineFlightBoxData.Remarks += values.Last(); additionalLines++; OnLogEventRaised($"Zeile {lineNr} scheint ein zusätzlicher Kommentar zu sein. Zeileninhalt: {line}"); continue; } errorLines++; OnLogEventRaised($"Fehlerhafte Zeile {lineNr} kann nicht verarbeitet werden. Zeileninhalt: {line}"); continue; } else if (values.Length > 23) { //unescape remarks with commas for (int i = 23; i < values.Length; i++) { values[22] += $",{values[i]}"; } values[22] = values[22].Trim('"'); } var flightBoxData = new FlightBoxData(); try { flightBoxData.LineNumber = lineNr; flightBoxData.Airport = values[0]; flightBoxData.MovementType = values[1]; flightBoxData.Immatriculation = values[2]; flightBoxData.TypeOfTraffic = System.Convert.ToInt32(values[3]); flightBoxData.NrOfMovements = System.Convert.ToInt32(values[4]); flightBoxData.Location = values[5]; flightBoxData.NrOfPassengers = System.Convert.ToInt32(values[6]); flightBoxData.MovementDate = values[7]; flightBoxData.MovementTime = values[8]; DateTime parsedDate; if (DateTime.TryParseExact(flightBoxData.MovementDate, "yyyyMMdd", null, DateTimeStyles.None, out parsedDate)) { flightBoxData.MovementDateTime = parsedDate; } else { OnLogEventRaised($"Warnung beim Konvertieren des Datums auf Zeile {lineNr}. Zu konvertierendes Datum: {flightBoxData.MovementDate}"); } DateTime parsedTime; if (DateTime.TryParseExact(flightBoxData.MovementTime, "Hmm", null, DateTimeStyles.None, out parsedTime)) { flightBoxData.MovementDateTime = flightBoxData.MovementDateTime.AddHours(parsedTime.Hour).AddMinutes(parsedTime.Minute); } else { OnLogEventRaised($"Warnung beim Konvertieren der Zeit auf Zeile {lineNr}. Zu konvertierende Zeit: {flightBoxData.MovementTime}"); } flightBoxData.Runway = values[9]; flightBoxData.TypePi = values[10]; flightBoxData.DirectionOfDeparture = values[11]; flightBoxData.CID = values[12]; flightBoxData.CreationDate = values[13]; flightBoxData.CreationTime = values[14]; if (DateTime.TryParseExact(flightBoxData.CreationDate, "yyyyMMdd", null, DateTimeStyles.None, out parsedDate)) { flightBoxData.CreationDateTime = parsedDate; } else { OnLogEventRaised($"Warnung beim Konvertieren des Datums auf Zeile {lineNr}. Zu konvertierendes Datum: {flightBoxData.CreationDate}"); } if (DateTime.TryParseExact(flightBoxData.CreationTime, "Hmm", null, DateTimeStyles.None, out parsedTime)) { flightBoxData.CreationDateTime = flightBoxData.CreationDateTime.AddHours(parsedTime.Hour).AddMinutes(parsedTime.Minute); } else { OnLogEventRaised($"Warnung beim Konvertieren der Zeit auf Zeile {lineNr}. Zu konvertierende Zeit: {flightBoxData.CreationTime}"); } flightBoxData.Key = values[15]; flightBoxData.MemberNumber = values[16]; flightBoxData.Lastname = values[17]; if (string.IsNullOrWhiteSpace(flightBoxData.Lastname)) { errorLines++; OnLogEventRaised($"Fehlerhafte Zeile {lineNr}. Kein Nachname in Zeile vorhanden. {line}"); continue; } flightBoxData.MaxTakeOffWeight = System.Convert.ToInt32(values[18]); flightBoxData.Club = values[19]; flightBoxData.IsHomebased = values[20] == "1"; flightBoxData.OriginalLocation = values[21]; flightBoxData.Remarks = values[22]; flightBoxData.SetNextDataRecordId(); } catch (Exception e) { errorLines++; OnLogEventRaised($"Fehler beim Konvertieren der Zeile {lineNr}. Message: {e.Message}"); } flightBoxDataList.Add(flightBoxData); lastLineFlightBoxData = flightBoxData; } OnLogEventRaised($"Import durchgeführt. {lineNr} Zeilen eingelesen. Davon {headLines} Kopfzeilen, {additionalLines} Zusatzlinien (Kommentare), {errorLines} fehlerhafte Zeilen ergibt {flightBoxDataList.Count} Datensätze."); } return(flightBoxDataList); }
public ProffixData(FlightBoxData flightBoxData) { FlightBoxData = flightBoxData; MemberNumber = flightBoxData.MemberNumber; }