From d04e0cce09a6a6d9cdeec473217fee50d6389f6e Mon Sep 17 00:00:00 2001 From: Stuart Ferguson Date: Fri, 13 Oct 2023 17:00:22 +0100 Subject: [PATCH] structure refactor and added some extra trace in --- .../BaseJob.cs | 69 ++++++++++++++++++- .../GenerateFileUploadsJob.cs | 17 ++--- .../GenerateMerchantStatementJob.cs | 11 +-- .../GenerateTransactionsJob.cs | 25 +------ .../ProcessSettlementJob.cs | 18 +---- .../SupportReportEmailJob.cs | 12 +--- 6 files changed, 84 insertions(+), 68 deletions(-) diff --git a/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService.Jobs/BaseJob.cs b/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService.Jobs/BaseJob.cs index b9d9a6c..9c66fdb 100644 --- a/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService.Jobs/BaseJob.cs +++ b/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService.Jobs/BaseJob.cs @@ -5,13 +5,27 @@ using System.Threading.Tasks; using DataGeneration; using EstateManagement.Client; +using Quartz; using SecurityService.Client; using SecurityService.DataTransferObjects.Responses; using Shared.Logger; using TransactionProcessor.Client; -public abstract class BaseJob{ - public String JobName { get; set; } +public abstract class BaseJob : IJob{ + public String JobName { get; private set; } + + public String JobGroup{ get; private set; } + + public String ClientSecret{ get; private set; } + + public String ClientId{ get; private set; } + + public String SecurityService { get; private set; } + + public String EstateManagementApi { get; private set; } + public String FileProcessorApi { get; private set; } + public String TransactionProcessorApi { get; private set; } + public String TestHostApi { get; private set; } protected ITransactionDataGenerator CreateTransactionDataGenerator(String clientId, String clientSecret, RunningMode runningMode){ ISecurityServiceClient securityServiceClient = Bootstrapper.GetService(); @@ -51,4 +65,55 @@ protected void TraceGenerated(TraceEventArgs traceArguments) Logger.LogInformation(traceArguments.Message); } } + + public abstract Task ExecuteJob(IJobExecutionContext context); + + public async Task Execute(IJobExecutionContext context){ + + this.CacheConfiguration(context); + Logger.LogInformation($"Running Job Group: [{this.JobGroup}] Name: [{this.JobName}]"); + this.LogConfiguration(); + + Bootstrapper.ConfigureServices(context); + + await this.ExecuteJob(context); + + Logger.LogInformation($"Job Group: [{this.JobGroup}] Name: [{this.JobName}] completed"); + } + + private void LogConfiguration(){ + Logger.LogInformation($"Client Id: [{this.ClientId}]"); + Logger.LogInformation($"EstateManagementApi is: [{this.EstateManagementApi}]"); + Logger.LogInformation($"FileProcessorApi is: [{this.FileProcessorApi}]"); + Logger.LogInformation($"SecurityService is: [{this.SecurityService}]"); + Logger.LogInformation($"TestHostApi is: [{this.TestHostApi}]"); + Logger.LogInformation($"TransactionProcessorApi is: [{this.TransactionProcessorApi}]"); + } + + private void CacheConfiguration(IJobExecutionContext context){ + this.JobName = context.JobDetail.Key.Name; + this.JobGroup = context.JobDetail.Key.Group; + this.ClientId = context.MergedJobDataMap.GetString("ClientId"); + this.ClientSecret = context.MergedJobDataMap.GetString("ClientSecret"); + + if (context.MergedJobDataMap.ContainsKey("EstateManagementApi")){ + this.EstateManagementApi = context.MergedJobDataMap.GetString("EstateManagementApi"); + } + + if (context.MergedJobDataMap.ContainsKey("FileProcessorApi")){ + this.FileProcessorApi = context.MergedJobDataMap.GetString("FileProcessorApi"); + } + + if (context.MergedJobDataMap.ContainsKey("SecurityService")){ + this.SecurityService = context.MergedJobDataMap.GetString("SecurityService"); + } + + if (context.MergedJobDataMap.ContainsKey("TestHostApi")){ + this.TestHostApi = context.MergedJobDataMap.GetString("TestHostApi"); + } + + if (context.MergedJobDataMap.ContainsKey("TransactionProcessorApi")){ + this.TransactionProcessorApi = context.MergedJobDataMap.GetString("TransactionProcessorApi"); + } + } } \ No newline at end of file diff --git a/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService.Jobs/GenerateFileUploadsJob.cs b/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService.Jobs/GenerateFileUploadsJob.cs index 4940310..1a076d6 100644 --- a/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService.Jobs/GenerateFileUploadsJob.cs +++ b/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService.Jobs/GenerateFileUploadsJob.cs @@ -1,33 +1,26 @@ namespace TransactionProcessing.SchedulerService.Jobs { using System; - using System.Collections.Generic; using System.Threading.Tasks; using DataGeneration; - using EstateManagement.DataTransferObjects.Responses; using Quartz; using Shared.Logger; [DisallowConcurrentExecution] - public class GenerateFileUploadsJob : BaseJob, IJob + public class GenerateFileUploadsJob : BaseJob { #region Methods - public async Task Execute(IJobExecutionContext context) + public override async Task ExecuteJob(IJobExecutionContext context) { - Bootstrapper.ConfigureServices(context); - - String clientId = context.MergedJobDataMap.GetString("ClientId"); - String clientSecret = context.MergedJobDataMap.GetString("ClientSecret"); Guid estateId = context.MergedJobDataMap.GetGuidValueFromString("EstateId"); Guid merchantId = context.MergedJobDataMap.GetGuidValueFromString("MerchantId"); Guid userId = context.MergedJobDataMap.GetGuidValueFromString("UserId"); - - Logger.LogInformation($"Running Job {context.JobDetail.Description}"); - Logger.LogInformation($"Client Id: [{clientId}]"); + Logger.LogInformation($"Estate Id: [{estateId}]"); Logger.LogInformation($"Merchant Id: [{merchantId}]"); + Logger.LogInformation($"User Id: [{userId}]"); - ITransactionDataGenerator t = CreateTransactionDataGenerator(clientId, clientSecret, RunningMode.Live); + ITransactionDataGenerator t = CreateTransactionDataGenerator(this.ClientId, this.ClientSecret, RunningMode.Live); t.TraceGenerated += TraceGenerated; await Jobs.GenerateFileUploads(t, estateId, merchantId, userId, context.CancellationToken); } diff --git a/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService.Jobs/GenerateMerchantStatementJob.cs b/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService.Jobs/GenerateMerchantStatementJob.cs index 8c705de..96fe1b6 100644 --- a/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService.Jobs/GenerateMerchantStatementJob.cs +++ b/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService.Jobs/GenerateMerchantStatementJob.cs @@ -6,20 +6,15 @@ using Quartz; using Shared.Logger; -public class GenerateMerchantStatementJob : BaseJob, IJob +public class GenerateMerchantStatementJob : BaseJob { - public async Task Execute(IJobExecutionContext context) + public override async Task ExecuteJob(IJobExecutionContext context) { - Bootstrapper.ConfigureServices(context); - String clientId = context.MergedJobDataMap.GetString("ClientId"); - String clientSecret = context.MergedJobDataMap.GetString("ClientSecret"); Guid estateId = context.MergedJobDataMap.GetGuidValueFromString("EstateId"); - Logger.LogInformation($"Running Job {context.JobDetail.Description}"); - Logger.LogInformation($"Client Id: [{clientId}]"); Logger.LogInformation($"Estate Id: [{estateId}]"); - ITransactionDataGenerator t = this.CreateTransactionDataGenerator(clientId, clientSecret, RunningMode.Live); + ITransactionDataGenerator t = this.CreateTransactionDataGenerator(this.ClientId, this.ClientSecret, RunningMode.Live); t.TraceGenerated += TraceGenerated; await Jobs.GenerateMerchantStatements(t, estateId, context.CancellationToken); } diff --git a/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService.Jobs/GenerateTransactionsJob.cs b/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService.Jobs/GenerateTransactionsJob.cs index 3492daf..cf77609 100644 --- a/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService.Jobs/GenerateTransactionsJob.cs +++ b/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService.Jobs/GenerateTransactionsJob.cs @@ -1,49 +1,30 @@ namespace TransactionProcessing.SchedulerService.Jobs { using System; - using System.Collections.Generic; - using System.Linq; - using System.Net.Http; - using System.Text; - using System.Threading; using System.Threading.Tasks; using DataGeneration; - using EstateManagement.Client; - using EstateManagement.DataTransferObjects.Requests; - using EstateManagement.DataTransferObjects.Responses; - using Newtonsoft.Json; using Quartz; - using SecurityService.Client; - using SecurityService.DataTransferObjects.Responses; using Shared.Logger; - using TransactionProcessor.Client; - using TransactionProcessor.DataTransferObjects; /// /// /// /// - public class GenerateTransactionsJob : BaseJob, IJob{ + public class GenerateTransactionsJob : BaseJob{ #region Methods - public async Task Execute(IJobExecutionContext context){ - this.JobName = context.JobDetail.Description; - Bootstrapper.ConfigureServices(context); + public override async Task ExecuteJob(IJobExecutionContext context){ - String clientId = context.MergedJobDataMap.GetString("ClientId"); - String clientSecret = context.MergedJobDataMap.GetString("ClientSecret"); Guid estateId = context.MergedJobDataMap.GetGuidValueFromString("EstateId"); Guid merchantId = context.MergedJobDataMap.GetGuidValueFromString("MerchantId"); Boolean requireLogon = context.MergedJobDataMap.GetBooleanValueFromString("requireLogon"); - Logger.LogInformation($"Running Job {context.JobDetail.Description}"); - Logger.LogInformation($"Client Id: [{clientId}]"); Logger.LogInformation($"Estate Id: [{estateId}]"); Logger.LogInformation($"Merchant Id: [{merchantId}]"); Logger.LogInformation($"Require Logon: [{requireLogon}]"); - ITransactionDataGenerator t = CreateTransactionDataGenerator(clientId, clientSecret, RunningMode.Live); + ITransactionDataGenerator t = CreateTransactionDataGenerator(this.ClientId, this.ClientSecret, RunningMode.Live); t.TraceGenerated += TraceGenerated; await Jobs.GenerateTransactions(t, estateId, merchantId, requireLogon, context.CancellationToken); } diff --git a/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService.Jobs/ProcessSettlementJob.cs b/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService.Jobs/ProcessSettlementJob.cs index e097a0b..4671bfb 100644 --- a/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService.Jobs/ProcessSettlementJob.cs +++ b/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService.Jobs/ProcessSettlementJob.cs @@ -1,33 +1,21 @@ using System; -using System.Linq; -using System.Text; using System.Threading.Tasks; namespace TransactionProcessing.SchedulerService.Jobs { - using System.Threading; - using EstateManagement.Client; using Quartz; - using SecurityService.Client; - using SecurityService.DataTransferObjects.Responses; using Shared.Logger; using TransactionProcessing.DataGeneration; - using TransactionProcessor.Client; - public class ProcessSettlementJob : BaseJob, IJob + public class ProcessSettlementJob : BaseJob { - public async Task Execute(IJobExecutionContext context) + public override async Task ExecuteJob(IJobExecutionContext context) { - Bootstrapper.ConfigureServices(context); - String clientId = context.MergedJobDataMap.GetString("ClientId"); - String clientSecret = context.MergedJobDataMap.GetString("ClientSecret"); Guid estateId = context.MergedJobDataMap.GetGuidValueFromString("EstateId"); - Logger.LogInformation($"Running Job {context.JobDetail.Description}"); - Logger.LogInformation($"Client Id: [{clientId}]"); Logger.LogInformation($"Estate Id: [{estateId}]"); - ITransactionDataGenerator t = CreateTransactionDataGenerator(clientId, clientSecret, RunningMode.Live); + ITransactionDataGenerator t = CreateTransactionDataGenerator(this.ClientId, this.ClientSecret, RunningMode.Live); t.TraceGenerated += TraceGenerated; await Jobs.PerformSettlement(t, DateTime.Now, estateId, context.CancellationToken); } diff --git a/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService.Jobs/SupportReportEmailJob.cs b/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService.Jobs/SupportReportEmailJob.cs index a49f8ff..54ad9ad 100644 --- a/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService.Jobs/SupportReportEmailJob.cs +++ b/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService.Jobs/SupportReportEmailJob.cs @@ -7,24 +7,18 @@ using Quartz; using Shared.Logger; -public class SupportReportEmailJob : BaseJob, IJob +public class SupportReportEmailJob : BaseJob { #region Methods - public async Task Execute(IJobExecutionContext context) + public override async Task ExecuteJob(IJobExecutionContext context) { - Bootstrapper.ConfigureServices(context); - - String clientId = context.MergedJobDataMap.GetString("ClientId"); - String clientSecret = context.MergedJobDataMap.GetString("ClientSecret"); String eventStoreConnectionString = context.MergedJobDataMap.GetString("EventStoreConnectionString"); String databaseConnectionString = context.MergedJobDataMap.GetString("DatabaseConnectionString"); String estateIds = context.MergedJobDataMap.GetString("EstateIds"); - Logger.LogInformation($"Running Job {context.JobDetail.Description}"); - Logger.LogInformation($"Client Id: [{clientId}]"); Logger.LogInformation($"Estate Id: [{estateIds}]"); - String token = await this.GetToken(clientId, clientSecret, context.CancellationToken); + String token = await this.GetToken(this.ClientId, this.ClientSecret, context.CancellationToken); IMessagingServiceClient messagingServiceClient = Bootstrapper.GetService();