From 7232a455a646e79b387027d10c2e2cc67f8b89bf Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Thu, 9 Nov 2023 09:01:56 +0100 Subject: [PATCH] first PAS/CREW entry sets Schengen flag, following entries copy first entries settings --- .../BorderPoliceDetailControl.xaml.cs | 140 +++++++++++++++++- bsmd.ExcelReadService/Util.cs | 17 ++- 2 files changed, 144 insertions(+), 13 deletions(-) diff --git a/ENI2/DetailViewControls/BorderPoliceDetailControl.xaml.cs b/ENI2/DetailViewControls/BorderPoliceDetailControl.xaml.cs index baa81bde..77fa1277 100644 --- a/ENI2/DetailViewControls/BorderPoliceDetailControl.xaml.cs +++ b/ENI2/DetailViewControls/BorderPoliceDetailControl.xaml.cs @@ -313,6 +313,82 @@ namespace ENI2.DetailViewControls #endregion + #region Check Schengen / PAX flags and sync + + private void CheckCREWA() + { + if (this._crewMessage.Elements.Count == 0) return; + CREW firstCREW = this._crewMessage.Elements[0] as CREW; + if (this._crewMessage.Elements.Count == 1) + { + firstCREW.NotificationSchengen = true; + this.checkBoxCrewNotificationSchengen.IsChecked = true; + } + else + { + for (int i = 1; i < this._crewMessage.Elements.Count; i++) + { + ((CREW)this._crewMessage.Elements[i]).NotificationSchengen = firstCREW.NotificationSchengen; + } + } + } + + private void CheckCREWD() + { + if (this._crewdMessage.Elements.Count == 0) return; + CREWD firstCREW = this._crewdMessage.Elements[0] as CREWD; + if (this._crewdMessage.Elements.Count == 1) + { + firstCREW.NotificationSchengen = true; + this.checkBoxCrewNotificationSchengenDeparture.IsChecked = true; + } + else + { + for (int i = 1; i < this._crewdMessage.Elements.Count; i++) + { + ((CREWD)this._crewdMessage.Elements[i]).NotificationSchengen = firstCREW.NotificationSchengen; + } + } + } + + private void CheckPASA() + { + if(this._pasMessage.Elements.Count == 0) return; + PAS firstPAS = this._pasMessage.Elements[0] as PAS; + if(this._pasMessage.Elements.Count == 1) + { + firstPAS.NotificationSchengen = true; + this.checkBoxPasNotificationSchengen.IsChecked = true; + } + else + { + for (int i = 1; i < this._pasMessage.Elements.Count; i++) + { + ((PAS)this._pasMessage.Elements[i]).NotificationSchengen = firstPAS.NotificationSchengen; + } + } + } + + private void CheckPASD() + { + if(this._pasdMessage.Elements.Count == 0) return; + PASD firstPAS = this._pasdMessage.Elements[0] as PASD; + if (this._pasdMessage.Elements.Count == 1) + { + firstPAS.NotificationSchengen = true; + this.checkBoxPasNotificationSchengenDeparture.IsChecked = true; + } + else + { + for (int i = 1; i < this._pasdMessage.Elements.Count; i++) + { + ((PASD)this._pasdMessage.Elements[i]).NotificationSchengen = firstPAS.NotificationSchengen; + } + } + } + + #endregion + #region SetEnabled public override void SetEnabled(bool enabled) @@ -464,8 +540,11 @@ namespace ENI2.DetailViewControls epd.AddClicked += () => { epd.CopyValuesToEntity(); - if(!this._pasMessage.Elements.Contains(epd.PAS)) + if (!this._pasMessage.Elements.Contains(epd.PAS)) + { this._pasMessage.Elements.Add(epd.PAS); + this.CheckPASA(); + } this.dataGridPassengerList.Items.Refresh(); epd.PAS = new PAS { @@ -477,8 +556,11 @@ namespace ENI2.DetailViewControls if (epd.ShowDialog() ?? false) { - if(!this._pasMessage.Elements.Contains(epd.PAS)) + if (!this._pasMessage.Elements.Contains(epd.PAS)) + { _pasMessage.Elements.Add(epd.PAS); + this.CheckPASA(); + } this.dataGridPassengerList.Items.Refresh(); this.SublistElementChanged(Message.NotificationClass.PASA); } @@ -511,8 +593,11 @@ namespace ENI2.DetailViewControls epd.AddClicked += () => { epd.CopyValuesToEntity(); - if(!_pasMessage.Elements.Contains(epd.PAS)) + if (!_pasMessage.Elements.Contains(epd.PAS)) + { _pasMessage.Elements.Add(epd.PAS); + this.CheckPASA(); + } this.dataGridPassengerList.Items.Refresh(); epd.PAS = new PAS { @@ -525,7 +610,10 @@ namespace ENI2.DetailViewControls if (epd.ShowDialog() ?? false) { if (!_pasMessage.Elements.Contains(epd.PAS)) + { _pasMessage.Elements.Add(epd.PAS); + this.CheckPASA(); + } epd.PAS.IsDirty = true; this.dataGridPassengerList.Items.Refresh(); this.SublistElementChanged(Message.NotificationClass.PASA); @@ -555,7 +643,10 @@ namespace ENI2.DetailViewControls { epd.CopyValuesToEntity(); if (!this._pasdMessage.Elements.Contains(epd.PAS)) + { this._pasdMessage.Elements.Add(epd.PAS); + this.CheckPASD(); + } this.dataGridPassengerList.Items.Refresh(); epd.PAS = new PASD { @@ -569,7 +660,10 @@ namespace ENI2.DetailViewControls if (epd.ShowDialog() ?? false) { if (!this._pasdMessage.Elements.Contains(epd.PAS)) + { _pasdMessage.Elements.Add(epd.PAS); + this.CheckPASD(); + } this.dataGridPassengerListDeparture.Items.Refresh(); this.SublistElementChanged(Message.NotificationClass.PASD); } @@ -603,7 +697,10 @@ namespace ENI2.DetailViewControls { epd.CopyValuesToEntity(); if (!_pasMessage.Elements.Contains(epd.PAS)) + { _pasMessage.Elements.Add(epd.PAS); + this.CheckPASD(); + } this.dataGridPassengerList.Items.Refresh(); epd.PAS = new PASD { @@ -617,7 +714,10 @@ namespace ENI2.DetailViewControls if (epd.ShowDialog() ?? false) { if (!_pasdMessage.Elements.Contains(epd.PAS)) + { _pasdMessage.Elements.Add(epd.PAS); + this.CheckPASD(); + } epd.PAS.IsDirty = true; this.dataGridPassengerListDeparture.Items.Refresh(); this.SublistElementChanged(Message.NotificationClass.PASD); @@ -645,9 +745,12 @@ namespace ENI2.DetailViewControls ecd.AddClicked += () => { ecd.CopyValuesToEntity(); - if(!this._crewMessage.Elements.Contains(ecd.CREW)) + if (!this._crewMessage.Elements.Contains(ecd.CREW)) + { this._crewMessage.Elements.Add(ecd.CREW); - this.dataGridCrewList.Items.Refresh(); + this.CheckCREWA(); + } + this.dataGridCrewList.Items.Refresh(); ecd.CREW = new CREW { MessageHeader = this._crewMessage, @@ -658,8 +761,11 @@ namespace ENI2.DetailViewControls if (ecd.ShowDialog() ?? false) { - if(!this._crewMessage.Elements.Contains(ecd.CREW)) - _crewMessage.Elements.Add(ecd.CREW); + if (!this._crewMessage.Elements.Contains(ecd.CREW)) + { + _crewMessage.Elements.Add(ecd.CREW); + this.CheckCREWA(); + } this.dataGridCrewList.Items.Refresh(); this.SublistElementChanged(Message.NotificationClass.CREWA); } @@ -692,8 +798,11 @@ namespace ENI2.DetailViewControls ecd.AddClicked += () => { ecd.CopyValuesToEntity(); - if(!_crewMessage.Elements.Contains(ecd.CREW)) + if (!_crewMessage.Elements.Contains(ecd.CREW)) + { _crewMessage.Elements.Add(ecd.CREW); + this.CheckCREWA(); + } this.dataGridCrewList.Items.Refresh(); ecd.CREW = new CREW { @@ -706,7 +815,10 @@ namespace ENI2.DetailViewControls if (ecd.ShowDialog() ?? false) { if (!_crewMessage.Elements.Contains(ecd.CREW)) + { _crewMessage.Elements.Add(ecd.CREW); + this.CheckCREWA(); + } ecd.CREW.IsDirty = true; this.dataGridCrewList.Items.Refresh(); this.SublistElementChanged(Message.NotificationClass.CREWA); @@ -736,7 +848,10 @@ namespace ENI2.DetailViewControls { ecd.CopyValuesToEntity(); if (!this._crewdMessage.Elements.Contains(ecd.CREW)) + { this._crewdMessage.Elements.Add(ecd.CREW); + this.CheckCREWD(); + } this.dataGridCrewListDeparture.Items.Refresh(); ecd.CREW = new CREWD { @@ -750,7 +865,10 @@ namespace ENI2.DetailViewControls if (ecd.ShowDialog() ?? false) { if (!this._crewdMessage.Elements.Contains(ecd.CREW)) + { _crewdMessage.Elements.Add(ecd.CREW); + this.CheckCREWD(); + } this.dataGridCrewListDeparture.Items.Refresh(); this.SublistElementChanged(Message.NotificationClass.CREWD); } @@ -784,7 +902,10 @@ namespace ENI2.DetailViewControls { ecd.CopyValuesToEntity(); if (!_crewdMessage.Elements.Contains(ecd.CREW)) + { _crewdMessage.Elements.Add(ecd.CREW); + this.CheckCREWD(); + } this.dataGridCrewListDeparture.Items.Refresh(); ecd.CREW = new CREWD { @@ -798,7 +919,10 @@ namespace ENI2.DetailViewControls if (ecd.ShowDialog() ?? false) { if (!_crewdMessage.Elements.Contains(ecd.CREW)) + { _crewdMessage.Elements.Add(ecd.CREW); + this.CheckCREWD(); + } ecd.CREW.IsDirty = true; this.dataGridCrewListDeparture.Items.Refresh(); this.SublistElementChanged(Message.NotificationClass.CREWD); diff --git a/bsmd.ExcelReadService/Util.cs b/bsmd.ExcelReadService/Util.cs index ad843d48..2f8a2233 100644 --- a/bsmd.ExcelReadService/Util.cs +++ b/bsmd.ExcelReadService/Util.cs @@ -2332,6 +2332,7 @@ namespace bsmd.ExcelReadService crew.Identifier = (i + 1).ToString(); crew.MessageHeader = crewMessage; crewMessage.Elements.Add(crew); + crew.NotificationSchengen = true; } crew.CrewMemberLastName = lastName; @@ -2359,8 +2360,10 @@ namespace bsmd.ExcelReadService } // CREW DEPARTURE - crewMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.CREWD); - for (int i = 0; i < crewMessage.NumberOfExcelRows; i++) + crewdMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.CREWD); + crewdMessage.DeleteElements(); + + for (int i = 0; i < crewdMessage.NumberOfExcelRows; i++) { string crewLastName = string.Format("CREWD.CrewMemberLastName_{0}", i + 1); string crewFirstName = string.Format("CREWD.CrewMemberFirstName_{0}", i + 1); @@ -2376,12 +2379,13 @@ namespace bsmd.ExcelReadService string lastName = reader.ReadText(crewLastName); if (!lastName.IsNullOrEmpty()) { - if (!(crewMessage.GetSublistElementWithIdentifier((i + 1).ToString()) is CREWD crew)) + if (!(crewdMessage.GetSublistElementWithIdentifier((i + 1).ToString()) is CREWD crew)) { crew = new CREWD(); crew.Identifier = (i + 1).ToString(); - crew.MessageHeader = crewMessage; - crewMessage.Elements.Add(crew); + crew.MessageHeader = crewdMessage; + crewdMessage.Elements.Add(crew); + crew.NotificationSchengen = true; } crew.IsDeparture = true; @@ -2472,6 +2476,8 @@ namespace bsmd.ExcelReadService // PASSENGER DEPARTURE pasMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.PASD); + pasMessage.DeleteElements(); + for (int i = 0; i < pasMessage.NumberOfExcelRows; i++) { string pasLastName = string.Format("PASD.PassengerLastName_{0}", i + 1); @@ -2496,6 +2502,7 @@ namespace bsmd.ExcelReadService pas.Identifier = (i + 1).ToString(); pas.MessageHeader = pasMessage; pasMessage.Elements.Add(pas); + pas.NotificationSchengen = true; } pas.IsDeparture = true;