Add provider-aware activity filter API
This commit is contained in:
@@ -22,7 +22,8 @@ namespace C4IT.F4SD
|
||||
Guid userId,
|
||||
int hours,
|
||||
int queueoption,
|
||||
List<cApiM42TicketQueueInfo> queues)
|
||||
List<cApiM42TicketQueueInfo> queues,
|
||||
cActivityFilterPolicy filters = null)
|
||||
{
|
||||
var method = MethodBase.GetCurrentMethod();
|
||||
LogMethodBegin(method);
|
||||
@@ -33,6 +34,9 @@ namespace C4IT.F4SD
|
||||
return new List<cF4SDTicketSummary>();
|
||||
|
||||
var activityFilter = GetActivityFilter(userId, hours, ticketAndServiceRequestEnabled(), queueoption, queues);
|
||||
activityFilter = await ApplyActivityFiltersAsync(activityFilter, filters);
|
||||
if (string.IsNullOrWhiteSpace(activityFilter))
|
||||
return new List<cF4SDTicketSummary>();
|
||||
LogEntry($"Generating ticket list for userId '{userId}'. ASQL filter: {activityFilter}", LogLevels.Debug);
|
||||
|
||||
var activityTable = FragmentRequestBase.SimpleLoad(
|
||||
@@ -91,7 +95,8 @@ namespace C4IT.F4SD
|
||||
string scope,
|
||||
IEnumerable<string> keys,
|
||||
int queueoption,
|
||||
List<cApiM42TicketQueueInfo> queues)
|
||||
List<cApiM42TicketQueueInfo> queues,
|
||||
cActivityFilterPolicy filters = null)
|
||||
{
|
||||
var method = MethodBase.GetCurrentMethod();
|
||||
LogMethodBegin(method);
|
||||
@@ -106,10 +111,10 @@ namespace C4IT.F4SD
|
||||
if (normalizedKeys.Count == 0)
|
||||
normalizedKeys.AddRange(TicketOverviewKeys);
|
||||
|
||||
var entries = await LoadTicketOverviewEntries(userId, useRoleScope, queueoption, queues);
|
||||
var entries = await LoadTicketOverviewEntries(userId, useRoleScope, queueoption, queues, filters);
|
||||
List<TicketOverviewEntry> unassignedEntries = null;
|
||||
if (!useRoleScope && normalizedKeys.Any(IsUnassignedOverviewKey))
|
||||
unassignedEntries = await LoadTicketOverviewUnassignedEntriesForPersonalScope(userId, queueoption, queues);
|
||||
unassignedEntries = await LoadTicketOverviewUnassignedEntriesForPersonalScope(userId, queueoption, queues, filters);
|
||||
|
||||
var counts = new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);
|
||||
foreach (var key in normalizedKeys)
|
||||
@@ -138,10 +143,11 @@ namespace C4IT.F4SD
|
||||
IEnumerable<Guid> roleGuids,
|
||||
IEnumerable<string> keys,
|
||||
int queueoption,
|
||||
List<cApiM42TicketQueueInfo> queues)
|
||||
List<cApiM42TicketQueueInfo> queues,
|
||||
cActivityFilterPolicy filters = null)
|
||||
{
|
||||
var roleIds = await ResolveTicketOverviewRoleIdsAsync(userId, roleGuids);
|
||||
return await getTicketOverviewCountsByRoles(null, roleIds, keys, queueoption, queues);
|
||||
return await getTicketOverviewCountsByRoles(null, roleIds, keys, queueoption, queues, filters);
|
||||
}
|
||||
|
||||
internal async Task<List<TicketOverviewRelationDto>> getTicketOverviewRelations(
|
||||
@@ -150,7 +156,8 @@ namespace C4IT.F4SD
|
||||
string key,
|
||||
int count,
|
||||
int queueoption,
|
||||
List<cApiM42TicketQueueInfo> queues)
|
||||
List<cApiM42TicketQueueInfo> queues,
|
||||
cActivityFilterPolicy filters = null)
|
||||
{
|
||||
var method = MethodBase.GetCurrentMethod();
|
||||
LogMethodBegin(method);
|
||||
@@ -161,8 +168,8 @@ namespace C4IT.F4SD
|
||||
|
||||
var useRoleScope = string.Equals(scope, "role", StringComparison.OrdinalIgnoreCase);
|
||||
var entries = !useRoleScope && IsUnassignedOverviewKey(key)
|
||||
? await LoadTicketOverviewUnassignedEntriesForPersonalScope(userId, queueoption, queues)
|
||||
: await LoadTicketOverviewEntries(userId, useRoleScope, queueoption, queues);
|
||||
? await LoadTicketOverviewUnassignedEntriesForPersonalScope(userId, queueoption, queues, filters)
|
||||
: await LoadTicketOverviewEntries(userId, useRoleScope, queueoption, queues, filters);
|
||||
|
||||
var filtered = entries
|
||||
.Where(entry => MatchesTicketOverviewKey(entry, key))
|
||||
@@ -212,25 +219,28 @@ namespace C4IT.F4SD
|
||||
Guid userId,
|
||||
bool useRoleScope,
|
||||
int queueoption,
|
||||
List<cApiM42TicketQueueInfo> queues)
|
||||
List<cApiM42TicketQueueInfo> queues,
|
||||
cActivityFilterPolicy filters = null)
|
||||
{
|
||||
if (userId == Guid.Empty)
|
||||
return new List<TicketOverviewEntry>();
|
||||
|
||||
var filter = await BuildTicketOverviewFilterAsync(userId, useRoleScope, queueoption, queues);
|
||||
var filter = await BuildTicketOverviewFilterAsync(userId, useRoleScope, queueoption, queues, filters);
|
||||
return await LoadTicketOverviewEntriesByFilter(filter);
|
||||
}
|
||||
|
||||
private async Task<List<TicketOverviewEntry>> LoadTicketOverviewUnassignedEntriesForPersonalScope(
|
||||
Guid userId,
|
||||
int queueoption,
|
||||
List<cApiM42TicketQueueInfo> queues)
|
||||
List<cApiM42TicketQueueInfo> queues,
|
||||
cActivityFilterPolicy filters = null)
|
||||
{
|
||||
if (userId == Guid.Empty)
|
||||
return new List<TicketOverviewEntry>();
|
||||
|
||||
var roleIds = await ResolveTicketOverviewRoleIdsAsync(userId, null);
|
||||
var filter = BuildTicketOverviewFilterForRoleIds(roleIds, null, queueoption, queues);
|
||||
filter = await ApplyActivityFiltersAsync(filter, filters);
|
||||
if (string.IsNullOrWhiteSpace(filter))
|
||||
return new List<TicketOverviewEntry>();
|
||||
|
||||
@@ -241,14 +251,16 @@ namespace C4IT.F4SD
|
||||
Guid userId,
|
||||
bool useRoleScope,
|
||||
int queueoption,
|
||||
List<cApiM42TicketQueueInfo> queues)
|
||||
List<cApiM42TicketQueueInfo> queues,
|
||||
cActivityFilterPolicy filters = null)
|
||||
{
|
||||
var filter = BuildTicketOverviewBaseFilter(queueoption, queues);
|
||||
if (!useRoleScope)
|
||||
return filter + $" AND (Recipient = '{Escape(userId.ToString("D"))}')";
|
||||
return await ApplyActivityFiltersAsync(filter + $" AND (Recipient = '{Escape(userId.ToString("D"))}')", filters);
|
||||
|
||||
var roleIds = await ResolveTicketOverviewRoleIdsAsync(userId, null);
|
||||
return BuildTicketOverviewFilterForRoleIds(roleIds, filter);
|
||||
filter = BuildTicketOverviewFilterForRoleIds(roleIds, filter);
|
||||
return await ApplyActivityFiltersAsync(filter, filters);
|
||||
}
|
||||
|
||||
private async Task<List<Guid>> ResolveTicketOverviewRoleIdsAsync(Guid userId, IEnumerable<Guid> roleGuids)
|
||||
|
||||
Reference in New Issue
Block a user