From eb001c78bc03c57eb6a006a808b701203e1d3d41 Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Mon, 12 Sep 2022 08:46:35 +0200 Subject: [PATCH] =?UTF-8?q?Batch=20Excel=20import=20f=C3=BCr=20PAS=20/=20C?= =?UTF-8?q?REW=20weiter..=20Testversion=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ENI2/ENI2.csproj | 2 +- ENI2/EditControls/FixImportDialog.xaml.cs | 17 +- ENI2/Excel/ExcelUtil.cs | 191 +++++++++++----------- 3 files changed, 97 insertions(+), 113 deletions(-) diff --git a/ENI2/ENI2.csproj b/ENI2/ENI2.csproj index ed92aaf3..94a125b6 100644 --- a/ENI2/ENI2.csproj +++ b/ENI2/ENI2.csproj @@ -36,7 +36,7 @@ 5.4.0.0 true publish.html - 2 + 3 7.5.0.%2a false true diff --git a/ENI2/EditControls/FixImportDialog.xaml.cs b/ENI2/EditControls/FixImportDialog.xaml.cs index 132eadaf..e9912466 100644 --- a/ENI2/EditControls/FixImportDialog.xaml.cs +++ b/ENI2/EditControls/FixImportDialog.xaml.cs @@ -2,21 +2,9 @@ // Description: Dialog to confirm values during excel import (e.g. CREW/PAS) // -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Shapes; - using ENI2.Controls; +using System.Collections.Generic; +using System.Windows; namespace ENI2.EditControls { @@ -55,6 +43,7 @@ namespace ENI2.EditControls private void EditWindowBase_Loaded(object sender, RoutedEventArgs e) { this.comboBoxValues.ItemsSource = this.SelectionValues; + this.comboBoxValues.Focus(); } } } diff --git a/ENI2/Excel/ExcelUtil.cs b/ENI2/Excel/ExcelUtil.cs index 1ee4d0e9..c69618b2 100644 --- a/ENI2/Excel/ExcelUtil.cs +++ b/ENI2/Excel/ExcelUtil.cs @@ -22,9 +22,9 @@ namespace ENI2.Excel { private static readonly ILog _log = LogManager.GetLogger(typeof(ExcelUtil)); - private static Dictionary _countryImportDict = new Dictionary(); - private static Dictionary _genderImportDict = new Dictionary(); - private static Dictionary _documentTypeImportDict = new Dictionary(); + private static readonly Dictionary _countryImportDict = new Dictionary(); + private static readonly Dictionary _genderImportDict = new Dictionary(); + private static readonly Dictionary _documentTypeImportDict = new Dictionary(); #region Process Sheet (normal BSMD sheet import) @@ -2067,7 +2067,7 @@ namespace ENI2.Excel bool? notificationSchengen = reader.ReadBoolean("CREW.NotificationSchengen"); bool? notificationPax = reader.ReadBoolean("CREW.NotificationPAX"); - for (int i = 0; i < 1000; i++) + for (int i = 0; i < 5000; i++) { string lastName = reader.ReadCellAsText(sheetTitle, string.Format("C{0}", i + 18)); @@ -2115,56 +2115,52 @@ namespace ENI2.Excel private static bool ScanCREWD(Message crewdMessage, ExcelReader reader) { crewdMessage.DeleteElements(); + string sheetTitle = "7. CREW - Departure"; // CREW DEPARTURE bool? notificationSchengen = reader.ReadBoolean("CREWD.NotificationSchengen"); bool? notificationPax = reader.ReadBoolean("CREWD.NotificationPAX"); - for (int i = 0; i < crewdMessage.NumberOfExcelRows; i++) + for (int i = 0; i < 5000; i++) { - string crewLastName = string.Format("CREWD.CrewMemberLastName_{0}", i + 1); - string crewFirstName = string.Format("CREWD.CrewMemberFirstName_{0}", i + 1); - string crewGender = string.Format("CREWD.CrewMemberGender_{0}", i + 1); - string crewNationality = string.Format("CREWD.CrewMemberNationality_{0}", i + 1); - string crewDuty = string.Format("CREWD.CrewMemberDuty_{0}", i + 1); - string crewPlaceOfBirth = string.Format("CREWD.CrewMemberPlaceOfBirth_{0}", i + 1); - string crewDateOfBirth = string.Format("CREWD.CrewMemberDateOfBirth_{0}", i + 1); - string crewIdentDocType = string.Format("CREWD.CrewMemberIdentityDocumentType_{0}", i + 1); - string crewIdentDocId = string.Format("CREWD.CrewMemberIdentityDocumentId_{0}", i + 1); - string crewVisaNo = string.Format("CREWD.CrewMemberVisaNumber_{0}", i + 1); - string crewIssuing = string.Format("CREWD.CrewMemberIdentityDocumentIssuingState_{0}", i + 1); - string crewIdentDocExpiry = string.Format("CREWD.CrewmemberIdentityDocumentExpiryDate_{0}", i + 1); - string crewCountryOfBirth = string.Format("CREWD.CountryOfBirth_{0}", i + 1); - string lastName = reader.ReadText(crewLastName); - if (!lastName.IsNullOrEmpty()) + string lastName = reader.ReadCellAsText(sheetTitle, string.Format("C{0}", i + 18)); + if (lastName.IsNullOrEmpty()) break; + + if (!(crewdMessage.GetSublistElementWithIdentifier((i + 1).ToString()) is CREWD crewd)) { - if (!(crewdMessage.GetSublistElementWithIdentifier((i + 1).ToString()) is CREWD crew)) - { - crew = new CREWD(); - crew.IsDeparture = true; - crew.Identifier = (i + 1).ToString(); - crew.MessageHeader = crewdMessage; - crewdMessage.Elements.Add(crew); - } - - crew.IsDeparture = true; - crew.NotificationSchengen = notificationSchengen; - crew.NotificationPAX = notificationPax; - crew.CrewMemberLastName = lastName; - crew.CrewMemberFirstName = reader.ReadText(crewFirstName); - crew.CrewMemberGender = reader.ReadGender(crewGender); - crew.CrewMemberDuty = reader.ReadText(crewDuty); - crew.CrewMemberNationality = reader.ReadNationality(crewNationality); - crew.CrewMemberPlaceOfBirth = reader.ReadText(crewPlaceOfBirth); - crew.CrewMemberDateOfBirth = reader.ReadBirthDate(crewDateOfBirth); - crew.CrewMemberIdentityDocumentType = reader.ReadIdentityDocumentType(crewIdentDocType); - crew.CrewMemberIdentityDocumentId = reader.ReadText(crewIdentDocId); - crew.CrewMemberVisaNumber = reader.ReadText(crewVisaNo); - crew.CrewMemberIdentityDocumentIssuingState = reader.ReadNationality(crewIssuing); - crew.CrewMemberIdentityDocumentExpiryDate = reader.ReadDate(crewIdentDocExpiry); - crew.CrewMemberCountryOfBirth = reader.ReadNationality(crewCountryOfBirth); + crewd = new CREWD(); + crewd.Identifier = (i + 1).ToString(); + crewd.MessageHeader = crewdMessage; + crewdMessage.Elements.Add(crewd); } + + crewd.NotificationSchengen = notificationSchengen; + crewd.NotificationPAX = notificationPax; + crewd.CrewMemberLastName = lastName; + crewd.CrewMemberFirstName = reader.ReadCellAsText(sheetTitle, string.Format("D{0}", i + 18)); + + crewd.CrewMemberGender = ReadGender(reader.ReadCellAsText(sheetTitle, string.Format("E{0}", i + 18))); + + crewd.CrewMemberDuty = reader.ReadCellAsText(sheetTitle, string.Format("F{0}", i + 18)); + crewd.CrewMemberNationality = ReadNationality(reader.ReadCellAsText(sheetTitle, string.Format("G{0}", i + 18))); + crewd.CrewMemberPlaceOfBirth = reader.ReadCellAsText(sheetTitle, string.Format("H{0}", i + 18)); + crewd.CrewMemberCountryOfBirth = reader.ReadCellAsText(sheetTitle, string.Format("G{0}", i + 18)); + crewd.CrewMemberDateOfBirth = reader.ReadCellAsDateTime(sheetTitle, string.Format("J{0}", i + 18)); + + + crewd.CrewMemberIdentityDocumentType = ReadDocumentType(reader.ReadCellAsText(sheetTitle, string.Format("K{0}", i + 18))); + + crewd.CrewMemberIdentityDocumentId = reader.ReadCellAsText(sheetTitle, string.Format("L{0}", i + 18)); + crewd.CrewMemberVisaNumber = reader.ReadCellAsText(sheetTitle, string.Format("O{0}", i + 18)); + crewd.CrewMemberIdentityDocumentIssuingState = ReadNationality(reader.ReadCellAsText(sheetTitle, string.Format("M{0}", i + 18))); + if (crewd.CrewMemberIdentityDocumentIssuingState.IsNullOrEmpty()) + crewd.CrewMemberIdentityDocumentIssuingState = "XX"; + crewd.CrewMemberIdentityDocumentExpiryDate = reader.ReadCellAsDateTime(sheetTitle, string.Format("N{0}", i + 18)); + if (!crewd.CrewMemberIdentityDocumentExpiryDate.HasValue) + crewd.CrewMemberIdentityDocumentExpiryDate = new DateTime(2100, 12, 31); + + crewd.Effects = reader.ReadCellAsText("2. PORT", string.Format("C{0}", i + 142)); } return true; } @@ -2176,68 +2172,48 @@ namespace ENI2.Excel private static bool ScanPAS(Message pasMessage, ExcelReader reader, bool isOldVersion) { pasMessage.DeleteElements(); + string sheetTitle = "8. PAX - Arrival"; bool? notificationSchengen = reader.ReadBoolean("PAS.NotificationSchengen"); bool? notificationPax = reader.ReadBoolean("PAS.NotificationPAX"); - for (int i = 0; i < pasMessage.NumberOfExcelRows; i++) + for (int i = 0; i < 5000; i++) { - string pasLastName = string.Format("PAS.PassengerLastName_{0}", i + 1); - string pasFirstName = string.Format("PAS.PassengerFirstName_{0}", i + 1); - string pasGender = string.Format("PAS.PassengerGender_{0}", i + 1); - string pasNationality = string.Format("PAS.PassengerNationality_{0}", i + 1); - string pasEmbarkation = string.Format("PAS.PassengerPortOfEmbarkation_{0}", i + 1); - string pasDebarkation = string.Format("PAS.PassengerPortOfDisembarkation_{0}", i + 1); - string pasTransit = string.Format("PAS.PassengerInTransit_{0}", i + 1); - string pasPlaceOfBirth = string.Format("PAS.PassengerPlaceOfBirth_{0}", i + 1); - string pasDateOfBirth = string.Format("PAS.PassengerDateOfBirth_{0}", i + 1); - string pasIdentDocType = string.Format("PAS.PassengerIdentityDocumentType_{0}", i + 1); - string pasIdentDocId = string.Format("PAS.PassengerIdentityDocumentId_{0}", i + 1); - string pasVisaNo = string.Format("PAS.PassengerVisaNumber_{0}", i + 1); - string pasIssuing = string.Format("PAS.PassengerIdentityDocumentIssuingState_{0}", i + 1); - string pasExpiryDate = string.Format("PAS.PassengerIdentityDocumentExpiryDate_{0}", i + 1); - string pasCountryOfBirth = string.Format("PAS.CountryOfBirth_{0}", i + 1); - string pasEmergencyCare = string.Format("PAS.EmergencyCare_{0}", i + 1); - string pasEmergencyContact = string.Format("PAS.EmergencyContactNumber_{0}", i + 1); - string lastName = reader.ReadText(pasLastName); - string firstName = reader.ReadText(pasFirstName); + string lastName = reader.ReadCellAsText(sheetTitle, string.Format("C{0}", i + 17)); + if (lastName.IsNullOrEmpty()) break; - if (!lastName.IsNullOrEmpty() || !firstName.IsNullOrEmpty()) + if (!(pasMessage.GetSublistElementWithIdentifier((i + 1).ToString()) is PAS pas)) { - if (!(pasMessage.GetSublistElementWithIdentifier((i + 1).ToString()) is PAS pas)) - { - pas = new PAS(); - pas.Identifier = (i + 1).ToString(); - pas.MessageHeader = pasMessage; - pasMessage.Elements.Add(pas); - } - - pas.NotificationSchengen = notificationSchengen; - pas.NotificationPAX = notificationPax; - pas.PassengerLastName = lastName; - pas.PassengerFirstName = firstName; - pas.PassengerGender = reader.ReadGender(pasGender); - pas.PassengerNationality = reader.ReadNationality(pasNationality); - // TODO: Nicht klar ob hier LOCODEs kommen oder nicht - pas.PassengerPortOfEmbarkation = reader.ReadLoCode(pasEmbarkation); - pas.PassengerPortOfDisembarkation = reader.ReadLoCode(pasDebarkation); - pas.PassengerInTransit = reader.ReadBoolean(pasTransit); - pas.PassengerPlaceOfBirth = reader.ReadText(pasPlaceOfBirth); - pas.PassengerDateOfBirth = reader.ReadBirthDate(pasDateOfBirth); - pas.PassengerIdentityDocumentType = reader.ReadIdentityDocumentType(pasIdentDocType); - pas.PassengerIdentityDocumentId = reader.ReadText(pasIdentDocId); - pas.PassengerVisaNumber = reader.ReadText(pasVisaNo); - pas.PassengerIdentityDocumentIssuingState = reader.ReadNationality(pasIssuing); - if (pas.PassengerIdentityDocumentIssuingState.IsNullOrEmpty() && isOldVersion) - pas.PassengerIdentityDocumentIssuingState = "XX"; - pas.PassengerIdentityDocumentExpiryDate = reader.ReadDate(pasExpiryDate); - if (!pas.PassengerIdentityDocumentExpiryDate.HasValue && isOldVersion) - pas.PassengerIdentityDocumentExpiryDate = new DateTime(2100, 12, 31); - pas.PassengerCountryOfBirth = reader.ReadNationality(pasCountryOfBirth); - pas.EmergencyCare = reader.ReadText(pasEmergencyCare); - pas.EmergencyContactNumber = reader.ReadText(pasEmergencyContact); + pas = new PAS(); + pas.Identifier = (i + 1).ToString(); + pas.MessageHeader = pasMessage; + pasMessage.Elements.Add(pas); } + + pas.NotificationSchengen = notificationSchengen; + pas.NotificationPAX = notificationPax; + pas.PassengerLastName = lastName; + pas.PassengerFirstName = reader.ReadCellAsText(sheetTitle, string.Format("D{0}", i + 17)); + + pas.PassengerGender = ReadGender(reader.ReadCellAsText(sheetTitle, string.Format("E{0}", i + 17))); + pas.PassengerPortOfEmbarkation = ReadLocode(reader.ReadCellAsText(sheetTitle, string.Format("F{0}", i + 17))); + pas.PassengerPortOfDisembarkation = ReadLocode(reader.ReadCellAsText(sheetTitle, string.Format("G{0}", i + 17))); + + pas.PassengerInTransit = reader.ReadCellAsBool(sheetTitle, string.Format("H{0}", i + 17)); + pas.PassengerNationality = ReadNationality(reader.ReadCellAsText(sheetTitle, string.Format("I{0}", i + 17))); + pas.PassengerPlaceOfBirth = reader.ReadCellAsText(sheetTitle, string.Format("J{0}", i + 17)); + pas.PassengerCountryOfBirth = ReadNationality(reader.ReadCellAsText(sheetTitle, string.Format("K{0}", i + 17))); + pas.PassengerDateOfBirth = reader.ReadCellAsDateTime(sheetTitle, string.Format("L{0}", i + 17)); + + pas.PassengerIdentityDocumentType = ReadDocumentType(reader.ReadCellAsText(sheetTitle, string.Format("M{0}", i + 17))); + pas.PassengerIdentityDocumentId = reader.ReadCellAsText(sheetTitle, string.Format("N{0}", i + 17)); + pas.PassengerIdentityDocumentIssuingState = ReadNationality(reader.ReadCellAsText(sheetTitle, string.Format("O{0}", i + 17))); + pas.PassengerIdentityDocumentExpiryDate = reader.ReadCellAsDateTime(sheetTitle, string.Format("P{0}", i + 17)); + + pas.PassengerVisaNumber = reader.ReadCellAsText(sheetTitle, string.Format("Q{0}", i + 17)); + pas.EmergencyCare = reader.ReadCellAsText(sheetTitle, string.Format("R{0}", i + 17)); + pas.EmergencyContactNumber = reader.ReadCellAsText(sheetTitle, string.Format("S{0}", i + 17)); } return true; @@ -2533,6 +2509,25 @@ namespace ENI2.Excel return result; } + public static string ReadLocode(string val) + { + string result = null; + + val = val.ToUpper(); + string portName = LocodeDB.PortNameFromLocode(val); + if (portName.IsNullOrEmpty()) + { + _log.WarnFormat("unknown Locode {0}", val); + val = ""; + } + + // reverse search: if this is a name lookup port code + + // LocodeDB.LocodeFromCity() ?? + + return result; + } + #endregion }