diff --git a/ENI2/DetailRootControl.xaml.cs b/ENI2/DetailRootControl.xaml.cs
index 3c09c07a..549bc577 100644
--- a/ENI2/DetailRootControl.xaml.cs
+++ b/ENI2/DetailRootControl.xaml.cs
@@ -185,6 +185,9 @@ namespace ENI2
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._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.text10DangerousCargoArrival, MessageGroupControlType = typeof(DangerousCargoControl), ImagePath = "Resources/sign_warning_radiation.png" });
+ this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.text11DangerousCargoDeparture, MessageGroupControlType = typeof(DangerousCargoControl), ImagePath = "Resources/sign_warning_radiation.png" });
+
}
this.listBoxMessages.ItemsSource = this._listBoxList;
@@ -267,6 +270,8 @@ namespace ENI2
// Spezial-Balkon für die Wiederverwendung von HAZD / HAZA als ein Control (es tut mir leid :D)
if (mg.MessageGroupName.Equals(Properties.Resources.textDGDeparture))
((DangerousGoodsDetailControl)detailControl).IsDeparture = true;
+ if (mg.MessageGroupName.Equals(Properties.Resources.text11DangerousCargoDeparture))
+ ((DangerousCargoControl)detailControl).IsDeparture = true;
detailControl.Core = Core;
detailControl.Messages = _messages;
detailControl.LockedByOtherUser = this.LockedByOtherUser;
diff --git a/ENI2/DetailViewControls/DangerousGoodsDetailControl.xaml.cs b/ENI2/DetailViewControls/DangerousGoodsDetailControl.xaml.cs
index 823c5df6..6da66a77 100644
--- a/ENI2/DetailViewControls/DangerousGoodsDetailControl.xaml.cs
+++ b/ENI2/DetailViewControls/DangerousGoodsDetailControl.xaml.cs
@@ -324,24 +324,7 @@ namespace ENI2.DetailViewControls
}
}
- #endregion
-
- ///
- /// Beim Hinzufügen der allerersten Gefahrgutposition sollen die Flags vorbelegt werden
- ///
- void SetHAZGlobalFlags()
- {
- HAZ haz = this.IsDeparture ? this.hazd : this.haza;
-
- int totalCount = haz.MARPOLPositions.Count + haz.IMDGPositions.Count + haz.IGCPositions.Count + haz.IBCPositions.Count + haz.IMSBCPositions.Count;
- if(totalCount == 1)
- {
- if (!(this.checkBoxDangerousGoodsOnBoard.IsChecked ?? false)) this.checkBoxDangerousGoodsOnBoard.IsChecked = true;
- if (this.checkBoxMoUBaltic.IsChecked ?? true) this.checkBoxMoUBaltic.IsChecked = false;
- haz.NoDPGOnBoardOnArrival = false;
- haz.MOUBaltic = false;
- }
- }
+ #endregion
#region MARPOL datagrid handlers
@@ -898,5 +881,26 @@ namespace ENI2.DetailViewControls
#endregion
+ #region private methods
+
+ ///
+ /// Beim Hinzufügen der allerersten Gefahrgutposition sollen die Flags vorbelegt werden
+ ///
+ void SetHAZGlobalFlags()
+ {
+ HAZ haz = this.IsDeparture ? this.hazd : this.haza;
+
+ int totalCount = haz.MARPOLPositions.Count + haz.IMDGPositions.Count + haz.IGCPositions.Count + haz.IBCPositions.Count + haz.IMSBCPositions.Count;
+ if (totalCount == 1)
+ {
+ if (!(this.checkBoxDangerousGoodsOnBoard.IsChecked ?? false)) this.checkBoxDangerousGoodsOnBoard.IsChecked = true;
+ if (this.checkBoxMoUBaltic.IsChecked ?? true) this.checkBoxMoUBaltic.IsChecked = false;
+ haz.NoDPGOnBoardOnArrival = false;
+ haz.MOUBaltic = false;
+ }
+ }
+
+ #endregion
+
}
}
diff --git a/ENI2/ENI2.csproj b/ENI2/ENI2.csproj
index 1aa26530..1b18e555 100644
--- a/ENI2/ENI2.csproj
+++ b/ENI2/ENI2.csproj
@@ -499,6 +499,9 @@
CrewPreArrivalControl.xaml
+
+ DangerousCargoControl.xaml
+
PassengerDepartureControl.xaml
@@ -838,6 +841,10 @@
Designer
MSBuild:Compile
+
+ Designer
+ MSBuild:Compile
+
Designer
MSBuild:Compile
diff --git a/ENI2/Properties/Resources.Designer.cs b/ENI2/Properties/Resources.Designer.cs
index 2648aa2e..48a9b91a 100644
--- a/ENI2/Properties/Resources.Designer.cs
+++ b/ENI2/Properties/Resources.Designer.cs
@@ -830,6 +830,69 @@ namespace ENI2.Properties {
}
}
+ ///
+ /// Looks up a localized string similar to 10.3 IGC data (on arrival), if applicable.
+ ///
+ public static string text10_3IGCData {
+ get {
+ return ResourceManager.GetString("text10.3IGCData", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to 10.1 General.
+ ///
+ public static string text101General {
+ get {
+ return ResourceManager.GetString("text101General", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to 10.2 IBC data (on arrival), if applicable.
+ ///
+ public static string text102IBCData {
+ get {
+ return ResourceManager.GetString("text102IBCData", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to 10.3 IGC data (on arrival), if applicable.
+ ///
+ public static string text103IGCData {
+ get {
+ return ResourceManager.GetString("text103IGCData", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to 10.4 IMSBC data (on arrival), if applicable.
+ ///
+ public static string text104IMSBCData {
+ get {
+ return ResourceManager.GetString("text104IMSBCData", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to 10.5 MARPOL I data (on arrival), if applicable.
+ ///
+ public static string text105MARPOLData {
+ get {
+ return ResourceManager.GetString("text105MARPOLData", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to 10.6 IMDG data (on arrival), if applicable.
+ ///
+ public static string text106IMDGData {
+ get {
+ return ResourceManager.GetString("text106IMDGData", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to 10. Dangerous cargo data on arrival.
///
@@ -848,6 +911,15 @@ namespace ENI2.Properties {
}
}
+ ///
+ /// Looks up a localized string similar to 11.1 General.
+ ///
+ public static string text111General {
+ get {
+ return ResourceManager.GetString("text111General", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to 1.11 Port of itinerary.
///
@@ -857,6 +929,51 @@ namespace ENI2.Properties {
}
}
+ ///
+ /// Looks up a localized string similar to 11.2 IBC data (on departure), if applicable.
+ ///
+ public static string text112IBCData {
+ get {
+ return ResourceManager.GetString("text112IBCData", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to 11.3 IGC data (on departure), if applicable.
+ ///
+ public static string text113IGCData {
+ get {
+ return ResourceManager.GetString("text113IGCData", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to 11.4 IMSBC data (on departure), if applicable.
+ ///
+ public static string text114IMSBCData {
+ get {
+ return ResourceManager.GetString("text114IMSBCData", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to 11.5 MARPOL I data (on departure), if applicable.
+ ///
+ public static string text115MARPOLData {
+ get {
+ return ResourceManager.GetString("text115MARPOLData", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to 11.6 IMDG data (on departure), if applicable.
+ ///
+ public static string text116IMDGData {
+ get {
+ return ResourceManager.GetString("text116IMDGData", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to 11. Dangerous cargo data on departure.
///
@@ -2513,6 +2630,24 @@ namespace ENI2.Properties {
}
}
+ ///
+ /// Looks up a localized string similar to DG manifest contact - family name.
+ ///
+ public static string textDGContactFamilyName {
+ get {
+ return ResourceManager.GetString("textDGContactFamilyName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to DG manifest contact - phone.
+ ///
+ public static string textDGContactPhone {
+ get {
+ return ResourceManager.GetString("textDGContactPhone", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Dangerous goods departure.
///
diff --git a/ENI2/Properties/Resources.resx b/ENI2/Properties/Resources.resx
index 4a589e77..15abc490 100644
--- a/ENI2/Properties/Resources.resx
+++ b/ENI2/Properties/Resources.resx
@@ -2113,4 +2113,49 @@
13. Waste receipts
+
+ DG manifest contact - family name
+
+
+ DG manifest contact - phone
+
+
+ 10.2 IBC data (on arrival), if applicable
+
+
+ 10.3 IGC data (on arrival), if applicable
+
+
+ 10.4 IMSBC data (on arrival), if applicable
+
+
+ 10.3 IGC data (on arrival), if applicable
+
+
+ 10.5 MARPOL I data (on arrival), if applicable
+
+
+ 10.6 IMDG data (on arrival), if applicable
+
+
+ 10.1 General
+
+
+ 11.1 General
+
+
+ 11.2 IBC data (on departure), if applicable
+
+
+ 11.3 IGC data (on departure), if applicable
+
+
+ 11.4 IMSBC data (on departure), if applicable
+
+
+ 11.5 MARPOL I data (on departure), if applicable
+
+
+ 11.6 IMDG data (on departure), if applicable
+
\ No newline at end of file
diff --git a/ENI2/SheetDisplayControls/DangerousCargoControl.xaml b/ENI2/SheetDisplayControls/DangerousCargoControl.xaml
new file mode 100644
index 00000000..823a6cd6
--- /dev/null
+++ b/ENI2/SheetDisplayControls/DangerousCargoControl.xaml
@@ -0,0 +1,193 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ENI2/SheetDisplayControls/DangerousCargoControl.xaml.cs b/ENI2/SheetDisplayControls/DangerousCargoControl.xaml.cs
new file mode 100644
index 00000000..9be7d69c
--- /dev/null
+++ b/ENI2/SheetDisplayControls/DangerousCargoControl.xaml.cs
@@ -0,0 +1,840 @@
+// Copyright (c) 2025- schick Informatik
+// Description: Display control of formsheet Tab 10. Dangerous cargo arrival
+//
+
+using bsmd.database;
+using ENI2.EditControls;
+using ENI2.Util;
+using System;
+using System.Collections.Generic;
+using System.Collections.Specialized;
+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
+{
+ ///
+ /// Interaction logic for DangerousCargoArrivalControl.xaml
+ ///
+ public partial class DangerousCargoControl : DetailBaseControl
+ {
+
+ #region Fields
+
+ private HAZ haza;
+ private HAZ hazd;
+
+ private NewDGItemDialog newDGDialog = null;
+
+ #endregion
+
+ #region Construction
+
+ public DangerousCargoControl()
+ {
+ InitializeComponent();
+ Loaded += DangerousCargoArrivalControl_Loaded;
+ }
+
+ #endregion
+
+ #region public override
+
+ public override void Initialize()
+ {
+ base.Initialize();
+
+ foreach (Message aMessage in this.Messages)
+ {
+
+ if (aMessage.MessageNotificationClass == Message.NotificationClass.HAZD)
+ {
+ this.hazd = aMessage.Elements[0] as HAZ;
+ this.ControlMessages.Add(aMessage);
+ }
+ if (aMessage.MessageNotificationClass == Message.NotificationClass.HAZA)
+ {
+ this.haza = aMessage.Elements[0] as HAZ;
+ this.ControlMessages.Add(aMessage);
+ }
+
+ this.textBlockMessageClass.Text = IsDeparture ? "HAZD" : "HAZA";
+ }
+
+ this.comboBoxVesselClass.ItemsSource = GlobalStructures.vesselClasses;
+
+ this.checkBoxDGManifestOnBoard.DataContext = this.IsDeparture ? hazd : haza;
+ this.textBoxDGManifestContactFamilyName.DataContext = this.IsDeparture ? hazd : haza;
+ this.textBoxDGManifestContactPhone.DataContext = this.IsDeparture ? hazd : haza;
+ this.checkBoxMoUBaltic.DataContext = this.IsDeparture ? hazd : haza;
+ this.comboBoxVesselClass.DataContext = this.IsDeparture ? hazd : haza;
+
+ #region init grids
+
+ this.dataGridIMDGItems.Initialize();
+ this.dataGridIMDGItems.ItemsSource = this.IsDeparture ? this.hazd.IMDGPositions : this.haza.IMDGPositions;
+ this.dataGridIMDGItems.CreateRequested += DataGridIMDGItems_CreateRequested;
+ this.dataGridIMDGItems.AddingNewItem += DataGridIMDGItems_AddingNewItem;
+ this.dataGridIMDGItems.EditRequested += DataGridIMDGItems_EditRequested;
+ this.dataGridIMDGItems.DeleteRequested += DataGridIMDGItems_DeleteRequested;
+
+ this.dataGridIBCItems.Initialize();
+ this.dataGridIBCItems.ItemsSource = this.IsDeparture ? this.hazd.IBCPositions : this.haza.IBCPositions;
+ this.dataGridIBCItems.CreateRequested += DataGridIBCItems_CreateRequested;
+ this.dataGridIBCItems.AddingNewItem += DataGridIBCItems_AddingNewItem;
+ this.dataGridIBCItems.EditRequested += DataGridIBCItems_EditRequested;
+ this.dataGridIBCItems.DeleteRequested += DataGridIBCItems_DeleteRequested;
+
+ this.dataGridIGCItems.Initialize();
+ this.dataGridIGCItems.ItemsSource = this.IsDeparture ? this.hazd.IGCPositions : this.haza.IGCPositions;
+ this.dataGridIGCItems.CreateRequested += DataGridIGCItems_CreateRequested;
+ this.dataGridIGCItems.AddingNewItem += DataGridIGCItems_AddingNewItem;
+ this.dataGridIGCItems.EditRequested += DataGridIGCItems_EditRequested;
+ this.dataGridIGCItems.DeleteRequested += DataGridIGCItems_DeleteRequested;
+
+ this.dataGridIMSBCItems.Initialize();
+ this.dataGridIMSBCItems.ItemsSource = this.IsDeparture ? this.hazd.IMSBCPositions : this.haza.IMSBCPositions;
+ this.dataGridIMSBCItems.CreateRequested += DataGridIMSBCItems_CreateRequested;
+ this.dataGridIMSBCItems.AddingNewItem += DataGridIMSBCItems_AddingNewItem;
+ this.dataGridIMSBCItems.EditRequested += DataGridIMSBCItems_EditRequested;
+ this.dataGridIMSBCItems.DeleteRequested += DataGridIMSBCItems_DeleteRequested;
+
+ this.dataGridMARPOLItems.Initialize();
+ this.dataGridMARPOLItems.ItemsSource = this.IsDeparture ? this.hazd.MARPOLPositions : this.haza.MARPOLPositions;
+ this.dataGridMARPOLItems.CreateRequested += DataGridMARPOLItems_CreateRequested;
+ this.dataGridMARPOLItems.AddingNewItem += DataGridMARPOLItems_AddingNewItem;
+ this.dataGridMARPOLItems.EditRequested += DataGridMARPOLItems_EditRequested;
+ this.dataGridMARPOLItems.DeleteRequested += DataGridMARPOLItems_DeleteRequested;
+
+ #endregion
+
+ #region Extra Menüpunkte um Positionen zwischen HAZA / HAZD zu kopieren
+
+ this.dataGridIBCItems.ContextMenu.Items.Add(new Separator());
+ MenuItem copyIBCItem = new MenuItem();
+ copyIBCItem.Header = string.Format(Properties.Resources.textCopyTo, this.IsDeparture ? "HAZA" : "HAZD");
+ copyIBCItem.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) };
+ copyIBCItem.Click += new RoutedEventHandler(this.copyIBC);
+ this.dataGridIBCItems.ContextMenu.Items.Add(copyIBCItem);
+
+ this.dataGridIGCItems.ContextMenu.Items.Add(new Separator());
+ MenuItem copyItemIGC = new MenuItem();
+ copyItemIGC.Header = string.Format(Properties.Resources.textCopyTo, this.IsDeparture ? "HAZA" : "HAZD");
+ copyItemIGC.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) };
+ copyItemIGC.Click += new RoutedEventHandler(this.copyIGC);
+ this.dataGridIGCItems.ContextMenu.Items.Add(copyItemIGC);
+
+ this.dataGridIMDGItems.ContextMenu.Items.Add(new Separator());
+ MenuItem copyItemIMDG = new MenuItem();
+ copyItemIMDG.Header = string.Format(Properties.Resources.textCopyTo, this.IsDeparture ? "HAZA" : "HAZD");
+ copyItemIMDG.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) };
+ copyItemIMDG.Click += new RoutedEventHandler(this.copyIMDG);
+ this.dataGridIMDGItems.ContextMenu.Items.Add(copyItemIMDG);
+
+ this.dataGridIMSBCItems.ContextMenu.Items.Add(new Separator());
+ MenuItem copyItemIMSBC = new MenuItem();
+ copyItemIMSBC.Header = string.Format(Properties.Resources.textCopyTo, this.IsDeparture ? "HAZA" : "HAZD");
+ copyItemIMSBC.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) };
+ copyItemIMSBC.Click += new RoutedEventHandler(this.copyIMSBC);
+ this.dataGridIMSBCItems.ContextMenu.Items.Add(copyItemIMSBC);
+
+ this.dataGridMARPOLItems.ContextMenu.Items.Add(new Separator());
+ MenuItem copyItemMARPOL = new MenuItem();
+ copyItemMARPOL.Header = string.Format(Properties.Resources.textCopyTo, this.IsDeparture ? "HAZA" : "HAZD");
+ copyItemMARPOL.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) };
+ copyItemMARPOL.Click += new RoutedEventHandler(this.copyMARPOL);
+ this.dataGridMARPOLItems.ContextMenu.Items.Add(copyItemMARPOL);
+
+ #endregion
+
+ this._initialized = true;
+ }
+
+ #region SetEnabled
+
+ public override void SetEnabled(bool enabled)
+ {
+ this.dataGridIBCItems.IsEnabled = enabled;
+ // this.checkBoxDangerousGoodsOnBoard.IsEnabled = enabled;
+ this.checkBoxDGManifestOnBoard.IsEnabled = enabled;
+ this.checkBoxMoUBaltic.IsEnabled = enabled;
+ this.dataGridIBCItems.IsEnabled = enabled;
+ this.dataGridIMDGItems.IsEnabled = enabled;
+ this.dataGridIGCItems.IsEnabled = enabled;
+ this.dataGridIMSBCItems.IsEnabled = enabled;
+ this.dataGridMARPOLItems.IsEnabled = enabled;
+ }
+
+ #endregion
+
+ #endregion
+
+ #region Properties
+
+ public bool IsDeparture { get; set; }
+
+ #endregion
+
+ #region event handler
+
+ private void DangerousCargoArrivalControl_Loaded(object sender, RoutedEventArgs e)
+ {
+ // this.RegisterCheckboxChange(this.checkBoxDangerousGoodsOnBoard, this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
+ this.RegisterCheckboxChange(this.checkBoxDGManifestOnBoard, this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
+ this.RegisterCheckboxChange(this.checkBoxMoUBaltic, this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
+ this.RegisterComboboxIndexChange(this.comboBoxVesselClass, this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
+ this.RegisterTextboxChange(this.textBoxDGManifestContactFamilyName, this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
+ this.RegisterTextboxChange(this.textBoxDGManifestContactPhone, this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
+
+ if(this.IsDeparture)
+ {
+ this.portCallGroupBox.Header = Properties.Resources.text11DangerousCargoDeparture;
+ this.textBlock101.Text = Properties.Resources.text111General;
+ this.textBlock102.Text = Properties.Resources.text112IBCData;
+ this.textBlock103.Text = Properties.Resources.text113IGCData;
+ this.textBlock104.Text = Properties.Resources.text114IMSBCData;
+ this.textBlock105.Text = Properties.Resources.text115MARPOLData;
+ this.textBlock106.Text = Properties.Resources.text116IMDGData;
+ }
+ }
+
+ #endregion
+
+ #region Copy event handler
+
+ private void copyMARPOL(object sender, RoutedEventArgs e)
+ {
+ // aus dem aktuell selektierten MARPOL Element ein neues MARPOL Element machen und nach HAZD kopieren
+ if (this.dataGridMARPOLItems.SelectedItems != null)
+ {
+ HAZ target_haz = this.IsDeparture ? this.haza : this.hazd;
+ foreach (MARPOL_Annex_I_Position selectedMARPOL in this.dataGridMARPOLItems.SelectedItems)
+ {
+ MARPOL_Annex_I_Position copyMARPOL = new MARPOL_Annex_I_Position();
+ copyMARPOL.MessageHeader = target_haz.MessageHeader;
+ copyMARPOL.HAZ = target_haz;
+ copyMARPOL.CopyFromMARPOL(selectedMARPOL);
+ copyMARPOL.Identifier = DatabaseEntity.GetNewIdentifier(target_haz.MARPOLPositions, "MARPOL-");
+ target_haz.MARPOLPositions.Add(copyMARPOL);
+ target_haz.NoDPGOnBoardOnArrival = false;
+ this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZA : Message.NotificationClass.HAZD);
+ this.OnControlCacheReset(this.IsDeparture ? Properties.Resources.textDGArrival : Properties.Resources.textDGDeparture);
+ }
+ }
+ }
+
+ private void copyIMSBC(object sender, RoutedEventArgs e)
+ {
+ // aus dem aktuell selektierten IMBSC Element ein neues IMBSC Element machen und nach HAZD kopieren
+ if (this.dataGridIMSBCItems.SelectedItems != null)
+ {
+ HAZ target_haz = this.IsDeparture ? this.haza : this.hazd;
+ foreach (IMSBCPosition selectedIMSBC in this.dataGridIMSBCItems.SelectedItems)
+ {
+ IMSBCPosition copyIMSBC = new IMSBCPosition();
+ copyIMSBC.MessageHeader = target_haz.MessageHeader;
+ copyIMSBC.HAZ = target_haz;
+ copyIMSBC.CopyFromIMSBC(selectedIMSBC);
+ copyIMSBC.Identifier = DatabaseEntity.GetNewIdentifier(target_haz.IMSBCPositions, "IMSBC-");
+ target_haz.IMSBCPositions.Add(copyIMSBC);
+ target_haz.NoDPGOnBoardOnArrival = false;
+ this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZA : Message.NotificationClass.HAZD);
+ this.OnControlCacheReset(this.IsDeparture ? Properties.Resources.textDGArrival : Properties.Resources.textDGDeparture);
+ }
+ }
+ }
+
+ private void copyIMDG(object sender, RoutedEventArgs e)
+ {
+ // aus dem aktuell selektierten IMDG Element ein neues IMDG Element machen und nach HAZD kopieren
+ if (this.dataGridIMDGItems.SelectedItems != null)
+ {
+ HAZ target_haz = this.IsDeparture ? this.haza : this.hazd;
+ foreach (IMDGPosition selectedIMDG in this.dataGridIMDGItems.SelectedItems)
+ {
+ IMDGPosition copyIMDG = new IMDGPosition();
+ copyIMDG.MessageHeader = target_haz.MessageHeader;
+ copyIMDG.HAZ = target_haz;
+ copyIMDG.CopyFromIMDG(selectedIMDG);
+ copyIMDG.Identifier = DatabaseEntity.GetNewIdentifier(target_haz.IMDGPositions, "IMDG-");
+ target_haz.IMDGPositions.Add(copyIMDG);
+ target_haz.NoDPGOnBoardOnArrival = false;
+ this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZA : Message.NotificationClass.HAZD);
+ this.OnControlCacheReset(this.IsDeparture ? Properties.Resources.textDGArrival : Properties.Resources.textDGDeparture);
+ }
+ }
+ }
+
+ private void copyIGC(object sender, RoutedEventArgs e)
+ {
+ // aus dem aktuell selektierten IGC Element ein neues IGC Element machen und nach HAZD kopieren
+ if (this.dataGridIGCItems.SelectedItems != null)
+ {
+ HAZ target_haz = this.IsDeparture ? this.haza : this.hazd;
+ foreach (IGCPosition selectedIGC in this.dataGridIGCItems.SelectedItems)
+ {
+ IGCPosition copyIGC = new IGCPosition();
+ copyIGC.MessageHeader = target_haz.MessageHeader;
+ copyIGC.HAZ = target_haz;
+ copyIGC.CopyFromIGC(selectedIGC);
+ copyIGC.Identifier = DatabaseEntity.GetNewIdentifier(target_haz.IGCPositions, "IGC-");
+ target_haz.IGCPositions.Add(copyIGC);
+ target_haz.NoDPGOnBoardOnArrival = false;
+ this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZA : Message.NotificationClass.HAZD);
+ this.OnControlCacheReset(this.IsDeparture ? Properties.Resources.textDGArrival : Properties.Resources.textDGDeparture);
+ }
+ }
+ }
+
+ private void copyIBC(object sender, RoutedEventArgs e)
+ {
+ // aus dem aktuell selektierten IBC Element ein neues IBC Element machen und nach HAZD kopieren
+ if (this.dataGridIBCItems.SelectedItems != null)
+ {
+ HAZ target_haz = this.IsDeparture ? this.haza : this.hazd;
+ foreach (IBCPosition selectedIBC in this.dataGridIBCItems.SelectedItems)
+ {
+ if (selectedIBC != null)
+ {
+ IBCPosition copyIBC = new IBCPosition();
+ copyIBC.MessageHeader = target_haz.MessageHeader;
+ copyIBC.HAZ = target_haz;
+ copyIBC.CopyFromIBC(selectedIBC);
+ copyIBC.Identifier = DatabaseEntity.GetNewIdentifier(target_haz.IBCPositions, "IBC-");
+ target_haz.IBCPositions.Add(copyIBC);
+ target_haz.NoDPGOnBoardOnArrival = false;
+ this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZA : Message.NotificationClass.HAZD);
+ this.OnControlCacheReset(this.IsDeparture ? Properties.Resources.textDGArrival : Properties.Resources.textDGDeparture);
+ }
+ }
+ }
+ }
+
+ #endregion
+
+ #region new sublist item button handler
+
+ private void buttonNewItem_Click(object sender, RoutedEventArgs e)
+ {
+ if (newDGDialog != null)
+ {
+ newDGDialog.Activate();
+ }
+ else
+ {
+ newDGDialog = new NewDGItemDialog();
+ newDGDialog.Closed += NewDGDialog_Closed;
+ newDGDialog.OKClicked += NewDGDialog_OKClicked;
+ newDGDialog.AddClicked += NewDGDialog_OKClicked;
+ newDGDialog.Show();
+ }
+ }
+
+ private void NewDGDialog_Closed(object sender, EventArgs e)
+ {
+ newDGDialog = null;
+ }
+
+ private void NewDGDialog_OKClicked()
+ {
+ HAZ haz = this.IsDeparture ? hazd : haza;
+
+ HAZPosTemplate selectedTemplate = this.newDGDialog.SelectedTemplate;
+
+ if (selectedTemplate != null)
+ {
+ // create new DG position based on template
+ switch (selectedTemplate.TemplateType)
+ {
+ case HAZPosTemplate.SublistType.IBC:
+ IBCPosition ibcPos = new IBCPosition();
+ ibcPos.FlashpointInformation = selectedTemplate.Flashpoint;
+ ibcPos.Flashpoint_CEL = selectedTemplate.FP_IBC;
+ ibcPos.SpecRef15_19 = selectedTemplate.SpecRef15_19;
+ ibcPos.Hazards = selectedTemplate.Hazard;
+ ibcPos.Identifier = DatabaseEntity.GetNewIdentifier(haz.IBCPositions, "IBC-");
+ ibcPos.PollutionCategory = selectedTemplate.PollutionCategory;
+ ibcPos.HAZ = haz;
+ haz.IBCPositions.Add(ibcPos);
+ this.dataGridIBCItems.Items.Refresh();
+ this.DataGridIBCItems_EditRequested(ibcPos);
+ break;
+ case HAZPosTemplate.SublistType.IGC:
+ IGCPosition igcPos = new IGCPosition();
+ igcPos.Identifier = DatabaseEntity.GetNewIdentifier(haz.IGCPositions, "IGC-");
+ igcPos.UNNumber = selectedTemplate.UNNr;
+ igcPos.IMOClass = selectedTemplate.IMOClass;
+ igcPos.HAZ = haz;
+ haz.IGCPositions.Add(igcPos);
+ this.dataGridIGCItems.Items.Refresh();
+ this.DataGridIGCItems_EditRequested(igcPos);
+ break;
+ case HAZPosTemplate.SublistType.IMSBC:
+ IMSBCPosition imsbcPos = new IMSBCPosition();
+ imsbcPos.Identifier = DatabaseEntity.GetNewIdentifier(haz.IMSBCPositions, "IMSBC-");
+ imsbcPos.IMOHazardClass = selectedTemplate.IMSBC_HAZ;
+ imsbcPos.UNNumber = selectedTemplate.UNNr;
+ imsbcPos.IMOClass = selectedTemplate.IMOClass;
+ imsbcPos.MHB = selectedTemplate.MHB ?? false;
+ imsbcPos.HAZ = haz;
+ haz.IMSBCPositions.Add(imsbcPos);
+ this.dataGridIMSBCItems.Items.Refresh();
+ this.DataGridIMSBCItems_EditRequested(imsbcPos);
+ break;
+ case HAZPosTemplate.SublistType.MARPOL:
+ MARPOL_Annex_I_Position marpolPos = new MARPOL_Annex_I_Position();
+ marpolPos.FlashpointInformation = selectedTemplate.Flashpoint;
+ marpolPos.Identifier = DatabaseEntity.GetNewIdentifier(haz.MARPOLPositions, "MARPOL-");
+ marpolPos.HAZ = haz;
+ haz.MARPOLPositions.Add(marpolPos);
+ this.dataGridMARPOLItems.Items.Refresh();
+ this.DataGridMARPOLItems_EditRequested(marpolPos);
+ break;
+ }
+ this.SetHAZGlobalFlags();
+ }
+ }
+
+ #endregion
+
+ #region MARPOL datagrid handlers
+
+ private void DataGridMARPOLItems_DeleteRequested(DatabaseEntity obj)
+ {
+ HAZ haz = this.IsDeparture ? hazd : haza;
+ if (obj is MARPOL_Annex_I_Position marpol)
+ {
+ // are you sure dialog is in base class
+ DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(marpol);
+ haz.MARPOLPositions.Remove(marpol);
+ DatabaseEntity.ResetIdentifiers(new List(haz.MARPOLPositions));
+ this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
+ this.dataGridMARPOLItems.Items.Refresh();
+ }
+ }
+
+ private void DataGridMARPOLItems_EditRequested(DatabaseEntity obj)
+ {
+ EditMarpolDialog eld = new EditMarpolDialog();
+ eld.MARPOL = obj as MARPOL_Annex_I_Position;
+ HAZ haz = this.IsDeparture ? hazd : haza;
+
+ eld.AddClicked += () =>
+ {
+ eld.CopyValuesToEntity();
+ if (!haz.MARPOLPositions.Contains(eld.MARPOL))
+ haz.MARPOLPositions.Add(eld.MARPOL);
+ this.dataGridMARPOLItems.Items.Refresh();
+ eld.MARPOL = new MARPOL_Annex_I_Position();
+ eld.Identifier = DatabaseEntity.GetNewIdentifier(haz.MARPOLPositions, "MARPOL-");
+ eld.MARPOL.HAZ = haz;
+ this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
+ this.SetHAZGlobalFlags();
+ };
+
+ if (eld.ShowDialog() ?? false)
+ {
+ if (!haz.MARPOLPositions.Contains(eld.MARPOL))
+ haz.MARPOLPositions.Add(eld.MARPOL);
+ this.dataGridMARPOLItems.Items.Refresh();
+ this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
+ }
+
+ }
+
+ private void DataGridMARPOLItems_AddingNewItem(object sender, System.Windows.Controls.AddingNewItemEventArgs e)
+ {
+ this.DataGridMARPOLItems_CreateRequested();
+ }
+
+ private void DataGridMARPOLItems_CreateRequested()
+ {
+ HAZ haz = this.IsDeparture ? hazd : haza;
+ EditMarpolDialog ebd = new EditMarpolDialog();
+ ebd.MARPOL = new MARPOL_Annex_I_Position();
+ ebd.MARPOL.Identifier = DatabaseEntity.GetNewIdentifier(haz.MARPOLPositions, "MARPOL-");
+ ebd.MARPOL.HAZ = haz;
+
+ ebd.AddClicked += () =>
+ {
+ ebd.CopyValuesToEntity();
+ if (!haz.MARPOLPositions.Contains(ebd.MARPOL))
+ haz.MARPOLPositions.Add(ebd.MARPOL);
+ this.dataGridMARPOLItems.Items.Refresh();
+ ebd.MARPOL = new MARPOL_Annex_I_Position();
+ ebd.MARPOL.HAZ = haz;
+ ebd.Identifier = DatabaseEntity.GetNewIdentifier(haz.MARPOLPositions, "MARPOL-");
+ this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
+ this.SetHAZGlobalFlags();
+ };
+
+ if (ebd.ShowDialog() ?? false)
+ {
+ if (!haz.MARPOLPositions.Contains(ebd.MARPOL))
+ haz.MARPOLPositions.Add(ebd.MARPOL);
+ this.dataGridMARPOLItems.Items.Refresh();
+ this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
+ this.SetHAZGlobalFlags();
+ }
+ }
+
+ #endregion
+
+ #region IMSBC datagrid handlers
+
+ private void DataGridIMSBCItems_DeleteRequested(DatabaseEntity obj)
+ {
+ HAZ haz = this.IsDeparture ? hazd : haza;
+ if (obj is IMSBCPosition imsbc)
+ {
+ // are you sure dialog is in base class
+ DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(imsbc);
+ haz.IMSBCPositions.Remove(imsbc);
+ DatabaseEntity.ResetIdentifiers(new List(haz.IMSBCPositions));
+ this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
+ this.dataGridIMSBCItems.Items.Refresh();
+ }
+ }
+
+ private void DataGridIMSBCItems_EditRequested(DatabaseEntity obj)
+ {
+ HAZ haz = this.IsDeparture ? hazd : haza;
+ EditIMSBCDialog eld = new EditIMSBCDialog();
+ eld.IMSBC = obj as IMSBCPosition;
+
+ eld.AddClicked += () =>
+ {
+ eld.CopyValuesToEntity();
+ if (!haz.IMSBCPositions.Contains(eld.IMSBC))
+ haz.IMSBCPositions.Add(eld.IMSBC);
+ this.dataGridIMSBCItems.Items.Refresh();
+ eld.IMSBC = new IMSBCPosition();
+ eld.Identifier = DatabaseEntity.GetNewIdentifier(haz.IMSBCPositions, "IMSBC-");
+ eld.IMSBC.HAZ = haz;
+ this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
+ this.SetHAZGlobalFlags();
+ };
+
+ if (eld.ShowDialog() ?? false)
+ {
+ if (!haz.IMSBCPositions.Contains(eld.IMSBC))
+ haz.IMSBCPositions.Add(eld.IMSBC);
+ this.dataGridIMSBCItems.Items.Refresh();
+ this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
+ }
+ }
+
+ private void DataGridIMSBCItems_AddingNewItem(object sender, System.Windows.Controls.AddingNewItemEventArgs e)
+ {
+ this.DataGridIMSBCItems_CreateRequested();
+ }
+
+ private void DataGridIMSBCItems_CreateRequested()
+ {
+ HAZ haz = this.IsDeparture ? hazd : haza;
+ EditIMSBCDialog ebd = new EditIMSBCDialog();
+ ebd.IMSBC = new IMSBCPosition();
+ ebd.IMSBC.Identifier = DatabaseEntity.GetNewIdentifier(haz.IMSBCPositions, "IMSBC-");
+ ebd.IMSBC.HAZ = haz;
+
+ ebd.AddClicked += () =>
+ {
+ ebd.CopyValuesToEntity();
+ if (!haz.IMSBCPositions.Contains(ebd.IMSBC))
+ haz.IMSBCPositions.Add(ebd.IMSBC);
+ this.dataGridIMSBCItems.Items.Refresh();
+ ebd.IMSBC = new IMSBCPosition();
+ ebd.IMSBC.HAZ = haz;
+ ebd.Identifier = DatabaseEntity.GetNewIdentifier(haz.IMSBCPositions, "IMSBC-");
+ this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
+ this.SetHAZGlobalFlags();
+ };
+
+ if (ebd.ShowDialog() ?? false)
+ {
+ if (!haz.IMSBCPositions.Contains(ebd.IMSBC))
+ haz.IMSBCPositions.Add(ebd.IMSBC);
+ this.dataGridIMSBCItems.Items.Refresh();
+ this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
+ this.SetHAZGlobalFlags();
+ }
+ }
+
+ #endregion
+
+ #region IGC datagrid handlers
+
+ private void DataGridIGCItems_DeleteRequested(DatabaseEntity obj)
+ {
+ HAZ haz = this.IsDeparture ? hazd : haza;
+ if (obj is IGCPosition igc)
+ {
+ // are you sure dialog is in base class
+ DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(igc);
+ haz.IGCPositions.Remove(igc);
+ DatabaseEntity.ResetIdentifiers(new List(haz.IGCPositions));
+ this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
+ this.dataGridIGCItems.Items.Refresh();
+ }
+ }
+
+ private void DataGridIGCItems_EditRequested(DatabaseEntity obj)
+ {
+ HAZ haz = this.IsDeparture ? hazd : haza;
+ EditIGCDialog eld = new EditIGCDialog();
+ eld.IGC = obj as IGCPosition;
+
+ eld.AddClicked += () =>
+ {
+ eld.CopyValuesToEntity();
+ if (!haz.IGCPositions.Contains(eld.IGC))
+ haz.IGCPositions.Add(eld.IGC);
+ this.dataGridIGCItems.Items.Refresh();
+ eld.IGC = new IGCPosition();
+ eld.Identifier = DatabaseEntity.GetNewIdentifier(haz.IGCPositions, "IGC-");
+ eld.IGC.HAZ = haz;
+ this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
+ this.SetHAZGlobalFlags();
+ };
+
+ if (eld.ShowDialog() ?? false)
+ {
+ if (!haz.IGCPositions.Contains(eld.IGC))
+ haz.IGCPositions.Add(eld.IGC);
+ this.dataGridIGCItems.Items.Refresh();
+ this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
+ }
+ }
+
+ private void DataGridIGCItems_AddingNewItem(object sender, System.Windows.Controls.AddingNewItemEventArgs e)
+ {
+ this.DataGridIGCItems_CreateRequested();
+ }
+
+ private void DataGridIGCItems_CreateRequested()
+ {
+ HAZ haz = this.IsDeparture ? hazd : haza;
+ EditIGCDialog ebd = new EditIGCDialog();
+ ebd.IGC = new IGCPosition();
+ ebd.IGC.Identifier = DatabaseEntity.GetNewIdentifier(haz.IGCPositions, "IGC-");
+ ebd.IGC.HAZ = haz;
+
+ ebd.AddClicked += () =>
+ {
+ ebd.CopyValuesToEntity();
+ if (!haz.IGCPositions.Contains(ebd.IGC))
+ haz.IGCPositions.Add(ebd.IGC);
+ this.dataGridIGCItems.Items.Refresh();
+ ebd.IGC = new IGCPosition();
+ ebd.IGC.HAZ = haz;
+ ebd.Identifier = DatabaseEntity.GetNewIdentifier(haz.IGCPositions, "IGC-");
+ this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
+ };
+
+ if (ebd.ShowDialog() ?? false)
+ {
+ if (!haz.IGCPositions.Contains(ebd.IGC))
+ haz.IGCPositions.Add(ebd.IGC);
+ this.dataGridIGCItems.Items.Refresh();
+ this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
+ this.SetHAZGlobalFlags();
+ }
+ }
+
+ #endregion
+
+ #region IBC datagrid handlers
+
+ private void DataGridIBCItems_DeleteRequested(DatabaseEntity obj)
+ {
+ HAZ haz = this.IsDeparture ? hazd : haza;
+ if (obj is IBCPosition ibc)
+ {
+ // are you sure dialog is in base class
+ DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(ibc);
+ haz.IBCPositions.Remove(ibc);
+ DatabaseEntity.ResetIdentifiers(new List(haz.IBCPositions));
+ this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
+ this.dataGridIBCItems.Items.Refresh();
+ }
+ }
+
+ private void DataGridIBCItems_EditRequested(DatabaseEntity obj)
+ {
+ HAZ haz = this.IsDeparture ? hazd : haza;
+ EditIBCDialog eld = new EditIBCDialog();
+ eld.IBC = obj as IBCPosition;
+
+ eld.AddClicked += () =>
+ {
+ eld.CopyValuesToEntity();
+ if (!haz.IBCPositions.Contains(eld.IBC))
+ haz.IBCPositions.Add(eld.IBC);
+ this.dataGridIBCItems.Items.Refresh();
+ eld.IBC = new IBCPosition();
+ eld.Identifier = DatabaseEntity.GetNewIdentifier(haz.IBCPositions, "IBC-");
+ eld.IBC.HAZ = haz;
+ this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
+ this.SetHAZGlobalFlags();
+ };
+
+ if (eld.ShowDialog() ?? false)
+ {
+ if (!haz.IBCPositions.Contains(eld.IBC))
+ haz.IBCPositions.Add(eld.IBC);
+ this.dataGridIBCItems.Items.Refresh();
+ this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
+ }
+ }
+
+ private void DataGridIBCItems_AddingNewItem(object sender, System.Windows.Controls.AddingNewItemEventArgs e)
+ {
+ this.DataGridIBCItems_CreateRequested();
+ }
+
+ private void DataGridIBCItems_CreateRequested()
+ {
+ HAZ haz = this.IsDeparture ? hazd : haza;
+ EditIBCDialog ebd = new EditIBCDialog();
+ ebd.IBC = new IBCPosition();
+ ebd.IBC.Identifier = DatabaseEntity.GetNewIdentifier(haz.IBCPositions, "IBC-");
+ ebd.IBC.HAZ = haz;
+
+ ebd.AddClicked += () =>
+ {
+ ebd.CopyValuesToEntity();
+ if (!haz.IBCPositions.Contains(ebd.IBC))
+ haz.IBCPositions.Add(ebd.IBC);
+ this.dataGridIBCItems.Items.Refresh();
+ ebd.IBC = new IBCPosition();
+ ebd.IBC.HAZ = haz;
+ ebd.Identifier = DatabaseEntity.GetNewIdentifier(haz.IBCPositions, "IBC-");
+ this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
+ };
+
+ if (ebd.ShowDialog() ?? false)
+ {
+ if (!haz.IBCPositions.Contains(ebd.IBC))
+ haz.IBCPositions.Add(ebd.IBC);
+ this.dataGridIBCItems.Items.Refresh();
+ this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
+ this.SetHAZGlobalFlags();
+ }
+ }
+
+ #endregion
+
+ #region IMDG datagrid handlers
+
+ private void DataGridIMDGItems_DeleteRequested(DatabaseEntity obj)
+ {
+ HAZ haz = this.IsDeparture ? hazd : haza;
+ if (obj is IMDGPosition imdg)
+ {
+ // are you sure dialog is in base class
+ DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(imdg);
+ haz.IMDGPositions.Remove(imdg);
+ DatabaseEntity.ResetIdentifiers(new List(haz.IMDGPositions));
+ this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
+ this.dataGridIMDGItems.Items.Refresh();
+ }
+ }
+
+ private void DataGridIMDGItems_EditRequested(DatabaseEntity obj)
+ {
+ HAZ haz = this.IsDeparture ? hazd : haza;
+ EditIMDGDialog eld = new EditIMDGDialog();
+ eld.IMDG = obj as IMDGPosition;
+
+ eld.AddClicked += () =>
+ {
+ eld.CopyValuesToEntity();
+ if (!haz.IMDGPositions.Contains(eld.IMDG))
+ haz.IMDGPositions.Add(eld.IMDG);
+ this.dataGridIMDGItems.Items.Refresh();
+ eld.IMDG = new IMDGPosition();
+ eld.Identifier = DatabaseEntity.GetNewIdentifier(haz.IMDGPositions, "IMDG-");
+ eld.IMDG.HAZ = haz;
+ this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
+ };
+
+ if (eld.ShowDialog() ?? false)
+ {
+ if (!haz.IMDGPositions.Contains(eld.IMDG))
+ haz.IMDGPositions.Add(eld.IMDG);
+ this.dataGridIMDGItems.Items.Refresh();
+ this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
+ this.SetHAZGlobalFlags();
+ }
+ }
+
+ private void DataGridIMDGItems_AddingNewItem(object sender, System.Windows.Controls.AddingNewItemEventArgs e)
+ {
+ this.DataGridIMDGItems_CreateRequested();
+ }
+
+ private void DataGridIMDGItems_CreateRequested()
+ {
+ HAZ haz = this.IsDeparture ? hazd : haza;
+ EditIMDGDialog ebd = new EditIMDGDialog();
+ ebd.IMDG = new IMDGPosition();
+ ebd.IMDG.Identifier = DatabaseEntity.GetNewIdentifier(haz.IMDGPositions, "IMDG-");
+ ebd.IMDG.HAZ = haz;
+
+ ebd.AddClicked += () =>
+ {
+ ebd.CopyValuesToEntity();
+ if (!haz.IMDGPositions.Contains(ebd.IMDG))
+ haz.IMDGPositions.Add(ebd.IMDG);
+ this.dataGridIMDGItems.Items.Refresh();
+ ebd.IMDG = new IMDGPosition();
+ ebd.IMDG.HAZ = haz;
+ ebd.Identifier = DatabaseEntity.GetNewIdentifier(haz.IMDGPositions, "IMDG-");
+ this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
+ };
+
+ if (ebd.ShowDialog() ?? false)
+ {
+ if (!haz.IMDGPositions.Contains(ebd.IMDG))
+ haz.IMDGPositions.Add(ebd.IMDG);
+ this.dataGridIMDGItems.Items.Refresh();
+ this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
+ this.SetHAZGlobalFlags();
+ }
+ }
+
+ #endregion
+
+ #region private methods
+
+ ///
+ /// Beim Hinzufügen der allerersten Gefahrgutposition sollen die Flags vorbelegt werden
+ ///
+ void SetHAZGlobalFlags()
+ {
+ HAZ haz = this.IsDeparture ? this.hazd : this.haza;
+
+ int totalCount = haz.MARPOLPositions.Count + haz.IMDGPositions.Count + haz.IGCPositions.Count + haz.IBCPositions.Count + haz.IMSBCPositions.Count;
+ if (totalCount == 1)
+ {
+ // if (!(this.checkBoxDangerousGoodsOnBoard.IsChecked ?? false)) this.checkBoxDangerousGoodsOnBoard.IsChecked = true;
+ if (this.checkBoxMoUBaltic.IsChecked ?? true) this.checkBoxMoUBaltic.IsChecked = false;
+ haz.NoDPGOnBoardOnArrival = false;
+ haz.MOUBaltic = false;
+ }
+ }
+
+ #endregion
+
+ }
+}
diff --git a/bsmd.database/Properties/AssemblyProductInfo.cs b/bsmd.database/Properties/AssemblyProductInfo.cs
index 7809c099..5dd3993f 100644
--- a/bsmd.database/Properties/AssemblyProductInfo.cs
+++ b/bsmd.database/Properties/AssemblyProductInfo.cs
@@ -2,6 +2,6 @@
[assembly: AssemblyCompany("schick Informatik")]
[assembly: AssemblyProduct("BSMD NSW interface")]
-[assembly: AssemblyInformationalVersion("7.2.7)]
+[assembly: AssemblyInformationalVersion("7.2.7")]
[assembly: AssemblyCopyright("Copyright © 2014-2025 schick Informatik")]
[assembly: AssemblyTrademark("")]
\ No newline at end of file