From 54aa91afc19ac6dfb45b73936159efd5bf8d1a26 Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Sat, 26 Jul 2025 10:44:22 +0200 Subject: [PATCH] Fixes for send all functionality --- .../OverViewDetailControl.xaml | 2 +- .../OverViewDetailControl.xaml.cs | 16 +++--- .../SelectImportClassesDialog.xaml | 2 +- .../SelectImportClassesDialog.xaml.cs | 57 ++++++++++++++----- 4 files changed, 54 insertions(+), 23 deletions(-) diff --git a/ENI2/DetailViewControls/OverViewDetailControl.xaml b/ENI2/DetailViewControls/OverViewDetailControl.xaml index f2feb1b0..8cd35795 100644 --- a/ENI2/DetailViewControls/OverViewDetailControl.xaml +++ b/ENI2/DetailViewControls/OverViewDetailControl.xaml @@ -262,7 +262,7 @@ SelectionMode="Extended" AutoGenerateColumns="False" MouseDoubleClick="dataGrid_ - + diff --git a/ENI2/DetailViewControls/OverViewDetailControl.xaml.cs b/ENI2/DetailViewControls/OverViewDetailControl.xaml.cs index 8362dc24..34267ceb 100644 --- a/ENI2/DetailViewControls/OverViewDetailControl.xaml.cs +++ b/ENI2/DetailViewControls/OverViewDetailControl.xaml.cs @@ -834,19 +834,19 @@ namespace ENI2.DetailViewControls private void buttonSendAll_Click(object sender, RoutedEventArgs e) { SelectImportClassesDialog sicd = new SelectImportClassesDialog(); - List readyToSendMessages = new List(); + List readyToSendMessages = new List(); foreach (Message message in this.Messages) - { - if (message.MessageNotificationClass == NotificationClass.STO) continue; - // other filters? - + { if (((message.ViolationCount ?? 0) > 0) || ((message.ErrorCount ?? 0) > 0)) continue; // these need more work - readyToSendMessages.Add(message); + if (Message.IsListClass(message.MessageNotificationClass) && (message.Elements.Count == 0)) continue; // avoid suspend on empty list classes + readyToSendMessages.Add(message.MessageNotificationClass); } - sicd.Messages = readyToSendMessages; + sicd.Messages = this.Messages; + sicd.PreselectedClasses.AddRange(readyToSendMessages); sicd.IsTransit = this.Core.IsTransit; + sicd.IsImportMode = false; if ((sicd.ShowDialog() ?? false) && (sicd.SelectedClasses.Count > 0)) { @@ -854,7 +854,7 @@ namespace ENI2.DetailViewControls List toSendMessages = new List(); foreach(NotificationClass notificationClass in sicd.SelectedClasses) { - Message selectedMessage = readyToSendMessages.Find(x => x.MessageNotificationClass == notificationClass); + Message selectedMessage = this.Messages.Find(x => x.MessageNotificationClass == notificationClass); if (selectedMessage != null) { toSendMessages.Add(selectedMessage); diff --git a/ENI2/EditControls/SelectImportClassesDialog.xaml b/ENI2/EditControls/SelectImportClassesDialog.xaml index 19885b45..cb8d30e5 100644 --- a/ENI2/EditControls/SelectImportClassesDialog.xaml +++ b/ENI2/EditControls/SelectImportClassesDialog.xaml @@ -8,7 +8,7 @@ xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit" xmlns:p="clr-namespace:ENI2.Properties" mc:Ignorable="d" - Title="{x:Static p:Resources.textSelectImportClasses}" Height="600" Width="250" Background="AliceBlue"> + Title="{x:Static p:Resources.textSelectImportClasses}" Height="660" Width="250" Background="AliceBlue"> diff --git a/ENI2/EditControls/SelectImportClassesDialog.xaml.cs b/ENI2/EditControls/SelectImportClassesDialog.xaml.cs index a513bd93..a4dbc18c 100644 --- a/ENI2/EditControls/SelectImportClassesDialog.xaml.cs +++ b/ENI2/EditControls/SelectImportClassesDialog.xaml.cs @@ -1,5 +1,5 @@ // Copyright (c) 2017-today schick Informatik -// Description: Select classes for import +// Description: Select classes for import via Excel or for sending them once completed // Returns: Array of selected classes as property using System; @@ -17,7 +17,8 @@ namespace ENI2.EditControls public partial class SelectImportClassesDialog : ENI2.Controls.EditWindowBase { private readonly List _selectClasses = new List(); - private readonly List _selectedClasses = new List(); + private readonly List _selectedClasses = new List(); + private readonly List _preselectedClasses = new List(); public SelectImportClassesDialog() { @@ -25,33 +26,62 @@ namespace ENI2.EditControls this.Loaded += SelectImportClassesDialog_Loaded; } + /// + /// List of all message classes that are available for selection + /// public List SelectedClasses { get { return _selectedClasses; } } + /// + /// Classes that should be checked already when the dialog is opened (relevant for send mode) + /// + public List PreselectedClasses + { + get { return _preselectedClasses; } + } + /// /// These messages are needed to derive message classes from, already sorted in the right manner /// public List Messages { get; set; } + /// + /// Flag to reduce selection amount in case of transit + /// public bool IsTransit { get; set; } + /// + /// Flag if dialog is used in import mode (default true). Set false for send all mode. + /// + public bool IsImportMode { get; set; } = true; + private void SelectImportClassesDialog_Loaded(object sender, RoutedEventArgs e) { - - foreach(Message aMessage in this.Messages) + + + foreach (Message aMessage in this.Messages) { + // these are of no interest if ((aMessage.MessageNotificationClass == Message.NotificationClass.VISIT) || (aMessage.MessageNotificationClass == Message.NotificationClass.TRANSIT) || + (aMessage.MessageNotificationClass == Message.NotificationClass.STO)) + continue; + + // these are never imported but may be sent + if (IsImportMode) + { + if ((aMessage.MessageNotificationClass == Message.NotificationClass.ATA) || + (aMessage.MessageNotificationClass == Message.NotificationClass.ATD)) + continue; + } + + // filter out messages not relevant for transit + if (IsTransit && ( (aMessage.MessageNotificationClass == Message.NotificationClass.ATA) || (aMessage.MessageNotificationClass == Message.NotificationClass.ATD) || - (aMessage.MessageNotificationClass == Message.NotificationClass.STO) - ) continue; - - if (IsTransit && - ((aMessage.MessageNotificationClass == Message.NotificationClass.BKRD) || - (aMessage.MessageNotificationClass == Message.NotificationClass.BPOL) || + (aMessage.MessageNotificationClass == Message.NotificationClass.BKRD) || (aMessage.MessageNotificationClass == Message.NotificationClass.HAZD) || (aMessage.MessageNotificationClass == Message.NotificationClass.INFO) || (aMessage.MessageNotificationClass == Message.NotificationClass.LADG) || @@ -65,13 +95,14 @@ namespace ENI2.EditControls )) continue; SelectClass sc = new SelectClass(); - sc.Name = Enum.GetName(typeof(bsmd.database.Message.NotificationClass), aMessage.MessageNotificationClass); + sc.Name = Enum.GetName(typeof(Message.NotificationClass), aMessage.MessageNotificationClass); sc.Class = aMessage.MessageNotificationClass; - sc.IsSelected = false; + sc.IsSelected = this._preselectedClasses.Contains(sc.Class); _selectClasses.Add(sc); } + - this.checkListBoxClasses.ItemsSource = _selectClasses; + this.checkListBoxClasses.ItemsSource = _selectClasses; this.OKClicked += SelectImportClassesDialog_OKClicked; }