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
25 changes: 20 additions & 5 deletions TransactionProcessor.DataGenerator/DataGenerator/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -68,9 +68,7 @@ static async Task Main(string[] args){
// Set an estate
Guid estateId = Guid.Parse("435613ac-a468-47a3-ac4f-649d89764c22");

// Set the date range
DateTime startDate = new DateTime(2023, 4, 27); //27/7
DateTime endDate = new DateTime(2023, 4, 28); // This is the date of the last generated transaction


// Get a token to talk to the estate service
CancellationToken cancellationToken = new CancellationToken();
Expand All @@ -79,12 +77,31 @@ static async Task Main(string[] args){
ITransactionDataGenerator g = new TransactionDataGenerator(Program.SecurityServiceClient,
Program.EstateClient,
Program.TransactionProcessorClient,
Program.baseAddressFunc("EstateManagementApi"),
Program.baseAddressFunc("FileProcessorApi"),
Program.baseAddressFunc("TestHostApi"),
clientId,
clientSecret,
RunningMode.Live);

//await Program.GenerateTransactions(g, estateId, cancellationToken);
await Program.GenerateStatements(g, estateId, cancellationToken);

Console.WriteLine($"Process Complete");
}

private static async Task GenerateStatements(ITransactionDataGenerator g, Guid estateId, CancellationToken cancellationToken){
List<MerchantResponse> merchants = await g.GetMerchants(estateId, cancellationToken);
foreach (MerchantResponse merchant in merchants){
await g.GenerateMerchantStatement(merchant.EstateId, merchant.MerchantId, DateTime.Now.AddMonths(-2), cancellationToken);
}
}

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

List<DateTime> dateRange = g.GenerateDateRange(startDate, endDate);

List<MerchantResponse> merchants = await g.GetMerchants(estateId, cancellationToken);
Expand All @@ -109,8 +126,6 @@ static async Task Main(string[] args){
// Settlement
await g.PerformSettlement(dateTime, estateId, cancellationToken);
}

Console.WriteLine($"Process Complete");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,14 @@ public interface ITransactionDataGenerator{
#region Methods

List<DateTime> GenerateDateRange(DateTime startDate, DateTime endDate);

Task<List<ContractResponse>> GetMerchantContracts(MerchantResponse merchant, CancellationToken cancellationToken);
Task<List<MerchantResponse>> GetMerchants(Guid estateId, CancellationToken cancellationToken);
Task PerformMerchantLogon(DateTime dateTime, MerchantResponse merchant, CancellationToken cancellationToken);
Task PerformSettlement(DateTime dateTime, Guid estateId, CancellationToken cancellationToken);

Task SendSales(DateTime dateTime, MerchantResponse merchant, ContractResponse contract, CancellationToken cancellationToken);

Task SendUploadFile(DateTime dateTime, ContractResponse contract, MerchantResponse merchant, CancellationToken cancellationToken);
Task<MerchantResponse> GetMerchant(Guid estateId, Guid merchantId, CancellationToken cancellationToken);
Task GenerateMerchantStatement(Guid estateId, Guid merchantId, DateTime statementDateTime, CancellationToken cancellationToken);

#endregion
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,16 @@ public class TransactionDataGenerator : ITransactionDataGenerator{

private readonly ITransactionProcessorClient TransactionProcessorClient;

private readonly String EstateManagementApi;

#endregion

#region Constructors

public TransactionDataGenerator(ISecurityServiceClient securityServiceClient,
IEstateClient estateClient,
ITransactionProcessorClient transactionProcessorClient,
String estateManagementApi,
String fileProcessorApi,
String testHostApi,
String clientId,
Expand All @@ -52,6 +55,7 @@ public TransactionDataGenerator(ISecurityServiceClient securityServiceClient,
this.SecurityServiceClient = securityServiceClient;
this.EstateClient = estateClient;
this.TransactionProcessorClient = transactionProcessorClient;
this.EstateManagementApi = estateManagementApi;
this.FileProcessorApi = fileProcessorApi;
this.TestHostApi = testHostApi;

Expand Down Expand Up @@ -180,6 +184,33 @@ public async Task SendUploadFile(DateTime dateTime, ContractResponse contract, M
await this.UploadFile(uploadFile, Guid.Empty, dateTime, cancellationToken);
}

public async Task<MerchantResponse> GetMerchant(Guid estateId, Guid merchantId, CancellationToken cancellationToken){
String token = await this.GetAuthToken(cancellationToken);
return await this.EstateClient.GetMerchant(token, estateId, merchantId, cancellationToken);
}

public async Task GenerateMerchantStatement(Guid estateId, Guid merchantId, DateTime statementDateTime, CancellationToken cancellationToken)
{
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, $"{this.EstateManagementApi}/api/estates/{estateId}/merchants/{merchantId}/statements");
var body = new
{
merchant_statement_date = statementDateTime,
};
request.Content = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json");

if (this.RunningMode == RunningMode.WhatIf)
{
Console.WriteLine($"Merchant Statement Generated for merchant [{merchantId}] Statement Date [{body.merchant_statement_date}]");
}
String token = await this.GetAuthToken(cancellationToken);
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token);

using (HttpClient client = new HttpClient())
{
await client.SendAsync(request, cancellationToken);
}
}

private List<(SaleTransactionRequest request, Decimal amount)> BuildBillPaymentSaleRequests(DateTime dateTime, MerchantResponse merchant, ContractResponse contract, ContractProduct product, (Int32 accountNumber, String accountName, Decimal balance) billDetails){
List<(SaleTransactionRequest request, Decimal amount)> requests = new List<(SaleTransactionRequest request, Decimal amount)>();

Expand Down