Add provider-aware activity filter API

This commit is contained in:
Drechsler, Meik
2026-07-23 11:09:14 +02:00
parent af679472db
commit 083fdf01dc
11 changed files with 728 additions and 74 deletions

View File

@@ -29,7 +29,7 @@ using static C4IT.Logging.cLogManager;
namespace C4IT.F4SD
{
public class F4SDHelperService
public partial class F4SDHelperService
{
private static Guid SPSUserClassBaseID = SPSDataEngineSchemaReader.ClassGetIDFromName("SPSUserClassBase");
private static Guid SPSAccountClassBaseID = SPSDataEngineSchemaReader.ClassGetIDFromName("SPSAccountClassBase");
@@ -166,6 +166,9 @@ namespace C4IT.F4SD
var tickets = new List<cF4SDTicketSummary>();
var activityFilter = GetActivityFilter(userSid, hours, ticketAndServiceRequestEnabled(), queueoption, queues);
activityFilter = await ApplyActivityFiltersAsync(activityFilter, null);
if (string.IsNullOrWhiteSpace(activityFilter))
return new List<cF4SDTicketSummary>();
LogEntry($"ASql Filter: {activityFilter}");
var activityTable = FragmentRequestBase.SimpleLoad(SPSActivityClassBaseID,
@@ -279,6 +282,9 @@ namespace C4IT.F4SD
var tickets = new List<cF4SDTicketSummary>();
var activityFilter = GetActivityFilter(userId, hours, ticketAndServiceRequestEnabled(), queueoption, queues);
activityFilter = await ApplyActivityFiltersAsync(activityFilter, null);
if (string.IsNullOrWhiteSpace(activityFilter))
return new List<cF4SDTicketSummary>();
LogEntry($"ASql Filter: {activityFilter}");
var activityTable = FragmentRequestBase.SimpleLoad(SPSActivityClassBaseID,
@@ -982,6 +988,7 @@ namespace C4IT.F4SD
var roleIds = await ResolveTicketOverviewRoleIdsAsync(sid, null);
var filter = BuildTicketOverviewFilterForRoleIds(roleIds, null, queueoption, queues);
filter = await ApplyActivityFiltersAsync(filter, null);
if (string.IsNullOrWhiteSpace(filter))
return new List<TicketOverviewEntry>();
@@ -1015,6 +1022,7 @@ namespace C4IT.F4SD
var roleIds = await ResolveTicketOverviewRoleIdsAsync(userId, null);
var filter = BuildTicketOverviewFilterForRoleIds(roleIds, null, queueoption, queues);
filter = await ApplyActivityFiltersAsync(filter, null);
if (string.IsNullOrWhiteSpace(filter))
return new List<TicketOverviewEntry>();
@@ -1044,6 +1052,7 @@ namespace C4IT.F4SD
await Task.Delay(0);
var filter = BuildTicketOverviewFilterForRoleIds(roleIds, null, queueoption, queues);
filter = await ApplyActivityFiltersAsync(filter, null);
return await LoadTicketOverviewEntriesByFilter(filter);
}
catch (Exception E)
@@ -1195,11 +1204,12 @@ namespace C4IT.F4SD
{
var recipientFilter = $"Recipient.Accounts.T(SPSAccountClassAd).Sid = '{Escape(sid)}'";
filter += $" AND ({recipientFilter})";
return filter;
return await ApplyActivityFiltersAsync(filter, null);
}
var roleIds = await ResolveTicketOverviewRoleIdsAsync(sid, null);
return BuildTicketOverviewFilterForRoleIds(roleIds, filter);
filter = BuildTicketOverviewFilterForRoleIds(roleIds, filter);
return await ApplyActivityFiltersAsync(filter, null);
}
private async Task<string> BuildTicketOverviewFilterAsync(
@@ -1214,11 +1224,12 @@ namespace C4IT.F4SD
{
var recipientFilter = $"Recipient = '{Escape(userId.ToString("D"))}'";
filter += $" AND ({recipientFilter})";
return filter;
return await ApplyActivityFiltersAsync(filter, null);
}
var roleIds = await ResolveTicketOverviewRoleIdsAsync(userId, null);
return BuildTicketOverviewFilterForRoleIds(roleIds, filter);
filter = BuildTicketOverviewFilterForRoleIds(roleIds, filter);
return await ApplyActivityFiltersAsync(filter, null);
}
private string BuildTicketOverviewBaseFilter(int queueoption, List<cApiM42TicketQueueInfo> queues)