Files
2026-04-27 15:26:58 +00:00

46 lines
2.2 KiB
C#

using LCU.Library.Internal.IncentiveApiModels.Requests;
using LCU.Library.Internal.IncentiveApiModels.Results;
using LCU.Library.Internal.LCUServiceFactory.Services;
using LCU.API.Internal.Operations.IncentiveApi.Services;
using LCU.API.Internal.Operations.IncentiveApi.Services.NightlyIncentiveProcesses;
using LCU.Library.Internal.ApiResponse.Services;
namespace LCU.API.Internal.Operations.IncentiveApi.Services.NightlyDecisionServices;
public class NightlyActivityDecisionService : INightlyActivityDecisionService
{
private ProcessResult _processResult;
private INightlyIncentiveProcessesService _nightlyIncentiveProcessesService;
private readonly ILcuServiceFactory<INightlyIncentiveProcessesService> _lcuServiceFactory;
public NightlyActivityDecisionService(ILcuServiceFactory<INightlyIncentiveProcessesService> lcuServiceFactory)
{
_nightlyIncentiveProcessesService = null;
_lcuServiceFactory = lcuServiceFactory;
_processResult = new ProcessResult();
}
public async Task HandleProcessRequest(NightlyIncentiveProcessRequest request)
{
try
{
ArgumentNullException.ThrowIfNull(request);
_nightlyIncentiveProcessesService = _lcuServiceFactory.GetService(request.NightlyIncentiveProcessType);
ArgumentNullException.ThrowIfNull(_nightlyIncentiveProcessesService);
var message = $"Queued Request for {request.NightlyIncentiveProcessType}";
Log.Information(message);
_processResult = await _nightlyIncentiveProcessesService.RunProductDecisionProcess(request);
await SafeQueueReturnResponse.TryQueueResponse(request, _processResult.Success, _processResult.MessageStack, nameof(NightlyActivityDecisionService));
}
catch (Exception exception)
{
var message = $"There was an issue with handling the Daily Decision Process Exception Message: {exception.Message}.";
_processResult.MessageStack.Add(message);
_processResult.Success = false;
await SafeQueueReturnResponse.TryQueueResponse(request, _processResult.Success, _processResult.MessageStack, nameof(NightlyActivityDecisionService));
}
}
}