first commit
This commit is contained in:
211
F4SD-Cockpit-ServerCore/DataHistoryConfigM42Wpm.cs
Normal file
211
F4SD-Cockpit-ServerCore/DataHistoryConfigM42Wpm.cs
Normal file
@@ -0,0 +1,211 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml;
|
||||
using C4IT.FASD.Base;
|
||||
using C4IT.Logging;
|
||||
using C4IT.MultiLanguage;
|
||||
using C4IT.Security;
|
||||
using C4IT.XML;
|
||||
|
||||
using static C4IT.Logging.cLogManager;
|
||||
|
||||
namespace C4IT.DataHistoryProvider
|
||||
{
|
||||
public class cDataHistoryConfigM42Wpm : IConfigNodeValidation
|
||||
{
|
||||
public enum enumApiTokenLifetime
|
||||
{
|
||||
days30 = 30,
|
||||
days90 = 90,
|
||||
days180 = 180,
|
||||
year1 = 360,
|
||||
never = -1
|
||||
};
|
||||
|
||||
public bool IsValid { get; private set; } = false;
|
||||
|
||||
public string Server { get; private set; } = null;
|
||||
|
||||
public cCredential Credential { get; private set; } = null;
|
||||
|
||||
public int ClosedTicketHistory { get; private set; } = 10;
|
||||
public enumActivityQueueFilterOptions ActivityQueueFilterOption { get; private set; } = enumActivityQueueFilterOptions.showAll;
|
||||
public List<cApiM42TicketQueueInfo> ActivityQueues { get; private set; } = new List<cApiM42TicketQueueInfo>();
|
||||
|
||||
[Obsolete("This property is no longer used and will be removed in future versions.")]
|
||||
public bool DisableAutomaticTimeTracking { get; private set; } = false;
|
||||
|
||||
public cMultiLanguageDictionary DisplayNames { get; private set; } = new cMultiLanguageDictionary();
|
||||
|
||||
public enumApiTokenLifetime ApiLifetime { get; private set; } = enumApiTokenLifetime.never;
|
||||
|
||||
[Obsolete("This property is no longer used and will be removed in future versions.")]
|
||||
public enumShowDocumentCaseDialog ShowDocumentCaseDialog { get; private set; } = enumShowDocumentCaseDialog.ifRequired;
|
||||
|
||||
internal cDataHistoryConfigM42Wpm(XmlElement XNode, Dictionary<string, cCredential> Credentials, cXmlParser Parser)
|
||||
{
|
||||
MethodBase CM = null;
|
||||
if (cLogManager.DefaultLogger.IsDebug)
|
||||
{
|
||||
CM = MethodBase.GetCurrentMethod();
|
||||
LogMethodBegin(CM);
|
||||
}
|
||||
try
|
||||
{
|
||||
if (!(XNode.SelectSingleNode("Matrix42-WPM") is XmlElement XNode2))
|
||||
return;
|
||||
|
||||
Parser.EnterElement("Matrix42-WPM");
|
||||
|
||||
try
|
||||
{
|
||||
Server = cXmlParser.GetStringFromXmlAttribute(XNode2, "Server", "");
|
||||
if (string.IsNullOrWhiteSpace(Server))
|
||||
{
|
||||
Parser.AddMessage(XNode, $"The attribute 'Server' in element <{XNode2.Name}> is not set.");
|
||||
return;
|
||||
}
|
||||
|
||||
var strCredential = cXmlParser.GetStringFromXmlAttribute(XNode2, "Credential");
|
||||
if (string.IsNullOrWhiteSpace(strCredential))
|
||||
{
|
||||
Parser.AddInvalidAttribute(XNode, null, "Credential");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!Credentials.TryGetValue(strCredential, out var _Cred))
|
||||
{
|
||||
Parser.AddMessage(XNode, $"The credential attribute value '{strCredential}' of the element <{XNode.Name}> coud not be resolved.");
|
||||
return;
|
||||
}
|
||||
Credential = _Cred;
|
||||
|
||||
ClosedTicketHistory = cXmlParser.GetIntegerFromXmlAttribute(XNode2, "ClosedTicketHistory", ClosedTicketHistory);
|
||||
|
||||
ActivityQueueFilterOption = cXmlParser.GetEnumFromAttribute(XNode2, "ActivityQueueFilter", enumActivityQueueFilterOptions.showAll);
|
||||
if ((XNode2.SelectSingleNode("Queues") is XmlElement XNode3))
|
||||
{
|
||||
Parser.EnterElement("Queues");
|
||||
try
|
||||
{
|
||||
ActivityQueues = cXmlParser.GetObjectsFromXml(
|
||||
XNode3,
|
||||
"Queue",
|
||||
node =>
|
||||
{
|
||||
XmlAttributeCollection a = node.Attributes;
|
||||
if (a == null) return null;
|
||||
|
||||
string name = a["QueueName"]?.Value;
|
||||
string id = a["QueueID"]?.Value;
|
||||
Guid guid;
|
||||
|
||||
if (string.IsNullOrWhiteSpace(name) || !Guid.TryParse(id, out guid))
|
||||
return null;
|
||||
|
||||
return new cApiM42TicketQueueInfo
|
||||
{
|
||||
QueueName = name.Trim(),
|
||||
QueueID = guid
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
Parser.LeaveElement("Queues");
|
||||
}
|
||||
}
|
||||
DisplayNames.LoadFromXmlAttributeList(XNode2, "DisplayName");
|
||||
|
||||
var _str = cXmlParser.GetStringFromXmlAttribute(XNode2, "ApiTokenLifetime")?.ToLowerInvariant();
|
||||
switch (_str)
|
||||
{
|
||||
case "90 days":
|
||||
ApiLifetime = enumApiTokenLifetime.days90;
|
||||
break;
|
||||
case "180 days":
|
||||
ApiLifetime = enumApiTokenLifetime.days180;
|
||||
break;
|
||||
case "1 year":
|
||||
ApiLifetime = enumApiTokenLifetime.year1;
|
||||
break;
|
||||
case "never":
|
||||
ApiLifetime = enumApiTokenLifetime.never;
|
||||
break;
|
||||
default:
|
||||
ApiLifetime = enumApiTokenLifetime.days30;
|
||||
break;
|
||||
}
|
||||
parseMatrix42Ticket(XNode2, Parser);
|
||||
IsValid = true;
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
Parser.LeaveElement("Matrix42-WPM");
|
||||
}
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
}
|
||||
|
||||
internal void parseMatrix42Ticket(XmlElement XNode, cXmlParser Parser)
|
||||
{
|
||||
MethodBase CM = null;
|
||||
if (cLogManager.DefaultLogger.IsDebug)
|
||||
{
|
||||
CM = MethodBase.GetCurrentMethod();
|
||||
LogMethodBegin(CM);
|
||||
}
|
||||
try
|
||||
{
|
||||
if (!(XNode.SelectSingleNode("Matrix42-Ticket") is XmlElement XNode2))
|
||||
return;
|
||||
|
||||
Parser.EnterElement("Matrix42-Ticket");
|
||||
|
||||
try
|
||||
{
|
||||
#pragma warning disable CS0618 // Type or member is obsolete
|
||||
DisableAutomaticTimeTracking = cXmlParser.GetBoolFromXmlAttribute(XNode2, "DisableAutomaticTimeTracking");
|
||||
ShowDocumentCaseDialog = cXmlParser.GetEnumFromAttribute(XNode2, "ShowDocumentCaseDialog", enumShowDocumentCaseDialog.ifRequired);
|
||||
#pragma warning restore CS0618 // Type or member is obsolete
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
Parser.LeaveElement("Matrix42-Ticket");
|
||||
}
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
LogException(E);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (CM != null) LogMethodEnd(CM);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user