Queues Ticketoverview

This commit is contained in:
Meik
2026-02-04 09:47:22 +01:00
parent f18d71e2b3
commit dac7e38f49

View File

@@ -37,9 +37,9 @@ namespace C4IT.DataHistoryProvider
private const string constUrlUpdateSolution = "m42Services/api/c4itf4sdwebapi/updateactivitysolution/{0}/"; private const string constUrlUpdateSolution = "m42Services/api/c4itf4sdwebapi/updateactivitysolution/{0}/";
private const string constUrlGetPickupValues = "m42Services/api/c4itf4sdwebapi/getpickup/{0}?group={1}"; private const string constUrlGetPickupValues = "m42Services/api/c4itf4sdwebapi/getpickup/{0}?group={1}";
private const string constUrlGetRoleMeberships = "m42services/api/c4itf4sdwebapi/getrolememberships/?sid={0}"; private const string constUrlGetRoleMeberships = "m42services/api/c4itf4sdwebapi/getrolememberships/?sid={0}";
private const string constUrlGetTicketOverviewCounts = "m42Services/api/c4itf4sdwebapi/getticketoverviewcounts?sid={0}&scope={1}&keys={2}"; private const string constUrlGetTicketOverviewCounts = "m42Services/api/c4itf4sdwebapi/getticketoverviewcounts";
private const string constUrlGetTicketOverviewCountsByRoles = "m42Services/api/c4itf4sdwebapi/getticketoverviewcountsbyroles"; private const string constUrlGetTicketOverviewCountsByRoles = "m42Services/api/c4itf4sdwebapi/getticketoverviewcountsbyroles";
private const string constUrlGetTicketOverviewRelations = "m42Services/api/c4itf4sdwebapi/getticketoverviewrelations?sid={0}&scope={1}&key={2}&count={3}"; private const string constUrlGetTicketOverviewRelations = "m42Services/api/c4itf4sdwebapi/getticketoverviewrelations";
private const string constUrlGetDataQueryRelationItems = "m42Services/api/dataquery/relationitems"; private const string constUrlGetDataQueryRelationItems = "m42Services/api/dataquery/relationitems";
private const string constUrlGetDataQueryRelationItemsCount = "m42Services/api/dataquery/relationitems/count"; private const string constUrlGetDataQueryRelationItemsCount = "m42Services/api/dataquery/relationitems/count";
private const string constUrlCreateTicket = "m42Services/api/ticket/create?activitytype={0}"; private const string constUrlCreateTicket = "m42Services/api/ticket/create?activitytype={0}";
@@ -118,6 +118,8 @@ namespace C4IT.DataHistoryProvider
public string Sid { get; set; } public string Sid { get; set; }
public List<Guid> RoleGuids { get; set; } = new List<Guid>(); public List<Guid> RoleGuids { get; set; } = new List<Guid>();
public List<string> Keys { get; set; } = new List<string>(); public List<string> Keys { get; set; } = new List<string>();
public int QueueOption { get; set; }
public string Queues { get; set; }
} }
private sealed class TicketOverviewCountsByRolesResponse private sealed class TicketOverviewCountsByRolesResponse
@@ -803,11 +805,16 @@ namespace C4IT.DataHistoryProvider
if (roleList.Count == 0) if (roleList.Count == 0)
return new Dictionary<Guid, Dictionary<string, int>>(); return new Dictionary<Guid, Dictionary<string, int>>();
var queueOption = GetActivityQueueOption();
var encodedQueues = queueOption != 0 ? GetEncodedActivityQueues() : null;
var request = new TicketOverviewCountsByRolesRequest var request = new TicketOverviewCountsByRolesRequest
{ {
Sid = requestInfo?.userInfo?.AdSid, Sid = requestInfo?.userInfo?.AdSid,
RoleGuids = roleList, RoleGuids = roleList,
Keys = requestedKeys?.Where(k => !string.IsNullOrWhiteSpace(k)).ToList() ?? new List<string>() Keys = requestedKeys?.Where(k => !string.IsNullOrWhiteSpace(k)).ToList() ?? new List<string>(),
QueueOption = queueOption,
Queues = encodedQueues
}; };
var jsonBody = JsonConvert.SerializeObject(request, Formatting.None, var jsonBody = JsonConvert.SerializeObject(request, Formatting.None,
@@ -901,6 +908,36 @@ namespace C4IT.DataHistoryProvider
return filtered; return filtered;
} }
private int GetActivityQueueOption()
{
return (int)Collector.InfrastructureConfig.M42Wpm.ActivityQueueFilterOption;
}
private string GetEncodedActivityQueues()
{
var queues = Collector.InfrastructureConfig.M42Wpm.ActivityQueues;
if (queues == null || queues.Count == 0)
return null;
return string.Join("|",
queues.Select(q =>
string.Format("{0}:{1}",
HttpUtility.UrlEncode(q.QueueName),
HttpUtility.UrlEncode(q.QueueID.ToString())
)
)
);
}
private static void AppendQueueFilterQuery(StringBuilder urlBuilder, int queueOption, string encodedQueues)
{
if (queueOption != 0)
urlBuilder.Append("&queueoption=").Append(queueOption);
if (!string.IsNullOrWhiteSpace(encodedQueues))
urlBuilder.Append("&queues=").Append(encodedQueues);
}
private async Task<Dictionary<string, int>> FetchTicketOverviewCountsAsync( private async Task<Dictionary<string, int>> FetchTicketOverviewCountsAsync(
string sid, string sid,
string scope, string scope,
@@ -910,15 +947,20 @@ namespace C4IT.DataHistoryProvider
{ {
try try
{ {
var keyParam = requestedKeys != null && requestedKeys.Count > 0 var urlBuilder = new StringBuilder(constUrlGetTicketOverviewCounts);
? HttpUtility.UrlEncode(string.Join(",", requestedKeys)) urlBuilder.Append("?sid=").Append(HttpUtility.UrlEncode(sid));
: null; urlBuilder.Append("&scope=").Append(HttpUtility.UrlEncode(scope ?? string.Empty));
var url = string.Format(constUrlGetTicketOverviewCounts, HttpUtility.UrlEncode(sid), scope, keyParam ?? string.Empty); if (requestedKeys != null && requestedKeys.Count > 0)
if (string.IsNullOrWhiteSpace(keyParam))
{ {
url = $"m42Services/api/c4itf4sdwebapi/getticketoverviewcounts?sid={HttpUtility.UrlEncode(sid)}&scope={scope}"; urlBuilder.Append("&keys=").Append(HttpUtility.UrlEncode(string.Join(",", requestedKeys)));
} }
var queueOption = GetActivityQueueOption();
var encodedQueues = queueOption != 0 ? GetEncodedActivityQueues() : null;
AppendQueueFilterQuery(urlBuilder, queueOption, encodedQueues);
var url = urlBuilder.ToString();
var wc = await GetWebClient(requestInfo, token); var wc = await GetWebClient(requestInfo, token);
var res = await wc.HttpEnh.GetAsync(url, token); var res = await wc.HttpEnh.GetAsync(url, token);
if (token.IsCancellationRequested) if (token.IsCancellationRequested)
@@ -1062,13 +1104,17 @@ namespace C4IT.DataHistoryProvider
return new List<cF4sdApiSearchResultRelation>(); return new List<cF4sdApiSearchResultRelation>();
var scope = useRoleScope ? "role" : "personal"; var scope = useRoleScope ? "role" : "personal";
var url = string.Format( var urlBuilder = new StringBuilder(constUrlGetTicketOverviewRelations);
constUrlGetTicketOverviewRelations, urlBuilder.Append("?sid=").Append(HttpUtility.UrlEncode(sid));
HttpUtility.UrlEncode(sid), urlBuilder.Append("&scope=").Append(HttpUtility.UrlEncode(scope));
scope, urlBuilder.Append("&key=").Append(HttpUtility.UrlEncode(key));
HttpUtility.UrlEncode(key), urlBuilder.Append("&count=").Append(Math.Max(0, count));
Math.Max(0, count)
); var queueOption = GetActivityQueueOption();
var encodedQueues = queueOption != 0 ? GetEncodedActivityQueues() : null;
AppendQueueFilterQuery(urlBuilder, queueOption, encodedQueues);
var url = urlBuilder.ToString();
var wc = await GetWebClient(requestInfo, Token); var wc = await GetWebClient(requestInfo, Token);
var res = await wc.HttpEnh.GetAsync(url, Token); var res = await wc.HttpEnh.GetAsync(url, Token);