diff --git a/C4IT_DataHistoryProvider_Base/Publish/F4SD-Cockpit-Server.dll b/C4IT_DataHistoryProvider_Base/Publish/F4SD-Cockpit-Server.dll index cc9cf6b..99d283d 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 344fac5..54fe4f6 100644 --- a/C4IT_DataHistoryProvider_Test/Config/F4SD-Global-Configuration.xml +++ b/C4IT_DataHistoryProvider_Test/Config/F4SD-Global-Configuration.xml @@ -17,8 +17,7 @@ - - + diff --git a/C4IT_DataHistoryProvider_Test/Config/F4SD-Global-Configuration.xsd b/C4IT_DataHistoryProvider_Test/Config/F4SD-Global-Configuration.xsd index 654d851..03b1e75 100644 --- a/C4IT_DataHistoryProvider_Test/Config/F4SD-Global-Configuration.xsd +++ b/C4IT_DataHistoryProvider_Test/Config/F4SD-Global-Configuration.xsd @@ -131,18 +131,18 @@ - + - - - - - - - - - - + + + + + + + + + + diff --git a/F4SD-Cockpit-ServerCore/DataHistoryConfigGolabalParameters.cs b/F4SD-Cockpit-ServerCore/DataHistoryConfigGolabalParameters.cs index a7733ea..faa5b62 100644 --- a/F4SD-Cockpit-ServerCore/DataHistoryConfigGolabalParameters.cs +++ b/F4SD-Cockpit-ServerCore/DataHistoryConfigGolabalParameters.cs @@ -87,14 +87,23 @@ namespace C4IT.DataHistoryProvider } // check for special parameters - switch (_item.Name) - { - case "InformationClassSearchPriority": - var _val = getInformationClassSearchPriority(_item, Parser); - if (_val != null) - _result.Items[_val.Name] = _val; - continue; - } + 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) { @@ -148,8 +157,8 @@ namespace C4IT.DataHistoryProvider return _result; } - private cConfigHelperParameterEntry getInformationClassSearchPriority(XmlElement XNode, cXmlParser Parser) - { + private cConfigHelperParameterEntry getInformationClassSearchPriority(XmlElement XNode, cXmlParser Parser) + { MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); } @@ -222,7 +231,124 @@ namespace C4IT.DataHistoryProvider } 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() + }; + } + catch (Exception E) + { + LogException(E); + } + finally + { + if (CM != null) LogMethodEnd(CM); + } + + return null; + } public override bool DoXmlUpdates(XmlElement XmlRoot, bool withM42Config = false, bool withIntuneConfig = false, bool withMobileDeviceConfig = false, bool withCitrixConfig = false) { @@ -295,13 +421,8 @@ namespace C4IT.DataHistoryProvider ); RetVal |= DoXmlInsertElement(XmlRoot , "TicketConfiguration" - , "OpenTicketsExternally" - , "" - ); - RetVal |= DoXmlInsertElement(XmlRoot - , "TicketConfiguration" - , "OpenIncidentsExternally" - , "" + , "OpenActivitiesExternally" + , "" ); RetVal |= DoXmlInsertElement(XmlRoot , "TicketConfiguration" diff --git a/F4SDwebService/Config/F4SD-Global-Configuration.xml b/F4SDwebService/Config/F4SD-Global-Configuration.xml index 344fac5..54fe4f6 100644 --- a/F4SDwebService/Config/F4SD-Global-Configuration.xml +++ b/F4SDwebService/Config/F4SD-Global-Configuration.xml @@ -17,8 +17,7 @@ - - + diff --git a/F4SDwebService/Publish/Config/F4SD-Global-Configuration.xml b/F4SDwebService/Publish/Config/F4SD-Global-Configuration.xml index 344fac5..54fe4f6 100644 --- a/F4SDwebService/Publish/Config/F4SD-Global-Configuration.xml +++ b/F4SDwebService/Publish/Config/F4SD-Global-Configuration.xml @@ -17,8 +17,7 @@ - - + diff --git a/F4SDwebService/Publish/Config/F4SD-Global-Configuration.xsd b/F4SDwebService/Publish/Config/F4SD-Global-Configuration.xsd index 654d851..03b1e75 100644 --- a/F4SDwebService/Publish/Config/F4SD-Global-Configuration.xsd +++ b/F4SDwebService/Publish/Config/F4SD-Global-Configuration.xsd @@ -131,18 +131,18 @@ - + - - - - - - - - - - + + + + + + + + + +