From 974817a443887c58a6a902063e4682df7700b958 Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Tue, 21 May 2019 10:13:28 +0000 Subject: [PATCH] =?UTF-8?q?History=20zur=C3=BCckschreiben=20Zwischenstand?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ENI-2/ENI2/ENI2/AnmeldungenControl.xaml.cs | 2 +- ENI-2/ENI2/ENI2/Controls/EditWindowBase.cs | 9 +- .../Controls/ReportingPartyControl.xaml.cs | 17 +-- ENI-2/ENI2/ENI2/Controls/StatusWindowBase.cs | 9 +- ENI-2/ENI2/ENI2/DetailBaseControl.cs | 9 +- ENI-2/ENI2/ENI2/DetailRootControl.xaml.cs | 11 +- .../OverViewDetailControl.xaml.cs | 33 +++-- .../SecurityDetailControl.xaml.cs | 6 +- ENI-2/ENI2/ENI2/ENI2.csproj | 10 ++ .../EditControls/MessageHistoryDialog.xaml | 27 ++++ .../EditControls/MessageHistoryDialog.xaml.cs | 129 ++++++++++++++++++ ENI-2/ENI2/ENI2/MainWindow.xaml.cs | 12 +- .../ENI2/Properties/Resources.Designer.cs | 84 ++++++++++++ ENI-2/ENI2/ENI2/Properties/Resources.resx | 27 ++++ ENI-2/ENI2/ENI2/Resources/clock_history.ico | Bin 0 -> 107250 bytes ENI-2/ENI2/ENI2/Resources/clock_history.png | Bin 0 -> 1761 bytes ENI-2/ENI2/ENI2/Resources/document_down.png | Bin 0 -> 1138 bytes ENI-2/ENI2/ENI2/SucheControl.xaml.cs | 15 +- ENI-2/ENI2/ENI2/Util/UIHelper.cs | 9 +- Stundensheet.xlsx | Bin 40758 -> 40886 bytes .../bsmd.ExcelReadService/ExcelReadService.cs | 2 + nsw/Source/bsmd.database/BPOL.cs | 22 +++ nsw/Source/bsmd.database/DBManager.cs | 19 +++ nsw/Source/bsmd.database/DatabaseEntity.cs | 35 ++++- nsw/Source/bsmd.database/HAZ.cs | 83 +++++++++++ nsw/Source/bsmd.database/LADG.cs | 17 +-- nsw/Source/bsmd.database/MDH.cs | 108 +++++++++++---- nsw/Source/bsmd.database/MessageHistory.cs | 87 +++++++++++- nsw/Source/bsmd.database/NOA_NOD.cs | 22 +++ nsw/Source/bsmd.database/SEC.cs | 52 +++++-- nsw/Source/bsmd.database/WAS.cs | 48 +++++-- 31 files changed, 782 insertions(+), 122 deletions(-) create mode 100644 ENI-2/ENI2/ENI2/EditControls/MessageHistoryDialog.xaml create mode 100644 ENI-2/ENI2/ENI2/EditControls/MessageHistoryDialog.xaml.cs create mode 100644 ENI-2/ENI2/ENI2/Resources/clock_history.ico create mode 100644 ENI-2/ENI2/ENI2/Resources/clock_history.png create mode 100644 ENI-2/ENI2/ENI2/Resources/document_down.png diff --git a/ENI-2/ENI2/ENI2/AnmeldungenControl.xaml.cs b/ENI-2/ENI2/ENI2/AnmeldungenControl.xaml.cs index ba54757b..24e4d7a5 100644 --- a/ENI-2/ENI2/ENI2/AnmeldungenControl.xaml.cs +++ b/ENI-2/ENI2/ENI2/AnmeldungenControl.xaml.cs @@ -42,7 +42,7 @@ namespace ENI2 if(sender != null) { DataGrid grid = sender as DataGrid; - if((grid != null) && (grid.SelectedItems != null) && (grid.SelectedItems.Count == 1)) + if(grid?.SelectedItems?.Count == 1) { DataGridRow dgr = grid.ItemContainerGenerator.ContainerFromItem(grid.SelectedItem) as DataGridRow; MessageCore selectedCore = grid.SelectedItem as MessageCore; diff --git a/ENI-2/ENI2/ENI2/Controls/EditWindowBase.cs b/ENI-2/ENI2/ENI2/Controls/EditWindowBase.cs index 71aacd43..47853a0e 100644 --- a/ENI-2/ENI2/ENI2/Controls/EditWindowBase.cs +++ b/ENI-2/ENI2/ENI2/Controls/EditWindowBase.cs @@ -37,15 +37,12 @@ namespace ENI2.Controls var okButton = (Button)Template.FindName("buttonOK", this); var cancelButton = (Button)Template.FindName("buttonCancel", this); var addButton = (Button)Template.FindName("buttonAdd", this); - okButton.Click += (s, e) => { if (IsModal) DialogResult = true; OKClicked?.Invoke(); this.Close(); }; - cancelButton.Click += (s, e) => { if (IsModal) DialogResult = false; CancelClicked?.Invoke(); this.Close(); }; - addButton.Click += (s, e) => { AddClicked?.Invoke(); }; + okButton.Click += (s, e) => { if (this.IsModal()) DialogResult = true; OKClicked?.Invoke(); this.Close(); }; + cancelButton.Click += (s, e) => { if (this.IsModal()) DialogResult = false; CancelClicked?.Invoke(); this.Close(); }; + addButton.Click += (s, e) => AddClicked?.Invoke(); }; - this.IsModal = true; // default } - public bool IsModal { get; set; } - public bool AddVisible { get { var addButton = (Button)Template.FindName("buttonAdd", this); return addButton.Visibility == Visibility.Visible; } diff --git a/ENI-2/ENI2/ENI2/Controls/ReportingPartyControl.xaml.cs b/ENI-2/ENI2/ENI2/Controls/ReportingPartyControl.xaml.cs index cdebb1dd..368ac39b 100644 --- a/ENI-2/ENI2/ENI2/Controls/ReportingPartyControl.xaml.cs +++ b/ENI-2/ENI2/ENI2/Controls/ReportingPartyControl.xaml.cs @@ -46,10 +46,9 @@ namespace ENI2.Controls private void ResetItem_Click(object sender, RoutedEventArgs e) { - if ((this.dataGridReportingParties.SelectedItems != null) && (this.dataGridReportingParties.SelectedItems.Count == 1) && !this.dataGridReportingParties.IsReadOnly) + if ((this.dataGridReportingParties.SelectedItems?.Count == 1) && !this.dataGridReportingParties.IsReadOnly) { - ReportingParty selectedParty = this.dataGridReportingParties.SelectedItems[0] as ReportingParty; - if (selectedParty != null) + if (this.dataGridReportingParties.SelectedItems[0] is ReportingParty selectedParty) { string confirmText = string.Format(Properties.Resources.textConfirmPasswordReset, selectedParty.Logon); MessageBoxResult result = MessageBox.Show(confirmText, Properties.Resources.textCaptionDeleteConfirm, MessageBoxButton.YesNo, MessageBoxImage.Question); @@ -59,7 +58,7 @@ namespace ENI2.Controls selectedParty.Salt = null; DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(selectedParty); } - } + } } } @@ -67,8 +66,7 @@ namespace ENI2.Controls private void DataGridReportingParties_DeleteRequested(DatabaseEntity obj) { - ReportingParty rp = obj as ReportingParty; - if (rp != null) + if (obj is ReportingParty rp) { // are you sure dialog is in base class DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(rp); @@ -79,15 +77,14 @@ namespace ENI2.Controls private void DataGridReportingParties_EditRequested(DatabaseEntity obj) { - ReportingParty rp = obj as ReportingParty; - if (rp != null) + if (obj is ReportingParty rp) { EditReportingPartyDialog eld = new EditReportingPartyDialog(); - eld.ReportingParty = rp; + eld.ReportingParty = rp; if (eld.ShowDialog() ?? false) { - this.dataGridReportingParties.Items.Refresh(); + this.dataGridReportingParties.Items.Refresh(); } } } diff --git a/ENI-2/ENI2/ENI2/Controls/StatusWindowBase.cs b/ENI-2/ENI2/ENI2/Controls/StatusWindowBase.cs index 12ae90e3..205c4af9 100644 --- a/ENI-2/ENI2/ENI2/Controls/StatusWindowBase.cs +++ b/ENI-2/ENI2/ENI2/Controls/StatusWindowBase.cs @@ -32,14 +32,11 @@ namespace ENI2.Controls var closeButton = (Button)Template.FindName("buttonClose", this); var refreshButton = (Button)Template.FindName("buttonRefresh", this); - closeButton.Click += (s, e) => { if (IsModal) DialogResult = true; CloseClicked?.Invoke(); this.Close(); }; + closeButton.Click += (s, e) => { if (this.IsModal()) DialogResult = true; CloseClicked?.Invoke(); this.Close(); }; refreshButton.Click += (s, e) => { RefreshClicked?.Invoke(); }; - }; - this.IsModal = true; // default - } - - public bool IsModal { get; set; } + }; + } public bool RefreshVisible { diff --git a/ENI-2/ENI2/ENI2/DetailBaseControl.cs b/ENI-2/ENI2/ENI2/DetailBaseControl.cs index a3633167..762ba8b5 100644 --- a/ENI-2/ENI2/ENI2/DetailBaseControl.cs +++ b/ENI-2/ENI2/ENI2/DetailBaseControl.cs @@ -29,10 +29,9 @@ namespace ENI2 private DependencyPropertyDescriptor _dpComboboxValue; private DependencyPropertyDescriptor _dpNumericUpdown; private DependencyPropertyDescriptor _dpIntUpdown; - private Dictionary _controlClassDict = new Dictionary(); - private Dictionary _typeMessageDict = new Dictionary(); - private List _controlMessages = new List(); - + private readonly Dictionary _controlClassDict = new Dictionary(); + private readonly Dictionary _typeMessageDict = new Dictionary(); + #endregion @@ -109,7 +108,7 @@ namespace ENI2 /// /// particular messages that are edited on this page /// - public List ControlMessages { get { return this._controlMessages; } } + public List ControlMessages { get; } = new List(); public bool LockedByOtherUser { get; set; } diff --git a/ENI-2/ENI2/ENI2/DetailRootControl.xaml.cs b/ENI-2/ENI2/ENI2/DetailRootControl.xaml.cs index 44ae9619..420847a9 100644 --- a/ENI-2/ENI2/ENI2/DetailRootControl.xaml.cs +++ b/ENI-2/ENI2/ENI2/DetailRootControl.xaml.cs @@ -203,8 +203,7 @@ namespace ENI2 MessageCore newCore = new MessageCore(); cdd.NewCore = newCore; cdd.OldCore = this.Core; - - cdd.IsModal = false; + cdd.Closed += (senderDialog, closeArgs) => { CopyDeclarationDialog closedDialog = senderDialog as CopyDeclarationDialog; @@ -734,9 +733,8 @@ namespace ENI2 this._errorListDialog.Closed += (o, e) => this._errorListDialog = null; this._errorListDialog.Loaded += (o, e) => this._errorListDialog.RefreshVisible = true; this._errorListDialog.ErrorSelected += _errorListDialog_ErrorSelected; - this._errorListDialog.RefreshClicked += _errorListDialog_RefreshClicked; - this._errorListDialog.IsModal = false; - this._errorListDialog.Show(); + this._errorListDialog.RefreshClicked += _errorListDialog_RefreshClicked; + this._errorListDialog.ShowDialog(); } this._errorListDialog.Errors = vErrors; } @@ -749,8 +747,7 @@ namespace ENI2 this._violationListDialog.Closed += (o, e) => this._violationListDialog = null; this._violationListDialog.Loaded += (o, e) => this._violationListDialog.RefreshVisible = true; this._violationListDialog.ViolationSelected += _errorListDialog_ErrorSelected; - this._violationListDialog.RefreshClicked += _errorListDialog_RefreshClicked; - this._violationListDialog.IsModal = false; + this._violationListDialog.RefreshClicked += _errorListDialog_RefreshClicked; this._violationListDialog.Show(); } _violationListDialog.Violations = vViolations; diff --git a/ENI-2/ENI2/ENI2/DetailViewControls/OverViewDetailControl.xaml.cs b/ENI-2/ENI2/ENI2/DetailViewControls/OverViewDetailControl.xaml.cs index 832e27c0..082b613c 100644 --- a/ENI-2/ENI2/ENI2/DetailViewControls/OverViewDetailControl.xaml.cs +++ b/ENI-2/ENI2/ENI2/DetailViewControls/OverViewDetailControl.xaml.cs @@ -146,6 +146,15 @@ namespace ENI2.DetailViewControls pdfItem.Click += this.buttonCreatePDF_Click; this.dataGridMessages.ContextMenu.Items.Add(pdfItem); + MenuItem historyItem = new MenuItem + { + Header = Properties.Resources.textHistoryItems, + Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/clock_history.png")) } + }; + historyItem.Click += HistoryItem_Click; + this.dataGridMessages.ContextMenu.Items.Add(historyItem); + historyItem.IsEnabled = DBManager.Instance.GetReportingPartyDict()[App.UserId.Value].IsAdmin; // TODO: rechtzeitig wieder entfernen! + #endregion #region lokale Meldeklassen @@ -442,7 +451,7 @@ namespace ENI2.DetailViewControls { if ((sender is DataGrid grid) && (grid.SelectedItems?.Count == 1)) { - DataGridRow dgr = grid.ItemContainerGenerator.ContainerFromItem(grid.SelectedItem) as DataGridRow; + // DataGridRow dgr = grid.ItemContainerGenerator.ContainerFromItem(grid.SelectedItem) as DataGridRow; Message selectedMessage = grid.SelectedItem as Message; this.jumpToMessage(selectedMessage); } @@ -466,6 +475,18 @@ namespace ENI2.DetailViewControls #region Command button event handler + private void HistoryItem_Click(object sender, RoutedEventArgs e) + { + if(this.dataGridMessages.SelectedItems.Count > 0) + { + Message historyMessage = this.dataGridMessages.SelectedItems[0] as Message; + MessageHistoryDialog mhd = new MessageHistoryDialog(); + mhd.Messages = this.Messages; + mhd.MessageHistories = DBManager.Instance.GetMessageHistories(historyMessage.Id.Value); + mhd.Show(); + } + } + private void contextSendMessage(object sender, RoutedEventArgs e) { MessageBoxResult result = MessageBox.Show(Properties.Resources.textConfirmSend, Properties.Resources.textConfirm, MessageBoxButton.YesNo, MessageBoxImage.Question); @@ -550,9 +571,7 @@ namespace ENI2.DetailViewControls { if(this.Core.InitialHIS != _message.HIS) { - MessageBoxResult noMatchResult = MessageBox.Show(Properties.Resources.textHISNotMatching, Properties.Resources.textConfirm, - MessageBoxButton.OK, MessageBoxImage.Exclamation); - // todo: Hier den "Egal!" Fall berücksichtigen? + MessageBox.Show(Properties.Resources.textHISNotMatching, Properties.Resources.textConfirm, MessageBoxButton.OK, MessageBoxImage.Exclamation); return; } @@ -634,8 +653,7 @@ namespace ENI2.DetailViewControls { MessageCore reloadedCore = DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).GetMessageCoreById(this.Core.Id.Value); CoreStatusInfoDialog csid = new CoreStatusInfoDialog - { - IsModal = false, + { Core = reloadedCore }; csid.Show(); @@ -661,8 +679,7 @@ namespace ENI2.DetailViewControls private void buttonInfoCore_Click(object sender, RoutedEventArgs e) { SimplePropertyViewDialog spvd = new SimplePropertyViewDialog - { - IsModal = false, + { DisplayObject = this.Core }; spvd.Show(); diff --git a/ENI-2/ENI2/ENI2/DetailViewControls/SecurityDetailControl.xaml.cs b/ENI-2/ENI2/ENI2/DetailViewControls/SecurityDetailControl.xaml.cs index f518efcf..dd09672b 100644 --- a/ENI-2/ENI2/ENI2/DetailViewControls/SecurityDetailControl.xaml.cs +++ b/ENI-2/ENI2/ENI2/DetailViewControls/SecurityDetailControl.xaml.cs @@ -163,7 +163,8 @@ namespace ENI2.DetailViewControls // are you sure dialog is in base class _sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.Remove(s2s); DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(s2s); - DatabaseEntity.ResetIdentifiers(_sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled); + List tmpList = new List(_sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled); + DatabaseEntity.ResetIdentifiers(tmpList); this.SublistElementChanged(Message.NotificationClass.SEC); this.dataGridShip2ShipActivities.Items.Refresh(); } @@ -246,7 +247,8 @@ namespace ENI2.DetailViewControls // are you sure dialog is in base class _sec.LastTenPortFacilitesCalled.Remove(l10c); DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(l10c); - DatabaseEntity.ResetIdentifiers(_sec.LastTenPortFacilitesCalled); + List tmpList = new List(_sec.LastTenPortFacilitesCalled); + DatabaseEntity.ResetIdentifiers(tmpList);// ); this.SublistElementChanged(Message.NotificationClass.SEC); this.dataGridLast10PortFacilities.Items.Refresh(); } diff --git a/ENI-2/ENI2/ENI2/ENI2.csproj b/ENI-2/ENI2/ENI2/ENI2.csproj index ac2d14ca..c7543676 100644 --- a/ENI-2/ENI2/ENI2/ENI2.csproj +++ b/ENI-2/ENI2/ENI2/ENI2.csproj @@ -300,6 +300,9 @@ ErrorListDialog.xaml + + MessageHistoryDialog.xaml + NewWithIdDialog.xaml @@ -535,6 +538,10 @@ Designer MSBuild:Compile + + Designer + MSBuild:Compile + Designer MSBuild:Compile @@ -675,6 +682,9 @@ + + + Always diff --git a/ENI-2/ENI2/ENI2/EditControls/MessageHistoryDialog.xaml b/ENI-2/ENI2/ENI2/EditControls/MessageHistoryDialog.xaml new file mode 100644 index 00000000..653770cc --- /dev/null +++ b/ENI-2/ENI2/ENI2/EditControls/MessageHistoryDialog.xaml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + diff --git a/ENI-2/ENI2/ENI2/EditControls/MessageHistoryDialog.xaml.cs b/ENI-2/ENI2/ENI2/EditControls/MessageHistoryDialog.xaml.cs new file mode 100644 index 00000000..7b926d41 --- /dev/null +++ b/ENI-2/ENI2/ENI2/EditControls/MessageHistoryDialog.xaml.cs @@ -0,0 +1,129 @@ +// Copyright (c) 2017 schick Informatik +// Description: Übersicht Speicherreihenfolge zu diesem Objekt +// + +using System; +using System.Collections.Generic; +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.Shapes; +using bsmd.database; +using ENI2.Controls; +using log4net; + +namespace ENI2.EditControls +{ + /// + /// Interaction logic for MessageHistoryDialog.xaml + /// + public partial class MessageHistoryDialog : StatusWindowBase + { + + private static readonly ILog _log = LogManager.GetLogger(typeof(MessageHistoryDialog)); + + public MessageHistoryDialog() + { + InitializeComponent(); + Loaded += (o, e) => + { + this.dataGridMessageHistories.ItemsSource = this.MessageHistories; + + this.dataGridMessageHistories.ContextMenu = new ContextMenu(); + + MenuItem showDetailItem = new MenuItem + { + Header = Properties.Resources.textShowData, + Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/document_view.png")) } + }; + showDetailItem.Click += ShowDetailItem_Click; + this.dataGridMessageHistories.ContextMenu.Items.Add(showDetailItem); + + MenuItem copyDataItem = new MenuItem + { + Header = Properties.Resources.textCopyData, + Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/document_down.png")) } + }; + copyDataItem.Click += CopyDataItem_Click; + this.dataGridMessageHistories.ContextMenu.Items.Add(copyDataItem); + }; + } + + #region Properties + + public List MessageHistories { get; set; } + + public List Messages { get; set; } + + #endregion + + #region event handler + + private void ShowDetailItem_Click(object sender, RoutedEventArgs e) + { + this.DataGridViolations_MouseDoubleClick(sender, null); + } + + private void DataGridViolations_MouseDoubleClick(object sender, MouseButtonEventArgs e) + { + if (this.dataGridMessageHistories.SelectedItem is MessageHistory selectedHistory) + { + SimplePropertyViewDialog spvd = new SimplePropertyViewDialog(); + spvd.Title = "Message history"; + spvd.DisplayObject = selectedHistory.CreateObjectFromValues(); + spvd.Show(); + } + } + + private void CopyDataItem_Click(object sender, RoutedEventArgs e) + { + if (this.dataGridMessageHistories.SelectedItem is MessageHistory selectedHistory) + { + if (MessageBox.Show("Overwrite data selected message class?", "Confirmation", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.Yes) + { + Message targetMessage = null; + foreach (Message aMessage in this.Messages) + { + if (aMessage.MessageNotificationClassDisplay.Equals(selectedHistory.EntityName)) + { + targetMessage = aMessage; + break; + } + } + if (targetMessage != null) + { + _log.InfoFormat("Message {0} Id {1} will be restored from {2}", selectedHistory.EntityName, targetMessage.Id, selectedHistory.Created); + DatabaseEntity selectedItem = selectedHistory.CreateObjectFromValues() as DatabaseEntity; + // Fallunterscheidung: a) ISublistElement oder nicht? Falls ja müssen die anderen Elemente zusammengesucht werden + if(Message.IsListClass(targetMessage.MessageNotificationClass)) // Meldeklasse ist also z.B. LADG, CREW, PAS.. + { + foreach (DatabaseEntity oldElement in targetMessage.Elements) + DBManager.Instance.Delete(oldElement); + foreach (DatabaseEntity element in selectedHistory.GetGroup(this.MessageHistories)) + targetMessage.Elements.Add(element); + } + else + { + targetMessage.Elements[0].OverwriteWith(selectedItem); + } + DBManager.Instance.Save(targetMessage); + } + else + { + _log.WarnFormat("Cannot find message {0} to restore history element with id {1}", selectedHistory.EntityName, selectedHistory.Id); + } + } + } + } + + #endregion + + } +} diff --git a/ENI-2/ENI2/ENI2/MainWindow.xaml.cs b/ENI-2/ENI2/ENI2/MainWindow.xaml.cs index 550535ce..65845a3c 100644 --- a/ENI-2/ENI2/ENI2/MainWindow.xaml.cs +++ b/ENI-2/ENI2/ENI2/MainWindow.xaml.cs @@ -38,7 +38,7 @@ namespace ENI2 private ServerStatusControl statusControl; private readonly SucheControl sucheControl; - private readonly List anmeldungen = new List(); + // private readonly List anmeldungen = new List(); private bool efMode = false; private bool dbConnected; private readonly ScaleTransform _transform = new ScaleTransform(1.0, 1.0); @@ -336,8 +336,7 @@ namespace ENI2 MessageCore newCore = new MessageCore(); VisitIdDialog visitIdDialog = new VisitIdDialog(); - visitIdDialog.Core = newCore; - visitIdDialog.IsModal = false; + visitIdDialog.Core = newCore; visitIdDialog.Closed += (senderDialog, closeArgs) => { VisitIdDialog closedDialog = senderDialog as VisitIdDialog; @@ -370,8 +369,7 @@ namespace ENI2 /// private void buttonNewWithIdClick(object sender, RoutedEventArgs e) { - NewWithIdDialog newWithIdDialog = new NewWithIdDialog(); - newWithIdDialog.IsModal = false; + NewWithIdDialog newWithIdDialog = new NewWithIdDialog(); newWithIdDialog.OKClicked += new Action(() => { @@ -444,8 +442,8 @@ namespace ENI2 TabItem tabitem = this.openTabs[changedCore.Id.Value]; this.Dispatcher.BeginInvoke(new Action(() => { - if (tabitem is ClosableTabItem) - ((ClosableTabItem)tabitem).IsHighlighted = true; + if (tabitem is ClosableTabItem closableTabItem) + (closableTabItem).IsHighlighted = true; })); } } diff --git a/ENI-2/ENI2/ENI2/Properties/Resources.Designer.cs b/ENI-2/ENI2/ENI2/Properties/Resources.Designer.cs index 0c3ec203..d9046a93 100644 --- a/ENI-2/ENI2/ENI2/Properties/Resources.Designer.cs +++ b/ENI-2/ENI2/ENI2/Properties/Resources.Designer.cs @@ -220,6 +220,26 @@ namespace ENI2.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap clock_history { + get { + object obj = ResourceManager.GetObject("clock_history", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). + /// + public static System.Drawing.Icon clock_historyIcon { + get { + object obj = ResourceManager.GetObject("clock_historyIcon", resourceCulture); + return ((System.Drawing.Icon)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). /// @@ -260,6 +280,16 @@ namespace ENI2.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap document_down { + get { + object obj = ResourceManager.GetObject("document_down", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -1457,6 +1487,15 @@ namespace ENI2.Properties { } } + /// + /// Looks up a localized string similar to Copy to current message (overwrite). + /// + public static string textCopyToMessageClass { + get { + return ResourceManager.GetString("textCopyToMessageClass", resourceCulture); + } + } + /// /// Looks up a localized string similar to Copy TOWA to TOWD. /// @@ -2213,6 +2252,15 @@ namespace ENI2.Properties { } } + /// + /// Looks up a localized string similar to Show item history. + /// + public static string textHistoryItems { + get { + return ResourceManager.GetString("textHistoryItems", resourceCulture); + } + } + /// /// Looks up a localized string similar to IBC item. /// @@ -2897,6 +2945,15 @@ namespace ENI2.Properties { } } + /// + /// Looks up a localized string similar to Message history. + /// + public static string textMessageHistory { + get { + return ResourceManager.GetString("textMessageHistory", resourceCulture); + } + } + /// /// Looks up a localized string similar to Message reset at {0}. /// @@ -4022,6 +4079,15 @@ namespace ENI2.Properties { } } + /// + /// Looks up a localized string similar to Show data. + /// + public static string textShowData { + get { + return ResourceManager.GetString("textShowData", resourceCulture); + } + } + /// /// Looks up a localized string similar to Sick animals or pets on board?. /// @@ -4265,6 +4331,15 @@ namespace ENI2.Properties { } } + /// + /// Looks up a localized string similar to Timestamp. + /// + public static string textTimestamp { + get { + return ResourceManager.GetString("textTimestamp", resourceCulture); + } + } + /// /// Looks up a localized string similar to Show message core database fields (Detail). /// @@ -4364,6 +4439,15 @@ namespace ENI2.Properties { } } + /// + /// Looks up a localized string similar to Type. + /// + public static string textType { + get { + return ResourceManager.GetString("textType", resourceCulture); + } + } + /// /// Looks up a localized string similar to Type for Locode.... /// diff --git a/ENI-2/ENI2/ENI2/Properties/Resources.resx b/ENI-2/ENI2/ENI2/Properties/Resources.resx index 0533b26d..6eff215c 100644 --- a/ENI-2/ENI2/ENI2/Properties/Resources.resx +++ b/ENI-2/ENI2/ENI2/Properties/Resources.resx @@ -1663,4 +1663,31 @@ Reset "Cancelled" flag in database + + Show item history + + + Message history + + + ..\Resources\clock_history.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\clock_history.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + Timestamp + + + Type + + + ..\Resources\document_down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + Copy to current message (overwrite) + + + Show data + \ No newline at end of file diff --git a/ENI-2/ENI2/ENI2/Resources/clock_history.ico b/ENI-2/ENI2/ENI2/Resources/clock_history.ico new file mode 100644 index 0000000000000000000000000000000000000000..976a44bd6c984841efe9a5f90fd306b92179f72d GIT binary patch literal 107250 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

?S6-E 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
tH$-se6LVzOW4hHd)>^O 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

H# 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

SrC<>0-Cr)wf<`9ku?Q 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 anmeldungen = new List(); - private object searchLock = new object(); - private ILog _log = LogManager.GetLogger("SucheControl"); + private readonly object searchLock = new object(); + private readonly ILog _log = LogManager.GetLogger("SucheControl"); private MenuItem cancelItem; #region Construction @@ -42,7 +42,7 @@ namespace ENI2 MenuItem addItem = new MenuItem(); addItem.Header = Properties.Resources.textCopyClip; addItem.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) }; - addItem.Click += new RoutedEventHandler(this.copyID); + addItem.Click += this.copyID; this.dataGrid.ContextMenu.Items.Add(addItem); cancelItem = new MenuItem(); cancelItem.Header = Properties.Resources.textUndoCancel; @@ -186,7 +186,7 @@ namespace ENI2 // ergebnis anzeigen this.dataGrid.ItemsSource = this.anmeldungen; - this.searchResultLabel.Content = ((expectedResultNum ?? 0) > 0) ? string.Format("{0} results found, {1} displayed.", (expectedResultNum ?? 0), this.anmeldungen.Count) : "no results"; + this.searchResultLabel.Content = ((expectedResultNum ?? 0) > 0) ? string.Format("{0} results found, {1} displayed.", expectedResultNum ?? 0, this.anmeldungen.Count) : "no results"; if((expectedResultNum ?? 0) > 100) { @@ -234,7 +234,7 @@ namespace ENI2 if (sender != null) { DataGrid grid = sender as DataGrid; - if ((grid != null) && (grid.SelectedItems != null) && (grid.SelectedItems.Count == 1)) + if (grid?.SelectedItems?.Count == 1) { DataGridRow dgr = grid.ItemContainerGenerator.ContainerFromItem(grid.SelectedItem) as DataGridRow; MessageCore selectedCore = grid.SelectedItem as MessageCore; @@ -258,10 +258,9 @@ namespace ENI2 private void copyID(object sender, RoutedEventArgs e) { - MessageCore selectedCore = dataGrid.SelectedItem as MessageCore; - if(selectedCore != null) + if (dataGrid.SelectedItem is MessageCore selectedCore) { - if(selectedCore.DisplayId != null) + if (selectedCore.DisplayId != null) { Clipboard.SetText(selectedCore.DisplayId); } diff --git a/ENI-2/ENI2/ENI2/Util/UIHelper.cs b/ENI-2/ENI2/ENI2/Util/UIHelper.cs index e85faea6..34f56f5b 100644 --- a/ENI-2/ENI2/ENI2/Util/UIHelper.cs +++ b/ENI-2/ENI2/ENI2/Util/UIHelper.cs @@ -4,6 +4,7 @@ // https://stackoverflow.com/a/7482321 using System; +using System.Reflection; using System.Windows; using System.Windows.Input; using System.Windows.Threading; @@ -32,8 +33,6 @@ namespace ENI2.Util { new DispatcherTimer(TimeSpan.FromSeconds(0), DispatcherPriority.ApplicationIdle, dispatcherTimer_Tick, Application.Current.Dispatcher); } - - } private static void dispatcherTimer_Tick(object sender, EventArgs e) @@ -45,5 +44,11 @@ namespace ENI2.Util timer.Stop(); } } + + public static bool IsModal(this Window window) + { + return (bool)typeof(Window).GetField("_showingAsDialog", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(window); + } + } } diff --git a/Stundensheet.xlsx b/Stundensheet.xlsx index 7c0a29d1ee572b7f69b28e637cf6d31b1cb535d0..94193187204de8262255aaebda903e88bf28d27a 100644 GIT binary patch delta 27218 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 diff --git a/nsw/Source/bsmd.ExcelReadService/ExcelReadService.cs b/nsw/Source/bsmd.ExcelReadService/ExcelReadService.cs index d1893e97..82c17e0e 100644 --- a/nsw/Source/bsmd.ExcelReadService/ExcelReadService.cs +++ b/nsw/Source/bsmd.ExcelReadService/ExcelReadService.cs @@ -150,6 +150,7 @@ namespace bsmd.ExcelReadService if (reportingPartyDict[rpKey].UserEMail.IsNullOrEmpty()) continue; if (reportingPartyDict[rpKey].UserEMail.Equals(mailSender, StringComparison.OrdinalIgnoreCase)) { + ReportingParty.CurrentReportingParty = reportingPartyDict[rpKey]; importHeader.ReportingPartyId = rpKey; foundReportingParty = true; break; @@ -158,6 +159,7 @@ namespace bsmd.ExcelReadService if (!foundReportingParty) { _log.WarnFormat("Sender {0} is an unknown reporting party", mailSender); + ReportingParty.CurrentReportingParty = null; } DBManager.Instance.Save(importHeader); diff --git a/nsw/Source/bsmd.database/BPOL.cs b/nsw/Source/bsmd.database/BPOL.cs index 4d70b5a7..37ff34fa 100644 --- a/nsw/Source/bsmd.database/BPOL.cs +++ b/nsw/Source/bsmd.database/BPOL.cs @@ -103,6 +103,28 @@ namespace bsmd.database #endregion + #region overrides + + public override void OverwriteWith(DatabaseEntity otherEntity) + { + if (otherEntity is BPOL otherBPOL) + { + base.OverwriteWith(otherEntity); + foreach (PortOfItinerary poi in this.PortOfItineraries) + DBManager.Instance.Delete(poi); + this.PortOfItineraries.Clear(); + foreach (PortOfItinerary poi in otherBPOL.PortOfItineraries) + { + PortOfItinerary newPOI = poi.Clone() as PortOfItinerary; + newPOI.BPOL = this; + DBManager.Instance.Save(newPOI); + this.PortOfItineraries.Add(newPOI); + } + } + } + + #endregion + #region ISublistContainer implementation public ISublistElement GetSublistElementWithIdentifier(string identifier) diff --git a/nsw/Source/bsmd.database/DBManager.cs b/nsw/Source/bsmd.database/DBManager.cs index 435a6a4f..bc5631b9 100644 --- a/nsw/Source/bsmd.database/DBManager.cs +++ b/nsw/Source/bsmd.database/DBManager.cs @@ -650,6 +650,25 @@ namespace bsmd.database return result; } + public List GetMessageHistories(Guid messageId) + { + try + { + SqlCommand cmd = new SqlCommand(); + cmd.CommandText = MessageHistory.GetLoadCommand(); + cmd.Parameters.AddWithValue("@ENTITYID", messageId); + IDataReader reader = this.PerformCommand(cmd); + List result = MessageHistory.LoadList(reader); + reader.Close(); + return result; + } + catch(Exception ex) + { + _log.ErrorFormat("Error loadin message history: {0}", ex.Message); + return null; + } + } + #endregion #region internal/private funcs diff --git a/nsw/Source/bsmd.database/DatabaseEntity.cs b/nsw/Source/bsmd.database/DatabaseEntity.cs index bfc94d46..af047ad0 100644 --- a/nsw/Source/bsmd.database/DatabaseEntity.cs +++ b/nsw/Source/bsmd.database/DatabaseEntity.cs @@ -183,7 +183,40 @@ namespace bsmd.database public virtual ValidationBlock GetValidationBlock() { return ValidationBlock.BLOCK1; - } + } + + ///

+ /// Diese Methode überschreibt die Properties dieses Objekts mit den (gleichnamigen) Properties eines + /// anderen Objekts. Vorausgesetzt wird, dass die beiden Objekte vom selben Typ sind. Properties, die mit + /// "JSONIgnore" dekoriert sind werden dabei übersprungen + /// + /// Quell-Objekt + public virtual void OverwriteWith(DatabaseEntity otherEntity) + { + try + { + DatabaseEntity.CopyProperties(this, otherEntity); + } + catch(Exception ex) + { + _log.ErrorFormat("Error copying properties: {0}", ex.Message); + } + } + + public static void CopyProperties(DatabaseEntity entityTarget, DatabaseEntity entitySource) + { + foreach (PropertyInfo propertyInfo in entityTarget.GetType().GetProperties()) + { + bool hasJsonIgnoreAttribute = (propertyInfo.GetCustomAttribute(typeof(JsonIgnoreAttribute)) != null); + if (!hasJsonIgnoreAttribute) + { + PropertyInfo otherProperty = entitySource.GetType().GetProperty(propertyInfo.Name); + propertyInfo.SetValue(entityTarget, otherProperty.GetValue(entitySource)); + } + } + + DBManager.Instance.Save(entityTarget); + } #endregion diff --git a/nsw/Source/bsmd.database/HAZ.cs b/nsw/Source/bsmd.database/HAZ.cs index 5af2d278..0f5062b6 100644 --- a/nsw/Source/bsmd.database/HAZ.cs +++ b/nsw/Source/bsmd.database/HAZ.cs @@ -238,6 +238,89 @@ namespace bsmd.database #endregion + #region Overrides + + public override void OverwriteWith(DatabaseEntity otherEntity) + { + if (otherEntity is HAZ otherHAZ) + { + base.OverwriteWith(otherEntity); + + // overwrite IMGD + + foreach (IMDGPosition imdg in this.IMDGPositions) + DBManager.Instance.Delete(imdg); + this.IMDGPositions.Clear(); + + foreach (IMDGPosition imdg in otherHAZ.IMDGPositions) + { + IMDGPosition newIMDG = imdg.Clone() as IMDGPosition; + newIMDG.HAZ = this; + DBManager.Instance.Save(newIMDG); + this.IMDGPositions.Add(newIMDG); + } + + // overwrite IBC + + foreach (IBCPosition ibc in this.IBCPositions) + DBManager.Instance.Delete(ibc); + this.IBCPositions.Clear(); + + foreach (IBCPosition ibc in otherHAZ.IBCPositions) + { + IBCPosition newIBC = ibc.Clone() as IBCPosition; + newIBC.HAZ = this; + DBManager.Instance.Save(newIBC); + this.IBCPositions.Add(newIBC); + } + + // overwrite IGC + + foreach (IGCPosition igc in this.IGCPositions) + DBManager.Instance.Delete(igc); + this.IGCPositions.Clear(); + + foreach (IGCPosition igc in otherHAZ.IGCPositions) + { + IGCPosition newIGC = igc.Clone() as IGCPosition; + newIGC.HAZ = this; + DBManager.Instance.Save(newIGC); + this.IGCPositions.Add(newIGC); + } + + // IMSBC + + foreach (IMSBCPosition imsbc in this.IMSBCPositions) + DBManager.Instance.Delete(imsbc); + this.IMSBCPositions.Clear(); + + foreach (IMSBCPosition imsbc in otherHAZ.IMSBCPositions) + { + IMSBCPosition newIMSBC = imsbc.Clone() as IMSBCPosition; + newIMSBC.HAZ = this; + DBManager.Instance.Save(newIMSBC); + this.IMSBCPositions.Add(newIMSBC); + } + + // Marpol + + foreach (MARPOL_Annex_I_Position marpol in this.MARPOLPositions) + DBManager.Instance.Delete(marpol); + this.MARPOLPositions.Clear(); + + foreach (MARPOL_Annex_I_Position marpol in otherHAZ.MARPOLPositions) + { + MARPOL_Annex_I_Position newMarpol = marpol.Clone() as MARPOL_Annex_I_Position; + newMarpol.HAZ = this; + DBManager.Instance.Save(newMarpol); + this.MARPOLPositions.Add(newMarpol); + } + + } + } + + #endregion + #region ISublistContainer implementation public ISublistElement GetSublistElementWithIdentifier(string identifier) diff --git a/nsw/Source/bsmd.database/LADG.cs b/nsw/Source/bsmd.database/LADG.cs index 37968986..61c133cc 100644 --- a/nsw/Source/bsmd.database/LADG.cs +++ b/nsw/Source/bsmd.database/LADG.cs @@ -19,7 +19,7 @@ namespace bsmd.database #region static definition - private static Lazy> laCodes = + private static readonly Lazy> laCodes = new Lazy>(() => new Dictionary { { 10, "unverpacktes Flüssiggut" }, @@ -43,8 +43,6 @@ namespace bsmd.database { 67, "Reisezugwagen und Triebwagen" } }); - private static Dictionary _cargoHandlingDict = new Dictionary(); - #endregion public LADG() @@ -66,8 +64,8 @@ namespace bsmd.database get { if(this.CargoHandlingType.HasValue) { - if (_cargoHandlingDict.ContainsKey(this.CargoHandlingType.Value)) - return _cargoHandlingDict[this.CargoHandlingType.Value]; + if (CargoHandlingDict.ContainsKey(this.CargoHandlingType.Value)) + return CargoHandlingDict[this.CargoHandlingType.Value]; return string.Empty; } return string.Empty; @@ -117,12 +115,9 @@ namespace bsmd.database public static Dictionary CargoCodesNST { get; set; } public static List> CargoCodesNST3 { get; set; } - - public static Dictionary CargoHandlingDict - { - get { return _cargoHandlingDict; } - } + + public static Dictionary CargoHandlingDict { get; } = new Dictionary(); #endregion @@ -162,7 +157,7 @@ namespace bsmd.database } else { - scmd.Parameters.AddWithValue(@"ID", this.Id); + scmd.Parameters.AddWithValue("@ID", this.Id); scmd.CommandText = string.Format("UPDATE {0} SET CargoHandlingType = @P2, CargoCodeNST = @P3, CargoNumberOfItems = @P4, " + "CargoGrossQuantity_TNE = @P5, PortOfLoading = @P6, PortOfDischarge = @P7, CargoLACode = @P9, CargoCodeNST_3 = @P10, " + "Identifier = @P8 WHERE Id = @ID", this.Tablename); diff --git a/nsw/Source/bsmd.database/MDH.cs b/nsw/Source/bsmd.database/MDH.cs index 8dcaffef..5ee04790 100644 --- a/nsw/Source/bsmd.database/MDH.cs +++ b/nsw/Source/bsmd.database/MDH.cs @@ -17,15 +17,6 @@ namespace bsmd.database { public class MDH : DatabaseEntity, ISublistContainer { - - private ObservableCollection portOfCallLast30Days = new ObservableCollection(); - - private ObservableCollection sanitaryMeasuresDetails = new ObservableCollection(); - - private ObservableCollection stowawaysJoiningLocations = new ObservableCollection(); - - private ObservableCollection infectedAreas = new ObservableCollection(); - public MDH() { this.tablename = "[dbo].[MDH]"; @@ -34,13 +25,13 @@ namespace bsmd.database #region Properties - public ObservableCollection PortOfCallLast30Days { get { return this.portOfCallLast30Days; } } + public ObservableCollection PortOfCallLast30Days { get; private set; } = new ObservableCollection(); - public ObservableCollection SanitaryMeasuresDetails { get { return this.sanitaryMeasuresDetails; } } + public ObservableCollection SanitaryMeasuresDetails { get; private set; } = new ObservableCollection(); - public ObservableCollection StowawaysJoiningLocations { get { return this.stowawaysJoiningLocations; } } + public ObservableCollection StowawaysJoiningLocations { get; private set; } = new ObservableCollection(); - public ObservableCollection InfectedAreas { get { return this.infectedAreas; } } + public ObservableCollection InfectedAreas { get; private set; } = new ObservableCollection(); [ShowReport] [Validation1(ValidationCode.NOT_NULL)] @@ -400,6 +391,71 @@ namespace bsmd.database #endregion + #region overrides + + public override void OverwriteWith(DatabaseEntity otherEntity) + { + if (otherEntity is MDH otherMDH) + { + base.OverwriteWith(otherEntity); + + // PortOfCallLast30Days + + foreach (PortOfCallLast30Days poc in this.PortOfCallLast30Days) + DBManager.Instance.Delete(poc); + this.PortOfCallLast30Days.Clear(); + foreach (PortOfCallLast30Days poc in otherMDH.PortOfCallLast30Days) + { + PortOfCallLast30Days newPOC = poc.Clone() as PortOfCallLast30Days; + newPOC.MDH = this; + DBManager.Instance.Save(newPOC); + this.PortOfCallLast30Days.Add(newPOC); + } + + // SanitaryMeasuresDetails + + foreach (SanitaryMeasuresDetail san in this.SanitaryMeasuresDetails) + DBManager.Instance.Delete(san); + this.SanitaryMeasuresDetails.Clear(); + foreach (SanitaryMeasuresDetail san in otherMDH.SanitaryMeasuresDetails) + { + SanitaryMeasuresDetail newSAN = san.Clone() as SanitaryMeasuresDetail; + newSAN.MDH = this; + DBManager.Instance.Save(newSAN); + this.SanitaryMeasuresDetails.Add(newSAN); + } + + // StowawaysJoiningLocations + + foreach (StowawaysJoiningLocation sjl in this.StowawaysJoiningLocations) + DBManager.Instance.Delete(sjl); + this.StowawaysJoiningLocations.Clear(); + foreach (StowawaysJoiningLocation sjl in otherMDH.StowawaysJoiningLocations) + { + StowawaysJoiningLocation newSJL = sjl.Clone() as StowawaysJoiningLocation; + newSJL.MDH = this; + DBManager.Instance.Save(newSJL); + this.StowawaysJoiningLocations.Add(newSJL); + } + + // InfectedAreas + + foreach (InfectedArea ia in this.InfectedAreas) + DBManager.Instance.Delete(ia); + this.InfectedAreas.Clear(); + foreach (InfectedArea ia in otherMDH.InfectedAreas) + { + InfectedArea newIA = ia.Clone() as InfectedArea; + newIA.MDH = this; + DBManager.Instance.Save(newIA); + this.InfectedAreas.Add(newIA); + } + + } + } + + #endregion + #region ISublistContainer implementation public ISublistElement GetSublistElementWithIdentifier(string identifier) @@ -429,7 +485,7 @@ namespace bsmd.database DBManager.Instance.Save(smd); } - foreach(StowawaysJoiningLocation sjl in this.stowawaysJoiningLocations) + foreach(StowawaysJoiningLocation sjl in this.StowawaysJoiningLocations) { DBManager.Instance.Save(sjl); } @@ -453,9 +509,9 @@ namespace bsmd.database { DBManager.Instance.Delete(smd); } - this.sanitaryMeasuresDetails.Clear(); + this.SanitaryMeasuresDetails.Clear(); - foreach (StowawaysJoiningLocation sjl in this.stowawaysJoiningLocations) + foreach (StowawaysJoiningLocation sjl in this.StowawaysJoiningLocations) { DBManager.Instance.Delete(sjl); } @@ -470,21 +526,21 @@ namespace bsmd.database public SanitaryMeasuresDetail GetSanitaryMeasuresDetailWithIdentifier(string identifier) { - foreach (SanitaryMeasuresDetail sd in this.sanitaryMeasuresDetails) + foreach (SanitaryMeasuresDetail sd in this.SanitaryMeasuresDetails) if (sd.Identifier.Equals(identifier)) return sd; return null; } public StowawaysJoiningLocation GetStowawaysJoiningLocationWithIdentifier(string identifier) { - foreach (StowawaysJoiningLocation sj in this.stowawaysJoiningLocations) + foreach (StowawaysJoiningLocation sj in this.StowawaysJoiningLocations) if (sj.Identifier.Equals(identifier)) return sj; return null; } public InfectedArea GetInfectedAreaWithIdentifier(string identifier) { - foreach (InfectedArea ia in this.infectedAreas) + foreach (InfectedArea ia in this.InfectedAreas) if (ia.Identifier.Equals(identifier)) return ia; return null; } @@ -553,12 +609,12 @@ namespace bsmd.database if ((this.DateOfIssue.HasValue) && (this.DateOfIssue.Value < DateTime.Today.AddMonths(-6))) violations.Add(RuleEngine.CreateViolation(ValidationCode.TIME_IMPLAUSIBLE, "Date of issue might be too old", null, this.Title, null, this.Tablename)); - if (this.portOfCallLast30Days.Count == 0) + if (this.PortOfCallLast30Days.Count == 0) { errors.Add(RuleEngine.CreateError(ValidationCode.NOT_NULL, "Port of Call last 30 day list is EMPTY", null, this.Title, null, this.Tablename)); } - foreach (PortOfCallLast30Days poc30d in this.portOfCallLast30Days) + foreach (PortOfCallLast30Days poc30d in this.PortOfCallLast30Days) { RuleEngine.ValidateProperties(poc30d, errors, violations); poc30d.Validate(errors, violations); @@ -574,10 +630,10 @@ namespace bsmd.database { MDH mdh = this.MemberwiseClone() as MDH; mdh.id = null; - mdh.infectedAreas = new ObservableCollection(); - mdh.portOfCallLast30Days = new ObservableCollection(); - mdh.sanitaryMeasuresDetails = new ObservableCollection(); - mdh.stowawaysJoiningLocations = new ObservableCollection(); + mdh.InfectedAreas = new ObservableCollection(); + mdh.PortOfCallLast30Days = new ObservableCollection(); + mdh.SanitaryMeasuresDetails = new ObservableCollection(); + mdh.StowawaysJoiningLocations = new ObservableCollection(); foreach (InfectedArea ia in this.InfectedAreas) { @@ -593,7 +649,7 @@ namespace bsmd.database mdh.PortOfCallLast30Days.Add(clonedPOC); } - foreach (SanitaryMeasuresDetail smd in this.sanitaryMeasuresDetails) + foreach (SanitaryMeasuresDetail smd in this.SanitaryMeasuresDetails) { SanitaryMeasuresDetail clonedSMD = smd.Clone() as SanitaryMeasuresDetail; clonedSMD.MDH = mdh; diff --git a/nsw/Source/bsmd.database/MessageHistory.cs b/nsw/Source/bsmd.database/MessageHistory.cs index 1c37624b..881d1db4 100644 --- a/nsw/Source/bsmd.database/MessageHistory.cs +++ b/nsw/Source/bsmd.database/MessageHistory.cs @@ -1,6 +1,7 @@ // Copyright (c) 2015-2017 schick Informatik // Description: +using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Data; @@ -35,6 +36,88 @@ namespace bsmd.database public DateTime Created { get; private set; } + /// + /// ENI Grid helper property + /// + public string ReportingPartyName + { + get + { + Dictionary repPartyDict = DBManager.Instance.GetReportingPartyDict(); + if (ReportingPartyId.HasValue && repPartyDict.ContainsKey(ReportingPartyId.Value)) + return repPartyDict[ReportingPartyId.Value].Logon; + return ""; + } + } + + #endregion + + #region public methods + + internal static string GetLoadCommand() + { + return "SELECT Id, ReportingPartyId, EntityId, EntityType, EntityName, EntityValues, Timestamp FROM MessageHistory WHERE EntityId=@ENTITYID ORDER BY Timestamp"; + } + + public object CreateObjectFromValues() + { + if(!this.EntityType.IsNullOrEmpty()) + { + Type objectType = Type.GetType(this.EntityType); + if(objectType != null) + return JsonConvert.DeserializeObject(this.EntityValues, objectType); + } + return null; + } + + /// + /// Liefert alle History-Elemente zu dem Parameter Bezugselement, wenn es ISublistElement Objekte sind + /// Die Elemente werden über den Index gefunden.. also alles was von 1..n geht in dem Abschnitt, in dem der Benutzer + /// einen Eintrag ausgewählt hat. + /// + /// + /// + public List GetGroup(List allHistories) + { + + LinkedList tmpResult = new LinkedList(); + DatabaseEntity refEntity = this.CreateObjectFromValues() as DatabaseEntity; + + if (refEntity is ISublistElement sublistElement) + { + List tmpList = new List(allHistories); + // Alle History-Elemente einer anderen Meldeklasse ausfiltern + tmpList.RemoveAll(aMessageHistory => !aMessageHistory.EntityId.Equals(this.EntityId)); + + int selIndex = tmpList.IndexOf(this); + tmpResult.AddLast(refEntity); + int myIdentifier = Int32.Parse((sublistElement).Identifier); + + // Elemente vor dem ausgewählten Element der Linked List hinzufügen + int indexIdentifier = myIdentifier; + + for (int tmpIndex = selIndex - 1; (indexIdentifier != 1) && (tmpIndex >= 0); tmpIndex--) + { + DatabaseEntity prevEntity = tmpList[tmpIndex].CreateObjectFromValues() as DatabaseEntity; + indexIdentifier = Int32.Parse(((ISublistElement)prevEntity).Identifier); + tmpResult.AddFirst(prevEntity); + } + + // Elemente nach dem ausgewählten Element hinzufügen (wenn sie zur gleichen Gruppe gehören) + indexIdentifier = myIdentifier; + for(int tmpIndex = selIndex + 1; (indexIdentifier != 1) && (tmpIndex < tmpList.Count); tmpIndex++) + { + DatabaseEntity nextEntity = tmpList[tmpIndex].CreateObjectFromValues() as DatabaseEntity; + indexIdentifier = Int32.Parse(((ISublistElement)nextEntity).Identifier); + tmpResult.AddLast(nextEntity); + } + + } + + return new List(tmpResult); + } + + #endregion #region IDatabaseEntity implementation @@ -62,9 +145,9 @@ namespace bsmd.database SqlCommand scmd = cmd as SqlCommand; scmd.CommandText = string.Format("DELETE FROM {0} WHERE Id = @ID", Tablename); scmd.Parameters.AddWithValue("@ID", this.Id); - } + } - public List LoadList(IDataReader reader) + internal static List LoadList(IDataReader reader) { List result = new List(); diff --git a/nsw/Source/bsmd.database/NOA_NOD.cs b/nsw/Source/bsmd.database/NOA_NOD.cs index 3b459ca3..7a0b54b8 100644 --- a/nsw/Source/bsmd.database/NOA_NOD.cs +++ b/nsw/Source/bsmd.database/NOA_NOD.cs @@ -153,6 +153,28 @@ namespace bsmd.database #endregion + #region overrides + + public override void OverwriteWith(DatabaseEntity otherEntity) + { + if (otherEntity is NOA_NOD otherNOA_NOD) + { + base.OverwriteWith(otherEntity); + foreach (CallPurpose cp in this.CallPurposes) + DBManager.Instance.Delete(cp); + this.CallPurposes.Clear(); + foreach (CallPurpose cp in otherNOA_NOD.CallPurposes) + { + CallPurpose newCP = cp.Clone() as CallPurpose; + newCP.NOA_NOD = this; + DBManager.Instance.Save(newCP); + this.CallPurposes.Add(newCP); + } + } + } + + #endregion + #region ISublistContainer implementation public ISublistElement GetSublistElementWithIdentifier(string identifier) diff --git a/nsw/Source/bsmd.database/SEC.cs b/nsw/Source/bsmd.database/SEC.cs index 615a443c..ff01aa3a 100644 --- a/nsw/Source/bsmd.database/SEC.cs +++ b/nsw/Source/bsmd.database/SEC.cs @@ -17,11 +17,6 @@ namespace bsmd.database { public class SEC : DatabaseEntity, ISublistContainer { - - private ObservableCollection ltpfc = new ObservableCollection(); - - private ObservableCollection lsts = new ObservableCollection(); - public SEC() { this.tablename = "[dbo].[SEC]"; @@ -155,9 +150,9 @@ namespace bsmd.database public DateTime? KielCanalPassagePlannedOutgoing { get; set; } [Validation2(ValidationCode.LIST_EMPTY)] - public ObservableCollection LastTenPortFacilitesCalled { get { return this.ltpfc; } } + public ObservableCollection LastTenPortFacilitesCalled { get; private set; } = new ObservableCollection(); - public ObservableCollection ShipToShipActivitiesDuringLastTenPortFacilitiesCalled { get { return this.lsts; } } + public ObservableCollection ShipToShipActivitiesDuringLastTenPortFacilitiesCalled { get; private set; } = new ObservableCollection(); #endregion @@ -282,11 +277,46 @@ namespace bsmd.database #endregion + #region overrides + + public override void OverwriteWith(DatabaseEntity otherEntity) + { + if (otherEntity is SEC otherSEC) + { + base.OverwriteWith(otherEntity); + + foreach (LastTenPortFacilitiesCalled lc in this.LastTenPortFacilitesCalled) + DBManager.Instance.Delete(lc); + this.LastTenPortFacilitesCalled.Clear(); + foreach (LastTenPortFacilitiesCalled lc in otherSEC.LastTenPortFacilitesCalled) + { + LastTenPortFacilitiesCalled newLC = lc.Clone() as LastTenPortFacilitiesCalled; + newLC.SEC = this; + DBManager.Instance.Save(newLC); + this.LastTenPortFacilitesCalled.Add(newLC); + } + + foreach (ShipToShipActivitiesDuringLastTenPortFacilitiesCalled s2s in this.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled) + DBManager.Instance.Delete(s2s); + this.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.Clear(); + foreach (ShipToShipActivitiesDuringLastTenPortFacilitiesCalled s2s in otherSEC.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled) + { + ShipToShipActivitiesDuringLastTenPortFacilitiesCalled newS2S = s2s.Clone() as ShipToShipActivitiesDuringLastTenPortFacilitiesCalled; + newS2S.SEC = this; + DBManager.Instance.Save(newS2S); + this.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.Add(newS2S); + } + + } + } + + #endregion + #region sublist lookup implementation public LastTenPortFacilitiesCalled GetPortFacilityWithIdentifier(string identifier) { - foreach(ISublistElement lp in this.ltpfc) { + foreach(ISublistElement lp in this.LastTenPortFacilitesCalled) { if (lp.Identifier.Equals(identifier)) return lp as LastTenPortFacilitiesCalled; } @@ -295,7 +325,7 @@ namespace bsmd.database public ShipToShipActivitiesDuringLastTenPortFacilitiesCalled GetShipToShipWithIdentifier(string identifier) { - foreach (ISublistElement lp in this.lsts) + foreach (ISublistElement lp in this.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled) { if (lp.Identifier.Equals(identifier)) return lp as ShipToShipActivitiesDuringLastTenPortFacilitiesCalled; @@ -437,8 +467,8 @@ namespace bsmd.database SEC sec = this.MemberwiseClone() as SEC; sec.id = null; - sec.lsts = new ObservableCollection(); - sec.ltpfc = new ObservableCollection(); + sec.ShipToShipActivitiesDuringLastTenPortFacilitiesCalled = new ObservableCollection(); + sec.LastTenPortFacilitesCalled = new ObservableCollection(); foreach (LastTenPortFacilitiesCalled ltp in this.LastTenPortFacilitesCalled) { diff --git a/nsw/Source/bsmd.database/WAS.cs b/nsw/Source/bsmd.database/WAS.cs index 42af6299..6d0664b2 100644 --- a/nsw/Source/bsmd.database/WAS.cs +++ b/nsw/Source/bsmd.database/WAS.cs @@ -17,11 +17,6 @@ namespace bsmd.database { public class WAS : DatabaseEntity, ISublistContainer { - - private ObservableCollection wdsp = new ObservableCollection(); - - private ObservableCollection waste = new ObservableCollection(); - public WAS() { this.tablename = "[dbo].[WAS]"; @@ -70,9 +65,9 @@ namespace bsmd.database [ENI2Validation] public bool? ConfirmationOfSufficiency { get; set; } - public ObservableCollection Waste { get { return this.waste; } } + public ObservableCollection Waste { get; private set; } = new ObservableCollection(); - public ObservableCollection WasteDisposalServiceProvider { get { return this.wdsp; } } + public ObservableCollection WasteDisposalServiceProvider { get; private set; } = new ObservableCollection(); /// /// Hilfsproperty, um eine kommaseparierte Liste von WasteDisposalServiceProvider (analog ANSW) im ENI-2 anzuzeigen, @@ -227,6 +222,41 @@ namespace bsmd.database #endregion + #region overrides + + public override void OverwriteWith(DatabaseEntity otherEntity) + { + if (otherEntity is WAS otherWAS) + { + base.OverwriteWith(otherEntity); + + foreach (Waste w in this.Waste) + DBManager.Instance.Delete(w); + this.Waste.Clear(); + foreach (Waste w in otherWAS.Waste) + { + Waste newW = w.Clone() as Waste; + newW.WAS = this; + DBManager.Instance.Save(newW); + this.Waste.Add(newW); + } + + foreach (WasteDisposalServiceProvider ws in this.WasteDisposalServiceProvider) + DBManager.Instance.Delete(ws); + this.WasteDisposalServiceProvider.Clear(); + foreach (WasteDisposalServiceProvider ws in otherWAS.WasteDisposalServiceProvider) + { + WasteDisposalServiceProvider newWS = ws.Clone() as WasteDisposalServiceProvider; + newWS.WAS = this; + DBManager.Instance.Save(newWS); + this.WasteDisposalServiceProvider.Add(newWS); + } + + } + } + + #endregion + #region ISublistContainer implementation public ISublistElement GetSublistElementWithIdentifier(string identifier) @@ -460,8 +490,8 @@ namespace bsmd.database { WAS was = this.MemberwiseClone() as WAS; was.id = null; - was.waste = new ObservableCollection(); - was.wdsp = new ObservableCollection(); + was.Waste = new ObservableCollection(); + was.WasteDisposalServiceProvider = new ObservableCollection(); foreach (Waste waste in this.Waste) {