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.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; 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) { _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; } 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(_fileOperationsApiConfiguration.MoveFileEndpointUrl, HttpMethodType.Post, ActionType.MoveFile), nameof(ActionType.ModifyFile) => new ActionService(_fileOperationsApiConfiguration.ModifyFileEndpointUrl, HttpMethodType.Post, ActionType.ModifyFile), nameof(ActionType.CopyFile) => new ActionService(_fileOperationsApiConfiguration.CopyFileEndpointUrl, HttpMethodType.Post, ActionType.CopyFile), nameof(ActionType.DeleteFile) => new ActionService(_fileOperationsApiConfiguration.DeleteFileEndpointUrl, HttpMethodType.Post, ActionType.DeleteFile), nameof(ActionType.RenameFile) => new ActionService(_fileOperationsApiConfiguration.RenameFileEndpointUrl, HttpMethodType.Post, ActionType.RenameFile), nameof(ActionType.ZipDirectory) => new ActionService(_fileOperationsApiConfiguration.ZipDirectoryEndpointUrl, HttpMethodType.Post, ActionType.ZipDirectory), nameof(ActionType.CreateDirectory) => new ActionService(_fileOperationsApiConfiguration.CreateDirectoryEndpointUrl, HttpMethodType.Post, ActionType.CreateDirectory), nameof(ActionType.RenameDirectory) => new ActionService(_fileOperationsApiConfiguration.RenameDirectoryEndpointUrl, HttpMethodType.Post, ActionType.RenameDirectory), nameof(ActionType.UnzipFile) => new ActionService(_fileOperationsApiConfiguration.UnzipFileEndpointUrl, HttpMethodType.Post, ActionType.UnzipFile), nameof(ActionType.EncryptFileData) => new ActionService(_fileOperationsApiConfiguration.EncryptFileDataEndpointUrl, HttpMethodType.Post, ActionType.EncryptFileData), nameof(ActionType.DecryptFileData) => new ActionService(_fileOperationsApiConfiguration.DecryptFileDataEndpointUrl, HttpMethodType.Post, ActionType.DecryptFileData), nameof(ActionType.UnzipPasswordProtectedFile) => new ActionService(_fileOperationsApiConfiguration.UnzipPasswordProtectedFileEndpointUrl, HttpMethodType.Post, ActionType.UnzipPasswordProtectedFile), nameof(ActionType.DeleteDirectory) => new ActionService(_fileOperationsApiConfiguration.DeleteDirectoryEndpointUrl, HttpMethodType.Post, ActionType.DeleteDirectory), nameof(ActionType.ExtractIndexFileData) => new ActionService(_fileOperationsApiConfiguration.ExtractIndexFileDataEndpointUrl, HttpMethodType.Post, ActionType.ExtractIndexFileData), nameof(ActionType.ValidateFileRequest) => new ActionService(_fileOperationsApiConfiguration.FileValidationEndpointUrl, HttpMethodType.Post, ActionType.ValidateFileRequest), nameof(ActionType.ValidateFileSizeInRange) => new ActionService(_fileOperationsApiConfiguration.ValidateFileSizeInRangeUrl, HttpMethodType.Post, ActionType.ValidateFileSizeInRange), nameof(ActionType.DeleteEmptyDirectoryRequest) => new ActionService(_fileOperationsApiConfiguration.DeleteEmptyDirectoryEndpointUrl, HttpMethodType.Post, ActionType.DeleteEmptyDirectoryRequest), #endregion FileOperationsApi #region FtpApi nameof(ActionType.SftpDownloadFile) => new ActionService(_ftpApiConfiguration.QueueSftpDownloadFileEndpointUrl, HttpMethodType.Post, ActionType.SftpDownloadFile), nameof(ActionType.SftpUploadFile) => new ActionService(_ftpApiConfiguration.QueueSftpUploadFileEndpointUrl, HttpMethodType.Post, ActionType.SftpUploadFile), #endregion FtpApi #region NotificationsApi nameof(ActionType.Email) => new ActionService(_notificationApiConfiguration.EmailEndpointUrl, HttpMethodType.Post, ActionType.Email), #endregion NotificationsApi #region ArchiverApi nameof(ActionType.CoreArchiveRequest) => new ActionService(_archiverApiConfiguration.QueueArchiverEndpointUrl, HttpMethodType.Post, ActionType.CoreArchiveRequest), #endregion ArchiverApi #region DocumentIngestorApi nameof(ActionType.DocumentIngestor) => new ActionService(_documentIngestorApiConfiguration.QueueDocumentIngestorEndpointUrl, HttpMethodType.Post, ActionType.DocumentIngestor), nameof(ActionType.DocumentBatchIngestion) => new ActionService(_documentIngestorApiConfiguration.QueueDocumentBatchIngestionEndpointUrl, HttpMethodType.Post, ActionType.DocumentBatchIngestion), nameof(ActionType.IngestorPdfPartitioner) => new ActionService(_documentIngestorApiConfiguration.QueueIngestorPdfPartitionerEndpointUrl, HttpMethodType.Post, ActionType.IngestorPdfPartitioner), nameof(ActionType.MemberDocumentNotification) => new ActionService(_documentIngestorApiConfiguration.QueueMemberDocumentNotifierEndpointUrl, HttpMethodType.Post, ActionType.MemberDocumentNotification), nameof(ActionType.IngestionFolderCleanUp) => new ActionService(_documentIngestorApiConfiguration.QueueIngestionFolderCleanUpEndpointUrl, HttpMethodType.Post, ActionType.IngestionFolderCleanUp), nameof(ActionType.DocumentIngestorProcessStatusEmail) => new ActionService(_documentIngestorApiConfiguration.QueueProcessStatusEmailRequestEndpointUrl, HttpMethodType.Post, ActionType.DocumentIngestorProcessStatusEmail), #endregion DocumentIngestorApi #region DocumentTypeCleanupApi nameof(ActionType.DocumentRetentionCleanupRequest) => new ActionService(_documentTypeCleanupApiConfiguration.QueueDocumentRetentionCleanupEndpointUrl, HttpMethodType.Post, ActionType.DocumentRetentionCleanupRequest), #endregion DocumentTypeCleanupApi #region HistoricalDocumentIngestorApi nameof(ActionType.HistoricalDocumentIngestor) => new ActionService(_historicalDocumentIngestorApiConfiguration.QueueDocumentIngestorEndpointUrl, HttpMethodType.Post, ActionType.HistoricalDocumentIngestor), nameof(ActionType.HistoricalDocumentBatchIngestion) => new ActionService(_historicalDocumentIngestorApiConfiguration.QueueDocumentBatchIngestionEndpointUrl, HttpMethodType.Post, ActionType.HistoricalDocumentBatchIngestion), nameof(ActionType.HistoricalIngestorPdfPartitioner) => new ActionService(_historicalDocumentIngestorApiConfiguration.QueueIngestorPdfPartitionerEndpointUrl, HttpMethodType.Post, ActionType.HistoricalIngestorPdfPartitioner), #endregion HistoricalDocumentIngestorApi #region RemoteDepositCaptureApi nameof(ActionType.RemoteDepositCaptureXmlFile) => new ActionService(_remoteDepositCaptureApiConfiguration.QueueRemoteDepositCaptureXmlEndpointUrl, HttpMethodType.Post, ActionType.RemoteDepositCaptureXmlFile), #endregion RemoteDepositCaptureApi #region DataCleanUpApi nameof(ActionType.DataCleanUp) => new ActionService(_dataCleanUpApiConfiguration.QueueDataCleanUpEndpointUrl, HttpMethodType.Post, ActionType.DataCleanUp), nameof(ActionType.AtmPersonCheckHolds) => new ActionService(_dataCleanUpApiConfiguration.QueueUpdatePersonForCheckHoldsEndpointUrl, HttpMethodType.Post, ActionType.AtmPersonCheckHolds), nameof(ActionType.DataCleanupNcoaUpdateRequest) => new ActionService(_dataCleanUpApiConfiguration.QueueNcoaUpdateRequestEndpointUrl, HttpMethodType.Post, ActionType.DataCleanupNcoaUpdateRequest), nameof(ActionType.DataCleanUpFannieMaeRequest) => new ActionService(_dataCleanUpApiConfiguration.QueueUpdateFannieMaeMortgageRequestEndpointUrl, HttpMethodType.Post, ActionType.DataCleanUpFannieMaeRequest), nameof(ActionType.DataCleanUpIndirectFundingRequest) => new ActionService(_dataCleanUpApiConfiguration.QueueIndirectFundingEndpointUrl, HttpMethodType.Post, ActionType.DataCleanUpIndirectFundingRequest), #endregion DataCleanUpApi #region NoticeProcessorApi nameof(ActionType.NoticeProcessorExtractRequest) => new ActionService(_noticeProcessorApiConfiguration.QueueExtractEndpointUrl, HttpMethodType.Post, ActionType.NoticeProcessorExtractRequest), nameof(ActionType.NoticeProcessorSummaryEmailRequest) => new ActionService(_noticeProcessorApiConfiguration.QueueProcessingEmailSummaryEndpointUrl, HttpMethodType.Post, ActionType.NoticeProcessorSummaryEmailRequest), #endregion DataCleanUpApi #region MomBotApi nameof(ActionType.MomBotRequest) => new ActionService(_momBotApiConfiguration.QueueMomBotEndpointUrl, HttpMethodType.Post, ActionType.MomBotRequest), #endregion MomBotApi #region BlendApi nameof(ActionType.BlendDataRequest) => new ActionService(_blendApiConfiguration.QueueDataImportEndpointUrl, HttpMethodType.Post, ActionType.BlendDataRequest), #endregion BlendApi #region DialerApi nameof(ActionType.DialerUploadRequest) => new ActionService(_dialerApiConfiguration.QueueDialerUploadEndpointUrl, HttpMethodType.Post, ActionType.DialerUploadRequest), nameof(ActionType.UploadDoNotCallRequest) => new ActionService(_dialerApiConfiguration.QueueUploadDoNotCallEndpointUrl, HttpMethodType.Post, ActionType.UploadDoNotCallRequest), nameof(ActionType.CreateVoAppsCampaignsRequest) => new ActionService(_dialerApiConfiguration.QueueCreateVoAppsCampaignEndpointUrl, HttpMethodType.Post, ActionType.CreateVoAppsCampaignsRequest), nameof(ActionType.UploadVoAppsCampaignResultsRequest) => new ActionService(_dialerApiConfiguration.QueueUploadVoAppsCampaignResultsEndpointUrl, HttpMethodType.Post, ActionType.UploadVoAppsCampaignResultsRequest), nameof(ActionType.UploadVoAppsCampaignResultsErrorRequest) => new ActionService(_dialerApiConfiguration.QueueUploadVoAppsCampaignErrorRequestEndpointUrl, HttpMethodType.Post, ActionType.UploadVoAppsCampaignResultsErrorRequest), #endregion DialerApi #region IncentiveManagerApi nameof(ActionType.ImportCreditCardSalesRequest) => new ActionService(_incentiveManagerApiConfiguration.QueueCreditCardImportEndpointUrl, HttpMethodType.Post, ActionType.ImportCreditCardSalesRequest), nameof(ActionType.ImportIndirectVehicleSalesRequest) => new ActionService(_incentiveManagerApiConfiguration.QueueVehicleImportEndpointUrl, HttpMethodType.Post, ActionType.ImportIndirectVehicleSalesRequest), nameof(ActionType.IncentiveProcessRequest) => new ActionService(_incentiveManagerApiConfiguration.QueueIncentiveProcessEndpointUrl, HttpMethodType.Post, ActionType.IncentiveProcessRequest), nameof(ActionType.NightlyIncentiveProcessRequest) => new ActionService(_incentiveManagerApiConfiguration.QueueNightlyIncentiveProcessEndpointUrl, HttpMethodType.Post, ActionType.NightlyIncentiveProcessRequest), nameof(ActionType.ActionCreditCardRequest) => new ActionService(_incentiveManagerApiConfiguration.QueueActionCreditCardEndpointUrl, HttpMethodType.Post, ActionType.ActionCreditCardRequest), nameof(ActionType.ActionVehicleRequest) => new ActionService(_incentiveManagerApiConfiguration.QueueActionVehicleEndpointUrl, HttpMethodType.Post, ActionType.ActionVehicleRequest), nameof(ActionType.AlliedGapMbpRequest) => new ActionService(_incentiveManagerApiConfiguration.QueueAlliedGapMbpEndpointUrl, HttpMethodType.Post, ActionType.AlliedGapMbpRequest), nameof(ActionType.DayforceProcessRequest) => new ActionService(_incentiveManagerApiConfiguration.QueueDayforceProcessEndpointUrl, HttpMethodType.Post, ActionType.DayforceProcessRequest), nameof(ActionType.GoalDispersalRequest) => new ActionService(_incentiveManagerApiConfiguration.QueueGoalDispersalProcessEndpointUrl, HttpMethodType.Post, ActionType.GoalDispersalRequest), nameof(ActionType.PayoutIncentiveRequest) => new ActionService(_incentiveManagerApiConfiguration.QueuePayoutProcessEndpointUrl, HttpMethodType.Post, ActionType.PayoutIncentiveRequest), nameof(ActionType.ReportingRequest) => new ActionService(_incentiveManagerApiConfiguration.QueueReportingProcessEndpointUrl, HttpMethodType.Post, ActionType.ReportingRequest), #endregion IncentiveManagerApi #region FileUpdaterApi nameof(ActionType.IndexFieldMapperRequest) => new ActionService(_fileUpdaterApiConfiguration.QueueIndexFieldMapperUrl, HttpMethodType.Post, ActionType.IndexFieldMapperRequest), #endregion #region TemenosNotificationApi nameof(ActionType.DealerAchNotificationRequest) => new ActionService(_temenosNotificationApiConfiguration.QueueDealerAchNotificationUrl, HttpMethodType.Post, ActionType.DealerAchNotificationRequest), #endregion #region RealTimeAlertsApi nameof(ActionType.InitiateRealTimeAlertsRequest) => new ActionService(_realTimeAlertsApiConfiguration.QueueInitiateRealTimeAlertsEndpointUrl, HttpMethodType.Post, ActionType.InitiateRealTimeAlertsRequest), nameof(ActionType.InitiateRealTimeAlertsErroredProcessingRequest) => new ActionService(_realTimeAlertsApiConfiguration.QueueErroredTransactionCleanUpEndpointUrl, HttpMethodType.Post, ActionType.InitiateRealTimeAlertsErroredProcessingRequest), #endregion #region RepoApi nameof(ActionType.RepoBatchProcessRequest) => new ActionService(_repoApiConfiguration.AccountBatchEndpointUrl, HttpMethodType.Post, ActionType.RepoBatchProcessRequest), #endregion RepoApi _ => throw new NotImplementedException(), }; } }