Add service request categories to ticket overview API
This commit is contained in:
@@ -305,12 +305,17 @@ namespace C4IT.F4SD
|
||||
"TicketsActive",
|
||||
"TicketsCritical",
|
||||
"TicketsNewInfo",
|
||||
"IncidentNew",
|
||||
"IncidentActive",
|
||||
"IncidentCritical",
|
||||
"IncidentNewInfo",
|
||||
"UnassignedTickets",
|
||||
"UnassignedTicketsCritical"
|
||||
"IncidentNew",
|
||||
"IncidentActive",
|
||||
"IncidentCritical",
|
||||
"IncidentNewInfo",
|
||||
"ServiceRequestsNew",
|
||||
"ServiceRequestsActive",
|
||||
"ServiceRequestsCritical",
|
||||
"ServiceRequestsNewInfo",
|
||||
"UnassignedTickets",
|
||||
"UnassignedTicketsCritical",
|
||||
"ServiceRequestsEnabled"
|
||||
};
|
||||
|
||||
public class TicketOverviewCountsResult
|
||||
@@ -396,12 +401,11 @@ namespace C4IT.F4SD
|
||||
{
|
||||
if (!useRoleScope && IsUnassignedOverviewKey(key))
|
||||
{
|
||||
counts[key] = (unassignedEntries ?? new List<TicketOverviewEntry>())
|
||||
.Count(entry => MatchesTicketOverviewKey(entry, key));
|
||||
}
|
||||
else
|
||||
{
|
||||
counts[key] = entries.Count(entry => MatchesTicketOverviewKey(entry, key));
|
||||
counts[key] = CountTicketOverviewEntries(unassignedEntries, key);
|
||||
}
|
||||
else
|
||||
{
|
||||
counts[key] = CountTicketOverviewEntries(entries, key);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -458,7 +462,7 @@ namespace C4IT.F4SD
|
||||
var counts = new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);
|
||||
foreach (var key in normalizedKeys)
|
||||
{
|
||||
counts[key] = roleEntries.Count(entry => MatchesTicketOverviewKey(entry, key));
|
||||
counts[key] = CountTicketOverviewEntries(roleEntries, key);
|
||||
}
|
||||
|
||||
countsByRole[roleId.ToString()] = counts;
|
||||
@@ -929,13 +933,16 @@ namespace C4IT.F4SD
|
||||
}
|
||||
}
|
||||
|
||||
private static bool MatchesTicketOverviewKey(TicketOverviewEntry entry, string key)
|
||||
{
|
||||
if (entry == null || string.IsNullOrWhiteSpace(key))
|
||||
return false;
|
||||
|
||||
var isTicket = !entry.IsIncident;
|
||||
var hasPerson = entry.RecipientId != Guid.Empty;
|
||||
private static bool MatchesTicketOverviewKey(TicketOverviewEntry entry, string key)
|
||||
{
|
||||
if (entry == null || string.IsNullOrWhiteSpace(key))
|
||||
return false;
|
||||
|
||||
// TODO: Fachlich klaeren, ob Service Requests zusaetzlich unter "Tickets" aggregiert werden sollen.
|
||||
var isTicket = string.Equals(entry.ActivityType, "SPSActivityTypeTicket", StringComparison.OrdinalIgnoreCase)
|
||||
|| (!entry.IsIncident && string.IsNullOrWhiteSpace(entry.ActivityType));
|
||||
var isServiceRequest = string.Equals(entry.ActivityType, "SPSActivityTypeServiceRequest", StringComparison.OrdinalIgnoreCase);
|
||||
var hasPerson = entry.RecipientId != Guid.Empty;
|
||||
var hasRole = entry.RecipientRoleId != Guid.Empty;
|
||||
var isCritical = entry.ReactionTimeEscalated || entry.SolutionTimeEscalated;
|
||||
var isNew = entry.State == 200;
|
||||
@@ -957,16 +964,33 @@ namespace C4IT.F4SD
|
||||
return entry.IsIncident && isActive;
|
||||
case "IncidentCritical":
|
||||
return entry.IsIncident && isCritical;
|
||||
case "IncidentNewInfo":
|
||||
return entry.IsIncident && entry.NewInformationReceived;
|
||||
case "UnassignedTickets":
|
||||
return !hasPerson && hasRole && isNew;
|
||||
case "IncidentNewInfo":
|
||||
return entry.IsIncident && entry.NewInformationReceived;
|
||||
case "ServiceRequestsNew":
|
||||
return isServiceRequest && (entry.State == 200 || entry.State == 201);
|
||||
case "ServiceRequestsActive":
|
||||
return isServiceRequest && isActive;
|
||||
case "ServiceRequestsCritical":
|
||||
return isServiceRequest && isCritical;
|
||||
case "ServiceRequestsNewInfo":
|
||||
return isServiceRequest && entry.NewInformationReceived;
|
||||
case "UnassignedTickets":
|
||||
return !hasPerson && hasRole && isNew;
|
||||
case "UnassignedTicketsCritical":
|
||||
return !hasPerson && hasRole && isCritical;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static int CountTicketOverviewEntries(IEnumerable<TicketOverviewEntry> entries, string key)
|
||||
{
|
||||
if (string.Equals(key?.Trim(), "ServiceRequestsEnabled", StringComparison.OrdinalIgnoreCase))
|
||||
return ticketAndServiceRequestEnabled() ? 1 : 0;
|
||||
|
||||
return (entries ?? Enumerable.Empty<TicketOverviewEntry>())
|
||||
.Count(entry => MatchesTicketOverviewKey(entry, key));
|
||||
}
|
||||
|
||||
private static bool GetBoolValue(object value)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user