From f3e398e07d4814abb9ebb9d8291e75f64ed79f5a Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Wed, 29 Jan 2025 16:10:13 +0100 Subject: [PATCH] Added sheet / logic part 8,9 PAS arrival/departure --- ENI2/Controls/MaerskListControl.xaml.cs | 60 +-- ENI2/DetailRootControl.xaml.cs | 2 + .../BorderPoliceDetailControl.xaml.cs | 39 +- ENI2/ENI2.csproj | 15 + .../CrewDepartureControl.xaml.cs | 25 +- .../CrewPreArrivalControl.xaml.cs | 17 +- .../PassengerDepartureControl.xaml | 70 ++++ .../PassengerDepartureControl.xaml.cs | 379 ++++++++++++++++++ .../PassengerPreArrivalControl.xaml | 69 ++++ .../PassengerPreArrivalControl.xaml.cs | 376 +++++++++++++++++ ENI2/Util/Extensions.cs | 30 ++ 11 files changed, 979 insertions(+), 103 deletions(-) create mode 100644 ENI2/SheetDisplayControls/PassengerDepartureControl.xaml create mode 100644 ENI2/SheetDisplayControls/PassengerDepartureControl.xaml.cs create mode 100644 ENI2/SheetDisplayControls/PassengerPreArrivalControl.xaml create mode 100644 ENI2/SheetDisplayControls/PassengerPreArrivalControl.xaml.cs create mode 100644 ENI2/Util/Extensions.cs diff --git a/ENI2/Controls/MaerskListControl.xaml.cs b/ENI2/Controls/MaerskListControl.xaml.cs index 516b8258..1026f49a 100644 --- a/ENI2/Controls/MaerskListControl.xaml.cs +++ b/ENI2/Controls/MaerskListControl.xaml.cs @@ -290,24 +290,10 @@ namespace ENI2.Controls } } this.TimeFilterItemSource(); - // this.SortItemSource(); + this.dataGridPOCores.SelectedItem = null; busyControl.BusyState = Util.UIHelper.BusyStateEnum.NEUTRAL; - } - - private string ReadFieldAsString(IExcelDataReader reader, int fieldNum) - { - if (fieldNum >= reader.FieldCount) return null; - if (reader.GetFieldType(fieldNum) == typeof(string)) - return reader.GetString(fieldNum).Clean(); - if (reader.GetFieldType(fieldNum) == typeof(DateTime)) - return reader.GetDateTime(fieldNum).ToString(); - if (reader.GetFieldType(fieldNum) == typeof(int)) - return reader.GetInt32(fieldNum).ToString(); - if (reader.GetFieldType(fieldNum) == typeof(double)) - return ((int) reader.GetDouble(fieldNum)).ToString(); - return null; - } + } private void TimeFilterItemSource() { @@ -330,16 +316,7 @@ namespace ENI2.Controls foreach (MaerskData md in removeList) this.maerskDataList.Remove(md); - } - - private void SortItemSource() - { - ObservableCollection temp; - temp = new ObservableCollection(this.maerskDataList.OrderBy(p => p.ColA)); - this.maerskDataList.Clear(); - foreach (MaerskData md in temp) - this.maerskDataList.Add(md); - } + } #endregion @@ -409,28 +386,28 @@ namespace ENI2.Controls if (DateTime.TryParse(md.ColA, out DateTime aDateTime)) md.ETA = aDateTime; } - } - if (!reader.IsDBNull(1)) md.ColB = ReadFieldAsString(reader, 1); - if (!reader.IsDBNull(2)) md.ColC = ReadFieldAsString(reader, 2); - if (!reader.IsDBNull(3)) md.ColD = ReadFieldAsString(reader, 3); - if (!reader.IsDBNull(4)) md.ColE = ReadFieldAsString(reader, 4); - if (!reader.IsDBNull(5)) md.ColF = ReadFieldAsString(reader, 5); - if (!reader.IsDBNull(6)) md.ColG = ReadFieldAsString(reader, 6); - if (!reader.IsDBNull(7)) md.ColH = ReadFieldAsString(reader, 7); - if (!reader.IsDBNull(8)) md.ColI = ReadFieldAsString(reader, 8); + } + if (!reader.IsDBNull(1)) md.ColB = reader.ReadAsString(1); + if (!reader.IsDBNull(2)) md.ColC = reader.ReadAsString(2); + if (!reader.IsDBNull(3)) md.ColD = reader.ReadAsString(3); + if (!reader.IsDBNull(4)) md.ColE = reader.ReadAsString(4); + if (!reader.IsDBNull(5)) md.ColF = reader.ReadAsString(5); + if (!reader.IsDBNull(6)) md.ColG = reader.ReadAsString(6); + if (!reader.IsDBNull(7)) md.ColH = reader.ReadAsString(7); + if (!reader.IsDBNull(8)) md.ColI = reader.ReadAsString(8); if (md.ColI != null) { if ((md.ColI.Contains("bremerhaven", StringComparison.OrdinalIgnoreCase) && this.PortLocode.Equals("DEWVN")) || (md.ColI.Contains("eurogate", StringComparison.OrdinalIgnoreCase) && this.PortLocode.Equals("DEBRV"))) throw new InvalidOperationException($"{md.ColI} found in import to {PortLocode}, this is probably an error. Aborting import"); } - if (!reader.IsDBNull(9)) md.ColJ = ReadFieldAsString(reader, 9); + if (!reader.IsDBNull(9)) md.ColJ = reader.ReadAsString(9); if (md.ColJ == null) continue; if (!(md.ColJ.Equals("msk", StringComparison.OrdinalIgnoreCase) || md.ColJ.Equals("sgl", StringComparison.OrdinalIgnoreCase))) continue; // skip operator we are not interested in - if (!reader.IsDBNull(10)) md.ColK = ReadFieldAsString(reader, 10); - if (!reader.IsDBNull(11)) md.ColL = ReadFieldAsString(reader, 11); - if (!reader.IsDBNull(12)) md.ColM = ReadFieldAsString(reader, 12); - if (!reader.IsDBNull(13)) md.Remark = ReadFieldAsString(reader, 13); + if (!reader.IsDBNull(10)) md.ColK = reader.ReadAsString(10); + if (!reader.IsDBNull(11)) md.ColL = reader.ReadAsString(11); + if (!reader.IsDBNull(12)) md.ColM = reader.ReadAsString(12); + if (!reader.IsDBNull(13)) md.Remark = reader.ReadAsString(13); if(!md.ColF.IsNullOrEmpty()) { @@ -515,8 +492,7 @@ namespace ENI2.Controls maerskDataList.Add(md); } } - this.TimeFilterItemSource(); - // this.SortItemSource(); + this.TimeFilterItemSource(); busyControl.BusyState = Util.UIHelper.BusyStateEnum.NEUTRAL; this.dataGridPOCores.Items.Refresh(); diff --git a/ENI2/DetailRootControl.xaml.cs b/ENI2/DetailRootControl.xaml.cs index 0a17361c..3c09c07a 100644 --- a/ENI2/DetailRootControl.xaml.cs +++ b/ENI2/DetailRootControl.xaml.cs @@ -183,6 +183,8 @@ namespace ENI2 this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.text5ShipData, MessageGroupControlType = typeof(ShipDataControl), ImagePath = "Resources/containership.png" }); this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.text6CrewDataOnArrival, MessageGroupControlType = typeof(CrewPreArrivalControl), ImagePath = "Resources/arrival_worker.png" }); this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.text7CrewDeparture, MessageGroupControlType = typeof(CrewDepartureControl), ImagePath = "Resources/departure_worker.png" }); + this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.text8PassengerArrival, MessageGroupControlType = typeof(PassengerPreArrivalControl), ImagePath = "Resources/arrival_user.png" }); + this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.text9PassengerDeparture, MessageGroupControlType = typeof(PassengerDepartureControl), ImagePath = "Resources/departure_user.png" }); } this.listBoxMessages.ItemsSource = this._listBoxList; diff --git a/ENI2/DetailViewControls/BorderPoliceDetailControl.xaml.cs b/ENI2/DetailViewControls/BorderPoliceDetailControl.xaml.cs index 62c0d8e8..cf3138b4 100644 --- a/ENI2/DetailViewControls/BorderPoliceDetailControl.xaml.cs +++ b/ENI2/DetailViewControls/BorderPoliceDetailControl.xaml.cs @@ -239,7 +239,7 @@ namespace ENI2.DetailViewControls MenuItem copyPASDItem = new MenuItem(); copyPASDItem.Header = Properties.Resources.textCopyToPASA; copyPASDItem.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) }; - copyPASDItem.Click += CopyPASDItem_Click; ; + copyPASDItem.Click += CopyPASDItem_Click; this.dataGridPassengerListDeparture.ContextMenu.Items.Add(copyPASDItem); } @@ -678,7 +678,7 @@ namespace ENI2.DetailViewControls this._pasdMessage.Elements.Add(epd.PAS); this.CheckPASD(); } - this.dataGridPassengerList.Items.Refresh(); + this.dataGridPassengerListDeparture.Items.Refresh(); epd.PAS = new PASD { IsDeparture = true, @@ -732,7 +732,7 @@ namespace ENI2.DetailViewControls _pasMessage.Elements.Add(epd.PAS); this.CheckPASD(); } - this.dataGridPassengerList.Items.Refresh(); + this.dataGridPassengerListDeparture.Items.Refresh(); epd.PAS = new PASD { IsDeparture = true, @@ -1033,18 +1033,7 @@ namespace ENI2.DetailViewControls #endregion - #region Excel import - - private string getValueAsString(IExcelDataReader reader, int index) - { - Type fieldType = reader.GetFieldType(index); - if (fieldType == null) return null; - if (fieldType == typeof(double)) - return reader.GetDouble(index).ToString(); - if (fieldType == typeof(int)) - return reader.GetInt32(index).ToString(); - return reader.GetString(index); - } + #region Excel import private void buttonImportExcelCrew_Click(object sender, RoutedEventArgs e) { @@ -1091,10 +1080,10 @@ namespace ENI2.DetailViewControls if (!reader.IsDBNull(6)) crew.CrewMemberCountryOfBirth = reader.GetString(6).Substring(0, 2).ToUpper(); if (!reader.IsDBNull(7)) crew.CrewMemberDateOfBirth = reader.GetDateTime(7); if (!reader.IsDBNull(8)) crew.CrewMemberIdentityDocumentType = GlobalStructures.ReadIdentityDocumentType(reader.GetString(8)); - if (!reader.IsDBNull(9)) crew.CrewMemberIdentityDocumentId = this.getValueAsString(reader, 9).Clean(); + if (!reader.IsDBNull(9)) crew.CrewMemberIdentityDocumentId = reader.ReadAsString(9).Clean(); if (!reader.IsDBNull(10)) crew.CrewMemberIdentityDocumentIssuingState = reader.GetString(10).Substring(0, 2).ToUpper(); if (!reader.IsDBNull(11)) crew.CrewMemberIdentityDocumentExpiryDate = reader.GetDateTime(11); - if (!reader.IsDBNull(12)) crew.CrewMemberVisaNumber = this.getValueAsString(reader, 12).Clean(); + if (!reader.IsDBNull(12)) crew.CrewMemberVisaNumber = reader.ReadAsString(12).Clean(); crew.MessageHeader = this._crewMessage; crew.IsDirty = true; @@ -1168,10 +1157,10 @@ namespace ENI2.DetailViewControls if (!reader.IsDBNull(6)) crew.CrewMemberCountryOfBirth = reader.GetString(6).Substring(0, 2).ToUpper(); if (!reader.IsDBNull(7)) crew.CrewMemberDateOfBirth = reader.GetDateTime(7); if (!reader.IsDBNull(8)) crew.CrewMemberIdentityDocumentType = GlobalStructures.ReadIdentityDocumentType(reader.GetString(8)); - if (!reader.IsDBNull(9)) crew.CrewMemberIdentityDocumentId = this.getValueAsString(reader, 9); + if (!reader.IsDBNull(9)) crew.CrewMemberIdentityDocumentId = reader.ReadAsString(9); if (!reader.IsDBNull(10)) crew.CrewMemberIdentityDocumentIssuingState = reader.GetString(10).Substring(0, 2).ToUpper(); if (!reader.IsDBNull(11)) crew.CrewMemberIdentityDocumentExpiryDate = reader.GetDateTime(11); - if (!reader.IsDBNull(12)) crew.CrewMemberVisaNumber = this.getValueAsString(reader, 12); + if (!reader.IsDBNull(12)) crew.CrewMemberVisaNumber = reader.ReadAsString(12); crew.MessageHeader = this._crewdMessage; crew.IsDirty = true; @@ -1250,12 +1239,12 @@ namespace ENI2.DetailViewControls if (!reader.IsDBNull(8)) pas.PassengerCountryOfBirth = reader.GetString(8).Substring(0, 2).ToUpper().Clean(); if (!reader.IsDBNull(9)) pas.PassengerDateOfBirth = reader.GetDateTime(9); if (!reader.IsDBNull(10)) pas.PassengerIdentityDocumentType = GlobalStructures.ReadIdentityDocumentType(reader.GetString(10)); - if (!reader.IsDBNull(11)) pas.PassengerIdentityDocumentId = this.getValueAsString(reader, 11).Clean(); + if (!reader.IsDBNull(11)) pas.PassengerIdentityDocumentId = reader.ReadAsString(11).Clean(); if (!reader.IsDBNull(12)) pas.PassengerIdentityDocumentIssuingState = reader.GetString(12).Substring(0, 2).ToUpper(); if (!reader.IsDBNull(13)) pas.PassengerIdentityDocumentExpiryDate = reader.GetDateTime(13); - if (!reader.IsDBNull(14)) pas.PassengerVisaNumber = this.getValueAsString(reader, 14).Clean(); + if (!reader.IsDBNull(14)) pas.PassengerVisaNumber = reader.ReadAsString(14).Clean(); if (!reader.IsDBNull(15)) pas.EmergencyCare = reader.GetString(15).Clean(); - if (!reader.IsDBNull(16)) pas.EmergencyContactNumber = this.getValueAsString(reader, 16).Clean(); + if (!reader.IsDBNull(16)) pas.EmergencyContactNumber = reader.ReadAsString(16).Clean(); pas.MessageHeader = this._pasMessage; pas.IsDirty = true; @@ -1333,12 +1322,12 @@ namespace ENI2.DetailViewControls if (!reader.IsDBNull(8)) pas.PassengerCountryOfBirth = reader.GetString(8).Substring(0, 2).ToUpper(); if (!reader.IsDBNull(9)) pas.PassengerDateOfBirth = reader.GetDateTime(9); if (!reader.IsDBNull(10)) pas.PassengerIdentityDocumentType = GlobalStructures.ReadIdentityDocumentType(reader.GetString(10)); - if (!reader.IsDBNull(11)) pas.PassengerIdentityDocumentId = this.getValueAsString(reader, 11); + if (!reader.IsDBNull(11)) pas.PassengerIdentityDocumentId = reader.ReadAsString(11); if (!reader.IsDBNull(12)) pas.PassengerIdentityDocumentIssuingState = reader.GetString(12).Substring(0, 2).ToUpper(); if (!reader.IsDBNull(13)) pas.PassengerIdentityDocumentExpiryDate = reader.GetDateTime(13); - if (!reader.IsDBNull(14)) pas.PassengerVisaNumber = this.getValueAsString(reader, 14); + if (!reader.IsDBNull(14)) pas.PassengerVisaNumber = reader.ReadAsString(14); if (!reader.IsDBNull(15)) pas.EmergencyCare = reader.GetString(15); - if (!reader.IsDBNull(16)) pas.EmergencyContactNumber = this.getValueAsString(reader, 16); + if (!reader.IsDBNull(16)) pas.EmergencyContactNumber = reader.ReadAsString(16); pas.MessageHeader = this._pasMessage; pas.IsDirty = true; diff --git a/ENI2/ENI2.csproj b/ENI2/ENI2.csproj index e39c823b..3f2ffa28 100644 --- a/ENI2/ENI2.csproj +++ b/ENI2/ENI2.csproj @@ -499,6 +499,12 @@ CrewPreArrivalControl.xaml + + PassengerDepartureControl.xaml + + + PassengerPreArrivalControl.xaml + PortControl.xaml @@ -528,6 +534,7 @@ + @@ -831,6 +838,14 @@ Designer MSBuild:Compile + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + Designer MSBuild:Compile diff --git a/ENI2/SheetDisplayControls/CrewDepartureControl.xaml.cs b/ENI2/SheetDisplayControls/CrewDepartureControl.xaml.cs index a3540e9a..fe5d1763 100644 --- a/ENI2/SheetDisplayControls/CrewDepartureControl.xaml.cs +++ b/ENI2/SheetDisplayControls/CrewDepartureControl.xaml.cs @@ -11,17 +11,9 @@ using System; using System.Collections.Generic; using System.IO; 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.Navigation; -using System.Windows.Shapes; namespace ENI2.SheetDisplayControls { @@ -166,10 +158,10 @@ namespace ENI2.SheetDisplayControls if (!reader.IsDBNull(6)) crew.CrewMemberCountryOfBirth = reader.GetString(6).Substring(0, 2).ToUpper(); if (!reader.IsDBNull(7)) crew.CrewMemberDateOfBirth = reader.GetDateTime(7); if (!reader.IsDBNull(8)) crew.CrewMemberIdentityDocumentType = GlobalStructures.ReadIdentityDocumentType(reader.GetString(8)); - if (!reader.IsDBNull(9)) crew.CrewMemberIdentityDocumentId = this.getValueAsString(reader, 9); + if (!reader.IsDBNull(9)) crew.CrewMemberIdentityDocumentId = reader.ReadAsString(9); if (!reader.IsDBNull(10)) crew.CrewMemberIdentityDocumentIssuingState = reader.GetString(10).Substring(0, 2).ToUpper(); if (!reader.IsDBNull(11)) crew.CrewMemberIdentityDocumentExpiryDate = reader.GetDateTime(11); - if (!reader.IsDBNull(12)) crew.CrewMemberVisaNumber = this.getValueAsString(reader, 12); + if (!reader.IsDBNull(12)) crew.CrewMemberVisaNumber = reader.ReadAsString(12); crew.MessageHeader = this._crewdMessage; crew.IsDirty = true; @@ -373,18 +365,7 @@ namespace ENI2.SheetDisplayControls ((CREWD)this._crewdMessage.Elements[i]).NotificationSchengen = firstCREW.NotificationSchengen; } } - } - - private string getValueAsString(IExcelDataReader reader, int index) - { - Type fieldType = reader.GetFieldType(index); - if (fieldType == null) return null; - if (fieldType == typeof(double)) - return reader.GetDouble(index).ToString(); - if (fieldType == typeof(int)) - return reader.GetInt32(index).ToString(); - return reader.GetString(index); - } + } #endregion diff --git a/ENI2/SheetDisplayControls/CrewPreArrivalControl.xaml.cs b/ENI2/SheetDisplayControls/CrewPreArrivalControl.xaml.cs index e29bec39..4e6cb34c 100644 --- a/ENI2/SheetDisplayControls/CrewPreArrivalControl.xaml.cs +++ b/ENI2/SheetDisplayControls/CrewPreArrivalControl.xaml.cs @@ -196,10 +196,10 @@ namespace ENI2.SheetDisplayControls if (!reader.IsDBNull(6)) crew.CrewMemberCountryOfBirth = reader.GetString(6).Substring(0, 2).ToUpper(); if (!reader.IsDBNull(7)) crew.CrewMemberDateOfBirth = reader.GetDateTime(7); if (!reader.IsDBNull(8)) crew.CrewMemberIdentityDocumentType = GlobalStructures.ReadIdentityDocumentType(reader.GetString(8)); - if (!reader.IsDBNull(9)) crew.CrewMemberIdentityDocumentId = this.getValueAsString(reader, 9).Clean(); + if (!reader.IsDBNull(9)) crew.CrewMemberIdentityDocumentId = reader.ReadAsString(9).Clean(); if (!reader.IsDBNull(10)) crew.CrewMemberIdentityDocumentIssuingState = reader.GetString(10).Substring(0, 2).ToUpper(); if (!reader.IsDBNull(11)) crew.CrewMemberIdentityDocumentExpiryDate = reader.GetDateTime(11); - if (!reader.IsDBNull(12)) crew.CrewMemberVisaNumber = this.getValueAsString(reader, 12).Clean(); + if (!reader.IsDBNull(12)) crew.CrewMemberVisaNumber = reader.ReadAsString(12).Clean(); crew.MessageHeader = this._crewaMessage; crew.IsDirty = true; @@ -351,18 +351,7 @@ namespace ENI2.SheetDisplayControls #endregion - #region private methods - - private string getValueAsString(IExcelDataReader reader, int index) - { - Type fieldType = reader.GetFieldType(index); - if (fieldType == null) return null; - if (fieldType == typeof(double)) - return reader.GetDouble(index).ToString(); - if (fieldType == typeof(int)) - return reader.GetInt32(index).ToString(); - return reader.GetString(index); - } + #region private methods private void CheckCREWA() { diff --git a/ENI2/SheetDisplayControls/PassengerDepartureControl.xaml b/ENI2/SheetDisplayControls/PassengerDepartureControl.xaml new file mode 100644 index 00000000..779af10d --- /dev/null +++ b/ENI2/SheetDisplayControls/PassengerDepartureControl.xaml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + +