diff --git a/C4IT_DataHistoryProvider_Base/Publish/F4SD-Cockpit-Server.dll b/C4IT_DataHistoryProvider_Base/Publish/F4SD-Cockpit-Server.dll index e48104e..edbad91 100644 Binary files a/C4IT_DataHistoryProvider_Base/Publish/F4SD-Cockpit-Server.dll and b/C4IT_DataHistoryProvider_Base/Publish/F4SD-Cockpit-Server.dll differ diff --git a/C4IT_DataHistoryProvider_Test/Config/F4SD-Global-Configuration.xml b/C4IT_DataHistoryProvider_Test/Config/F4SD-Global-Configuration.xml index 54fe4f6..d4cbfcd 100644 --- a/C4IT_DataHistoryProvider_Test/Config/F4SD-Global-Configuration.xml +++ b/C4IT_DataHistoryProvider_Test/Config/F4SD-Global-Configuration.xml @@ -17,7 +17,10 @@ - + + + + diff --git a/F4SD-Cockpit-ServerCore/DataHistoryCollectorM42Wpm.cs b/F4SD-Cockpit-ServerCore/DataHistoryCollectorM42Wpm.cs index 1c453d9..12fafff 100644 --- a/F4SD-Cockpit-ServerCore/DataHistoryCollectorM42Wpm.cs +++ b/F4SD-Cockpit-ServerCore/DataHistoryCollectorM42Wpm.cs @@ -2811,65 +2811,100 @@ namespace C4IT.DataHistoryProvider return null; } - private async Task ProtocollSupportCaseProtocollEntries(List supportCaseProtocollEntries, Guid ticketId, cF4sdWebRequestInfo requestInfo, int logDeep, CancellationToken token) - { - foreach (var protocollEntry in supportCaseProtocollEntries) - { - if (!(protocollEntry is QuickActionProtocollEntry entry)) - continue; - - cCreateJournalEntryInfo _entry = null; - switch (entry.ResultCode) - { - case -1: - case 1: - case 0: - var entryType = entry.WasRunningOnAffectedDevice ? 20602 : 20601; - _entry = new cCreateJournalEntryInfo() - { - Comments = "", - ObjectId = ticketId, - EntryType = entryType, - Parameters = new List() { new cCreateJournalEntryInfo.Parameter() - { - Name = "result", - Value = entry.HtmlContent ?? entry.MeasureValues ?? entry.ErrorMessage - }, - new cCreateJournalEntryInfo.Parameter() - { - Name = "quickActionName", - Value = entry.Name - }, - new cCreateJournalEntryInfo.Parameter() - { - Name = "QuickActionId", - Value = entry.Id - }, - new cCreateJournalEntryInfo.Parameter() - { - Name = "quickActionExecutionType", - Value = entry.ExecutionTypeId - }, - new cCreateJournalEntryInfo.Parameter() - { - Name = "ExecutionTime", - Value = entry.Time - }, - new cCreateJournalEntryInfo.Parameter() - { - Name = "AffectedDeviceName", - Value = entry.AffectedDeviceName - },} - }; - break; - default: - break; - } - if (_entry != null) - { - await CreateM42JournalAsync(_entry, requestInfo, logDeep + 1, token); - if (token.IsCancellationRequested) return; - } + private async Task ProtocollSupportCaseProtocollEntries(List supportCaseProtocollEntries, Guid ticketId, cF4sdWebRequestInfo requestInfo, int logDeep, CancellationToken token) + { + foreach (var protocollEntry in supportCaseProtocollEntries.OrderBy(entry => entry.Time)) + { + cCreateJournalEntryInfo _entry = null; + if (protocollEntry is QuickActionProtocollEntry quickActionEntry) + { + switch (quickActionEntry.ResultCode) + { + case -1: + case 1: + case 0: + var entryType = quickActionEntry.WasRunningOnAffectedDevice ? 20602 : 20601; + _entry = new cCreateJournalEntryInfo() + { + Comments = "", + ObjectId = ticketId, + EntryType = entryType, + Parameters = new List() { new cCreateJournalEntryInfo.Parameter() + { + Name = "result", + Value = quickActionEntry.HtmlContent ?? quickActionEntry.MeasureValues ?? quickActionEntry.ErrorMessage + }, + new cCreateJournalEntryInfo.Parameter() + { + Name = "quickActionName", + Value = quickActionEntry.Name + }, + new cCreateJournalEntryInfo.Parameter() + { + Name = "QuickActionId", + Value = quickActionEntry.Id + }, + new cCreateJournalEntryInfo.Parameter() + { + Name = "quickActionExecutionType", + Value = quickActionEntry.ExecutionTypeId + }, + new cCreateJournalEntryInfo.Parameter() + { + Name = "ExecutionTime", + Value = quickActionEntry.Time + }, + new cCreateJournalEntryInfo.Parameter() + { + Name = "AffectedDeviceName", + Value = quickActionEntry.AffectedDeviceName + },} + }; + break; + default: + break; + } + } + else if (protocollEntry is QuickTipStepProtocollEntry quickTipEntry) + { + _entry = new cCreateJournalEntryInfo() + { + Comments = "", + ObjectId = ticketId, + EntryType = 20605, + Parameters = new List() { new cCreateJournalEntryInfo.Parameter() + { + Name = "result", + Value = quickTipEntry.HtmlContent ?? quickTipEntry.AsciiContent + }, + new cCreateJournalEntryInfo.Parameter() + { + Name = "quickTipName", + Value = quickTipEntry.Name + }, + new cCreateJournalEntryInfo.Parameter() + { + Name = "QuickTipId", + Value = quickTipEntry.Id + }, + new cCreateJournalEntryInfo.Parameter() + { + Name = "ExecutionTime", + Value = quickTipEntry.Time + }, + new cCreateJournalEntryInfo.Parameter() + { + Name = "WasSuccessfull", + Value = quickTipEntry.WasSuccessfull + },} + }; + } + + if (_entry != null) + { + await CreateM42JournalAsync(_entry, requestInfo, logDeep + 1, token); + if (token.IsCancellationRequested) return; + } } } diff --git a/F4SD-Cockpit-ServerCore/DataHistoryConfigGolabalParameters.cs b/F4SD-Cockpit-ServerCore/DataHistoryConfigGolabalParameters.cs index faa5b62..287fa01 100644 --- a/F4SD-Cockpit-ServerCore/DataHistoryConfigGolabalParameters.cs +++ b/F4SD-Cockpit-ServerCore/DataHistoryConfigGolabalParameters.cs @@ -58,285 +58,12 @@ namespace C4IT.DataHistoryProvider } - private cConfigHelperParameterList LoadParameters (XmlElement XRoot, cXmlParser Parser) - { - MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); } - - var _result = new cConfigHelperParameterList(); - - try - { - - var Items = XRoot.ChildNodes; - foreach (var _node in Items) - { - if (!(_node is XmlElement _item)) continue; - - Parser.EnterElement(_item.Name); - - try - { - var _attPolicy = _item.GetAttribute("Policy"); - var _attValue = _item.GetAttribute("Value"); - - var _ElementCount = 0; - foreach (XmlNode _subNode in _item.ChildNodes) - { - if (_subNode is XmlElement) - _ElementCount++; - } - - // check for special parameters - switch (_item.Name) - { - case "InformationClassSearchPriority": - var _val = getInformationClassSearchPriority(_item, Parser); - if (_val != null) - _result.Items[_val.Name] = _val; - continue; - case "OpenActivitiesExternally": - var _openActivitiesEntry = getOpenActivitiesExternallyEntry(_item); - if (_openActivitiesEntry != null) - _result.Items[_openActivitiesEntry.Name] = _openActivitiesEntry; - - var _overrideValues = getOpenActivitiesExternallyOverrides(_item, Parser); - if (_overrideValues != null && _overrideValues.ValueList != null && _overrideValues.ValueList.Count > 0) - _result.Items[_overrideValues.Name] = _overrideValues; - continue; - } - - if (_attPolicy != null && _attValue != null && _ElementCount == 0) - { - // we have a simple parameter - var _policy = cXmlParser.GetEnumFromAttribute(_item, "Policy", enumConfigPolicy.Default); - var _value = cXmlParser.GetStringFromXmlAttribute(_item, "Value", String.Empty); - - _result.Items[_item.Name] = new cConfigHelperParameterEntry() - { - Name = _item.Name, - Value = _value, - Policy = _policy.ToString(), - }; - } - else if (string.IsNullOrEmpty(_attPolicy) && string.IsNullOrEmpty(_attValue) && _ElementCount > 0) - { - // we have a sublist - if (_result.SubItems == null) - _result.SubItems = new Dictionary(); - _result.SubItems[_item.Name] = LoadParameters(_item, Parser); - } - else - { - // we have an invalid entry - var _msg = $"Invalid entry in F4SD-Global-Configuration.xml: {_item.Name}"; - Parser.AddMessage(_item, _msg, LogLevels.Warning); - LogEntry(_msg, LogLevels.Warning); - } - } - catch (Exception E) - { - LogException(E); - } - finally - { - Parser.LeaveElement(_item.Name); - } - - - } - } - catch (Exception E) - { - LogException(E); - } - finally - { - if (CM != null) LogMethodEnd(CM); - } - - return _result; - } - - private cConfigHelperParameterEntry getInformationClassSearchPriority(XmlElement XNode, cXmlParser Parser) + private cConfigHelperParameterList LoadParameters (XmlElement XRoot, cXmlParser Parser) { - - MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); } - - try - { - var _xNodes = XNode.ChildNodes; - - var _policy = cXmlParser.GetEnumFromAttribute(XNode, "Policy", enumConfigPolicy.Default); - - var _result = new List(); - - foreach (var _xNode in _xNodes) - { - if (!(_xNode is XmlElement _item)) - continue; - - Parser.EnterElement(_item.Name); - - try - { - if (_item.Name != "InformationClass") - { - // we have an invalid entry - var _msg = $"Invalid entry in F4SD-Global-Configuration.xml: {_item.Name}, should be "; - Parser.AddMessage(_item, _msg, LogLevels.Warning); - LogEntry(_msg, LogLevels.Warning); - continue; - } - - var _InfoClass = cXmlParser.GetEnumFromAttribute(_item, "Type", enumFasdInformationClass.Unknown); - if (_InfoClass == enumFasdInformationClass.Unknown) - { - // we have an invalid type attribute - var _strType = cXmlParser.GetStringFromXmlAttribute(_item, "Type", String.Empty); - var _msg = $"Invalid type attribute value ({_strType}) in entry {_item.Name}"; - Parser.AddMessage(_item, _msg, LogLevels.Warning); - LogEntry(_msg, LogLevels.Warning); - continue; - } - - var _strInfoClass = _InfoClass.ToString(); - if (!_result.Contains(_strInfoClass)) - _result.Add(_strInfoClass); - } - catch (Exception E) - { - LogException(E); - } - finally - { - Parser.LeaveElement(_item.Name); - } - } - - - return new cConfigHelperParameterEntry() - { - Name = XNode.Name, - ValueList = _result, - Policy = _policy.ToString() - }; - } - catch (Exception E) - { - LogException(E); - } - finally - { - if (CM != null) LogMethodEnd(CM); - } - - return null; - } - - private static cConfigHelperParameterEntry getOpenActivitiesExternallyEntry(XmlElement XNode) - { - var _policy = cXmlParser.GetEnumFromAttribute(XNode, "Policy", enumConfigPolicy.Default); - var _value = cXmlParser.GetStringFromXmlAttribute(XNode, "Value", String.Empty); - - if (string.IsNullOrWhiteSpace(_value)) - return null; - - return new cConfigHelperParameterEntry() - { - Name = "OpenActivitiesExternally", - Value = _value, - Policy = _policy.ToString(), - }; - } - - private cConfigHelperParameterEntry getOpenActivitiesExternallyOverrides(XmlElement XNode, cXmlParser Parser) - { - MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); } - try { - var _xNodes = XNode.ChildNodes; - var _policy = cXmlParser.GetEnumFromAttribute(XNode, "Policy", enumConfigPolicy.Default); - var _result = new List(); - - foreach (var _xNode in _xNodes) - { - if (!(_xNode is XmlElement _item)) - continue; - - Parser.EnterElement(_item.Name); - - try - { - if (_item.Name != "OpenActivityOverride") - { - var _msg = $"Invalid entry in F4SD-Global-Configuration.xml: {_item.Name}, should be "; - Parser.AddMessage(_item, _msg, LogLevels.Warning); - LogEntry(_msg, LogLevels.Warning); - continue; - } - - var activityType = cXmlParser.GetStringFromXmlAttribute(_item, "ActivityType", String.Empty)?.Trim(); - if (string.IsNullOrWhiteSpace(activityType)) - { - var _msg = $"Missing ActivityType attribute value in entry {_item.Name}"; - Parser.AddMessage(_item, _msg, LogLevels.Warning); - LogEntry(_msg, LogLevels.Warning); - continue; - } - - var valueText = cXmlParser.GetStringFromXmlAttribute(_item, "Value", String.Empty)?.Trim(); - if (string.IsNullOrWhiteSpace(valueText)) - { - var _msg = $"Missing Value attribute value in entry {_item.Name} ({activityType})"; - Parser.AddMessage(_item, _msg, LogLevels.Warning); - LogEntry(_msg, LogLevels.Warning); - continue; - } - - var normalizedValue = valueText.ToLowerInvariant(); - bool? parsedValue = null; - switch (normalizedValue) - { - case "true": - case "1": - case "yes": - parsedValue = true; - break; - case "false": - case "0": - case "no": - parsedValue = false; - break; - } - - if (!parsedValue.HasValue) - { - var _msg = $"Invalid Value attribute value ({valueText}) in entry {_item.Name} ({activityType})"; - Parser.AddMessage(_item, _msg, LogLevels.Warning); - LogEntry(_msg, LogLevels.Warning); - continue; - } - - _result.Add($"{activityType}={(parsedValue.Value ? "true" : "false")}"); - } - catch (Exception E) - { - LogException(E); - } - finally - { - Parser.LeaveElement(_item.Name); - } - } - - return new cConfigHelperParameterEntry() - { - Name = "OpenActivitiesExternallyOverrides", - ValueList = _result, - Policy = _policy.ToString() - }; + return cF4sdGlobalConfigParameterParser.Parse(XRoot, Parser); } catch (Exception E) { @@ -347,7 +74,7 @@ namespace C4IT.DataHistoryProvider if (CM != null) LogMethodEnd(CM); } - return null; + return new cConfigHelperParameterList(); } public override bool DoXmlUpdates(XmlElement XmlRoot, bool withM42Config = false, bool withIntuneConfig = false, bool withMobileDeviceConfig = false, bool withCitrixConfig = false) @@ -424,6 +151,16 @@ namespace C4IT.DataHistoryProvider , "OpenActivitiesExternally" , "" ); + RetVal |= DoXmlInsertElement(XmlRoot + , "TicketConfiguration/OpenActivitiesExternally" + , "OpenActivityOverride[@ActivityType='SPSActivityTypeTicket']" + , "" + ); + RetVal |= DoXmlInsertElement(XmlRoot + , "TicketConfiguration/OpenActivitiesExternally" + , "OpenActivityOverride[@ActivityType='SPSActivityTypeServiceRequest']" + , "" + ); RetVal |= DoXmlInsertElement(XmlRoot , "TicketConfiguration" , "OverviewPollingPersonal" diff --git a/F4SDwebService/Config/F4SD-Global-Configuration.xml b/F4SDwebService/Config/F4SD-Global-Configuration.xml index 54fe4f6..d4cbfcd 100644 --- a/F4SDwebService/Config/F4SD-Global-Configuration.xml +++ b/F4SDwebService/Config/F4SD-Global-Configuration.xml @@ -17,7 +17,10 @@ - + + + + diff --git a/F4SDwebService/Publish/Config/F4SD-Global-Configuration.xml b/F4SDwebService/Publish/Config/F4SD-Global-Configuration.xml index 54fe4f6..d4cbfcd 100644 --- a/F4SDwebService/Publish/Config/F4SD-Global-Configuration.xml +++ b/F4SDwebService/Publish/Config/F4SD-Global-Configuration.xml @@ -17,7 +17,10 @@ - + + + +