Files
monorepo/LCU.API.Internal.Dispatcher/LCU.Api.Internal.DispatcherSharedLib/BuilderServices/ActionBuilderService.cs
T
2026-04-22 09:52:00 -05:00

361 lines
32 KiB
C#

using LCU.Api.Internal.DispatcherSharedLib.Configurations;
using LCU.Api.Internal.FTPLib.Models;
using LCU.API.Internal.BlendApiWrapperModels.Models.Request;
using LCU.Library.Internal.ArchiverApiModel.Models;
using LCU.Library.Internal.DataCleanUpModel.Models;
using LCU.Library.Internal.DialerApiModels.Requests;
using LCU.Library.Internal.DialerApiModels.Requests.CreateVoAppsCampaign;
using LCU.Library.Internal.DialerApiModels.Requests.UploadVoAppsCampaignResults;
using LCU.Library.Internal.DispatcherModels.Enums;
using LCU.Library.Internal.DocumentIngestorModels.Models;
using LCU.Library.Internal.DocumentIngestorModels.Requests;
using LCU.Library.Internal.DocumentTypeCleanupModels.Models;
using LCU.Library.Internal.FileOperationsModels.Models;
using LCU.Library.Internal.FileOperationsModels.Models.Requests;
using LCU.Library.Internal.FileUpdaterModels.Models.Requests;
using LCU.Library.Internal.IncentiveApiModels.Requests;
using LCU.Library.Internal.MemberPreferencesApiModels.Requests;
using LCU.Library.Internal.MomBotModels.Models;
using LCU.Library.Internal.NoticeProcessorModel.Models;
using LCU.Library.Internal.NotificationsModels.Models;
using LCU.Library.Internal.RealTimeAlertsModels.Models.Requests;
using LCU.Library.Internal.RemoteDepositCaptureModel.Models;
using LCU.Library.Internal.RepoApiModels.Models.Requests;
using LCU.Library.Internal.TemenosNotificationApiModels.Requests;
using System;
namespace LCU.Api.Internal.DispatcherSharedLib.BuilderServices;
public class ActionBuilderService : IActionBuilderService
{
private readonly FileOperationsApiConfiguration _fileOperationsApiConfiguration;
private readonly FtpApiConfiguration _ftpApiConfiguration;
private readonly NotificationApiConfiguration _notificationApiConfiguration;
private readonly ArchiverApiConfiguration _archiverApiConfiguration;
private readonly DocumentIngestorApiConfiguration _documentIngestorApiConfiguration;
private readonly DocumentTypeCleanupApiConfiguration _documentTypeCleanupApiConfiguration;
private readonly HistoricalDocumentIngestorApiConfiguration _historicalDocumentIngestorApiConfiguration;
private readonly RemoteDepositCaptureApiConfiguration _remoteDepositCaptureApiConfiguration;
private readonly DataCleanUpApiConfiguration _dataCleanUpApiConfiguration;
private readonly NoticeProcessorApiConfiguration _noticeProcessorApiConfiguration;
private readonly MomBotApiConfiguration _momBotApiConfiguration;
private readonly BlendApiConfiguration _blendApiConfiguration;
private readonly DialerApiConfiguration _dialerApiConfiguration;
private readonly IncentiveManagerConfiguration _incentiveManagerApiConfiguration;
private readonly FileUpdaterApiConfiguration _fileUpdaterApiConfiguration;
private readonly TemenosNotificationApiConfiguration _temenosNotificationApiConfiguration;
private readonly RealTimeAlertsApiConfiguration _realTimeAlertsApiConfiguration;
private readonly RepoApiConfiguration _repoApiConfiguration;
private readonly MemberPreferencesApiConfiguration _memberPreferencesApiConfiguration;
public ActionBuilderService(FileOperationsApiConfiguration fileOperationsApiConfiguration,
FtpApiConfiguration ftpApiConfiguration,
NotificationApiConfiguration notificationApiConfiguration,
ArchiverApiConfiguration archiverApiConfiguration,
DocumentIngestorApiConfiguration documentIngestorApiConfiguration,
DocumentTypeCleanupApiConfiguration documentTypeCleanupApiConfiguration,
HistoricalDocumentIngestorApiConfiguration historicalDocumentIngestorApiConfiguration,
RemoteDepositCaptureApiConfiguration remoteDepositCaptureApiConfiguration,
DataCleanUpApiConfiguration dataCleanUpApiConfiguration,
NoticeProcessorApiConfiguration noticeProcessorApiConfiguration,
MomBotApiConfiguration momBotApiConfiguration,
BlendApiConfiguration blendApiConfiguration,
DialerApiConfiguration dialerApiConfiguration,
IncentiveManagerConfiguration incentiveManagerConfiguration,
FileUpdaterApiConfiguration fileUpdaterApiConfiguration,
TemenosNotificationApiConfiguration temenosNotificationApiConfiguration,
RealTimeAlertsApiConfiguration realTimeAlertsApiConfiguration,
RepoApiConfiguration repoApiConfiguration,
MemberPreferencesApiConfiguration memberPreferencesApiConfiguration)
{
_fileOperationsApiConfiguration = fileOperationsApiConfiguration;
_ftpApiConfiguration = ftpApiConfiguration;
_notificationApiConfiguration = notificationApiConfiguration;
_archiverApiConfiguration = archiverApiConfiguration;
_documentIngestorApiConfiguration = documentIngestorApiConfiguration;
_documentTypeCleanupApiConfiguration = documentTypeCleanupApiConfiguration;
_historicalDocumentIngestorApiConfiguration = historicalDocumentIngestorApiConfiguration;
_remoteDepositCaptureApiConfiguration = remoteDepositCaptureApiConfiguration;
_dataCleanUpApiConfiguration = dataCleanUpApiConfiguration;
_noticeProcessorApiConfiguration = noticeProcessorApiConfiguration;
_momBotApiConfiguration = momBotApiConfiguration;
_blendApiConfiguration = blendApiConfiguration;
_dialerApiConfiguration = dialerApiConfiguration;
_incentiveManagerApiConfiguration = incentiveManagerConfiguration;
_fileUpdaterApiConfiguration = fileUpdaterApiConfiguration;
_temenosNotificationApiConfiguration = temenosNotificationApiConfiguration;
_realTimeAlertsApiConfiguration = realTimeAlertsApiConfiguration;
_repoApiConfiguration = repoApiConfiguration;
_memberPreferencesApiConfiguration = memberPreferencesApiConfiguration;
}
public IActionService BuildAction(ActionType actionType)
{
var actionTypeStringified = Enum.GetName(typeof(ActionType), actionType);
return BuildAction(actionTypeStringified);
}
public IActionService BuildAction(string actionType)
{
return actionType switch
{
#region FileOperationsApi
nameof(ActionType.MoveFile) => new ActionService<MoveFileRequest>(_fileOperationsApiConfiguration.MoveFileEndpointUrl,
HttpMethodType.Post,
ActionType.MoveFile),
nameof(ActionType.ModifyFile) => new ActionService<ModifyFileRequest>(_fileOperationsApiConfiguration.ModifyFileEndpointUrl,
HttpMethodType.Post,
ActionType.ModifyFile),
nameof(ActionType.CopyFile) => new ActionService<CopyFileRequest>(_fileOperationsApiConfiguration.CopyFileEndpointUrl,
HttpMethodType.Post,
ActionType.CopyFile),
nameof(ActionType.DeleteFile) => new ActionService<DeleteFileRequest>(_fileOperationsApiConfiguration.DeleteFileEndpointUrl,
HttpMethodType.Post,
ActionType.DeleteFile),
nameof(ActionType.RenameFile) => new ActionService<RenameFileRequest>(_fileOperationsApiConfiguration.RenameFileEndpointUrl,
HttpMethodType.Post,
ActionType.RenameFile),
nameof(ActionType.ZipDirectory) => new ActionService<ZipDirectoryRequest>(_fileOperationsApiConfiguration.ZipDirectoryEndpointUrl,
HttpMethodType.Post,
ActionType.ZipDirectory),
nameof(ActionType.CreateDirectory) => new ActionService<CreateDirectoryRequest>(_fileOperationsApiConfiguration.CreateDirectoryEndpointUrl,
HttpMethodType.Post,
ActionType.CreateDirectory),
nameof(ActionType.RenameDirectory) => new ActionService<RenameDirectoryRequest>(_fileOperationsApiConfiguration.RenameDirectoryEndpointUrl,
HttpMethodType.Post,
ActionType.RenameDirectory),
nameof(ActionType.UnzipFile) => new ActionService<UnzipFileRequest>(_fileOperationsApiConfiguration.UnzipFileEndpointUrl,
HttpMethodType.Post,
ActionType.UnzipFile),
nameof(ActionType.EncryptFileData) => new ActionService<EncryptFileDataRequest>(_fileOperationsApiConfiguration.EncryptFileDataEndpointUrl,
HttpMethodType.Post,
ActionType.EncryptFileData),
nameof(ActionType.DecryptFileData) => new ActionService<DecryptFileDataRequest>(_fileOperationsApiConfiguration.DecryptFileDataEndpointUrl,
HttpMethodType.Post,
ActionType.DecryptFileData),
nameof(ActionType.UnzipPasswordProtectedFile) => new ActionService<UnzipPasswordProtectedFileRequest>(_fileOperationsApiConfiguration.UnzipPasswordProtectedFileEndpointUrl,
HttpMethodType.Post,
ActionType.UnzipPasswordProtectedFile),
nameof(ActionType.DeleteDirectory) => new ActionService<DeleteDirectoryRequest>(_fileOperationsApiConfiguration.DeleteDirectoryEndpointUrl,
HttpMethodType.Post,
ActionType.DeleteDirectory),
nameof(ActionType.ExtractIndexFileData) => new ActionService<ExtractIndexFileDataRequest>(_fileOperationsApiConfiguration.ExtractIndexFileDataEndpointUrl,
HttpMethodType.Post,
ActionType.ExtractIndexFileData),
nameof(ActionType.ValidateFileRequest) => new ActionService<ValidateFileRequest>(_fileOperationsApiConfiguration.FileValidationEndpointUrl,
HttpMethodType.Post,
ActionType.ValidateFileRequest),
nameof(ActionType.ValidateFileSizeInRange) => new ActionService<ValidateFileSizeInRangeRequest>(_fileOperationsApiConfiguration.ValidateFileSizeInRangeUrl,
HttpMethodType.Post,
ActionType.ValidateFileSizeInRange),
nameof(ActionType.DeleteEmptyDirectoryRequest) => new ActionService<DeleteEmptyDirectoryRequest>(_fileOperationsApiConfiguration.DeleteEmptyDirectoryEndpointUrl,
HttpMethodType.Post,
ActionType.DeleteEmptyDirectoryRequest),
#endregion FileOperationsApi
#region FtpApi
nameof(ActionType.SftpDownloadFile) => new ActionService<SftpDownloadFileRequest>(_ftpApiConfiguration.QueueSftpDownloadFileEndpointUrl,
HttpMethodType.Post,
ActionType.SftpDownloadFile),
nameof(ActionType.SftpUploadFile) => new ActionService<SftpUploadFileRequest>(_ftpApiConfiguration.QueueSftpUploadFileEndpointUrl,
HttpMethodType.Post,
ActionType.SftpUploadFile),
#endregion FtpApi
#region NotificationsApi
nameof(ActionType.Email) => new ActionService<EmailRequest>(_notificationApiConfiguration.EmailEndpointUrl,
HttpMethodType.Post,
ActionType.Email),
#endregion NotificationsApi
#region ArchiverApi
nameof(ActionType.CoreArchiveRequest) => new ActionService<ArchiveRequest>(_archiverApiConfiguration.QueueArchiverEndpointUrl,
HttpMethodType.Post,
ActionType.CoreArchiveRequest),
#endregion ArchiverApi
#region DocumentIngestorApi
nameof(ActionType.DocumentIngestor) => new ActionService<IngestorRequest>(_documentIngestorApiConfiguration.QueueDocumentIngestorEndpointUrl,
HttpMethodType.Post,
ActionType.DocumentIngestor),
nameof(ActionType.DocumentBatchIngestion) => new ActionService<BatchIngestionRequest>(_documentIngestorApiConfiguration.QueueDocumentBatchIngestionEndpointUrl,
HttpMethodType.Post,
ActionType.DocumentBatchIngestion),
nameof(ActionType.IngestorPdfPartitioner) => new ActionService<PdfPartitionerRequest>(_documentIngestorApiConfiguration.QueueIngestorPdfPartitionerEndpointUrl,
HttpMethodType.Post,
ActionType.IngestorPdfPartitioner),
nameof(ActionType.MemberDocumentNotification) => new ActionService<MemberDocumentNotificationRequest>(_documentIngestorApiConfiguration.QueueMemberDocumentNotifierEndpointUrl,
HttpMethodType.Post,
ActionType.MemberDocumentNotification),
nameof(ActionType.IngestionFolderCleanUp) => new ActionService<IngestionFolderCleanUpRequest>(_documentIngestorApiConfiguration.QueueIngestionFolderCleanUpEndpointUrl,
HttpMethodType.Post,
ActionType.IngestionFolderCleanUp),
nameof(ActionType.DocumentIngestorProcessStatusEmail) => new ActionService<ProcessStatusTypeEmailRequest>(_documentIngestorApiConfiguration.QueueProcessStatusEmailRequestEndpointUrl,
HttpMethodType.Post,
ActionType.DocumentIngestorProcessStatusEmail),
#endregion DocumentIngestorApi
#region DocumentTypeCleanupApi
nameof(ActionType.DocumentRetentionCleanupRequest) => new ActionService<DocumentRetentionLookupRequest>(_documentTypeCleanupApiConfiguration.QueueDocumentRetentionCleanupEndpointUrl,
HttpMethodType.Post,
ActionType.DocumentRetentionCleanupRequest),
#endregion DocumentTypeCleanupApi
#region HistoricalDocumentIngestorApi
nameof(ActionType.HistoricalDocumentIngestor) => new ActionService<IngestorRequest>(_historicalDocumentIngestorApiConfiguration.QueueDocumentIngestorEndpointUrl,
HttpMethodType.Post,
ActionType.HistoricalDocumentIngestor),
nameof(ActionType.HistoricalDocumentBatchIngestion) => new ActionService<BatchIngestionRequest>(_historicalDocumentIngestorApiConfiguration.QueueDocumentBatchIngestionEndpointUrl,
HttpMethodType.Post,
ActionType.HistoricalDocumentBatchIngestion),
nameof(ActionType.HistoricalIngestorPdfPartitioner) => new ActionService<PdfPartitionerRequest>(_historicalDocumentIngestorApiConfiguration.QueueIngestorPdfPartitionerEndpointUrl,
HttpMethodType.Post,
ActionType.HistoricalIngestorPdfPartitioner),
#endregion HistoricalDocumentIngestorApi
#region RemoteDepositCaptureApi
nameof(ActionType.RemoteDepositCaptureXmlFile) => new ActionService<RemoteDepositCaptureXmlRequest>(_remoteDepositCaptureApiConfiguration.QueueRemoteDepositCaptureXmlEndpointUrl,
HttpMethodType.Post,
ActionType.RemoteDepositCaptureXmlFile),
#endregion RemoteDepositCaptureApi
#region DataCleanUpApi
nameof(ActionType.DataCleanUp) => new ActionService<DataCleanUpRequest>(_dataCleanUpApiConfiguration.QueueDataCleanUpEndpointUrl,
HttpMethodType.Post,
ActionType.DataCleanUp),
nameof(ActionType.AtmPersonCheckHolds) => new ActionService<UpdatePersonForCheckHoldRequest>(_dataCleanUpApiConfiguration.QueueUpdatePersonForCheckHoldsEndpointUrl,
HttpMethodType.Post,
ActionType.AtmPersonCheckHolds),
nameof(ActionType.DataCleanupNcoaUpdateRequest) => new ActionService<NcoaUpdateRequest>(_dataCleanUpApiConfiguration.QueueNcoaUpdateRequestEndpointUrl,
HttpMethodType.Post,
ActionType.DataCleanupNcoaUpdateRequest),
nameof(ActionType.DataCleanUpFannieMaeRequest) => new ActionService<FannieMaeMortgageRequest>(_dataCleanUpApiConfiguration.QueueUpdateFannieMaeMortgageRequestEndpointUrl,
HttpMethodType.Post,
ActionType.DataCleanUpFannieMaeRequest),
nameof(ActionType.DataCleanUpIndirectFundingRequest) => new ActionService<IndirectFundingRequest>(_dataCleanUpApiConfiguration.QueueIndirectFundingEndpointUrl,
HttpMethodType.Post,
ActionType.DataCleanUpIndirectFundingRequest),
#endregion DataCleanUpApi
#region NoticeProcessorApi
nameof(ActionType.NoticeProcessorExtractRequest) => new ActionService<ExtractRequest>(_noticeProcessorApiConfiguration.QueueExtractEndpointUrl,
HttpMethodType.Post,
ActionType.NoticeProcessorExtractRequest),
nameof(ActionType.NoticeProcessorSummaryEmailRequest) => new ActionService<ProcessingEmailRequest>(_noticeProcessorApiConfiguration.QueueProcessingEmailSummaryEndpointUrl,
HttpMethodType.Post,
ActionType.NoticeProcessorSummaryEmailRequest),
#endregion DataCleanUpApi
#region MomBotApi
nameof(ActionType.MomBotRequest) => new ActionService<MomBotRequest>(_momBotApiConfiguration.QueueMomBotEndpointUrl, HttpMethodType.Post, ActionType.MomBotRequest),
#endregion MomBotApi
#region BlendApi
nameof(ActionType.BlendDataRequest) => new ActionService<SyncDataFromBlendRequest>(_blendApiConfiguration.QueueDataImportEndpointUrl,
HttpMethodType.Post,
ActionType.BlendDataRequest),
#endregion BlendApi
#region DialerApi
nameof(ActionType.DialerUploadRequest) => new ActionService<DialerUploadRequest>(_dialerApiConfiguration.QueueDialerUploadEndpointUrl,
HttpMethodType.Post,
ActionType.DialerUploadRequest),
nameof(ActionType.UploadDoNotCallRequest) => new ActionService<UploadDoNotCallRequest>(_dialerApiConfiguration.QueueUploadDoNotCallEndpointUrl,
HttpMethodType.Post,
ActionType.UploadDoNotCallRequest),
nameof(ActionType.CreateVoAppsCampaignsRequest) => new ActionService<CreateVoAppsCampaignRequest>(_dialerApiConfiguration.QueueCreateVoAppsCampaignEndpointUrl,
HttpMethodType.Post,
ActionType.CreateVoAppsCampaignsRequest),
nameof(ActionType.UploadVoAppsCampaignResultsRequest) => new ActionService<UploadVoAppsCampaignResultsInitiateRequest>(_dialerApiConfiguration.QueueUploadVoAppsCampaignResultsEndpointUrl,
HttpMethodType.Post,
ActionType.UploadVoAppsCampaignResultsRequest),
nameof(ActionType.UploadVoAppsCampaignResultsErrorRequest) => new ActionService<UploadVoAppsCampaignResultsErrorRequest>(_dialerApiConfiguration.QueueUploadVoAppsCampaignErrorRequestEndpointUrl,
HttpMethodType.Post,
ActionType.UploadVoAppsCampaignResultsErrorRequest),
#endregion DialerApi
#region IncentiveManagerApi
nameof(ActionType.ImportCreditCardSalesRequest) => new ActionService<ImportCreditCardSalesRequest>(_incentiveManagerApiConfiguration.QueueCreditCardImportEndpointUrl,
HttpMethodType.Post,
ActionType.ImportCreditCardSalesRequest),
nameof(ActionType.ImportIndirectVehicleSalesRequest) => new ActionService<ImportIndirectVehicleSalesRequest>(_incentiveManagerApiConfiguration.QueueVehicleImportEndpointUrl,
HttpMethodType.Post,
ActionType.ImportIndirectVehicleSalesRequest),
nameof(ActionType.IncentiveProcessRequest) => new ActionService<IncentiveProcessRequest>(_incentiveManagerApiConfiguration.QueueIncentiveProcessEndpointUrl,
HttpMethodType.Post,
ActionType.IncentiveProcessRequest),
nameof(ActionType.NightlyIncentiveProcessRequest) => new ActionService<NightlyIncentiveProcessRequest>(_incentiveManagerApiConfiguration.QueueNightlyIncentiveProcessEndpointUrl,
HttpMethodType.Post,
ActionType.NightlyIncentiveProcessRequest),
nameof(ActionType.ActionCreditCardRequest) => new ActionService<ActionCreditCardRequest>(_incentiveManagerApiConfiguration.QueueActionCreditCardEndpointUrl,
HttpMethodType.Post,
ActionType.ActionCreditCardRequest),
nameof(ActionType.ActionVehicleRequest) => new ActionService<ActionVehicleRequest>(_incentiveManagerApiConfiguration.QueueActionVehicleEndpointUrl,
HttpMethodType.Post,
ActionType.ActionVehicleRequest),
nameof(ActionType.AlliedGapMbpRequest) => new ActionService<AlliedGapMbpRequest>(_incentiveManagerApiConfiguration.QueueAlliedGapMbpEndpointUrl,
HttpMethodType.Post,
ActionType.AlliedGapMbpRequest),
nameof(ActionType.DayforceProcessRequest) => new ActionService<DayforceProcessRequest>(_incentiveManagerApiConfiguration.QueueDayforceProcessEndpointUrl,
HttpMethodType.Post,
ActionType.DayforceProcessRequest),
nameof(ActionType.GoalDispersalRequest) => new ActionService<GoalDispersalRequest>(_incentiveManagerApiConfiguration.QueueGoalDispersalProcessEndpointUrl,
HttpMethodType.Post,
ActionType.GoalDispersalRequest),
nameof(ActionType.PayoutIncentiveRequest) => new ActionService<PayoutIncentiveRequest>(_incentiveManagerApiConfiguration.QueuePayoutProcessEndpointUrl,
HttpMethodType.Post,
ActionType.PayoutIncentiveRequest),
nameof(ActionType.ReportingRequest) => new ActionService<ReportingRequest>(_incentiveManagerApiConfiguration.QueueReportingProcessEndpointUrl,
HttpMethodType.Post,
ActionType.ReportingRequest),
#endregion IncentiveManagerApi
#region FileUpdaterApi
nameof(ActionType.IndexFieldMapperRequest) => new ActionService<IndexFieldMapperRequest>(_fileUpdaterApiConfiguration.QueueIndexFieldMapperUrl,
HttpMethodType.Post,
ActionType.IndexFieldMapperRequest),
#endregion
#region TemenosNotificationApi
nameof(ActionType.DealerAchNotificationRequest) => new ActionService<DealerAchNotificationRequest>(_temenosNotificationApiConfiguration.QueueDealerAchNotificationUrl,
HttpMethodType.Post,
ActionType.DealerAchNotificationRequest),
#endregion
#region RealTimeAlertsApi
nameof(ActionType.InitiateRealTimeAlertsRequest) => new ActionService<InitiateTransactionAlertsRequest>(_realTimeAlertsApiConfiguration.QueueInitiateRealTimeAlertsEndpointUrl,
HttpMethodType.Post,
ActionType.InitiateRealTimeAlertsRequest),
nameof(ActionType.InitiateRealTimeAlertsErroredProcessingRequest) => new ActionService<InitiateErroredTransactionCleanUpRequest>(_realTimeAlertsApiConfiguration.QueueErroredTransactionCleanUpEndpointUrl,
HttpMethodType.Post,
ActionType.InitiateRealTimeAlertsErroredProcessingRequest),
#endregion
#region RepoApi
nameof(ActionType.RepoBatchProcessRequest) => new ActionService<RepoBatchRequest>(_repoApiConfiguration.AccountBatchEndpointUrl,
HttpMethodType.Post,
ActionType.RepoBatchProcessRequest),
#endregion RepoApi
#region MemberPreferences
nameof(ActionType.MemberPreferencesDNAAuditRequest) => new ActionService<DnaAuditProcessRequest>(_memberPreferencesApiConfiguration.QueueDNAAuditRequestEndpointUrl,
HttpMethodType.Post,
ActionType.MemberPreferencesDNAAuditRequest),
#endregion MemberPreferences
_ => throw new NotImplementedException(),
};
}
}