Files
monorepo/LCU.API.Internal.ArchiverApi/LCU.Api.Internal.ArchiverApi/Services/QueueArchiverService.cs
T
2026-03-17 10:03:23 -05:00

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}");
}
}
}