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
@@ -0,0 +1,29 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>

<IsPackable>false</IsPackable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
<PackageReference Include="Moq" Version="4.18.2" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="coverlet.collector" Version="3.1.2">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\TransactionProcessing.SchedulerService.Jobs\TransactionProcessing.SchedulerService.Jobs.csproj" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
using EstateManagement.Client;
using Microsoft.Extensions.DependencyInjection;
using Quartz;
using SecurityService.Client;

namespace TransactionProcessing.SchedulerService.Jobs.Tests
{
using Moq;

public class UnitTest1
{
[Fact]
public void Test1() {
GenerateFileUploadsJob j = new GenerateFileUploadsJob();
}
}

public class TestGenerateFileUploadsBootstrapper : BaseBoostrapper
{
private Mock<ISecurityServiceClient> securityServiceClient;

private Mock<IEstateClient> estateClient;

public TestGenerateFileUploadsBootstrapper() {
this.securityServiceClient = new Mock<ISecurityServiceClient>();
this.estateClient = new Mock<IEstateClient>();

}
public override void ConfigureServiceAdditional(IJobExecutionContext jobExecutionContext)
{
//this.Services.AddSingleton<ISecurityServiceClient, SecurityServiceClient>();
//this.Services.AddSingleton<IEstateClient, EstateClient>();

this.Services.AddSingleton<Func<String, String>>(container => serviceName => { return jobExecutionContext.MergedJobDataMap.GetString(serviceName); });
this.Services.AddSingleton<ISecurityServiceClient>(this.securityServiceClient.Object);
this.Services.AddSingleton<IEstateClient>(this.estateClient.Object);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
global using Xunit;
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
using EstateManagement.DataTransferObjects.Requests;
using EstateManagement.DataTransferObjects.Responses;
using Quartz;
using Quartz.Impl;
using SecurityService.Client;
using SecurityService.DataTransferObjects.Responses;

Expand Down Expand Up @@ -130,58 +131,57 @@ private async Task GenerateFileUploads(Guid estateId,
// get the contract
var contract = contracts.SingleOrDefault(c => c.OperatorId == merchantOperator.OperatorId);

if (merchantOperator.Name == "Voucher")
{
// Generate a voucher file
var voucherFile = this.GenerateVoucherFile(fileDate, contract.Description.Replace("Contract", ""), numberOfSales);
fileData = voucherFile.fileLines;
// Need to make a deposit for this amount - last sale
Decimal depositAmount = voucherFile.totalValue - voucherFile.lastSale;
await this.MakeMerchantDeposit(accessToken, merchant, depositAmount, fileDate.AddSeconds(1), cancellationToken);
}
else
{
// generate a topup file
var topupFile = this.GenerateTopupFile(fileDate, numberOfSales);
fileData = topupFile.fileLines;
// Need to make a deposit for this amount - last sale
Decimal depositAmount = topupFile.totalValue - topupFile.lastSale;
await this.MakeMerchantDeposit(accessToken, merchant, depositAmount, fileDate.AddSeconds(2), cancellationToken);
}
// Only process if we find the contract
if (contract != null) {

// Write this file to disk
Directory.CreateDirectory($"/home/txnproc/txngenerator/{merchantOperator.Name}");
using(StreamWriter sw =
new
StreamWriter($"/home/txnproc/txngenerator/{merchantOperator.Name}/{contract.Description.Replace("Contract", "")}-{fileDate:yyyy-MM-dd-HH-mm-ss}"))
{
foreach (String fileLine in fileData)
{
sw.WriteLine(fileLine);
if (merchantOperator.Name == "Voucher") {
// Generate a voucher file
var voucherFile = this.GenerateVoucherFile(fileDate, contract.Description.Replace("Contract", ""), numberOfSales);
fileData = voucherFile.fileLines;
// Need to make a deposit for this amount - last sale
Decimal depositAmount = voucherFile.totalValue - voucherFile.lastSale;
await this.MakeMerchantDeposit(accessToken, merchant, depositAmount, fileDate.AddSeconds(1), cancellationToken);
}
else {
// generate a topup file
var topupFile = this.GenerateTopupFile(fileDate, numberOfSales);
fileData = topupFile.fileLines;
// Need to make a deposit for this amount - last sale
Decimal depositAmount = topupFile.totalValue - topupFile.lastSale;
await this.MakeMerchantDeposit(accessToken, merchant, depositAmount, fileDate.AddSeconds(2), cancellationToken);
}

// Write this file to disk
Directory.CreateDirectory($"/home/txnproc/txngenerator/{merchantOperator.Name}");
using(StreamWriter sw =
new
StreamWriter($"/home/txnproc/txngenerator/{merchantOperator.Name}/{contract.Description.Replace("Contract", "")}-{fileDate:yyyy-MM-dd-HH-mm-ss}")) {
foreach (String fileLine in fileData) {
sw.WriteLine(fileLine);
}
}
}

// Upload the generated files for this merchant/operator
// Get the files
var files = Directory.GetFiles($"/home/txnproc/txngenerator/{merchantOperator.Name}");
// Upload the generated files for this merchant/operator
// Get the files
var files = Directory.GetFiles($"/home/txnproc/txngenerator/{merchantOperator.Name}");

var fileDateTime = fileDate.AddHours(DateTime.Now.Hour).AddMinutes(DateTime.Now.Minute).AddSeconds(DateTime.Now.Second);
var fileDateTime = fileDate.AddHours(DateTime.Now.Hour).AddMinutes(DateTime.Now.Minute).AddSeconds(DateTime.Now.Second);

foreach (String file in files)
{
var fileProfileId = this.GetFileProfileIdFromOperator(merchantOperator.Name, cancellationToken);

await this.UploadFile(accessToken,
file,
merchant.EstateId,
merchant.MerchantId,
fileProfileId,
estateUser.SecurityUserId,
fileDateTime,
cancellationToken);

// Remove file once uploaded
File.Delete(file);
foreach (String file in files) {
var fileProfileId = this.GetFileProfileIdFromOperator(merchantOperator.Name, cancellationToken);

await this.UploadFile(accessToken,
file,
merchant.EstateId,
merchant.MerchantId,
fileProfileId,
estateUser.SecurityUserId,
fileDateTime,
cancellationToken);

// Remove file once uploaded
File.Delete(file);
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,11 @@ VisualStudioVersion = 17.0.32014.148
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TransactionProcessing.SchedulerService", "TransactionProcessing.SchedulerService\TransactionProcessing.SchedulerService.csproj", "{FCFCFE63-02D6-4CA3-947C-3E51DFE4389C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TransactionProcessing.SchedulerService.Jobs", "TransactionProcessing.SchedulerService.Jobs\TransactionProcessing.SchedulerService.Jobs.csproj", "{0A8E0EA7-3A93-4605-A690-C663F6239099}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TransactionProcessing.SchedulerService.Jobs", "TransactionProcessing.SchedulerService.Jobs\TransactionProcessing.SchedulerService.Jobs.csproj", "{0A8E0EA7-3A93-4605-A690-C663F6239099}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{0131F226-313F-4F7C-9576-7AA726FA9584}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{8EBAA9CC-7C39-497D-A925-866E68CFE20A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Expand All @@ -25,6 +29,10 @@ Global
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{FCFCFE63-02D6-4CA3-947C-3E51DFE4389C} = {0131F226-313F-4F7C-9576-7AA726FA9584}
{0A8E0EA7-3A93-4605-A690-C663F6239099} = {0131F226-313F-4F7C-9576-7AA726FA9584}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {FCE31FDA-32E8-49AB-8D30-0D36D461CBC1}
EndGlobalSection
Expand Down