Rename WebApi activity filters to ticket filters
This commit is contained in:
63
Legacy/F4SDM42WebApi/TicketFilterService.cs
Normal file
63
Legacy/F4SDM42WebApi/TicketFilterService.cs
Normal file
@@ -0,0 +1,63 @@
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using C4IT.FASD.Base;
|
||||
using C4IT.Logging;
|
||||
|
||||
using static C4IT.Logging.cLogManager;
|
||||
|
||||
namespace C4IT.F4SD
|
||||
{
|
||||
public partial class F4SDHelperService
|
||||
{
|
||||
private static readonly AsyncLocal<cTicketFilterPolicy> currentTicketFilters =
|
||||
new AsyncLocal<cTicketFilterPolicy>();
|
||||
|
||||
private sealed class TicketFilterScope : IDisposable
|
||||
{
|
||||
private readonly cTicketFilterPolicy previous;
|
||||
|
||||
public TicketFilterScope(cTicketFilterPolicy filters)
|
||||
{
|
||||
previous = currentTicketFilters.Value;
|
||||
currentTicketFilters.Value = filters;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
currentTicketFilters.Value = previous;
|
||||
}
|
||||
}
|
||||
|
||||
internal IDisposable BeginTicketFilterScope(cTicketFilterPolicy filters)
|
||||
{
|
||||
return new TicketFilterScope(filters);
|
||||
}
|
||||
|
||||
internal async Task<string> ApplyTicketFiltersAsync(string baseFilter, cTicketFilterPolicy policy)
|
||||
{
|
||||
var result = await TicketFilterCompiler.CompileAsync(policy ?? currentTicketFilters.Value, null);
|
||||
if (!result.Success)
|
||||
{
|
||||
LogEntry($"Ticket filter rejected (fail closed): {result.Error}", LogLevels.Error);
|
||||
return null;
|
||||
}
|
||||
|
||||
return string.IsNullOrWhiteSpace(result.Clause)
|
||||
? baseFilter
|
||||
: $"({baseFilter}) AND ({result.Clause})";
|
||||
}
|
||||
|
||||
internal cTicketFilterCapabilities GetTicketFilterCapabilities()
|
||||
{
|
||||
return new cTicketFilterCapabilities
|
||||
{
|
||||
Provider = TicketFilterCompiler.ProviderName,
|
||||
CommonFields = new List<string> { TicketFilterCompiler.AssignmentGroupField },
|
||||
ProviderFields = new List<string> { TicketFilterCompiler.QueueField }
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user