inital
This commit is contained in:
@@ -0,0 +1,829 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Input;
|
||||
|
||||
using FasdDesktopUi.Basics.Models;
|
||||
using FasdDesktopUi.Basics.UiActions;
|
||||
using FasdDesktopUi.Basics.UserControls.AdaptableIcon;
|
||||
using FasdDesktopUi.Basics;
|
||||
using FasdDesktopUi.Basics.UserControls;
|
||||
using F4SD_AdaptableIcon.Enums;
|
||||
|
||||
using C4IT.MultiLanguage;
|
||||
using C4IT.FASD.Base;
|
||||
|
||||
using static C4IT.Logging.cLogManager;
|
||||
using C4IT.FASD.Cockpit.Communication;
|
||||
|
||||
namespace FasdDesktopUi.Pages.DetailsPage.UserControls
|
||||
{
|
||||
public partial class DetailsPageNavigationHeading : UserControl
|
||||
{
|
||||
#region Properties
|
||||
|
||||
private cSupportCaseDataProvider dataProvider;
|
||||
|
||||
public cSupportCaseDataProvider DataProvider
|
||||
{
|
||||
get => dataProvider; set
|
||||
{
|
||||
dataProvider = value;
|
||||
if (value != null)
|
||||
{
|
||||
UpdateHeaderHighlights();
|
||||
SetTicketHeadingVisibility();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private List<Border> _highlightBorders;
|
||||
|
||||
private void UpdateHeaderHighlights()
|
||||
{
|
||||
try
|
||||
{
|
||||
foreach (var highlightBorder in _highlightBorders)
|
||||
{
|
||||
highlightBorder.ClearValue(BackgroundProperty);
|
||||
|
||||
bool isEmpty = false;
|
||||
|
||||
if (highlightBorder == UserStackHighlightBorder)
|
||||
isEmpty = UserTextBlock.Text == cMultiLanguageSupport.GetItem("Header.Select.User");
|
||||
else if (highlightBorder == ComputerStackHighlightBorder)
|
||||
isEmpty = ComputerTextBlock.Text == cMultiLanguageSupport.GetItem("Header.Select.Computer");
|
||||
else if (highlightBorder == VirtualSessionStackHighlightBorder)
|
||||
isEmpty = VirtualSessionTextBlock.Text == cMultiLanguageSupport.GetItem("Header.Select.VirtualSession");
|
||||
else if (highlightBorder == MobileDeviceStackHighlightBorder)
|
||||
isEmpty = MobileDeviceTextBlock.Text == cMultiLanguageSupport.GetItem("Header.Select.MobileDevice");
|
||||
else if (highlightBorder == TicketStackHighlightBorder)
|
||||
isEmpty = TicketTextBlock.Text == cMultiLanguageSupport.GetItem("Header.Select.Ticket") || TicketTextBlock.Text == cMultiLanguageSupport.GetItem("Header.Create.Ticket");
|
||||
}
|
||||
|
||||
TicketSwapIcon.ClearValue(AdaptableIcon.IconBackgroundColorProperty);
|
||||
ComputerSwapIcon.ClearValue(AdaptableIcon.IconBackgroundColorProperty);
|
||||
|
||||
Border highlightedBorder = null;
|
||||
AdaptableIcon swapIcon = null;
|
||||
|
||||
if (DataProvider?.HealthCardDataHelper.SelectedHealthCard?.InformationClasses is null)
|
||||
return;
|
||||
|
||||
if (DataProvider.HealthCardDataHelper.SelectedHealthCard.InformationClasses.Any(identity => identity is enumFasdInformationClass.Ticket))
|
||||
{
|
||||
highlightedBorder = TicketStackHighlightBorder;
|
||||
swapIcon = TicketSwapIcon;
|
||||
}
|
||||
else if (DataProvider.HealthCardDataHelper.SelectedHealthCard.InformationClasses.Any(identity => identity is enumFasdInformationClass.Computer))
|
||||
{
|
||||
highlightedBorder = ComputerStackHighlightBorder;
|
||||
swapIcon = ComputerSwapIcon;
|
||||
}
|
||||
else if (DataProvider.HealthCardDataHelper.SelectedHealthCard.InformationClasses.Any(identity => identity is enumFasdInformationClass.VirtualSession))
|
||||
{
|
||||
highlightedBorder = VirtualSessionStackHighlightBorder;
|
||||
swapIcon = VirtualSessionSwapIcon;
|
||||
}
|
||||
else if (DataProvider.HealthCardDataHelper.SelectedHealthCard.InformationClasses.Any(identity => identity is enumFasdInformationClass.MobileDevice))
|
||||
{
|
||||
highlightedBorder = MobileDeviceStackHighlightBorder;
|
||||
swapIcon = MobileDeviceSwapIcon;
|
||||
}
|
||||
else if (DataProvider.HealthCardDataHelper.SelectedHealthCard.InformationClasses.Any(identity => identity is enumFasdInformationClass.User))
|
||||
highlightedBorder = UserStackHighlightBorder;
|
||||
|
||||
if (highlightedBorder != null)
|
||||
highlightedBorder.SetResourceReference(BackgroundProperty, "BackgroundColor.Menu.MainCategory");
|
||||
|
||||
if (swapIcon != null)
|
||||
swapIcon.SetResourceReference(AdaptableIcon.IconBackgroundColorProperty, "BackgroundColor.Menu.MainCategory");
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
}
|
||||
|
||||
private void SetTicketHeadingVisibility()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (DataProvider is null)
|
||||
return;
|
||||
|
||||
//bool isTicketIntegrationActive = cFasdCockpitCommunicationBase.CockpitUserInfo?.Roles?.Any(role => string.Equals(role, "Cockpit.TicketAgent", StringComparison.OrdinalIgnoreCase)) ?? false;
|
||||
bool isTicketIntegrationActive = cF4SDCockpitXmlConfig.Instance.HealthCardConfig.HealthCards.Values.Any(_e => _e.InformationClasses.Contains(enumFasdInformationClass.Ticket));
|
||||
TicketStack.Visibility = isTicketIntegrationActive ? Visibility.Visible : Visibility.Collapsed;
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
}
|
||||
|
||||
public bool ShowsRelations { get; private set; } = false;
|
||||
|
||||
#region HeadingData Dependency Property
|
||||
|
||||
private static void HeadingDataChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!(d is DetailsPageNavigationHeading _me))
|
||||
return;
|
||||
|
||||
if (e.NewValue == null)
|
||||
return;
|
||||
|
||||
_me.ResetControl();
|
||||
_me.SetTicketHeadingVisibility();
|
||||
_me.InitializeHeadings();
|
||||
_me.UpdateHeaderHighlights();
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty HeadingDataProperty =
|
||||
DependencyProperty.Register("HeadingData", typeof(List<cHeadingDataModel>), typeof(DetailsPageNavigationHeading), new PropertyMetadata(new List<cHeadingDataModel>(), new PropertyChangedCallback(HeadingDataChanged)));
|
||||
|
||||
|
||||
public List<cHeadingDataModel> HeadingData
|
||||
{
|
||||
get { return (List<cHeadingDataModel>)GetValue(HeadingDataProperty); }
|
||||
set { SetValue(HeadingDataProperty, value); }
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region HasDirectConnection
|
||||
|
||||
public bool HasDirectConnection
|
||||
{
|
||||
get { return (bool)GetValue(HasDirectConnectionProperty); }
|
||||
set { SetValue(HasDirectConnectionProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty HasDirectConnectionProperty =
|
||||
DependencyProperty.Register("HasDirectConnection", typeof(bool), typeof(DetailsPageNavigationHeading), new PropertyMetadata(false, new PropertyChangedCallback(DirectConnectionStatusChanged)));
|
||||
|
||||
private static void DirectConnectionStatusChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
||||
{
|
||||
if (!(d is DetailsPageNavigationHeading _me))
|
||||
return;
|
||||
|
||||
_me.UpdateDirectConnectionIcon();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private readonly cHeadingDataModel userDataEmpty = new cHeadingDataModel() { IsOnline = false, InformationClass = enumFasdInformationClass.User, HeadingText = "User auswählen" }; //todo: localize
|
||||
private readonly cHeadingDataModel computerDataEmpty = new cHeadingDataModel() { IsOnline = false, InformationClass = enumFasdInformationClass.Computer, HeadingText = cMultiLanguageSupport.GetItem("Header.Select.Computer") };
|
||||
private readonly cHeadingDataModel ticketDataEmpty = new cHeadingDataModel() { IsOnline = false, InformationClass = enumFasdInformationClass.Ticket, HeadingText = cMultiLanguageSupport.GetItem("Header.Select.Ticket") };
|
||||
private readonly cHeadingDataModel virtualSessionDataEmpty = new cHeadingDataModel() { IsOnline = false, InformationClass = enumFasdInformationClass.VirtualSession, HeadingText = cMultiLanguageSupport.GetItem("Header.Select.VirtualSession") };
|
||||
private readonly cHeadingDataModel mobileDeviceDataEmpty = new cHeadingDataModel() { IsOnline = false, InformationClass = enumFasdInformationClass.MobileDevice, HeadingText = cMultiLanguageSupport.GetItem("Header.Select.MobileDevice") };
|
||||
|
||||
#endregion
|
||||
|
||||
public DetailsPageNavigationHeading()
|
||||
{
|
||||
try
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
protected override void OnInitialized(EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
base.OnInitialized(e);
|
||||
|
||||
ResetControl();
|
||||
|
||||
_highlightBorders = new List<Border>()
|
||||
{
|
||||
UserStackHighlightBorder,
|
||||
ComputerStackHighlightBorder,
|
||||
TicketStackHighlightBorder,
|
||||
VirtualSessionStackHighlightBorder,
|
||||
MobileDeviceStackHighlightBorder
|
||||
};
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
private void ResetControl()
|
||||
{
|
||||
try
|
||||
{
|
||||
HeadingScroller.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;
|
||||
|
||||
UserTextBlock.Text = string.Empty;
|
||||
ComputerTextBlock.Text = cMultiLanguageSupport.GetItem("Header.Select.Computer");
|
||||
TicketTextBlock.Text = cMultiLanguageSupport.GetItem("Header.Select.Ticket");
|
||||
VirtualSessionTextBlock.Text = cMultiLanguageSupport.GetItem("Header.Select.VirtualSession");
|
||||
MobileDeviceTextBlock.Text = cMultiLanguageSupport.GetItem("Header.Select.MobileDevice");
|
||||
|
||||
UserIcon.ClearValue(AdaptableIcon.PrimaryIconColorProperty);
|
||||
ComputerIcon.ClearValue(AdaptableIcon.PrimaryIconColorProperty);
|
||||
TicketIcon.ClearValue(AdaptableIcon.PrimaryIconColorProperty);
|
||||
|
||||
UserIcon.Tag = userDataEmpty.InformationClass;
|
||||
ComputerIcon.Tag = computerDataEmpty.InformationClass;
|
||||
TicketIcon.Tag = ticketDataEmpty.InformationClass;
|
||||
VirtualSessionIcon.Tag = virtualSessionDataEmpty.InformationClass;
|
||||
MobileDeviceIcon.Tag = mobileDeviceDataEmpty.InformationClass;
|
||||
|
||||
UserTextBlock.Tag = userDataEmpty.InformationClass;
|
||||
ComputerTextBlock.Tag = computerDataEmpty.InformationClass;
|
||||
TicketTextBlock.Tag = ticketDataEmpty.InformationClass;
|
||||
VirtualSessionTextBlock.Tag = virtualSessionDataEmpty.InformationClass;
|
||||
MobileDeviceTextBlock.Tag = mobileDeviceDataEmpty.InformationClass;
|
||||
|
||||
UserTextBlock.ClearValue(StyleProperty);
|
||||
ComputerTextBlock.ClearValue(StyleProperty);
|
||||
TicketTextBlock.ClearValue(StyleProperty);
|
||||
VirtualSessionTextBlock.ClearValue(StyleProperty);
|
||||
MobileDeviceTextBlock.ClearValue(StyleProperty);
|
||||
|
||||
ComputerSwapIcon.Tag = computerDataEmpty;
|
||||
TicketSwapIcon.Tag = ticketDataEmpty;
|
||||
VirtualSessionSwapIcon.Tag = virtualSessionDataEmpty;
|
||||
MobileDeviceSwapIcon.Tag = mobileDeviceDataEmpty;
|
||||
|
||||
ComputerStackHighlightBorder.Tag = computerDataEmpty;
|
||||
TicketStackHighlightBorder.Tag = ticketDataEmpty;
|
||||
VirtualSessionStackHighlightBorder.Tag = virtualSessionDataEmpty;
|
||||
MobileDeviceStackHighlightBorder.Tag = mobileDeviceDataEmpty;
|
||||
|
||||
ComputerSwapIcon.Style = (Style)FindResource("SwapIconStyle");
|
||||
TicketSwapIcon.Style = (Style)FindResource("SwapIconStyle");
|
||||
VirtualSessionSwapIcon.Style = (Style)FindResource("SwapIconStyle");
|
||||
MobileDeviceSwapIcon.Style = (Style)FindResource("SwapIconStyle");
|
||||
|
||||
ComputerSwapIcon.ClearValue(ToolTipProperty);
|
||||
TicketSwapIcon.ClearValue(ToolTipProperty);
|
||||
VirtualSessionSwapIcon.ClearValue(ToolTipProperty);
|
||||
MobileDeviceSwapIcon.ClearValue(ToolTipProperty);
|
||||
|
||||
SaveTicketIcon.Visibility = Visibility.Collapsed;
|
||||
UndoTicketIcon.Visibility = Visibility.Collapsed;
|
||||
|
||||
UserCopyIcon.ClearValue(VisibilityProperty);
|
||||
ComputerCopyIcon.ClearValue(VisibilityProperty);
|
||||
TicketCopyIcon.ClearValue(VisibilityProperty);
|
||||
VirtualSessionCopyIcon.ClearValue(VisibilityProperty);
|
||||
MobileDeviceCopyIcon.ClearValue(VisibilityProperty);
|
||||
|
||||
ComputerStackHighlightBorder.MouseLeftButtonUp -= SwapIcon_MouseLeftButtonUp;
|
||||
ComputerStackHighlightBorder.TouchDown -= SwapIcon_TouchDown;
|
||||
TicketStackHighlightBorder.MouseLeftButtonUp -= SwapIcon_MouseLeftButtonUp;
|
||||
TicketStackHighlightBorder.TouchDown -= SwapIcon_TouchDown;
|
||||
VirtualSessionStackHighlightBorder.MouseLeftButtonUp -= SwapIcon_MouseLeftButtonUp;
|
||||
VirtualSessionStackHighlightBorder.TouchDown -= SwapIcon_TouchDown;
|
||||
MobileDeviceStackHighlightBorder.MouseLeftButtonUp -= SwapIcon_MouseLeftButtonUp;
|
||||
MobileDeviceStackHighlightBorder.TouchDown -= SwapIcon_TouchDown;
|
||||
|
||||
UserStackHighlightBorder.ClearValue(OpacityProperty);
|
||||
ComputerStackHighlightBorder.ClearValue(OpacityProperty);
|
||||
TicketStackHighlightBorder.ClearValue(OpacityProperty);
|
||||
VirtualSessionStackHighlightBorder.ClearValue(OpacityProperty);
|
||||
MobileDeviceStackHighlightBorder.ClearValue(OpacityProperty);
|
||||
|
||||
SetEditMode(false);
|
||||
|
||||
if (!cFasdCockpitCommunicationBase.Instance.IsDemo())
|
||||
{
|
||||
if (MobileDeviceStack.Parent is UIElement mobileParent)
|
||||
mobileParent.Visibility = Visibility.Collapsed;
|
||||
|
||||
if (VirtualSessionStack.Parent is UIElement virtualParent)
|
||||
virtualParent.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
|
||||
ResetSelectors();
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
}
|
||||
|
||||
public void ResetSelectors()
|
||||
{
|
||||
try
|
||||
{
|
||||
HeadingScroller.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;
|
||||
ShowsRelations = false;
|
||||
ComputerSelector.MenuDataList = null;
|
||||
TicketSelector.MenuDataList = null;
|
||||
VirtualSessionSelector.MenuDataList = null;
|
||||
MobileDeviceSelector.MenuDataList = null;
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
}
|
||||
|
||||
private void DisableElement(FrameworkElement element, string toolTip)
|
||||
{
|
||||
try
|
||||
{
|
||||
element.Style = (Style)FindResource("SwapIconStyleBase");
|
||||
element.ToolTip = toolTip;
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
}
|
||||
|
||||
private void InitializeHeadings()
|
||||
{
|
||||
try
|
||||
{
|
||||
foreach (var heading in HeadingData)
|
||||
{
|
||||
bool hasValue = true;
|
||||
AdaptableIcon headingIcon = null;
|
||||
TextBlock headingTextBlock = null;
|
||||
FrameworkElement highlightBoder = null;
|
||||
AdaptableIcon swapIcon = null;
|
||||
AdaptableIcon copyIcon = null;
|
||||
string disableText = null;
|
||||
|
||||
switch (heading.InformationClass)
|
||||
{
|
||||
case enumFasdInformationClass.Computer:
|
||||
headingIcon = ComputerIcon;
|
||||
swapIcon = ComputerSwapIcon;
|
||||
headingTextBlock = ComputerTextBlock;
|
||||
copyIcon = ComputerCopyIcon;
|
||||
highlightBoder = ComputerStackHighlightBorder;
|
||||
hasValue = heading.HeadingText != cMultiLanguageSupport.GetItem("Header.Select.Computer");
|
||||
disableText = cMultiLanguageSupport.GetItem("Header.NotFound.Computers");
|
||||
|
||||
if (!hasValue)
|
||||
{
|
||||
ComputerCopyIcon.Visibility = Visibility.Hidden;
|
||||
ComputerStackHighlightBorder.MouseLeftButtonUp += SwapIcon_MouseLeftButtonUp;
|
||||
ComputerStackHighlightBorder.TouchDown += SwapIcon_TouchDown;
|
||||
}
|
||||
|
||||
break;
|
||||
case enumFasdInformationClass.VirtualSession:
|
||||
headingIcon = VirtualSessionIcon;
|
||||
swapIcon = VirtualSessionSwapIcon;
|
||||
headingTextBlock = VirtualSessionTextBlock;
|
||||
copyIcon = VirtualSessionCopyIcon;
|
||||
highlightBoder = VirtualSessionStackHighlightBorder;
|
||||
hasValue = heading.HeadingText != cMultiLanguageSupport.GetItem("Header.Select.VirtualSession");
|
||||
disableText = cMultiLanguageSupport.GetItem("Header.NotFound.VirtualSession");
|
||||
|
||||
if (!hasValue)
|
||||
{
|
||||
VirtualSessionCopyIcon.Visibility = Visibility.Hidden;
|
||||
VirtualSessionStackHighlightBorder.MouseLeftButtonUp += SwapIcon_MouseLeftButtonUp;
|
||||
VirtualSessionStackHighlightBorder.TouchDown += SwapIcon_TouchDown;
|
||||
}
|
||||
if (heading.IsOnline)
|
||||
VirtualSessionIcon.SelectedMaterialIcon = MaterialIcons.MaterialIconType.ic_cloud_queue;
|
||||
else
|
||||
VirtualSessionIcon.SelectedMaterialIcon = MaterialIcons.MaterialIconType.ic_cloud_off;
|
||||
break;
|
||||
|
||||
case enumFasdInformationClass.MobileDevice:
|
||||
headingIcon = MobileDeviceIcon;
|
||||
swapIcon = MobileDeviceSwapIcon;
|
||||
headingTextBlock = MobileDeviceTextBlock;
|
||||
copyIcon = MobileDeviceCopyIcon;
|
||||
highlightBoder = MobileDeviceStackHighlightBorder;
|
||||
hasValue = heading.HeadingText != cMultiLanguageSupport.GetItem("Header.Select.MobileDevice");
|
||||
disableText = cMultiLanguageSupport.GetItem("Header.NotFound.MobileDevice");
|
||||
|
||||
if (!hasValue)
|
||||
{
|
||||
MobileDeviceCopyIcon.Visibility = Visibility.Hidden;
|
||||
MobileDeviceStackHighlightBorder.MouseLeftButtonUp += SwapIcon_MouseLeftButtonUp;
|
||||
MobileDeviceStackHighlightBorder.TouchDown += SwapIcon_TouchDown;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case enumFasdInformationClass.User:
|
||||
headingIcon = UserIcon;
|
||||
headingTextBlock = UserTextBlock;
|
||||
copyIcon = UserCopyIcon;
|
||||
hasValue = heading.HeadingText != cMultiLanguageSupport.GetItem("Header.Select.User");
|
||||
|
||||
if (!hasValue)
|
||||
UserCopyIcon.Visibility = Visibility.Hidden;
|
||||
|
||||
break;
|
||||
case enumFasdInformationClass.Ticket:
|
||||
headingTextBlock = TicketTextBlock;
|
||||
swapIcon = TicketSwapIcon;
|
||||
|
||||
if (heading.IsOnline)
|
||||
TicketIcon.SelectedMaterialIcon = MaterialIcons.MaterialIconType.ic_drafts;
|
||||
else
|
||||
TicketIcon.SelectedMaterialIcon = MaterialIcons.MaterialIconType.ic_mail;
|
||||
|
||||
copyIcon = TicketCopyIcon;
|
||||
highlightBoder = TicketStackHighlightBorder;
|
||||
hasValue = heading.HeadingText != cMultiLanguageSupport.GetItem("Header.Select.Ticket") && heading.HeadingText != cMultiLanguageSupport.GetItem("Header.Create.Ticket");
|
||||
disableText = cMultiLanguageSupport.GetItem("Header.NotFound.Tickets");
|
||||
|
||||
if (!hasValue)
|
||||
{
|
||||
TicketCopyIcon.Visibility = Visibility.Collapsed;
|
||||
EditTicketIcon.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
|
||||
if (DataProvider?.CaseRelations?.TryGetValue(heading.InformationClass, out var storedRelations) ?? false)
|
||||
if (storedRelations != null && storedRelations.Count > 0)
|
||||
break;
|
||||
|
||||
heading.HeadingText = cMultiLanguageSupport.GetItem("Header.Create.Ticket");
|
||||
break;
|
||||
}
|
||||
|
||||
if (headingIcon != null)
|
||||
{
|
||||
if (heading.IsOnline)
|
||||
{
|
||||
headingIcon.SetResourceReference(AdaptableIcon.PrimaryIconColorProperty, "Color.Green");
|
||||
headingIcon.ToolTip = cMultiLanguageSupport.GetItem("Header.IsOnline");
|
||||
}
|
||||
else
|
||||
{
|
||||
headingIcon.ClearValue(AdaptableIcon.PrimaryIconColorProperty);
|
||||
headingIcon.ToolTip = cMultiLanguageSupport.GetItem("Header.IsOffline");
|
||||
}
|
||||
}
|
||||
|
||||
if (headingTextBlock != null && string.IsNullOrWhiteSpace(heading.HeadingText) is false)
|
||||
{
|
||||
headingTextBlock.Text = heading.HeadingText;
|
||||
}
|
||||
|
||||
if (highlightBoder != null)
|
||||
{
|
||||
highlightBoder.Tag = new cSwapCaseInfo() { SelectedCaseInformationClass = heading.InformationClass, HeadingDatas = HeadingData };
|
||||
}
|
||||
|
||||
if (copyIcon != null)
|
||||
{
|
||||
copyIcon.Tag = heading.HeadingText;
|
||||
|
||||
if (!hasValue)
|
||||
copyIcon.Visibility = Visibility.Hidden;
|
||||
}
|
||||
|
||||
if (swapIcon != null)
|
||||
{
|
||||
swapIcon.Tag = new cSwapCaseInfo() { SelectedCaseInformationClass = heading.InformationClass, HeadingDatas = HeadingData };
|
||||
|
||||
if (DataProvider?.CaseRelations is null || DataProvider.CaseRelations.TryGetValue(heading.InformationClass, out var storedRelations) is false
|
||||
|| storedRelations is null || storedRelations.Count == 0)
|
||||
{
|
||||
DisableElement(swapIcon, disableText);
|
||||
headingTextBlock.SetResourceReference(StyleProperty, "DetailsPage.TitleSection.Header.Base");
|
||||
highlightBoder.Opacity = 0.7;
|
||||
|
||||
highlightBoder.MouseLeftButtonUp -= SwapIcon_MouseLeftButtonUp;
|
||||
highlightBoder.TouchDown -= SwapIcon_TouchDown;
|
||||
}
|
||||
else if (!hasValue)
|
||||
{
|
||||
highlightBoder.MouseLeftButtonUp += SwapIcon_MouseLeftButtonUp;
|
||||
highlightBoder.TouchDown += SwapIcon_TouchDown;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateDirectConnectionIcon()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (HasDirectConnection)
|
||||
{
|
||||
ComputerIcon.SelectedInternIcon = enumInternIcons.misc_directConnection;
|
||||
ComputerIcon.IconHeight = 35;
|
||||
ComputerIcon.IconWidth = 35;
|
||||
}
|
||||
else
|
||||
{
|
||||
ComputerIcon.SelectedInternIcon = enumInternIcons.misc_computer;
|
||||
ComputerIcon.ClearValue(AdaptableIcon.IconHeightProperty);
|
||||
ComputerIcon.ClearValue(AdaptableIcon.IconWidthProperty);
|
||||
}
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
}
|
||||
|
||||
public void SetEditMode(bool isActive)
|
||||
{
|
||||
try
|
||||
{
|
||||
EditTicketIcon.Visibility = Visibility.Collapsed;
|
||||
SaveTicketIcon.Visibility = Visibility.Collapsed;
|
||||
UndoTicketIcon.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
}
|
||||
|
||||
#region Events
|
||||
|
||||
#region HeadingIcon Click
|
||||
|
||||
public event EventHandler HeadingIconClickedEvent;
|
||||
|
||||
private void HeadingIcon_Click(object sender)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (DataProvider.HealthCardDataHelper.IsInEditMode)
|
||||
{
|
||||
var dialogResult = CustomMessageBox.CustomMessageBox.Show("Do you want to save changes and continue?", "Open changes", enumHealthCardStateLevel.Warning, Window.GetWindow(this), true);
|
||||
|
||||
if (dialogResult == false)
|
||||
return;
|
||||
else
|
||||
DataProvider.HealthCardDataHelper.IsInEditMode = false;
|
||||
}
|
||||
|
||||
HeadingIconClickedEvent.Invoke(sender, new EventArgs());
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
}
|
||||
|
||||
private void HeadingIcon_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
HeadingIcon_Click(sender);
|
||||
}
|
||||
|
||||
private void HeadingIcon_TouchDown(object sender, TouchEventArgs e)
|
||||
{
|
||||
HeadingIcon_Click(sender);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region SwapIcon Click
|
||||
|
||||
private void SwapIcon_Click(object sender)
|
||||
{
|
||||
|
||||
try
|
||||
{
|
||||
if (!(sender is FrameworkElement senderElement))
|
||||
return;
|
||||
|
||||
if (!(senderElement.Tag is cSwapCaseInfo swapCaseData))
|
||||
return;
|
||||
|
||||
CustomMenu location = null;
|
||||
ResetSelectors();
|
||||
|
||||
switch (swapCaseData.SelectedCaseInformationClass)
|
||||
{
|
||||
case enumFasdInformationClass.Computer:
|
||||
location = ComputerSelector;
|
||||
break;
|
||||
case enumFasdInformationClass.Ticket:
|
||||
location = TicketSelector;
|
||||
break;
|
||||
case enumFasdInformationClass.VirtualSession:
|
||||
location = VirtualSessionSelector;
|
||||
break;
|
||||
case enumFasdInformationClass.MobileDevice:
|
||||
location = MobileDeviceSelector;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
var action = new cShowHeadingSelectionMenuAction();
|
||||
ShowsRelations = true;
|
||||
cUiActionBase.RaiseEvent(new cShowHeadingSelectionMenuAction(), this, sender);
|
||||
DoShowRelations(swapCaseData, location);
|
||||
//Dispatcher.Invoke(async () => await action.RunUiActionAsync(sender, location, false, DataProvider));
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void DoShowRelations(cSwapCaseInfo swapCaseData, CustomMenu customMenu)
|
||||
{
|
||||
|
||||
var CM = MethodBase.GetCurrentMethod();
|
||||
LogMethodBegin(CM);
|
||||
try
|
||||
{
|
||||
var selectedHeadingData = swapCaseData.HeadingDatas.FirstOrDefault(data => data.InformationClass == swapCaseData.SelectedCaseInformationClass);
|
||||
|
||||
if (selectedHeadingData is null)
|
||||
return;
|
||||
|
||||
HeadingScroller.HorizontalScrollBarVisibility = ScrollBarVisibility.Hidden;
|
||||
|
||||
customMenu.Visibility = Visibility.Visible;
|
||||
|
||||
List<cMenuDataBase> quickActionList = new List<cMenuDataBase>();
|
||||
|
||||
if (dataProvider.CaseRelations != null && dataProvider.CaseRelations.TryGetValue(swapCaseData.SelectedCaseInformationClass, out var storedRelations))
|
||||
{
|
||||
foreach (var storedRelation in storedRelations)
|
||||
{
|
||||
bool isMatchingRelation = IsMatchingRelation(storedRelation, swapCaseData.HeadingDatas);
|
||||
quickActionList.Add(new cMenuDataSearchRelation(storedRelation)
|
||||
{
|
||||
IsMatchingRelation = isMatchingRelation,
|
||||
IsUsedForCaseEnrichment = true,
|
||||
UiAction = new cChangeHealthCardAction(storedRelation)
|
||||
});
|
||||
}
|
||||
}
|
||||
if (quickActionList.Count > 0)
|
||||
customMenu.MenuDataList = quickActionList;
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
LogMethodEnd(CM);
|
||||
}
|
||||
}
|
||||
|
||||
private bool IsMatchingRelation(cF4sdApiSearchResultRelation relationData, List<cHeadingDataModel> headingData)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (relationData.Type is enumF4sdSearchResultClass.Ticket)
|
||||
if (relationData.Infos.TryGetValue("Asset", out string assetName))
|
||||
return headingData.Any(heading => !string.IsNullOrWhiteSpace(heading.HeadingText) && heading.HeadingText.Equals(assetName));
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private void SwapIcon_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
SwapIcon_Click(sender);
|
||||
}
|
||||
|
||||
private void SwapIcon_TouchDown(object sender, TouchEventArgs e)
|
||||
{
|
||||
SwapIcon_Click(sender);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region CopyIcon Click
|
||||
|
||||
private async Task CopyIcon_ClickAsync(object sender)
|
||||
{
|
||||
|
||||
try
|
||||
{
|
||||
if (!(sender is AdaptableIcon senderIcon))
|
||||
return;
|
||||
|
||||
if (senderIcon.Tag is null)
|
||||
return;
|
||||
|
||||
System.Windows.Forms.Clipboard.SetText(senderIcon.Tag.ToString());
|
||||
|
||||
await cUtility.ChangeIconToCheckAsync(senderIcon);
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
}
|
||||
|
||||
private async void CopyIcon_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) => await CopyIcon_ClickAsync(sender);
|
||||
private async void CopyIcon_TouchDown(object sender, TouchEventArgs e) => await CopyIcon_ClickAsync(sender);
|
||||
|
||||
#endregion
|
||||
|
||||
#region EditTicket Click
|
||||
|
||||
private void EditTicketIcon_Click()
|
||||
{
|
||||
try
|
||||
{
|
||||
dataProvider.HealthCardDataHelper.IsInEditMode = true;
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
}
|
||||
|
||||
private void EditTicketIcon_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
EditTicketIcon_Click();
|
||||
}
|
||||
|
||||
private void EditTicketIcon_TouchDown(object sender, TouchEventArgs e)
|
||||
{
|
||||
EditTicketIcon_Click();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region SaveTicket Click
|
||||
|
||||
private void SaveTicketIcon_Click()
|
||||
{
|
||||
try
|
||||
{
|
||||
dataProvider.HealthCardDataHelper.IsInEditMode = false;
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
}
|
||||
|
||||
private void SaveTicketIcon_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
SaveTicketIcon_Click();
|
||||
}
|
||||
|
||||
private void SaveTicketIcon_TouchDown(object sender, TouchEventArgs e)
|
||||
{
|
||||
SaveTicketIcon_Click();
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region UndoTicket Click
|
||||
|
||||
private void UndoTicketIcon_Click()
|
||||
{
|
||||
try
|
||||
{
|
||||
var dialogResult = CustomMessageBox.CustomMessageBox.Show("Do you really want to undo changes?\nAll changes will get lost.", "Undo changes", enumHealthCardStateLevel.Error, Window.GetWindow(this), true);
|
||||
|
||||
if (dialogResult is true)
|
||||
dataProvider.HealthCardDataHelper.IsInEditMode = false;
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
}
|
||||
|
||||
private void UndoTicketIcon_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
UndoTicketIcon_Click();
|
||||
}
|
||||
|
||||
private void UndoTicketIcon_TouchDown(object sender, TouchEventArgs e)
|
||||
{
|
||||
UndoTicketIcon_Click();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user