Highlighting erster Ansatz, immer weitere Korrekturen rund um HIS-Nord Versand
513 lines
21 KiB
C#
513 lines
21 KiB
C#
// Copyright (c) 2017 schick Informatik
|
|
// Description: Für Arrival / Departure
|
|
//
|
|
|
|
using System.Windows;
|
|
|
|
using bsmd.database;
|
|
using ENI2.EditControls;
|
|
using ENI2.Util;
|
|
|
|
namespace ENI2.DetailViewControls
|
|
{
|
|
/// <summary>
|
|
/// Interaction logic for DangerousGoodsDetailControl.xaml
|
|
/// </summary>
|
|
public partial class DangerousGoodsDetailControl : DetailBaseControl
|
|
{
|
|
|
|
private Message _hazMessage;
|
|
private HAZ haz;
|
|
|
|
public DangerousGoodsDetailControl()
|
|
{
|
|
InitializeComponent();
|
|
this.Loaded += DangerousGoodsDetailControl_Loaded;
|
|
}
|
|
|
|
private void DangerousGoodsDetailControl_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);
|
|
}
|
|
|
|
public bool IsDeparture { get; set; }
|
|
|
|
public override void Initialize()
|
|
{
|
|
base.Initialize();
|
|
|
|
foreach (Message aMessage in this.Messages)
|
|
{
|
|
if (IsDeparture)
|
|
{
|
|
if (aMessage.MessageNotificationClass == Message.NotificationClass.HAZD) { this._hazMessage = aMessage; this.ControlMessages.Add(aMessage); }
|
|
}
|
|
else
|
|
{
|
|
if (aMessage.MessageNotificationClass == Message.NotificationClass.HAZA) { this._hazMessage = aMessage; this.ControlMessages.Add(aMessage); }
|
|
}
|
|
}
|
|
|
|
#region HAZ
|
|
|
|
if (this._hazMessage == null)
|
|
{
|
|
this._hazMessage = this.Core.CreateMessage(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
|
this.Messages.Add(this._hazMessage);
|
|
}
|
|
|
|
HAZ haz = null;
|
|
if (this._hazMessage.Elements.Count > 0)
|
|
haz = this._hazMessage.Elements[0] as HAZ;
|
|
if (haz == null)
|
|
{
|
|
haz = new HAZ();
|
|
haz.MessageCore = this.Core;
|
|
haz.MessageHeader = this._hazMessage;
|
|
_hazMessage.Elements.Add(haz);
|
|
}
|
|
|
|
this.haz = haz;
|
|
|
|
this.comboBoxVesselClass.ItemsSource = GlobalStructures.vesselClasses;
|
|
|
|
this.groupBoxHAZ.DataContext = haz;
|
|
|
|
this.dataGridIMDGItems.Initialize();
|
|
this.dataGridIMDGItems.ItemsSource = this.haz.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.haz.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.haz.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.haz.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.haz.MARPOLPositions;
|
|
this.dataGridMARPOLItems.CreateRequested += DataGridMARPOLItems_CreateRequested;
|
|
this.dataGridMARPOLItems.AddingNewItem += DataGridMARPOLItems_AddingNewItem;
|
|
this.dataGridMARPOLItems.EditRequested += DataGridMARPOLItems_EditRequested;
|
|
this.dataGridMARPOLItems.DeleteRequested += DataGridMARPOLItems_DeleteRequested;
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
#region MARPOL datagrid handlers
|
|
|
|
private void DataGridMARPOLItems_DeleteRequested(DatabaseEntity obj)
|
|
{
|
|
MARPOL_Annex_I_Position marpol = obj as MARPOL_Annex_I_Position;
|
|
if (marpol != null)
|
|
{
|
|
// are you sure dialog is in base class
|
|
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(marpol);
|
|
this.haz.MARPOLPositions.Remove(marpol);
|
|
this.dataGridMARPOLItems.Items.Refresh();
|
|
}
|
|
}
|
|
|
|
private void DataGridMARPOLItems_EditRequested(DatabaseEntity obj)
|
|
{
|
|
MARPOL_Annex_I_Position marpol = obj as MARPOL_Annex_I_Position;
|
|
if (marpol != null)
|
|
{
|
|
EditMarpolDialog eld = new EditMarpolDialog();
|
|
eld.MARPOL = marpol;
|
|
|
|
eld.AddClicked += () =>
|
|
{
|
|
eld.CopyValuesToEntity();
|
|
haz.MARPOLPositions.Add(eld.MARPOL);
|
|
this.dataGridMARPOLItems.Items.Refresh();
|
|
eld.MARPOL = new MARPOL_Annex_I_Position();
|
|
eld.MARPOL.Identifier = DatabaseEntity.GetNewIdentifier(haz.MARPOLPositions);
|
|
eld.MARPOL.HAZ = this.haz;
|
|
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
|
};
|
|
|
|
if (eld.ShowDialog() ?? false)
|
|
{
|
|
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()
|
|
{
|
|
MARPOL_Annex_I_Position marpol = new MARPOL_Annex_I_Position();
|
|
marpol.Identifier = DatabaseEntity.GetNewIdentifier(this.haz.MARPOLPositions);
|
|
EditMarpolDialog ebd = new EditMarpolDialog();
|
|
ebd.MARPOL = marpol;
|
|
|
|
ebd.AddClicked += () =>
|
|
{
|
|
ebd.CopyValuesToEntity();
|
|
this.haz.MARPOLPositions.Add(ebd.MARPOL);
|
|
ebd.MARPOL.HAZ = this.haz;
|
|
this.dataGridMARPOLItems.Items.Refresh();
|
|
ebd.MARPOL = new MARPOL_Annex_I_Position();
|
|
ebd.MARPOL.Identifier = DatabaseEntity.GetNewIdentifier(this.haz.MARPOLPositions);
|
|
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
|
};
|
|
|
|
if (ebd.ShowDialog() ?? false)
|
|
{
|
|
marpol.HAZ = haz;
|
|
haz.MARPOLPositions.Add(marpol);
|
|
this.dataGridMARPOLItems.Items.Refresh();
|
|
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region IMSBC datagrid handlers
|
|
|
|
private void DataGridIMSBCItems_DeleteRequested(DatabaseEntity obj)
|
|
{
|
|
IMSBCPosition imsbc = obj as IMSBCPosition;
|
|
if (imsbc != null)
|
|
{
|
|
// are you sure dialog is in base class
|
|
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(imsbc);
|
|
this.haz.IMSBCPositions.Remove(imsbc);
|
|
this.dataGridIMSBCItems.Items.Refresh();
|
|
}
|
|
}
|
|
|
|
private void DataGridIMSBCItems_EditRequested(DatabaseEntity obj)
|
|
{
|
|
IMSBCPosition imsbc = obj as IMSBCPosition;
|
|
if (imsbc != null)
|
|
{
|
|
EditIMSBCDialog eld = new EditIMSBCDialog();
|
|
eld.IMSBC = imsbc;
|
|
|
|
eld.AddClicked += () =>
|
|
{
|
|
eld.CopyValuesToEntity();
|
|
haz.IMSBCPositions.Add(eld.IMSBC);
|
|
this.dataGridIMSBCItems.Items.Refresh();
|
|
eld.IMSBC = new IMSBCPosition();
|
|
eld.IMSBC.Identifier = DatabaseEntity.GetNewIdentifier(this.haz.IMSBCPositions);
|
|
eld.IMSBC.HAZ = this.haz;
|
|
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
|
};
|
|
|
|
if (eld.ShowDialog() ?? false)
|
|
{
|
|
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()
|
|
{
|
|
IMSBCPosition imsbc = new IMSBCPosition();
|
|
imsbc.Identifier = DatabaseEntity.GetNewIdentifier(this.haz.IMSBCPositions);
|
|
EditIMSBCDialog ebd = new EditIMSBCDialog();
|
|
ebd.IMSBC = imsbc;
|
|
|
|
ebd.AddClicked += () =>
|
|
{
|
|
ebd.CopyValuesToEntity();
|
|
this.haz.IMSBCPositions.Add(ebd.IMSBC);
|
|
ebd.IMSBC.HAZ = this.haz;
|
|
this.dataGridIMSBCItems.Items.Refresh();
|
|
ebd.IMSBC = new IMSBCPosition();
|
|
ebd.IMSBC.Identifier = DatabaseEntity.GetNewIdentifier(this.haz.IMSBCPositions);
|
|
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
|
};
|
|
|
|
if (ebd.ShowDialog() ?? false)
|
|
{
|
|
imsbc.HAZ = haz;
|
|
haz.IMSBCPositions.Add(imsbc);
|
|
this.dataGridIMSBCItems.Items.Refresh();
|
|
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region IGC datagrid handlers
|
|
|
|
private void DataGridIGCItems_DeleteRequested(DatabaseEntity obj)
|
|
{
|
|
IGCPosition igc = obj as IGCPosition;
|
|
if (igc != null)
|
|
{
|
|
// are you sure dialog is in base class
|
|
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(igc);
|
|
this.haz.IGCPositions.Remove(igc);
|
|
this.dataGridIGCItems.Items.Refresh();
|
|
}
|
|
}
|
|
|
|
private void DataGridIGCItems_EditRequested(DatabaseEntity obj)
|
|
{
|
|
IGCPosition igc = obj as IGCPosition;
|
|
if (igc != null)
|
|
{
|
|
EditIGCDialog eld = new EditIGCDialog();
|
|
eld.IGC = igc;
|
|
|
|
eld.AddClicked += () =>
|
|
{
|
|
eld.CopyValuesToEntity();
|
|
haz.IGCPositions.Add(eld.IGC);
|
|
this.dataGridIGCItems.Items.Refresh();
|
|
eld.IGC = new IGCPosition();
|
|
eld.IGC.Identifier = DatabaseEntity.GetNewIdentifier(this.haz.IGCPositions);
|
|
eld.IGC.HAZ = this.haz;
|
|
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
|
};
|
|
|
|
if (eld.ShowDialog() ?? false)
|
|
{
|
|
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()
|
|
{
|
|
IGCPosition igc = new IGCPosition();
|
|
igc.Identifier = DatabaseEntity.GetNewIdentifier(this.haz.IGCPositions);
|
|
EditIGCDialog ebd = new EditIGCDialog();
|
|
ebd.IGC = igc;
|
|
|
|
ebd.AddClicked += () =>
|
|
{
|
|
ebd.CopyValuesToEntity();
|
|
this.haz.IGCPositions.Add(ebd.IGC);
|
|
ebd.IGC.HAZ = this.haz;
|
|
this.dataGridIGCItems.Items.Refresh();
|
|
ebd.IGC = new IGCPosition();
|
|
ebd.IGC.Identifier = DatabaseEntity.GetNewIdentifier(this.haz.IGCPositions);
|
|
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
|
};
|
|
|
|
if (ebd.ShowDialog() ?? false)
|
|
{
|
|
igc.HAZ = haz;
|
|
haz.IGCPositions.Add(igc);
|
|
this.dataGridIGCItems.Items.Refresh();
|
|
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region IBC datagrid handlers
|
|
|
|
private void DataGridIBCItems_DeleteRequested(DatabaseEntity obj)
|
|
{
|
|
IBCPosition ibc = obj as IBCPosition;
|
|
if (ibc != null)
|
|
{
|
|
// are you sure dialog is in base class
|
|
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(ibc);
|
|
this.haz.IBCPositions.Remove(ibc);
|
|
this.dataGridIBCItems.Items.Refresh();
|
|
}
|
|
}
|
|
|
|
private void DataGridIBCItems_EditRequested(DatabaseEntity obj)
|
|
{
|
|
IBCPosition ibc = obj as IBCPosition;
|
|
if (ibc != null)
|
|
{
|
|
EditIBCDialog eld = new EditIBCDialog();
|
|
eld.IBC = ibc;
|
|
|
|
eld.AddClicked += () =>
|
|
{
|
|
eld.CopyValuesToEntity();
|
|
haz.IBCPositions.Add(eld.IBC);
|
|
this.dataGridIBCItems.Items.Refresh();
|
|
eld.IBC = new IBCPosition();
|
|
eld.IBC.Identifier = DatabaseEntity.GetNewIdentifier(this.haz.IBCPositions);
|
|
eld.IBC.HAZ = this.haz;
|
|
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
|
};
|
|
|
|
if (eld.ShowDialog() ?? false)
|
|
{
|
|
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()
|
|
{
|
|
IBCPosition ibc = new IBCPosition();
|
|
ibc.Identifier = DatabaseEntity.GetNewIdentifier(this.haz.IBCPositions);
|
|
EditIBCDialog ebd = new EditIBCDialog();
|
|
ebd.IBC = ibc;
|
|
|
|
ebd.AddClicked += () =>
|
|
{
|
|
ebd.CopyValuesToEntity();
|
|
this.haz.IBCPositions.Add(ebd.IBC);
|
|
ebd.IBC.HAZ = this.haz;
|
|
this.dataGridIBCItems.Items.Refresh();
|
|
ebd.IBC = new IBCPosition();
|
|
ebd.IBC.Identifier = DatabaseEntity.GetNewIdentifier(this.haz.IBCPositions);
|
|
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
|
};
|
|
|
|
if (ebd.ShowDialog() ?? false)
|
|
{
|
|
ibc.HAZ = haz;
|
|
haz.IBCPositions.Add(ibc);
|
|
this.dataGridIBCItems.Items.Refresh();
|
|
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region IMDG datagrid handlers
|
|
|
|
private void DataGridIMDGItems_DeleteRequested(DatabaseEntity obj)
|
|
{
|
|
IMDGPosition imdg = obj as IMDGPosition;
|
|
if (imdg != null)
|
|
{
|
|
// are you sure dialog is in base class
|
|
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(imdg);
|
|
this.haz.IMDGPositions.Remove(imdg);
|
|
this.dataGridIMDGItems.Items.Refresh();
|
|
}
|
|
}
|
|
|
|
private void DataGridIMDGItems_EditRequested(DatabaseEntity obj)
|
|
{
|
|
IMDGPosition imdg = obj as IMDGPosition;
|
|
if (imdg != null)
|
|
{
|
|
EditIMDGDialog eld = new EditIMDGDialog();
|
|
eld.IMDG = imdg;
|
|
|
|
eld.AddClicked += () =>
|
|
{
|
|
eld.CopyValuesToEntity();
|
|
haz.IMDGPositions.Add(eld.IMDG);
|
|
this.dataGridIMDGItems.Items.Refresh();
|
|
eld.IMDG = new IMDGPosition();
|
|
eld.IMDG.Identifier = DatabaseEntity.GetNewIdentifier(this.haz.IMDGPositions);
|
|
eld.IMDG.HAZ = this.haz;
|
|
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
|
};
|
|
|
|
if (eld.ShowDialog() ?? false)
|
|
{
|
|
this.dataGridIMDGItems.Items.Refresh();
|
|
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void DataGridIMDGItems_AddingNewItem(object sender, System.Windows.Controls.AddingNewItemEventArgs e)
|
|
{
|
|
this.DataGridIMDGItems_CreateRequested();
|
|
}
|
|
|
|
private void DataGridIMDGItems_CreateRequested()
|
|
{
|
|
IMDGPosition imdg = new IMDGPosition();
|
|
imdg.Identifier = DatabaseEntity.GetNewIdentifier(this.haz.IMDGPositions);
|
|
EditIMDGDialog ebd = new EditIMDGDialog();
|
|
ebd.IMDG = imdg;
|
|
|
|
ebd.AddClicked += () =>
|
|
{
|
|
ebd.CopyValuesToEntity();
|
|
this.haz.IMDGPositions.Add(ebd.IMDG);
|
|
ebd.IMDG.HAZ = this.haz;
|
|
this.dataGridIMDGItems.Items.Refresh();
|
|
ebd.IMDG = new IMDGPosition();
|
|
ebd.IMDG.Identifier = DatabaseEntity.GetNewIdentifier(this.haz.IMDGPositions);
|
|
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
|
};
|
|
|
|
if (ebd.ShowDialog() ?? false)
|
|
{
|
|
imdg.HAZ = haz;
|
|
haz.IMDGPositions.Add(imdg);
|
|
this.dataGridIMDGItems.Items.Refresh();
|
|
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Highlighting
|
|
|
|
public override void HighlightErrorMessageContainer()
|
|
{
|
|
if (this._hazMessage.HasErrors)
|
|
{
|
|
HighlightService.HighlightControl(this.groupBoxHAZ, HighlightService.HighlightStyle.ERROR, this._hazMessage);
|
|
}
|
|
}
|
|
|
|
public override void HighlightViolationMessageContainer()
|
|
{
|
|
if (this._hazMessage.HasViolations)
|
|
HighlightService.HighlightControl(this.groupBoxHAZ, HighlightService.HighlightStyle.VIOLATION, this._hazMessage);
|
|
}
|
|
|
|
#endregion
|
|
|
|
}
|
|
}
|