Rename WebApi activity filters to ticket filters

This commit is contained in:
Drechsler, Meik
2026-07-23 12:47:28 +02:00
parent 0af8981323
commit 60e2651641
12 changed files with 148 additions and 148 deletions

View File

@@ -7,40 +7,40 @@ using C4IT.FASD.Base;
namespace C4IT.F4SD
{
internal sealed class ActivityFilterResolution
internal sealed class TicketFilterResolution
{
public bool Success { get; set; }
public string Error { get; set; }
public List<Guid> RoleIds { get; set; } = new List<Guid>();
}
internal sealed class ActivityFilterCompilationResult
internal sealed class TicketFilterCompilationResult
{
public bool Success { get; set; }
public string Clause { get; set; }
public string Error { get; set; }
}
internal static class ActivityFilterCompiler
internal static class TicketFilterCompiler
{
internal const string ProviderName = "Matrix42";
internal const string AssignmentGroupField = "AssignmentGroup";
internal const string QueueField = "Queue";
internal const string WorkspaceField = "Workspace";
internal static async Task<ActivityFilterCompilationResult> CompileAsync(
cActivityFilterPolicy policy,
Func<cActivityFilter, Task<ActivityFilterResolution>> workspaceResolver)
internal static async Task<TicketFilterCompilationResult> CompileAsync(
cTicketFilterPolicy policy,
Func<cTicketFilter, Task<TicketFilterResolution>> workspaceResolver)
{
var clauses = new List<string>();
foreach (var filter in policy?.Filters ?? new List<cActivityFilter>())
foreach (var filter in policy?.Filters ?? new List<cTicketFilter>())
{
if (filter == null || !filter.Enabled)
continue;
var providerSpecific = !string.IsNullOrWhiteSpace(filter.Provider);
if (providerSpecific && !string.Equals(filter.Provider, ProviderName, StringComparison.OrdinalIgnoreCase))
return Fail($"Unsupported activity filter provider '{filter.Provider}'.");
return Fail($"Unsupported ticket filter provider '{filter.Provider}'.");
var field = filter.Field?.Trim();
string emptyClause;
@@ -70,37 +70,37 @@ namespace C4IT.F4SD
}
else
{
return Fail($"Unsupported activity filter field '{filter.Provider}:{field}'.");
return Fail($"Unsupported ticket filter field '{filter.Provider}:{field}'.");
}
if (filter.EmptyHandling == enumActivityFilterEmptyHandling.only)
if (filter.EmptyHandling == enumTicketFilterEmptyHandling.only)
{
clauses.Add($"({emptyClause})");
continue;
}
if (string.IsNullOrWhiteSpace(valueClause))
return Fail($"Activity filter '{filter.Provider}:{field}' has no valid values.");
return Fail($"Ticket filter '{filter.Provider}:{field}' has no valid values.");
var matchClause = filter.Match == enumActivityFilterMatch.exclude
var matchClause = filter.Match == enumTicketFilterMatch.exclude
? $"NOT ({valueClause})"
: $"({valueClause})";
clauses.Add(filter.EmptyHandling == enumActivityFilterEmptyHandling.include
clauses.Add(filter.EmptyHandling == enumTicketFilterEmptyHandling.include
? $"(({emptyClause}) OR ({matchClause}))"
: $"((NOT ({emptyClause})) AND ({matchClause}))");
}
return new ActivityFilterCompilationResult
return new TicketFilterCompilationResult
{
Success = true,
Clause = string.Join(" AND ", clauses)
};
}
private static string BuildValueClause(string idField, string nameField, IEnumerable<cActivityFilterValue> values)
private static string BuildValueClause(string idField, string nameField, IEnumerable<cTicketFilterValue> values)
{
var items = (values ?? Enumerable.Empty<cActivityFilterValue>())
var items = (values ?? Enumerable.Empty<cTicketFilterValue>())
.Where(value => value != null)
.ToList();
var ids = items
@@ -139,9 +139,9 @@ namespace C4IT.F4SD
return $"'{(value ?? string.Empty).Replace("'", "''")}'";
}
private static ActivityFilterCompilationResult Fail(string error)
private static TicketFilterCompilationResult Fail(string error)
{
return new ActivityFilterCompilationResult
return new TicketFilterCompilationResult
{
Success = false,
Error = error