45 lines
2.0 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|