// Copyright (c) 2017 schick Informatik // Description: Detailansicht für BPOL, CREW(D), PAS(D) // using System; using System.Collections.Generic; using Microsoft.Win32; using System.Windows; using System.IO; using System.Windows.Controls; using ENI2.EditControls; using ENI2.Util; using ENI2.Locode; using ExcelDataReader; using bsmd.database; using System.Windows.Media.Imaging; namespace ENI2.DetailViewControls { /// /// Interaction logic for BorderPoliceDetailControl.xaml /// public partial class BorderPoliceDetailControl : DetailBaseControl { private Message _bpolMessage; private Message _crewMessage; private Message _crewdMessage; private Message _pasMessage; private Message _pasdMessage; private Message _secMessage; private BPOL _bpol; private SEC _sec; public BorderPoliceDetailControl() { InitializeComponent(); this.Loaded += BorderPoliceDetailControl_Loaded; } private void BorderPoliceDetailControl_Loaded(object sender, RoutedEventArgs e) { this.RegisterCheckboxChange(this.checkBoxCruiseShip, Message.NotificationClass.BPOL); this.RegisterCheckboxChange(this.checkBoxStowaways, Message.NotificationClass.BPOL); } public override void Initialize() { base.Initialize(); foreach (Message aMessage in this.Messages) { if (aMessage.MessageNotificationClass == Message.NotificationClass.BPOL) { this._bpolMessage = aMessage; this.ControlMessages.Add(aMessage); } if (aMessage.MessageNotificationClass == Message.NotificationClass.CREWA) { this._crewMessage = aMessage; this.ControlMessages.Add(aMessage); } if (aMessage.MessageNotificationClass == Message.NotificationClass.PASA) { this._pasMessage = aMessage; this.ControlMessages.Add(aMessage); } if (aMessage.MessageNotificationClass == Message.NotificationClass.CREWD) { this._crewdMessage = aMessage; this.ControlMessages.Add(aMessage); } if (aMessage.MessageNotificationClass == Message.NotificationClass.PASD) { this._pasdMessage = aMessage; this.ControlMessages.Add(aMessage); } if (aMessage.MessageNotificationClass == Message.NotificationClass.SEC) { this._secMessage = aMessage; if (this._secMessage.Elements.Count > 0) this._sec = this._secMessage.Elements[0] as SEC; } } #region init BPOL if (this._bpolMessage == null) { this._bpolMessage = this.Core.CreateMessage(Message.NotificationClass.BPOL); this.Messages.Add(this._bpolMessage); } BPOL bpol = null; if (this._bpolMessage.Elements.Count > 0) bpol = this._bpolMessage.Elements[0] as BPOL; if (bpol == null) { bpol = new BPOL { MessageCore = this.Core, MessageHeader = this._bpolMessage }; _bpolMessage.Elements.Add(bpol); } this.groupBoxBorderPolice.DataContext = bpol; this._bpol = bpol; this.dataGridPortOfItinerary.Initialize(); this.dataGridPortOfItinerary.ItemsSource = bpol.PortOfItineraries; this.dataGridPortOfItinerary.AddingNewItem += DataGridPortOfItinerary_AddingNewItem; this.dataGridPortOfItinerary.EditRequested += DataGridPortOfItinerary_EditRequested; this.dataGridPortOfItinerary.DeleteRequested += DataGridPortOfItinerary_DeleteRequested; this.dataGridPortOfItinerary.CreateRequested += DataGridPortOfItinerary_CreateRequested; #endregion #region init CREWA if (this._crewMessage == null) { this._crewMessage = this.Core.CreateMessage(Message.NotificationClass.CREWA); this.Messages.Add(this._crewMessage); } this.groupBoxCrewList.DataContext = this._crewMessage; this.dataGridCrewList.Initialize(); this.dataGridCrewList.ItemsSource = this._crewMessage.Elements; this.dataGridCrewList.AddingNewItem += DataGridCrewList_AddingNewItem; this.dataGridCrewList.EditRequested += DataGridCrewList_EditRequested; this.dataGridCrewList.DeleteRequested += DataGridCrewList_DeleteRequested; this.dataGridCrewList.CreateRequested += DataGridCrewList_CreateRequested; this.dataGridCrewList.RefreshGrid += DataGridCrewList_RefreshGrid; if(this._crewMessage.Elements.Count > 0) { this.checkBoxCrewNotificationSchengen.IsChecked = ((CREW)this._crewMessage.Elements[0]).NotificationSchengen; this.checkBoxCrewNotificationPAX.IsChecked = ((CREW)this._crewMessage.Elements[0]).NotificationPAX; } // extra menu copy to CREWD { this.dataGridCrewList.ContextMenu.Items.Add(new Separator()); MenuItem copyCREWAItem = new MenuItem(); copyCREWAItem.Header = Properties.Resources.textCopyToCREWD; copyCREWAItem.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) }; copyCREWAItem.Click += CopyCREWAItem_Click; this.dataGridCrewList.ContextMenu.Items.Add(copyCREWAItem); } #endregion #region init CREWD if (this._crewdMessage == null) { this._crewdMessage = this.Core.CreateMessage(Message.NotificationClass.CREWD); this.Messages.Add(this._crewdMessage); } this.groupBoxCrewListDeparture.DataContext = this._crewdMessage; this.dataGridCrewListDeparture.Initialize(); this.dataGridCrewListDeparture.ItemsSource = this._crewdMessage.Elements; this.dataGridCrewListDeparture.AddingNewItem += DataGridCrewListDeparture_AddingNewItem; this.dataGridCrewListDeparture.EditRequested += DataGridCrewListDeparture_EditRequested; this.dataGridCrewListDeparture.DeleteRequested += DataGridCrewListDeparture_DeleteRequested; this.dataGridCrewListDeparture.CreateRequested += DataGridCrewListDeparture_CreateRequested; this.dataGridCrewListDeparture.RefreshGrid += DataGridCrewListDeparture_RefreshGrid; if (this._crewdMessage.Elements.Count > 0) { this.checkBoxCrewNotificationSchengenDeparture.IsChecked = ((CREWD)this._crewdMessage.Elements[0]).NotificationSchengen; this.checkBoxCrewNotificationPAXDeparture.IsChecked = ((CREWD)this._crewdMessage.Elements[0]).NotificationPAX; } // extra menu copy to CREWA { this.dataGridCrewListDeparture.ContextMenu.Items.Add(new Separator()); MenuItem copyCREWDItem = new MenuItem(); copyCREWDItem.Header = Properties.Resources.textCopyToCREWA; copyCREWDItem.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) }; copyCREWDItem.Click += CopyCREWDItem_Click; this.dataGridCrewListDeparture.ContextMenu.Items.Add(copyCREWDItem); } #endregion #region init PASA if (this._pasMessage == null) { this._pasMessage = this.Core.CreateMessage(Message.NotificationClass.PASA); this.Messages.Add(this._pasMessage); } this.groupBoxPassengerList.DataContext = this._pasMessage; this.dataGridPassengerList.Initialize(); this.dataGridPassengerList.ItemsSource = this._pasMessage.Elements; this.dataGridPassengerList.AddingNewItem += DataGridPassengerList_AddingNewItem; this.dataGridPassengerList.EditRequested += DataGridPassengerList_EditRequested; this.dataGridPassengerList.DeleteRequested += DataGridPassengerList_DeleteRequested; this.dataGridPassengerList.CreateRequested += DataGridPassengerList_CreateRequested; this.dataGridPassengerList.RefreshGrid += DataGridPassengerList_RefreshGrid; if (this._pasMessage.Elements.Count > 0) { this.checkBoxPasNotificationSchengen.IsChecked = ((PAS)this._pasMessage.Elements[0]).NotificationSchengen; this.checkBoxPasNotificationPAX.IsChecked = ((PAS)this._pasMessage.Elements[0]).NotificationPAX; } // extra menu copy to PASD { this.dataGridPassengerList.ContextMenu.Items.Add(new Separator()); MenuItem copyPASAItem = new MenuItem(); copyPASAItem.Header = Properties.Resources.textCopyToPASD; copyPASAItem.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) }; copyPASAItem.Click += CopyPASAItem_Click; this.dataGridPassengerList.ContextMenu.Items.Add(copyPASAItem); } #endregion #region init PASD if (this._pasdMessage == null) { this._pasdMessage = this.Core.CreateMessage(Message.NotificationClass.PASD); this.Messages.Add(this._pasdMessage); } this.groupBoxPassengerListDeparture.DataContext = this._pasdMessage; this.dataGridPassengerListDeparture.Initialize(); this.dataGridPassengerListDeparture.ItemsSource = this._pasdMessage.Elements; this.dataGridPassengerListDeparture.AddingNewItem += DataGridPassengerListDeparture_AddingNewItem; this.dataGridPassengerListDeparture.EditRequested += DataGridPassengerListDeparture_EditRequested; this.dataGridPassengerListDeparture.DeleteRequested += DataGridPassengerListDeparture_DeleteRequested; this.dataGridPassengerListDeparture.CreateRequested += DataGridPassengerListDeparture_CreateRequested; this.dataGridPassengerListDeparture.RefreshGrid += DataGridPassengerListDeparture_RefreshGrid; if (this._pasdMessage.Elements.Count > 0) { this.checkBoxPasNotificationSchengenDeparture.IsChecked = ((PASD)this._pasdMessage.Elements[0]).NotificationSchengen; this.checkBoxPasNotificationPAXDeparture.IsChecked = ((PASD)this._pasdMessage.Elements[0]).NotificationPAX; } // extra menu copy to PASA { this.dataGridPassengerListDeparture.ContextMenu.Items.Add(new Separator()); 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; ; this.dataGridPassengerListDeparture.ContextMenu.Items.Add(copyPASDItem); } #endregion } #region Grid copy handlers private void CopyPASDItem_Click(object sender, RoutedEventArgs e) { if (this.dataGridPassengerListDeparture.SelectedItems != null) { foreach (PASD pasd in this.dataGridPassengerListDeparture.SelectedItems) { PAS pasa = new PAS(); pasa.MessageHeader = this._pasMessage; pasa.CopyFromPAS(pasd); pasa.IsDeparture = false; pasa.Identifier = DatabaseEntity.GetNewIdentifier(this._pasMessage.Elements); this._pasMessage.Elements.Add(pasa); this.SublistElementChanged(Message.NotificationClass.PASA); } } } private void CopyPASAItem_Click(object sender, RoutedEventArgs e) { if (this.dataGridPassengerList.SelectedItems != null) { foreach (PAS pasa in this.dataGridPassengerList.SelectedItems) { PASD pasd = new PASD(); pasd.MessageHeader = this._pasdMessage; pasd.CopyFromPAS(pasa); pasd.IsDeparture = true; pasd.Identifier = DatabaseEntity.GetNewIdentifier(this._pasdMessage.Elements); this._pasdMessage.Elements.Add(pasd); this.SublistElementChanged(Message.NotificationClass.PASD); } } } private void CopyCREWDItem_Click(object sender, RoutedEventArgs e) { if (this.dataGridCrewListDeparture.SelectedItems != null) { foreach (CREWD crewd in this.dataGridCrewListDeparture.SelectedItems) { CREW crewa = new CREW(); crewa.MessageHeader = this._crewMessage; crewa.CopyFromCREW(crewd); crewa.IsDeparture = false; crewa.Identifier = DatabaseEntity.GetNewIdentifier(this._crewMessage.Elements); this._crewMessage.Elements.Add(crewa); this.SublistElementChanged(Message.NotificationClass.CREWA); } } } private void CopyCREWAItem_Click(object sender, RoutedEventArgs e) { if(this.dataGridCrewList.SelectedItems != null) { foreach(CREW crewa in this.dataGridCrewList.SelectedItems) { CREWD crewd = new CREWD(); crewd.MessageHeader = this._crewdMessage; crewd.CopyFromCREW(crewa); crewd.IsDeparture = true; crewd.Identifier = DatabaseEntity.GetNewIdentifier(this._crewdMessage.Elements); this._crewdMessage.Elements.Add(crewd); this.SublistElementChanged(Message.NotificationClass.CREWD); } } } #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) { this.groupBoxBorderPolice.IsEnabled = enabled; this.groupBoxCrewList.IsEnabled = enabled; this.groupBoxPassengerList.IsEnabled = enabled; } #endregion #region port of itinerary grid private void DataGridPortOfItinerary_CreateRequested() { EditPortOfItineraryDialog epid = new EditPortOfItineraryDialog { PortOfItinerary = new PortOfItinerary() }; epid.PortOfItinerary.Identifier = PortOfItinerary.GetNewIdentifier(this._bpol.PortOfItineraries); epid.PortOfItinerary.BPOL = this._bpol; epid.AddClicked += () => { epid.CopyValuesToEntity(); if(!this._bpol.PortOfItineraries.Contains(epid.PortOfItinerary)) this._bpol.PortOfItineraries.Add(epid.PortOfItinerary); this.dataGridPortOfItinerary.Items.Refresh(); epid.PortOfItinerary = new PortOfItinerary { BPOL = _bpol, Identifier = PortOfItinerary.GetNewIdentifier(this._bpol.PortOfItineraries) }; this.SublistElementChanged(Message.NotificationClass.BPOL); }; if (epid.ShowDialog() ?? false) { if(!_bpol.PortOfItineraries.Contains(epid.PortOfItinerary)) _bpol.PortOfItineraries.Add(epid.PortOfItinerary); this.dataGridPortOfItinerary.Items.Refresh(); this.SublistElementChanged(Message.NotificationClass.BPOL); } } private void DataGridPortOfItinerary_DeleteRequested(DatabaseEntity obj) { if (obj is PortOfItinerary poi) { // are you sure dialog is in base class _bpol.PortOfItineraries.Remove(poi); DBManager.Instance.Delete(poi); DatabaseEntity.ResetIdentifiers(new List(_bpol.PortOfItineraries)); this.SublistElementChanged(Message.NotificationClass.BPOL); this.dataGridPortOfItinerary.Items.Refresh(); } } private void DataGridPortOfItinerary_EditRequested(DatabaseEntity obj) { EditPortOfItineraryDialog epid = new EditPortOfItineraryDialog { PortOfItinerary = obj as PortOfItinerary }; epid.AddClicked += () => { epid.CopyValuesToEntity(); if(!_bpol.PortOfItineraries.Contains(epid.PortOfItinerary)) _bpol.PortOfItineraries.Add(epid.PortOfItinerary); this.dataGridPortOfItinerary.Items.Refresh(); epid.PortOfItinerary = new PortOfItinerary { BPOL = this._bpol, Identifier = PortOfItinerary.GetNewIdentifier(this._bpol.PortOfItineraries) }; this.SublistElementChanged(Message.NotificationClass.BPOL); }; if (epid.ShowDialog() ?? false) { if (!_bpol.PortOfItineraries.Contains(epid.PortOfItinerary)) this._bpol.PortOfItineraries.Add(epid.PortOfItinerary); this.dataGridPortOfItinerary.Items.Refresh(); this.SublistElementChanged(Message.NotificationClass.BPOL); } } private void DataGridPortOfItinerary_AddingNewItem(object sender, AddingNewItemEventArgs e) { this.DataGridPortOfItinerary_CreateRequested(); } private void buttonImportFromSEC_Click(object sender, RoutedEventArgs e) { if (this._bpol.PortOfItineraries.Count > 0) { MessageBox.Show(Properties.Resources.textOnlyIfGridIsEmpty, Properties.Resources.textCaptionError, MessageBoxButton.OK, MessageBoxImage.Warning); } else { if (this._sec != null) { foreach (LastTenPortFacilitiesCalled l10fc in _sec.LastTenPortFacilitesCalled) { //if (l10fc.PortFacilityDateOfDeparture.HasValue && //((DateTime.Now - l10fc.PortFacilityDateOfDeparture.Value).TotalDays < 31)) //{ DateTime? eta = null; if (l10fc.PortFacilityDateOfArrival.HasValue) { eta = new DateTime(l10fc.PortFacilityDateOfArrival.Value.Year, l10fc.PortFacilityDateOfArrival.Value.Month, l10fc.PortFacilityDateOfArrival.Value.Day, 11, 11, 11).ToUniversalTime(); } PortOfItinerary poi = new PortOfItinerary { Identifier = PortOfItinerary.GetNewIdentifier(this._bpol.PortOfItineraries), BPOL = this._bpol, PortOfItineraryETA = eta, PortOfItineraryLocode = l10fc.PortFacilityPortLoCode, PortOfItineraryName = l10fc.PortFacilityPortName }; this._bpol.PortOfItineraries.Add(poi); //} } if (this._bpol.PortOfItineraries.Count > 0) { this.dataGridPortOfItinerary.Items.Refresh(); this.SublistElementChanged(Message.NotificationClass.BPOL); } } } } #endregion #region passenger grid arrival private void DataGridPassengerList_CreateRequested() { EditPASDialog epd = new EditPASDialog { PAS = new PAS() }; epd.PAS.Identifier = PAS.GetNewIdentifier(_pasMessage.Elements); epd.PAS.MessageHeader = this._pasMessage; epd.AddClicked += () => { epd.CopyValuesToEntity(); if (!this._pasMessage.Elements.Contains(epd.PAS)) { this._pasMessage.Elements.Add(epd.PAS); this.CheckPASA(); } this.dataGridPassengerList.Items.Refresh(); epd.PAS = new PAS { MessageHeader = this._pasMessage, Identifier = PAS.GetNewIdentifier(_pasMessage.Elements) }; this.SublistElementChanged(Message.NotificationClass.PASA); }; if (epd.ShowDialog() ?? false) { if (!this._pasMessage.Elements.Contains(epd.PAS)) { _pasMessage.Elements.Add(epd.PAS); this.CheckPASA(); } this.dataGridPassengerList.Items.Refresh(); this.SublistElementChanged(Message.NotificationClass.PASA); } } private void DataGridPassengerList_DeleteRequested(DatabaseEntity obj) { if (obj is PAS pas) { // are you sure dialog is in base class _pasMessage.Elements.Remove(pas); DBManager.Instance.Delete(pas); } } private void DataGridPassengerList_RefreshGrid() { DatabaseEntity.ResetIdentifiers(_pasMessage.Elements); this.SublistElementChanged(Message.NotificationClass.PASA); this.dataGridPassengerList.Items.Refresh(); } private void DataGridPassengerList_EditRequested(DatabaseEntity obj) { EditPASDialog epd = new EditPASDialog { PAS = obj as PAS }; epd.AddClicked += () => { epd.CopyValuesToEntity(); if (!_pasMessage.Elements.Contains(epd.PAS)) { _pasMessage.Elements.Add(epd.PAS); this.CheckPASA(); } this.dataGridPassengerList.Items.Refresh(); epd.PAS = new PAS { Identifier = PAS.GetNewIdentifier(_pasMessage.Elements), MessageHeader = _pasMessage }; this.SublistElementChanged(Message.NotificationClass.PASA); }; 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); } } private void DataGridPassengerList_AddingNewItem(object sender, AddingNewItemEventArgs e) { this.DataGridPassengerList_CreateRequested(); } #endregion #region passenger grid departure private void DataGridPassengerListDeparture_CreateRequested() { EditPASDialog epd = new EditPASDialog { PAS = new PASD() }; epd.PAS.IsDeparture = true; epd.PAS.Identifier = PASD.GetNewIdentifier(_pasdMessage.Elements); epd.PAS.MessageHeader = this._pasdMessage; epd.AddClicked += () => { 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 { IsDeparture = true, MessageHeader = this._pasdMessage, Identifier = PASD.GetNewIdentifier(_pasdMessage.Elements) }; this.SublistElementChanged(Message.NotificationClass.PASD); }; 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); } } private void DataGridPassengerListDeparture_DeleteRequested(DatabaseEntity obj) { if (obj is PASD pasd) { // are you sure dialog is in base class _pasdMessage.Elements.Remove(pasd); DBManager.Instance.Delete(pasd); } } private void DataGridPassengerListDeparture_RefreshGrid() { DatabaseEntity.ResetIdentifiers(_pasdMessage.Elements); this.SublistElementChanged(Message.NotificationClass.PASD); this.dataGridPassengerListDeparture.Items.Refresh(); } private void DataGridPassengerListDeparture_EditRequested(DatabaseEntity obj) { EditPASDialog epd = new EditPASDialog { PAS = obj as PASD }; epd.AddClicked += () => { epd.CopyValuesToEntity(); if (!_pasMessage.Elements.Contains(epd.PAS)) { _pasMessage.Elements.Add(epd.PAS); this.CheckPASD(); } this.dataGridPassengerList.Items.Refresh(); epd.PAS = new PASD { IsDeparture = true, Identifier = PASD.GetNewIdentifier(_pasdMessage.Elements), MessageHeader = _pasdMessage }; this.SublistElementChanged(Message.NotificationClass.PASD); }; 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); } } private void DataGridPassengerListDeparture_AddingNewItem(object sender, AddingNewItemEventArgs e) { this.DataGridPassengerListDeparture_CreateRequested(); } #endregion #region crew grid arrival private void DataGridCrewList_CreateRequested() { EditCREWDialog ecd = new EditCREWDialog { CREW = new CREW() }; ecd.CREW.Identifier = CREW.GetNewIdentifier(_crewMessage.Elements); ecd.CREW.MessageHeader = this._crewMessage; ecd.AddClicked += () => { ecd.CopyValuesToEntity(); if (!this._crewMessage.Elements.Contains(ecd.CREW)) { this._crewMessage.Elements.Add(ecd.CREW); this.CheckCREWA(); } this.dataGridCrewList.Items.Refresh(); ecd.CREW = new CREW { MessageHeader = this._crewMessage, Identifier = CREW.GetNewIdentifier(_crewMessage.Elements) }; this.SublistElementChanged(Message.NotificationClass.CREWA); }; if (ecd.ShowDialog() ?? false) { if (!this._crewMessage.Elements.Contains(ecd.CREW)) { _crewMessage.Elements.Add(ecd.CREW); this.CheckCREWA(); } this.dataGridCrewList.Items.Refresh(); this.SublistElementChanged(Message.NotificationClass.CREWA); } } private void DataGridCrewList_DeleteRequested(DatabaseEntity obj) { if (obj is CREW crew) { // are you sure dialog is in base class _crewMessage.Elements.Remove(crew); DBManager.Instance.Delete(crew); } } private void DataGridCrewList_RefreshGrid() { DatabaseEntity.ResetIdentifiers(_crewMessage.Elements); this.SublistElementChanged(Message.NotificationClass.CREWA); this.dataGridCrewList.Items.Refresh(); } private void DataGridCrewList_EditRequested(DatabaseEntity obj) { EditCREWDialog ecd = new EditCREWDialog { CREW = obj as CREW }; ecd.AddClicked += () => { ecd.CopyValuesToEntity(); if (!_crewMessage.Elements.Contains(ecd.CREW)) { _crewMessage.Elements.Add(ecd.CREW); this.CheckCREWA(); } this.dataGridCrewList.Items.Refresh(); ecd.CREW = new CREW { Identifier = CREW.GetNewIdentifier(_crewMessage.Elements), MessageHeader = _crewMessage }; this.SublistElementChanged(Message.NotificationClass.CREWA); }; 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); } } private void DataGridCrewList_AddingNewItem(object sender, AddingNewItemEventArgs e) { this.DataGridCrewList_CreateRequested(); } #endregion #region crew grid departure private void DataGridCrewListDeparture_CreateRequested() { EditCREWDialog ecd = new EditCREWDialog { CREW = new CREWD() }; ecd.CREW.IsDeparture = true; ecd.CREW.Identifier = CREWD.GetNewIdentifier(_crewdMessage.Elements); ecd.CREW.MessageHeader = this._crewdMessage; ecd.AddClicked += () => { 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 { IsDeparture = true, MessageHeader = this._crewdMessage, Identifier = CREWD.GetNewIdentifier(_crewdMessage.Elements) }; this.SublistElementChanged(Message.NotificationClass.CREWD); }; 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); } } private void DataGridCrewListDeparture_DeleteRequested(DatabaseEntity obj) { if (obj is CREWD crewd) { // are you sure dialog is in base class _crewMessage.Elements.Remove(crewd); DBManager.Instance.Delete(crewd); } } private void DataGridCrewListDeparture_RefreshGrid() { DatabaseEntity.ResetIdentifiers(_crewdMessage.Elements); this.SublistElementChanged(Message.NotificationClass.CREWD); this.dataGridCrewListDeparture.Items.Refresh(); } private void DataGridCrewListDeparture_EditRequested(DatabaseEntity obj) { EditCREWDialog ecd = new EditCREWDialog { CREW = obj as CREWD }; ecd.AddClicked += () => { ecd.CopyValuesToEntity(); if (!_crewdMessage.Elements.Contains(ecd.CREW)) { _crewdMessage.Elements.Add(ecd.CREW); this.CheckCREWD(); } this.dataGridCrewListDeparture.Items.Refresh(); ecd.CREW = new CREWD { IsDeparture = true, Identifier = CREWD.GetNewIdentifier(_crewdMessage.Elements), MessageHeader = _crewdMessage }; this.SublistElementChanged(Message.NotificationClass.CREWD); }; 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); } } private void DataGridCrewListDeparture_AddingNewItem(object sender, AddingNewItemEventArgs e) { this.DataGridCrewListDeparture_CreateRequested(); } #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); } private void buttonImportExcelCrew_Click(object sender, RoutedEventArgs e) { OpenFileDialog ofd = new OpenFileDialog { Filter = "Excel Files|*.xls;*.xlsx" }; if (ofd.ShowDialog() ?? false) { FileStream stream; try { stream = File.Open(ofd.FileName, FileMode.Open, FileAccess.Read); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } using (IExcelDataReader reader = ExcelReaderFactory.CreateReader(stream)) { List importCrew = new List(); try { do { while (reader.Read()) { if(reader.FieldCount < 13) { throw new InvalidDataException("Sheet must have 13 columns of data"); } CREW crew = new CREW(); if (reader.IsDBNull(0) && reader.IsDBNull(1)) continue; if (!reader.IsDBNull(0)) crew.CrewMemberLastName = reader.GetString(0).Clean(); if (crew.CrewMemberLastName.Equals("Family Name") || (crew.CrewMemberLastName.Trim().Length == 0)) continue; if (!reader.IsDBNull(1)) crew.CrewMemberFirstName = reader.GetString(1).Clean(); if (!reader.IsDBNull(2)) crew.CrewMemberGender = GlobalStructures.ParseGender(reader.GetString(2)); if (!reader.IsDBNull(3)) crew.CrewMemberDuty = reader.GetString(3).Clean(); if (!reader.IsDBNull(4)) crew.CrewMemberNationality = reader.GetString(4).Substring(0, 2).ToUpper(); if (!reader.IsDBNull(5)) crew.CrewMemberPlaceOfBirth = reader.GetString(5).Clean(); 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(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(); crew.MessageHeader = this._crewMessage; crew.IsDirty = true; crew.Identifier = CREW.GetNewIdentifier(this._crewMessage.Elements); this._crewMessage.Elements.Add(crew); importCrew.Add(crew); } } while (reader.NextResult()); } catch (Exception ex) { MessageBox.Show("Error reading Excel: " + ex.Message, Properties.Resources.textCaptionError, MessageBoxButton.OK, MessageBoxImage.Error); } if (importCrew.Count > 0) { this.dataGridCrewList.Items.Refresh(); this.SublistElementChanged(Message.NotificationClass.CREWA); MessageBox.Show(String.Format(Properties.Resources.textCrewImported, importCrew.Count), Properties.Resources.textCaptionInformation, MessageBoxButton.OK, MessageBoxImage.Information); } } stream.Close(); } } private void buttonImportExcelCrewDeparture_Click(object sender, RoutedEventArgs e) { OpenFileDialog ofd = new OpenFileDialog { Filter = "Excel Files|*.xls;*.xlsx" }; if (ofd.ShowDialog() ?? false) { FileStream stream; try { stream = File.Open(ofd.FileName, FileMode.Open, FileAccess.Read); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } using (IExcelDataReader reader = ExcelReaderFactory.CreateReader(stream)) { List importCrew = new List(); try { do { while (reader.Read()) { if (reader.FieldCount < 13) { throw new InvalidDataException("Sheet must have 13 columns of data"); } CREWD crew = new CREWD(); crew.IsDeparture = true; if (reader.IsDBNull(0) && reader.IsDBNull(1)) continue; if (!reader.IsDBNull(0)) crew.CrewMemberLastName = reader.GetString(0); if (crew.CrewMemberLastName.Equals("Family Name") || (crew.CrewMemberLastName.Trim().Length == 0)) continue; if (!reader.IsDBNull(1)) crew.CrewMemberFirstName = reader.GetString(1); if (!reader.IsDBNull(2)) crew.CrewMemberGender = GlobalStructures.ParseGender(reader.GetString(2)); if (!reader.IsDBNull(3)) crew.CrewMemberDuty = reader.GetString(3); if (!reader.IsDBNull(4)) crew.CrewMemberNationality = reader.GetString(4).Substring(0, 2).ToUpper(); if (!reader.IsDBNull(5)) crew.CrewMemberPlaceOfBirth = reader.GetString(5); 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(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); crew.MessageHeader = this._crewMessage; crew.IsDirty = true; crew.Identifier = CREWD.GetNewIdentifier(this._crewdMessage.Elements); this._crewdMessage.Elements.Add(crew); importCrew.Add(crew); } } while (reader.NextResult()); } catch (Exception ex) { MessageBox.Show("Error reading Excel: " + ex.Message, Properties.Resources.textCaptionError, MessageBoxButton.OK, MessageBoxImage.Error); } if (importCrew.Count > 0) { this.dataGridCrewListDeparture.Items.Refresh(); this.SublistElementChanged(Message.NotificationClass.CREWD); MessageBox.Show(String.Format(Properties.Resources.textCrewImported, importCrew.Count), Properties.Resources.textCaptionInformation, MessageBoxButton.OK, MessageBoxImage.Information); } } stream.Close(); } } private void buttonImportExcelPassenger_Click(object sender, RoutedEventArgs e) { OpenFileDialog ofd = new OpenFileDialog { Filter = "Excel Files|*.xls;*.xlsx" }; if (ofd.ShowDialog() ?? false) { FileStream stream; try { stream = File.Open(ofd.FileName, FileMode.Open, FileAccess.Read); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } using (var reader = ExcelReaderFactory.CreateReader(stream)) { List importPassenger = new List(); try { do { while (reader.Read()) { if (((IExcelDataReader)reader).FieldCount < 17) { throw new InvalidDataException("Sheet must have 17 columns of data"); } PAS pas = new PAS(); if (reader.IsDBNull(0) && reader.IsDBNull(1)) continue; if (!reader.IsDBNull(0)) pas.PassengerLastName = reader.GetValue(0).ToString().Clean(); if (pas.PassengerLastName.Equals("Family Name") || (pas.PassengerLastName.Trim().Length == 0)) continue; if (!reader.IsDBNull(1)) pas.PassengerFirstName = reader.GetValue(1).ToString().Clean(); if (!reader.IsDBNull(2)) pas.PassengerGender = GlobalStructures.ParseGender(reader.GetString(2)); if (!reader.IsDBNull(3)) pas.PassengerPortOfEmbarkation = reader.GetString(3).Clean(); if (LocodeDB.PortNameFromLocode(pas.PassengerPortOfEmbarkation) == null) pas.PassengerPortOfEmbarkation = null; if (!reader.IsDBNull(4)) pas.PassengerPortOfDisembarkation = reader.GetString(4).Clean(); if (LocodeDB.PortNameFromLocode(pas.PassengerPortOfDisembarkation) == null) pas.PassengerPortOfDisembarkation = null; if (!reader.IsDBNull(5)) pas.PassengerInTransit = GlobalStructures.ReadBoolean(reader.GetString(5)); if (!reader.IsDBNull(6)) pas.PassengerNationality = reader.GetString(6).Substring(0, 2).ToUpper(); if (!reader.IsDBNull(7)) pas.PassengerPlaceOfBirth = reader.GetString(7).Clean(); 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(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(15)) pas.EmergencyCare = reader.GetString(15).Clean(); if (!reader.IsDBNull(16)) pas.EmergencyContactNumber = this.getValueAsString(reader, 16).Clean(); pas.MessageHeader = this._pasMessage; pas.IsDirty = true; pas.Identifier = PAS.GetNewIdentifier(this._pasMessage.Elements); this._pasMessage.Elements.Add(pas); importPassenger.Add(pas); } } while (reader.NextResult()); } catch (Exception ex) { MessageBox.Show("Error reading Excel: " + ex.Message, Properties.Resources.textCaptionError, MessageBoxButton.OK, MessageBoxImage.Error); } if (importPassenger.Count > 0) { this.dataGridPassengerList.Items.Refresh(); this.SublistElementChanged(Message.NotificationClass.PASA); MessageBox.Show(String.Format(Properties.Resources.textPassengerImported, importPassenger.Count), Properties.Resources.textCaptionInformation, MessageBoxButton.OK, MessageBoxImage.Information); } } stream.Close(); } } private void buttonImportExcelPassengerDeparture_Click(object sender, RoutedEventArgs e) { OpenFileDialog ofd = new OpenFileDialog { Filter = "Excel Files|*.xls;*.xlsx" }; if (ofd.ShowDialog() ?? false) { FileStream stream; try { stream = File.Open(ofd.FileName, FileMode.Open, FileAccess.Read); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } using (var reader = ExcelReaderFactory.CreateReader(stream)) { List importPassenger = new List(); try { do { while (reader.Read()) { if (((IExcelDataReader)reader).FieldCount < 17) { throw new InvalidDataException("Sheet must have 17 columns of data"); } PASD pas = new PASD(); if (reader.IsDBNull(0) && reader.IsDBNull(1)) continue; if (!reader.IsDBNull(0)) pas.PassengerLastName = reader.GetValue(0).ToString(); if (pas.PassengerLastName.Equals("Family Name") || (pas.PassengerLastName.Trim().Length == 0)) continue; if (!reader.IsDBNull(1)) pas.PassengerFirstName = reader.GetValue(1).ToString(); if (!reader.IsDBNull(2)) pas.PassengerGender = GlobalStructures.ParseGender(reader.GetString(2)); if (!reader.IsDBNull(3)) pas.PassengerPortOfEmbarkation = reader.GetString(3); if (LocodeDB.PortNameFromLocode(pas.PassengerPortOfEmbarkation) == null) pas.PassengerPortOfEmbarkation = null; if (!reader.IsDBNull(4)) pas.PassengerPortOfDisembarkation = reader.GetString(4); if (LocodeDB.PortNameFromLocode(pas.PassengerPortOfDisembarkation) == null) pas.PassengerPortOfDisembarkation = null; if (!reader.IsDBNull(5)) pas.PassengerInTransit = GlobalStructures.ReadBoolean(reader.GetString(5)); if (!reader.IsDBNull(6)) pas.PassengerNationality = reader.GetString(6).Substring(0, 2).ToUpper(); if (!reader.IsDBNull(7)) pas.PassengerPlaceOfBirth = reader.GetString(7); 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(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(15)) pas.EmergencyCare = reader.GetString(15); if (!reader.IsDBNull(16)) pas.EmergencyContactNumber = this.getValueAsString(reader, 16); pas.MessageHeader = this._pasMessage; pas.IsDirty = true; pas.Identifier = PASD.GetNewIdentifier(this._pasdMessage.Elements); this._pasdMessage.Elements.Add(pas); importPassenger.Add(pas); } } while (reader.NextResult()); } catch (Exception ex) { MessageBox.Show("Error reading Excel: " + ex.Message, Properties.Resources.textCaptionError, MessageBoxButton.OK, MessageBoxImage.Error); } if (importPassenger.Count > 0) { this.dataGridPassengerListDeparture.Items.Refresh(); this.SublistElementChanged(Message.NotificationClass.PASD); MessageBox.Show(String.Format(Properties.Resources.textPassengerImported, importPassenger.Count), Properties.Resources.textCaptionInformation, MessageBoxButton.OK, MessageBoxImage.Information); } } stream.Close(); } } #endregion #region Highlighting public override void HighlightErrorMessageContainer() { if (this._bpolMessage.HasErrors) HighlightService.HighlightControl(this.groupBoxBorderPolice, HighlightService.HighlightStyle.ERROR, this._bpolMessage); if (this._crewMessage.HasErrors) HighlightService.HighlightControl(this.groupBoxCrewList, HighlightService.HighlightStyle.ERROR, this._crewMessage); if (this._pasMessage.HasErrors) HighlightService.HighlightControl(this.groupBoxPassengerList, HighlightService.HighlightStyle.ERROR, this._pasMessage); } public override void HighlightViolationMessageContainer() { if (this._bpolMessage.HasViolations) HighlightService.HighlightControl(this.groupBoxBorderPolice, HighlightService.HighlightStyle.VIOLATION, this._bpolMessage); if (this._crewMessage.HasViolations) HighlightService.HighlightControl(this.groupBoxCrewList, HighlightService.HighlightStyle.VIOLATION, this._crewMessage); if (this._pasMessage.HasViolations) HighlightService.HighlightControl(this.groupBoxPassengerList, HighlightService.HighlightStyle.VIOLATION, this._pasMessage); } #endregion #region mouse wheel private void ScrollViewer_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e) { ScrollViewer scv = (ScrollViewer)sender; scv.ScrollToVerticalOffset(scv.VerticalOffset - e.Delta); e.Handled = true; } #endregion #region Schengen/PAX checkboxes changed event handler private void checkBoxCrewNotificationSchengen_Click(object sender, RoutedEventArgs e) { foreach(CREW crew in _crewMessage.Elements) { crew.NotificationSchengen = checkBoxCrewNotificationSchengen.IsChecked; } this.SublistElementChanged(Message.NotificationClass.CREWA); } private void checkBoxCrewNotificationPAX_Click(object sender, RoutedEventArgs e) { foreach (CREW crew in _crewMessage.Elements) { crew.NotificationPAX = checkBoxCrewNotificationPAX.IsChecked; } this.SublistElementChanged(Message.NotificationClass.CREWA); } private void checkBoxCrewNotificationSchengenDeparture_Click(object sender, RoutedEventArgs e) { foreach(CREWD crewd in _crewdMessage.Elements) { crewd.NotificationSchengen = checkBoxCrewNotificationSchengenDeparture.IsChecked; } this.SublistElementChanged(Message.NotificationClass.CREWD); } private void checkBoxCrewNotificationPAXDeparture_Click(object sender, RoutedEventArgs e) { foreach (CREWD crewd in _crewdMessage.Elements) { crewd.NotificationPAX = checkBoxCrewNotificationPAXDeparture.IsChecked; } this.SublistElementChanged(Message.NotificationClass.CREWD); } private void checkBoxPasNotificationSchengen_Click(object sender, RoutedEventArgs e) { foreach(PAS pas in _pasMessage.Elements) { pas.NotificationSchengen = checkBoxPasNotificationSchengen.IsChecked; } this.SublistElementChanged(Message.NotificationClass.PASA); } private void checkBoxPasNotificationPAX_Click(object sender, RoutedEventArgs e) { foreach(PAS pas in _pasMessage.Elements) { pas.NotificationPAX = checkBoxPasNotificationPAX.IsChecked; } this.SublistElementChanged(Message.NotificationClass.PASA); } private void checkBoxPasNotificationSchengenDeparture_Click(object sender, RoutedEventArgs e) { foreach(PASD pasd in _pasdMessage.Elements) { pasd.NotificationSchengen = checkBoxPasNotificationSchengenDeparture.IsChecked; } this.SublistElementChanged(Message.NotificationClass.PASD); } private void checkBoxPasNotificationPAXDeparture_Click(object sender, RoutedEventArgs e) { foreach(PASD pasd in _pasdMessage.Elements) { pasd.NotificationPAX = checkBoxPasNotificationPAXDeparture.IsChecked; } this.SublistElementChanged(Message.NotificationClass.PASD); } #endregion } }