Files
monorepo/LCU.WebApps.Internal.DocumentManager/LCU.WebApps.Internal.DocumentManager/Services/QueueDocumentReprocessingService.cs
T
2026-03-13 09:24:21 -05:00

103 lines
4.6 KiB
C#

using LCU.Library.Internal.DocumentIngestorModels.Entities;
using LCU.Library.Internal.LcuHttpClient.HttpRequest;
using LCU.Library.Internal.Security.Service;
using LCU.WebApps.Internal.DocumentManager.Authentication;
using LCU.WebApps.Internal.DocumentManager.Configurations;
using Serilog;
namespace LCU.WebApps.Internal.DocumentManager.Services;
public class QueueDocumentReprocessingService : IDocumentReprocessingService
{
private readonly IPostRequest _postRequest;
private readonly DocumentIngestorApiConfiguration _documentIngestorApiConfiguration;
private readonly AuthenticationHelper _authenticationHelper;
private readonly IAzureAdAuthorizationService _azureAdAuthorizationService;
public QueueDocumentReprocessingService(IPostRequest postRequest,
DocumentIngestorApiConfiguration documentIngestorApiConfiguration,
AuthenticationHelper authenticationHelper,
IAzureAdAuthorizationService azureAdAuthorizationService)
{
_postRequest = postRequest;
_documentIngestorApiConfiguration = documentIngestorApiConfiguration;
_authenticationHelper = authenticationHelper;
_azureAdAuthorizationService = azureAdAuthorizationService;
}
public async Task QueueDocumentReprocessing(int documentProcessingInfoId)
{
try
{
var url = _documentIngestorApiConfiguration.
QueueReprocessDocumentByIdEndpointUrl.Replace("{documentProcessingInfoId}", documentProcessingInfoId.ToString())
.Replace("{userName}", _azureAdAuthorizationService.GetUserName());
var headers = _authenticationHelper.CreateApiSecurityHeaders(new Dictionary<string, string>());
await _postRequest.Async<string>(new Uri(url), "", headers);
}
catch (Exception exception)
{
Log.Error(exception, "Error Queueing Document Processing Request." +
$"DocumentProcessingInfoId:{documentProcessingInfoId}");
throw;
}
}
public async Task QueueDocumentReprocessingWithOverride(OwnerOverrideInfo ownerOverrideInfo)
{
try
{
ownerOverrideInfo.UserName = _azureAdAuthorizationService.GetUserName();
var headers = _authenticationHelper.CreateApiSecurityHeaders(new Dictionary<string, string>());
await _postRequest.Async<OwnerOverrideInfo>(new Uri(_documentIngestorApiConfiguration.QueueReprocessDocumentWithOverrideByIdEndpointUrl),
ownerOverrideInfo,
headers);
}
catch (Exception exception)
{
Log.Error(exception, "Error Queue Document Reprocessing With Override. " +
$"DocumentProcessingInfoId:{ownerOverrideInfo.DocumentProcessingInfoId}");
throw;
}
}
public async Task QueueDocumentReprocessingAllCriticalFailures()
{
try
{
var uri = new Uri(_documentIngestorApiConfiguration.
QueueReprocessDocumentAllCriticalFailuresEndpointUrl.Replace("{userName}", _azureAdAuthorizationService.GetUserName()));
var headers = _authenticationHelper.CreateApiSecurityHeaders(new Dictionary<string, string>());
await _postRequest.Async<string>(uri, "", headers, 0, _documentIngestorApiConfiguration.QueueReprocessDocumentAllCriticalFailuresTimeoutSeconds);
}
catch (Exception exception)
{
Log.Error(exception, "Error Queueing Document Processing Request For All Critical Failures.");
throw;
}
}
public async Task ReprocessAllNotificationDataFailures()
{
try
{
var uri = new Uri(_documentIngestorApiConfiguration.
QueueReprocessCompletionAllNotificationDataFailuresUrl
.Replace("{userName}", _azureAdAuthorizationService.GetUserName()));
var headers = _authenticationHelper.CreateApiSecurityHeaders(new Dictionary<string, string>());
await _postRequest.Async<string>(uri, "", headers, 0, _documentIngestorApiConfiguration.QueueReprocessCompletionAllNotificationDataFailuresTimeoutSeconds);
}
catch (Exception exception)
{
Log.Error(exception, "Error Queueing Document Processing Request For All Data Failures.");
throw;
}
}
}