Rename WebApi activity filters to ticket filters
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user