Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -104,8 +104,8 @@ private static async Task GenerateStatements(ITransactionDataGeneratorService g,

private static async Task GenerateTransactions(ITransactionDataGeneratorService g, Guid estateId, CancellationToken cancellationToken){
// Set the date range
DateTime startDate = new DateTime(2025, 7, 2); //27/7
DateTime endDate = new DateTime(2025, 8,27); // This is the date of the last generated transaction
DateTime startDate = new DateTime(2025, 8, 28); //27/7
DateTime endDate = new DateTime(2025, 8,28); // This is the date of the last generated transaction

Result<List<DateTime>> dateRangeResult = g.GenerateDateRange(startDate, endDate);
if (dateRangeResult.IsFailed)
Expand Down Expand Up @@ -149,7 +149,7 @@ private static async Task GenerateTransactions(ITransactionDataGeneratorService
//dataToSend = DataToSend.Files;

// Settlement
dataToSend = DataToSend.Settlement;
//dataToSend = DataToSend.Settlement;

if (dataToSend == 0) {
Console.WriteLine("No data to send");
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
 public record BaseConfiguration(
 public record ServiceConfiguration(
String ClientId,
String ClientSecret,
String FileProcessorApi,
Expand All @@ -8,45 +8,52 @@
String EventStoreAddress);


public class ReplayParkedQueueJobConfiguration {
public class BaseConfiguration {
public Boolean IsEnabled { get; set; } = true;
}

public class ReplayParkedQueueJobConfiguration : BaseConfiguration
{

}

public class MakeFloatCreditsJobConfiguration{
public class MakeFloatCreditsJobConfiguration : BaseConfiguration
{

public Guid EstateId { get; set; }
public List<DepositAmount> DepositAmounts { get; set; } = new List<DepositAmount>();
}


public class DepositAmount{
public class DepositAmount : BaseConfiguration
{
public Guid ContractId { get; set; }
public Guid ProductId { get; set; }
public Decimal Amount { get; set; }
}

public class UploadTransactionFileJobConfiguration
{
public class UploadTransactionFileJobConfiguration : BaseConfiguration
{
public Guid EstateId { get; set; }
public Guid MerchantId { get; set; }
public Guid UserId { get; set; }
public List<String> ContractsToInclude { get; set; }
}

public class GenerateTransactionsJobConfiguration
{
public class GenerateTransactionsJobConfiguration : BaseConfiguration
{
public Guid EstateId { get; set; }
public Guid MerchantId { get; set; }
}

public class ProcessSettlementJobConfiguration
{
public class ProcessSettlementJobConfiguration : BaseConfiguration
{
public Guid EstateId { get; set; }
public Guid MerchantId { get; set; }
}

public class MerchantStatementJobConfiguration
{
public class MerchantStatementJobConfiguration : BaseConfiguration
{
public Guid EstateId { get; set; }
public Guid MerchantId { get; set; }
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using TickerQ.EntityFrameworkCore.Configurations;

namespace TransactionProcessing.SchedulerService.TickerQ.Database
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
using EventStore.Client;
using Microsoft.AspNetCore.SignalR;
using Microsoft.IdentityModel.Tokens;
using SecurityService.Client;
using Shared.General;
using Shared.Logger;
using SimpleResults;
using TickerQ.Utilities.Base;
using TickerQ.Utilities.Models;
using TransactionProcessing.SchedulerService.DataGenerator;
using TransactionProcessing.SchedulerService.TickerQ.Database;
using TransactionProcessor.Client;
using TransactionProcessor.DataTransferObjects;
using TransactionProcessor.DataTransferObjects.Responses.Contract;
Expand All @@ -19,15 +21,18 @@ public class TickerFunctions
private readonly ISecurityServiceClient SecurityServiceClient;
private readonly ITransactionProcessorClient TransactionProcessorClient;
private readonly Func<String, String> BaseAddressFunc;
private readonly SchedulerContext SchedulerContext;
private readonly ITransactionDataGeneratorService TransactionDataGeneratorService;
private readonly BaseConfiguration BaseConfiguration;
private readonly ServiceConfiguration BaseConfiguration;

public TickerFunctions(ISecurityServiceClient securityServiceClient,
ITransactionProcessorClient transactionProcessorClient,
Func<String, String> baseAddressFunc) {
Func<String, String> baseAddressFunc,
SchedulerContext schedulerContext) {
this.SecurityServiceClient = securityServiceClient;
this.TransactionProcessorClient = transactionProcessorClient;
this.BaseAddressFunc = baseAddressFunc;
this.SchedulerContext = schedulerContext;

// Get the base configuration
this.BaseConfiguration= BuildBaseConfiguration();
Expand All @@ -51,7 +56,7 @@ protected ITransactionDataGeneratorService CreateTransactionDataGenerator(String
return g;
}

internal static BaseConfiguration BuildBaseConfiguration() {
internal static ServiceConfiguration BuildBaseConfiguration() {
String? clientId = ConfigurationReader.GetValueOrDefault<String>("BaseConfiguration", "ClientId", "");
String? clientSecret = ConfigurationReader.GetValueOrDefault<String>("BaseConfiguration", "ClientSecret", "");
String? fileProcessorApi = ConfigurationReader.GetValueOrDefault<String>("BaseConfiguration", "FileProcessorApi", "");
Expand Down Expand Up @@ -87,7 +92,7 @@ internal static BaseConfiguration BuildBaseConfiguration() {
throw new InvalidOperationException("Configuration validation failed: " + String.Join(", ", validationErrors));
}

return new BaseConfiguration(
return new ServiceConfiguration(
clientId,
clientSecret,
fileProcessorApi,
Expand All @@ -97,8 +102,12 @@ internal static BaseConfiguration BuildBaseConfiguration() {
}

[TickerFunction(functionName: "Replay Parked Queue")]
public async Task ReplayParkedQueue(TickerFunctionContext tickerContext, CancellationToken ct)
{
public async Task ReplayParkedQueue(TickerFunctionContext<ReplayParkedQueueJobConfiguration> tickerContext, CancellationToken ct) {
if (this.IsJobEnabled(tickerContext.Request) == false) {
Logger.LogWarning("Replay Parked Queue Job is not enabled");
return;
}

Result result = await Jobs.ReplayParkedQueues(this.BaseConfiguration.EventStoreAddress, ct);

if (result.IsFailed) {
Expand All @@ -108,8 +117,19 @@ public async Task ReplayParkedQueue(TickerFunctionContext tickerContext, Cancell
Logger.LogWarning("Running Replay Parked Queue");
}

private Boolean IsJobEnabled<TConfiguration>(TConfiguration configuration) where TConfiguration : BaseConfiguration {
if (configuration == null)
return true;
return configuration.IsEnabled;
}

[TickerFunction(functionName: "Make Float Credits")]
public async Task MakeFloatCredits(TickerFunctionContext<MakeFloatCreditsJobConfiguration> tickerContext, CancellationToken ct) {
if (this.IsJobEnabled(tickerContext.Request) == false)
{
Logger.LogWarning("Make Float Credits is not enabled");
return;
}
Result result = await Jobs.MakeFloatCredits(this.TransactionDataGeneratorService, tickerContext.Request, ct);

if (result.IsFailed)
Expand All @@ -123,6 +143,11 @@ public async Task MakeFloatCredits(TickerFunctionContext<MakeFloatCreditsJobConf
[TickerFunction(functionName: "Upload Transaction File")]
public async Task UploadTransactionFile(TickerFunctionContext<UploadTransactionFileJobConfiguration> tickerContext, CancellationToken ct)
{
if (this.IsJobEnabled(tickerContext.Request) == false)
{
Logger.LogWarning("Upload Transaction File is not enabled");
return;
}
String name = tickerContext.Request.MerchantId.ToString() switch
{
"af4d7c7c-9b8d-4e58-a12a-28d3e0b89df6" => "Demo Merchant 2",
Expand All @@ -141,6 +166,12 @@ public async Task UploadTransactionFile(TickerFunctionContext<UploadTransactionF

[TickerFunction(functionName: "Process Merchant Settlement")]
public async Task ProcessMerchantSettlement(TickerFunctionContext<ProcessSettlementJobConfiguration> tickerContext, CancellationToken ct) {
if (this.IsJobEnabled(tickerContext.Request) == false)
{
Logger.LogWarning("Process Merchant Settlement Job is not enabled");
return;
}

String name = tickerContext.Request.MerchantId.ToString() switch
{
"af4d7c7c-9b8d-4e58-a12a-28d3e0b89df6" => "Demo Merchant 2",
Expand All @@ -159,6 +190,11 @@ public async Task ProcessMerchantSettlement(TickerFunctionContext<ProcessSettlem

[TickerFunction(functionName: "Generate Merchant Transactions")]
public async Task GenerateMerchantTransactions(TickerFunctionContext<GenerateTransactionsJobConfiguration> tickerContext, CancellationToken ct) {
if (this.IsJobEnabled(tickerContext.Request) == false)
{
Logger.LogWarning("Generate Merchant Transactions Job is not enabled");
return;
}
String name = tickerContext.Request.MerchantId.ToString() switch {
"af4d7c7c-9b8d-4e58-a12a-28d3e0b89df6" => "Demo Merchant 2",
"ab1c99fb-1c6c-4694-9a32-b71be5d1da33" => "Demo Merchant 1",
Expand All @@ -179,6 +215,11 @@ public async Task GenerateMerchantTransactions(TickerFunctionContext<GenerateTra
[TickerFunction(functionName: "Generate Merchant Logon")]
public async Task GenerateMerchantLogon(TickerFunctionContext<GenerateTransactionsJobConfiguration> tickerContext, CancellationToken ct)
{
if (this.IsJobEnabled(tickerContext.Request) == false)
{
Logger.LogWarning("Generate Merchant Logon Job is not enabled");
return;
}
String name = tickerContext.Request.MerchantId.ToString() switch
{
"af4d7c7c-9b8d-4e58-a12a-28d3e0b89df6" => "Demo Merchant 2",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
};
HttpClient httpClient = new HttpClient(httpClientHandler);

BaseConfiguration baseConfiguration = TickerFunctions.BuildBaseConfiguration();
ServiceConfiguration baseConfiguration = TickerFunctions.BuildBaseConfiguration();
builder.Services.AddSingleton(baseConfiguration);

builder.Services.AddSingleton(httpClient);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
}
},
"ConnectionStrings": {
"Quartz": "server=127.0.0.1;user id=sa;password=sp1ttal;database=Scheduler;Encrypt=True;TrustServerCertificate=True"
"Quartz": "server=127.0.0.1;user id=sa;password=sp1ttal;database=Scheduler_new;Encrypt=True;TrustServerCertificate=True"
},
//"Quartz": {
// "quartz.scheduler.instanceName": "Txn Processing Scheduler",
Expand Down
Loading