44 lines
2.0 KiB
C#
44 lines
2.0 KiB
C#
using System;
|
|
using Serilog;
|
|
using MassTransit;
|
|
using TimeZoneConverter;
|
|
using LCU.Library.Internal.ArchiverApiModel.Models;
|
|
using LCU.Api.Internal.ArchiverApi.Configuration;
|
|
using LCU.Library.Internal.LcuMassTransitModels;
|
|
using LCU.Library.Internal.Exceptions;
|
|
namespace LCU.Api.Internal.ArchiverApi.Services;
|
|
|
|
public class QueueArchiverService : IQueueArchiverService
|
|
{
|
|
private readonly ISendEndpoint _sendEndpoint;
|
|
private readonly ReceiveEndpointConfiguration _receiveEndpointsConfiguration;
|
|
private readonly ArchiverApiConfig _archiverApiConfig;
|
|
|
|
public QueueArchiverService(IBusControl busControl,
|
|
ReceiveEndpointConfigurations receiveEndpointsConfiguration,
|
|
ArchiverApiConfig archiverApiConfig)
|
|
{
|
|
_receiveEndpointsConfiguration = receiveEndpointsConfiguration.ArchiverReceiveEndpoint;
|
|
_archiverApiConfig = archiverApiConfig;
|
|
_sendEndpoint = busControl.GetSendEndpoint(_receiveEndpointsConfiguration.ReceiveEndpointUri).Result;
|
|
}
|
|
|
|
public void QueueArchiver(ArchiveRequest archiveRequest)
|
|
{
|
|
try
|
|
{
|
|
var dateToConvert = archiveRequest.EffectiveDate == null ?
|
|
DateTime.Now.AddDays(archiveRequest.DaysFromDate) :
|
|
Convert.ToDateTime(archiveRequest.EffectiveDate).AddDays(archiveRequest.DaysFromDate);
|
|
|
|
var assumedTimezone = TZConvert.GetTimeZoneInfo(_archiverApiConfig.TimeZone);
|
|
archiveRequest.EffectiveDate = TimeZoneInfo.ConvertTime(dateToConvert, assumedTimezone).Date;
|
|
_sendEndpoint.Send(archiveRequest);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Log.Error(ex, $"Failed to queue archive request with effective date. Effective Date: {archiveRequest.EffectiveDate}");
|
|
throw new ServiceException($"Failed to queue archive request with effective date. Effective Date: {archiveRequest.EffectiveDate}");
|
|
}
|
|
}
|
|
} |