diff --git a/FasdDesktopUi/Basics/UserControls/Ticket/CloseCaseDialogWithTicket.xaml b/FasdDesktopUi/Basics/UserControls/Ticket/CloseCaseDialogWithTicket.xaml
index 5c0adf5..f72394f 100644
--- a/FasdDesktopUi/Basics/UserControls/Ticket/CloseCaseDialogWithTicket.xaml
+++ b/FasdDesktopUi/Basics/UserControls/Ticket/CloseCaseDialogWithTicket.xaml
@@ -175,15 +175,16 @@
Margin="0 10 0 0"
Foreground="{DynamicResource FontColor.Menu.Categories}" />
-
-
+
+
categoryHierarchy = new ObservableCollection();
private readonly Dictionary categoryLookup = new Dictionary(StringComparer.OrdinalIgnoreCase);
private bool isCategoryLoading;
+ private Brush defaultCategoryBorderBrush;
+ private Brush defaultQuickTicketBorderBrush;
+ private readonly Brush validationErrorBrush = new SolidColorBrush(Colors.Red);
public bool IsTicket
{
@@ -230,7 +233,10 @@ namespace FasdDesktopUi.Basics.UserControls
private static void OnSelectedCategoryChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
if (d is CloseCaseDialogWithTicket instance)
+ {
instance.LogSelectedCategoryChanged(e.NewValue as HierarchicalSelectionItem);
+ instance.ValidateProperty("SelectedCategory");
+ }
}
#endregion
@@ -403,9 +409,11 @@ namespace FasdDesktopUi.Basics.UserControls
me.UpdateTicketComponentVisibility();
await me.InitializeCategorySelectionAsync();
await me.UpdateQuickCallsComboBoxAsync();
- }
- catch (Exception E)
- {
+ me.ValidateProperty("SelectedCategory");
+ me.ValidateProperty("QuickTicketSelection");
+ }
+ catch (Exception E)
+ {
LogException(E);
}
@@ -418,14 +426,18 @@ namespace FasdDesktopUi.Basics.UserControls
private TicketCompletion parentWindow;
- public CloseCaseDialogWithTicket()
- {
- InitializeComponent();
- this.Unloaded += CloseCaseDialogWithTicket_Unloaded;
- this.Loaded += CloseCaseDialogWithTicket_Loaded;
-
- DependencyPropertyDescriptor dpd =
- DependencyPropertyDescriptor.FromProperty(TextBlock.TextProperty, typeof(TextBlock));
+ public CloseCaseDialogWithTicket()
+ {
+ InitializeComponent();
+ this.Unloaded += CloseCaseDialogWithTicket_Unloaded;
+ this.Loaded += CloseCaseDialogWithTicket_Loaded;
+ defaultCategoryBorderBrush = CategorySelectionControl?.BorderBrush?.CloneCurrentValue();
+ defaultQuickTicketBorderBrush = QuickTicketSelection?.BorderBrush?.CloneCurrentValue();
+ if (validationErrorBrush is Freezable freezableBrush && freezableBrush.CanFreeze)
+ freezableBrush.Freeze();
+
+ DependencyPropertyDescriptor dpd =
+ DependencyPropertyDescriptor.FromProperty(TextBlock.TextProperty, typeof(TextBlock));
dpd?.AddValueChanged(CaseNotesPreview, TicketCaseNotesTextBlock_TextChanged);
@@ -444,10 +456,12 @@ namespace FasdDesktopUi.Basics.UserControls
parentWindow.SetButtonStateYes(false, "Initial gesperrt.");
parentWindow.SetButtonStateNo(true, cMultiLanguageSupport.GetItem("Dialog.CloseCase.Cancel"));
- ValidateProperty("TicketSummaryTextBox");
- ValidateProperty("TicketStatusCombobox");
- ValidateProperty("CaseNotesPreview");
- }
+ ValidateProperty("TicketSummaryTextBox");
+ ValidateProperty("TicketStatusCombobox");
+ ValidateProperty("CaseNotesPreview");
+ ValidateProperty("SelectedCategory");
+ ValidateProperty("QuickTicketSelection");
+ }
private void CloseCaseDialogWithTicket_Unloaded(object sender, RoutedEventArgs e)
{
Window parentWindow = Window.GetWindow(this);
@@ -937,6 +951,7 @@ namespace FasdDesktopUi.Basics.UserControls
finally
{
isCategoryLoading = false;
+ ValidateProperty("SelectedCategory");
}
}
@@ -1125,13 +1140,14 @@ namespace FasdDesktopUi.Basics.UserControls
});
}
- QuickTicketSelection.ItemsSource = quickCallListe;
-
- QuickTicketSelection.SelectedItem = quickCallListe
- .FirstOrDefault(x => x.ID == "7bbe64e2-94d0-ee11-4285-00155d010a04");
- }
- catch (Exception e)
- {
+ QuickTicketSelection.ItemsSource = quickCallListe;
+
+ QuickTicketSelection.SelectedItem = quickCallListe
+ .FirstOrDefault(x => x.ID == "7bbe64e2-94d0-ee11-4285-00155d010a04");
+ ValidateProperty("QuickTicketSelection");
+ }
+ catch (Exception e)
+ {
LogException(e);
}
}
@@ -1980,10 +1996,10 @@ namespace FasdDesktopUi.Basics.UserControls
}
break;
- case "TicketStatusCombobox":
- validateComboboxNotEmpty(TicketStatusCombobox);
- if (!(TicketStatusCombobox.SelectedItem is ComboBoxItem a))
- break;
+ case "TicketStatusCombobox":
+ validateComboboxNotEmpty(TicketStatusCombobox);
+ if (!(TicketStatusCombobox.SelectedItem is ComboBoxItem a))
+ break;
enumTicketStatus currenTicketStatus = enumTicketStatus.Unknown;
var currentTicketActivityType = SelectedTicket?.Infos.FirstOrDefault(x => x.Key == "ActivityType").Value;
@@ -2041,12 +2057,47 @@ namespace FasdDesktopUi.Basics.UserControls
else
{
ShowAssetWarningTicketAction = false;
- }
-
- break;
- }
-
- return new List(_errors.Values);
+ }
+
+ break;
+ case "SelectedCategory":
+ bool categoryIsVisible = CategorySelectionControl?.IsVisible ?? false;
+ bool categoryHasError = categoryIsVisible && SelectedCategory == null;
+ UpdateCategoryValidationVisualState(categoryHasError);
+
+ if (categoryHasError)
+ {
+ if (!_errors.ContainsKey(propertyName))
+ _errors.Add(propertyName, cMultiLanguageSupport.GetItem("Dialog.CloseCase.ValidationErrorCategoryEmpty"));
+ }
+ else
+ {
+ if (_errors.ContainsKey(propertyName))
+ _errors.Remove(propertyName);
+ }
+
+ break;
+ case "QuickTicketSelection":
+ bool quickCallIsVisible = QuickTicketSelection?.IsVisible ?? false;
+ bool quickCallSelected = QuickTicketSelection?.SelectedItem is QuickCallEntry selectedQuickCall && !string.IsNullOrWhiteSpace(selectedQuickCall.ID);
+ bool quickCallHasError = quickCallIsVisible && !quickCallSelected;
+ UpdateQuickTicketValidationVisualState(quickCallHasError);
+
+ if (quickCallHasError)
+ {
+ if (!_errors.ContainsKey(propertyName))
+ _errors.Add(propertyName, cMultiLanguageSupport.GetItem("Dialog.CloseCase.ValidationErrorQuickCallEmpty"));
+ }
+ else
+ {
+ if (_errors.ContainsKey(propertyName))
+ _errors.Remove(propertyName);
+ }
+
+ break;
+ }
+
+ return new List(_errors.Values);
}
@@ -2388,9 +2439,9 @@ namespace FasdDesktopUi.Basics.UserControls
}
- private static void setTextboxErrorState(object sender, bool hasError)
- {
- if (sender is TextBox textBox)
+ private static void setTextboxErrorState(object sender, bool hasError)
+ {
+ if (sender is TextBox textBox)
{
// Überprüfe den Inhalt und setze die Hintergrundfarbe entsprechend
if (hasError)
@@ -2403,9 +2454,35 @@ namespace FasdDesktopUi.Basics.UserControls
// Setze die ursprüngliche Hintergrundfarbe zurück, wenn die Validierung erfolgreich ist
textBox.BorderBrush = (SolidColorBrush)new BrushConverter().ConvertFromString("#DEE2E6");
}
- }
- }
-
+ }
+ }
+
+ private void UpdateCategoryValidationVisualState(bool hasError)
+ {
+ if (CategorySelectionControl == null)
+ return;
+
+ if (defaultCategoryBorderBrush == null)
+ defaultCategoryBorderBrush = CategorySelectionControl.BorderBrush?.CloneCurrentValue();
+
+ CategorySelectionControl.BorderBrush = hasError
+ ? validationErrorBrush
+ : defaultCategoryBorderBrush;
+ }
+
+ private void UpdateQuickTicketValidationVisualState(bool hasError)
+ {
+ if (QuickTicketSelection == null)
+ return;
+
+ if (defaultQuickTicketBorderBrush == null)
+ defaultQuickTicketBorderBrush = QuickTicketSelection.BorderBrush?.CloneCurrentValue();
+
+ QuickTicketSelection.BorderBrush = hasError
+ ? validationErrorBrush
+ : defaultQuickTicketBorderBrush;
+ }
+
#region DropDown
@@ -2453,10 +2530,15 @@ namespace FasdDesktopUi.Basics.UserControls
}
}
- private void ComputerSelection_SelectionChanged(object sender, SelectionChangedEventArgs e)
- {
- SelectedComputer = (cF4sdApiSearchResultRelation)ComputerSelection.SelectedItem;
- }
+ private void ComputerSelection_SelectionChanged(object sender, SelectionChangedEventArgs e)
+ {
+ SelectedComputer = (cF4sdApiSearchResultRelation)ComputerSelection.SelectedItem;
+ }
+
+ private void QuickTicketSelection_SelectionChanged(object sender, SelectionChangedEventArgs e)
+ {
+ ValidateProperty("QuickTicketSelection");
+ }
private void TransferCaseNotesCheck_Unchecked(object sender, RoutedEventArgs e)
{
diff --git a/FasdDesktopUi/Config/LanguageDefinitions.xml b/FasdDesktopUi/Config/LanguageDefinitions.xml
index 3e862d3..2094394 100644
--- a/FasdDesktopUi/Config/LanguageDefinitions.xml
+++ b/FasdDesktopUi/Config/LanguageDefinitions.xml
@@ -1578,13 +1578,21 @@
Fehler:
-
- Fill summary
- Zusammenfassung angeben
-
-
-
- Fill solution
+
+ Fill summary
+ Zusammenfassung angeben
+
+
+ Select a category
+ Kategorie auswählen
+
+
+ Select a quickcall template
+ Quickcall auswählen
+
+
+
+ Fill solution
Lösung angeben