Add simplified ticket completion flow

This commit is contained in:
Drechsler, Meik
2026-07-20 10:48:40 +02:00
parent 1a3bef9eeb
commit fb45f1c42b
5 changed files with 203 additions and 5 deletions

View File

@@ -104,6 +104,13 @@ namespace FasdDesktopUi.Basics.UserControls
public bool AreCaseNotesMandatory =>
cFasdCockpitConfig.Instance?.Global?.TicketConfiguration?.NotesMandatory ?? false;
private bool UseSimplifiedCaseCompletionDialog =>
cFasdCockpitConfig.Instance?.Global?.TicketConfiguration?.UseSimplifiedCaseCompletionDialog == true;
private enumTicketExternalOpenMode SimplifiedCaseCompletionTicketOpenMode =>
cFasdCockpitConfig.Instance?.Global?.TicketConfiguration?.SimplifiedCaseCompletionTicketOpenMode
?? enumTicketExternalOpenMode.Preview;
private static class TicketInfoKeys
{
public const string ActivityType = "ActivityType";
@@ -531,6 +538,8 @@ namespace FasdDesktopUi.Basics.UserControls
private void CloseCaseDialogWithTicket_Loaded(object sender, RoutedEventArgs e)
{
UpdateTicketComponentVisibility();
Window _parentWindow = Window.GetWindow(this);
if (!(_parentWindow is TicketCompletion _msgBox))
@@ -623,10 +632,17 @@ namespace FasdDesktopUi.Basics.UserControls
return;
var _isVisible = checkTicketActive() && !_skipTicketPillSelected;
var useSimplifiedDialog = _isVisible && UseSimplifiedCaseCompletionDialog;
if (useSimplifiedDialog)
SelectSaveTicketAction();
TicketSelectionCategory.Visibility = _isVisible ? Visibility.Visible : Visibility.Collapsed;
StatusSelectionBorder.Visibility = _isVisible ? Visibility.Visible : Visibility.Collapsed;
StatusSelectionBorder.Visibility = _isVisible && !useSimplifiedDialog ? Visibility.Visible : Visibility.Collapsed;
CopyDisclaimerTextBox.Visibility = _isVisible ? Visibility.Collapsed : Visibility.Visible;
if (!_isVisible || useSimplifiedDialog)
DynamicStatusAdditionBorder.Visibility = Visibility.Collapsed;
}
catch (Exception E)
{
@@ -634,6 +650,21 @@ namespace FasdDesktopUi.Basics.UserControls
}
}
private void SelectSaveTicketAction()
{
var saveItem = TicketStatusCombobox.Items
.OfType<ComboBoxItem>()
.FirstOrDefault(item =>
Enum.TryParse(item.Tag?.ToString(), out enumCloseCaseTicketStatus action) &&
action == enumCloseCaseTicketStatus.Save);
if (saveItem != null && !ReferenceEquals(TicketStatusCombobox.SelectedItem, saveItem))
TicketStatusCombobox.SelectedItem = saveItem;
DynamicStatusAdditionBorder.Child = null;
DynamicStatusAdditionBorder.Visibility = Visibility.Collapsed;
}
private UIElement GetTicketUiElement(cF4sdApiSearchResultRelation ticketRelation)
{
try
@@ -2011,7 +2042,20 @@ namespace FasdDesktopUi.Basics.UserControls
ticketData.AdditionalValues.Add("Dialog.CloseCase.AssetNotFoundInMatrix42", cMultiLanguageSupport.GetItem("Dialog.CloseCase.AssetNotFoundInMatrix42"));
ticketData.AdditionalValues.Add("Dialog.CloseCase.ReopenReasonText", cMultiLanguageSupport.GetItem("Dialog.CloseCase.ReopenReasonText"));
ticketData.AdditionalValues.Add("Dialog.CloseCase.ReopenReasonTextHtml", cMultiLanguageSupport.GetItem("Dialog.CloseCase.ReopenReasonTextHtml"));
var _res = await cFasdCockpitCommunicationBase.Instance.Matrix42TicketFinalization(ticketData);
var finalizationResult = await cFasdCockpitCommunicationBase.Instance.FinalizeTicketAsync(ticketData);
if (finalizationResult?.Success != true)
return false;
if (UseSimplifiedCaseCompletionDialog &&
SimplifiedCaseCompletionTicketOpenMode != enumTicketExternalOpenMode.None &&
finalizationResult.TicketId is Guid finalizedTicketId &&
finalizedTicketId != Guid.Empty)
{
await TicketExternalLinkHelper.TryOpenFinalizedTicketExternallyAsync(
finalizedTicketId,
SimplifiedCaseCompletionTicketOpenMode);
}
return true;
}
catch (Exception e)