Rename WebApi activity filters to ticket filters
This commit is contained in:
@@ -1,63 +0,0 @@
|
||||
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<cActivityFilterPolicy> currentActivityFilters =
|
||||
new AsyncLocal<cActivityFilterPolicy>();
|
||||
|
||||
private sealed class ActivityFilterScope : IDisposable
|
||||
{
|
||||
private readonly cActivityFilterPolicy previous;
|
||||
|
||||
public ActivityFilterScope(cActivityFilterPolicy filters)
|
||||
{
|
||||
previous = currentActivityFilters.Value;
|
||||
currentActivityFilters.Value = filters;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
currentActivityFilters.Value = previous;
|
||||
}
|
||||
}
|
||||
|
||||
internal IDisposable BeginActivityFilterScope(cActivityFilterPolicy filters)
|
||||
{
|
||||
return new ActivityFilterScope(filters);
|
||||
}
|
||||
|
||||
internal async Task<string> ApplyActivityFiltersAsync(string baseFilter, cActivityFilterPolicy policy)
|
||||
{
|
||||
var result = await ActivityFilterCompiler.CompileAsync(policy ?? currentActivityFilters.Value, null);
|
||||
if (!result.Success)
|
||||
{
|
||||
LogEntry($"Activity filter rejected (fail closed): {result.Error}", LogLevels.Error);
|
||||
return null;
|
||||
}
|
||||
|
||||
return string.IsNullOrWhiteSpace(result.Clause)
|
||||
? baseFilter
|
||||
: $"({baseFilter}) AND ({result.Clause})";
|
||||
}
|
||||
|
||||
internal cTicketActivityFilterCapabilities GetActivityFilterCapabilities()
|
||||
{
|
||||
return new cTicketActivityFilterCapabilities
|
||||
{
|
||||
Provider = ActivityFilterCompiler.ProviderName,
|
||||
CommonFields = new List<string> { ActivityFilterCompiler.AssignmentGroupField },
|
||||
ProviderFields = new List<string> { ActivityFilterCompiler.QueueField }
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -54,10 +54,10 @@
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="cM42LogEntry.cs" />
|
||||
<Compile Include="ActivityFilterService.cs" />
|
||||
<Compile Include="TicketFilterService.cs" />
|
||||
<Compile Include="F4SDHelperService.cs" />
|
||||
<Compile Include="F4SDM42WebApiController.cs" />
|
||||
<Compile Include="..\..\Shared\ActivityFilterCompiler.cs"><Link>Shared\ActivityFilterCompiler.cs</Link></Compile>
|
||||
<Compile Include="..\..\Shared\TicketFilterCompiler.cs"><Link>Shared\TicketFilterCompiler.cs</Link></Compile>
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="..\..\SharedAssemblyInfo.cs"><Link>Properties\SharedAssemblyInfo.cs</Link></Compile>
|
||||
</ItemGroup>
|
||||
|
||||
@@ -166,7 +166,7 @@ namespace C4IT.F4SD
|
||||
|
||||
var tickets = new List<cF4SDTicketSummary>();
|
||||
var activityFilter = GetActivityFilter(userSid, hours, ticketAndServiceRequestEnabled(), queueoption, queues);
|
||||
activityFilter = await ApplyActivityFiltersAsync(activityFilter, null);
|
||||
activityFilter = await ApplyTicketFiltersAsync(activityFilter, null);
|
||||
if (string.IsNullOrWhiteSpace(activityFilter))
|
||||
return new List<cF4SDTicketSummary>();
|
||||
LogEntry($"ASql Filter: {activityFilter}");
|
||||
@@ -282,7 +282,7 @@ namespace C4IT.F4SD
|
||||
|
||||
var tickets = new List<cF4SDTicketSummary>();
|
||||
var activityFilter = GetActivityFilter(userId, hours, ticketAndServiceRequestEnabled(), queueoption, queues);
|
||||
activityFilter = await ApplyActivityFiltersAsync(activityFilter, null);
|
||||
activityFilter = await ApplyTicketFiltersAsync(activityFilter, null);
|
||||
if (string.IsNullOrWhiteSpace(activityFilter))
|
||||
return new List<cF4SDTicketSummary>();
|
||||
LogEntry($"ASql Filter: {activityFilter}");
|
||||
@@ -988,7 +988,7 @@ namespace C4IT.F4SD
|
||||
|
||||
var roleIds = await ResolveTicketOverviewRoleIdsAsync(sid, null);
|
||||
var filter = BuildTicketOverviewFilterForRoleIds(roleIds, null, queueoption, queues);
|
||||
filter = await ApplyActivityFiltersAsync(filter, null);
|
||||
filter = await ApplyTicketFiltersAsync(filter, null);
|
||||
if (string.IsNullOrWhiteSpace(filter))
|
||||
return new List<TicketOverviewEntry>();
|
||||
|
||||
@@ -1022,7 +1022,7 @@ namespace C4IT.F4SD
|
||||
|
||||
var roleIds = await ResolveTicketOverviewRoleIdsAsync(userId, null);
|
||||
var filter = BuildTicketOverviewFilterForRoleIds(roleIds, null, queueoption, queues);
|
||||
filter = await ApplyActivityFiltersAsync(filter, null);
|
||||
filter = await ApplyTicketFiltersAsync(filter, null);
|
||||
if (string.IsNullOrWhiteSpace(filter))
|
||||
return new List<TicketOverviewEntry>();
|
||||
|
||||
@@ -1052,7 +1052,7 @@ namespace C4IT.F4SD
|
||||
await Task.Delay(0);
|
||||
|
||||
var filter = BuildTicketOverviewFilterForRoleIds(roleIds, null, queueoption, queues);
|
||||
filter = await ApplyActivityFiltersAsync(filter, null);
|
||||
filter = await ApplyTicketFiltersAsync(filter, null);
|
||||
return await LoadTicketOverviewEntriesByFilter(filter);
|
||||
}
|
||||
catch (Exception E)
|
||||
@@ -1204,12 +1204,12 @@ namespace C4IT.F4SD
|
||||
{
|
||||
var recipientFilter = $"Recipient.Accounts.T(SPSAccountClassAd).Sid = '{Escape(sid)}'";
|
||||
filter += $" AND ({recipientFilter})";
|
||||
return await ApplyActivityFiltersAsync(filter, null);
|
||||
return await ApplyTicketFiltersAsync(filter, null);
|
||||
}
|
||||
|
||||
var roleIds = await ResolveTicketOverviewRoleIdsAsync(sid, null);
|
||||
filter = BuildTicketOverviewFilterForRoleIds(roleIds, filter);
|
||||
return await ApplyActivityFiltersAsync(filter, null);
|
||||
return await ApplyTicketFiltersAsync(filter, null);
|
||||
}
|
||||
|
||||
private async Task<string> BuildTicketOverviewFilterAsync(
|
||||
@@ -1224,12 +1224,12 @@ namespace C4IT.F4SD
|
||||
{
|
||||
var recipientFilter = $"Recipient = '{Escape(userId.ToString("D"))}'";
|
||||
filter += $" AND ({recipientFilter})";
|
||||
return await ApplyActivityFiltersAsync(filter, null);
|
||||
return await ApplyTicketFiltersAsync(filter, null);
|
||||
}
|
||||
|
||||
var roleIds = await ResolveTicketOverviewRoleIdsAsync(userId, null);
|
||||
filter = BuildTicketOverviewFilterForRoleIds(roleIds, filter);
|
||||
return await ApplyActivityFiltersAsync(filter, null);
|
||||
return await ApplyTicketFiltersAsync(filter, null);
|
||||
}
|
||||
|
||||
private string BuildTicketOverviewBaseFilter(int queueoption, List<cApiM42TicketQueueInfo> queues)
|
||||
|
||||
@@ -139,9 +139,9 @@ namespace C4IT.F4SD
|
||||
}
|
||||
|
||||
[Route("v2/getTicketList"), HttpPost]
|
||||
public async Task<List<cF4SDTicketSummary>> getTicketListV2([FromBody] cTicketActivityListRequest request)
|
||||
public async Task<List<cF4SDTicketSummary>> getTicketListV2([FromBody] cTicketListFilterRequest request)
|
||||
{
|
||||
using (_f4stHelperService.BeginActivityFilterScope(request?.Filters))
|
||||
using (_f4stHelperService.BeginTicketFilterScope(request?.Filters))
|
||||
{
|
||||
if (request?.UserId != Guid.Empty)
|
||||
return await _f4stHelperService.getTicketListByUser(
|
||||
@@ -217,7 +217,7 @@ namespace C4IT.F4SD
|
||||
public async Task<F4SDHelperService.TicketOverviewCountsResult> getTicketOverviewCountsV2(
|
||||
[FromBody] cTicketOverviewFilterRequest request)
|
||||
{
|
||||
using (_f4stHelperService.BeginActivityFilterScope(request?.Filters))
|
||||
using (_f4stHelperService.BeginTicketFilterScope(request?.Filters))
|
||||
{
|
||||
if (request?.UserId != Guid.Empty)
|
||||
return await _f4stHelperService.getTicketOverviewCounts(
|
||||
@@ -316,7 +316,7 @@ namespace C4IT.F4SD
|
||||
public async Task<List<F4SDHelperService.TicketOverviewRelationDto>> getTicketOverviewRelationsV2(
|
||||
[FromBody] cTicketOverviewFilterRequest request)
|
||||
{
|
||||
using (_f4stHelperService.BeginActivityFilterScope(request?.Filters))
|
||||
using (_f4stHelperService.BeginTicketFilterScope(request?.Filters))
|
||||
{
|
||||
if (request?.UserId != Guid.Empty)
|
||||
return await _f4stHelperService.getTicketOverviewRelations(
|
||||
@@ -337,10 +337,10 @@ namespace C4IT.F4SD
|
||||
}
|
||||
}
|
||||
|
||||
[Route("v2/getActivityFilterCapabilities"), HttpGet]
|
||||
public cTicketActivityFilterCapabilities getActivityFilterCapabilitiesV2()
|
||||
[Route("v2/getTicketFilterCapabilities"), HttpGet]
|
||||
public cTicketFilterCapabilities getTicketFilterCapabilitiesV2()
|
||||
{
|
||||
return _f4stHelperService.GetActivityFilterCapabilities();
|
||||
return _f4stHelperService.GetTicketFilterCapabilities();
|
||||
}
|
||||
|
||||
|
||||
|
||||
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