Files
monorepo/LCU.API.Operations.IncentiveAPI/LCU.API.Internal.Operations.IncentiveApi/Services/NightlyDecisionServices/NightlyActivityDecisionService.cs
T
2026-04-23 16:27:51 +00:00

45 lines
2.0 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.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 QueueReturnResponse.QueueResponse(request, _processResult.Success, _processResult.MessageStack);
}
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 QueueReturnResponse.QueueResponse(request, _processResult.Success, _processResult.MessageStack);
}
}
}