Skip to content

Commit 9059963

Browse files
Merge pull request #42 from TransactionProcessing/task/#38_investigateuploadfailure
Fix for file job trying to send files when contract should be skipped
2 parents 776558c + ea64099 commit 9059963

File tree

5 files changed

+125
-48
lines changed

5 files changed

+125
-48
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>net6.0</TargetFramework>
5+
<ImplicitUsings>enable</ImplicitUsings>
6+
<Nullable>enable</Nullable>
7+
8+
<IsPackable>false</IsPackable>
9+
</PropertyGroup>
10+
11+
<ItemGroup>
12+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
13+
<PackageReference Include="Moq" Version="4.18.2" />
14+
<PackageReference Include="xunit" Version="2.4.1" />
15+
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
16+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
17+
<PrivateAssets>all</PrivateAssets>
18+
</PackageReference>
19+
<PackageReference Include="coverlet.collector" Version="3.1.2">
20+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
21+
<PrivateAssets>all</PrivateAssets>
22+
</PackageReference>
23+
</ItemGroup>
24+
25+
<ItemGroup>
26+
<ProjectReference Include="..\TransactionProcessing.SchedulerService.Jobs\TransactionProcessing.SchedulerService.Jobs.csproj" />
27+
</ItemGroup>
28+
29+
</Project>
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
using EstateManagement.Client;
2+
using Microsoft.Extensions.DependencyInjection;
3+
using Quartz;
4+
using SecurityService.Client;
5+
6+
namespace TransactionProcessing.SchedulerService.Jobs.Tests
7+
{
8+
using Moq;
9+
10+
public class UnitTest1
11+
{
12+
[Fact]
13+
public void Test1() {
14+
GenerateFileUploadsJob j = new GenerateFileUploadsJob();
15+
}
16+
}
17+
18+
public class TestGenerateFileUploadsBootstrapper : BaseBoostrapper
19+
{
20+
private Mock<ISecurityServiceClient> securityServiceClient;
21+
22+
private Mock<IEstateClient> estateClient;
23+
24+
public TestGenerateFileUploadsBootstrapper() {
25+
this.securityServiceClient = new Mock<ISecurityServiceClient>();
26+
this.estateClient = new Mock<IEstateClient>();
27+
28+
}
29+
public override void ConfigureServiceAdditional(IJobExecutionContext jobExecutionContext)
30+
{
31+
//this.Services.AddSingleton<ISecurityServiceClient, SecurityServiceClient>();
32+
//this.Services.AddSingleton<IEstateClient, EstateClient>();
33+
34+
this.Services.AddSingleton<Func<String, String>>(container => serviceName => { return jobExecutionContext.MergedJobDataMap.GetString(serviceName); });
35+
this.Services.AddSingleton<ISecurityServiceClient>(this.securityServiceClient.Object);
36+
this.Services.AddSingleton<IEstateClient>(this.estateClient.Object);
37+
}
38+
}
39+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
global using Xunit;

TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService.Jobs/GenerateFileUploads/GenerateFileUploadsJob.cs

Lines changed: 47 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
using EstateManagement.DataTransferObjects.Requests;
1313
using EstateManagement.DataTransferObjects.Responses;
1414
using Quartz;
15+
using Quartz.Impl;
1516
using SecurityService.Client;
1617
using SecurityService.DataTransferObjects.Responses;
1718

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

133-
if (merchantOperator.Name == "Voucher")
134-
{
135-
// Generate a voucher file
136-
var voucherFile = this.GenerateVoucherFile(fileDate, contract.Description.Replace("Contract", ""), numberOfSales);
137-
fileData = voucherFile.fileLines;
138-
// Need to make a deposit for this amount - last sale
139-
Decimal depositAmount = voucherFile.totalValue - voucherFile.lastSale;
140-
await this.MakeMerchantDeposit(accessToken, merchant, depositAmount, fileDate.AddSeconds(1), cancellationToken);
141-
}
142-
else
143-
{
144-
// generate a topup file
145-
var topupFile = this.GenerateTopupFile(fileDate, numberOfSales);
146-
fileData = topupFile.fileLines;
147-
// Need to make a deposit for this amount - last sale
148-
Decimal depositAmount = topupFile.totalValue - topupFile.lastSale;
149-
await this.MakeMerchantDeposit(accessToken, merchant, depositAmount, fileDate.AddSeconds(2), cancellationToken);
150-
}
134+
// Only process if we find the contract
135+
if (contract != null) {
151136

152-
// Write this file to disk
153-
Directory.CreateDirectory($"/home/txnproc/txngenerator/{merchantOperator.Name}");
154-
using(StreamWriter sw =
155-
new
156-
StreamWriter($"/home/txnproc/txngenerator/{merchantOperator.Name}/{contract.Description.Replace("Contract", "")}-{fileDate:yyyy-MM-dd-HH-mm-ss}"))
157-
{
158-
foreach (String fileLine in fileData)
159-
{
160-
sw.WriteLine(fileLine);
137+
if (merchantOperator.Name == "Voucher") {
138+
// Generate a voucher file
139+
var voucherFile = this.GenerateVoucherFile(fileDate, contract.Description.Replace("Contract", ""), numberOfSales);
140+
fileData = voucherFile.fileLines;
141+
// Need to make a deposit for this amount - last sale
142+
Decimal depositAmount = voucherFile.totalValue - voucherFile.lastSale;
143+
await this.MakeMerchantDeposit(accessToken, merchant, depositAmount, fileDate.AddSeconds(1), cancellationToken);
144+
}
145+
else {
146+
// generate a topup file
147+
var topupFile = this.GenerateTopupFile(fileDate, numberOfSales);
148+
fileData = topupFile.fileLines;
149+
// Need to make a deposit for this amount - last sale
150+
Decimal depositAmount = topupFile.totalValue - topupFile.lastSale;
151+
await this.MakeMerchantDeposit(accessToken, merchant, depositAmount, fileDate.AddSeconds(2), cancellationToken);
152+
}
153+
154+
// Write this file to disk
155+
Directory.CreateDirectory($"/home/txnproc/txngenerator/{merchantOperator.Name}");
156+
using(StreamWriter sw =
157+
new
158+
StreamWriter($"/home/txnproc/txngenerator/{merchantOperator.Name}/{contract.Description.Replace("Contract", "")}-{fileDate:yyyy-MM-dd-HH-mm-ss}")) {
159+
foreach (String fileLine in fileData) {
160+
sw.WriteLine(fileLine);
161+
}
161162
}
162-
}
163163

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

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

170-
foreach (String file in files)
171-
{
172-
var fileProfileId = this.GetFileProfileIdFromOperator(merchantOperator.Name, cancellationToken);
173-
174-
await this.UploadFile(accessToken,
175-
file,
176-
merchant.EstateId,
177-
merchant.MerchantId,
178-
fileProfileId,
179-
estateUser.SecurityUserId,
180-
fileDateTime,
181-
cancellationToken);
182-
183-
// Remove file once uploaded
184-
File.Delete(file);
170+
foreach (String file in files) {
171+
var fileProfileId = this.GetFileProfileIdFromOperator(merchantOperator.Name, cancellationToken);
172+
173+
await this.UploadFile(accessToken,
174+
file,
175+
merchant.EstateId,
176+
merchant.MerchantId,
177+
fileProfileId,
178+
estateUser.SecurityUserId,
179+
fileDateTime,
180+
cancellationToken);
181+
182+
// Remove file once uploaded
183+
File.Delete(file);
184+
}
185185
}
186186
}
187187
}

TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService.sln

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@ VisualStudioVersion = 17.0.32014.148
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TransactionProcessing.SchedulerService", "TransactionProcessing.SchedulerService\TransactionProcessing.SchedulerService.csproj", "{FCFCFE63-02D6-4CA3-947C-3E51DFE4389C}"
77
EndProject
8-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TransactionProcessing.SchedulerService.Jobs", "TransactionProcessing.SchedulerService.Jobs\TransactionProcessing.SchedulerService.Jobs.csproj", "{0A8E0EA7-3A93-4605-A690-C663F6239099}"
8+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TransactionProcessing.SchedulerService.Jobs", "TransactionProcessing.SchedulerService.Jobs\TransactionProcessing.SchedulerService.Jobs.csproj", "{0A8E0EA7-3A93-4605-A690-C663F6239099}"
9+
EndProject
10+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{0131F226-313F-4F7C-9576-7AA726FA9584}"
11+
EndProject
12+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{8EBAA9CC-7C39-497D-A925-866E68CFE20A}"
913
EndProject
1014
Global
1115
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -25,6 +29,10 @@ Global
2529
GlobalSection(SolutionProperties) = preSolution
2630
HideSolutionNode = FALSE
2731
EndGlobalSection
32+
GlobalSection(NestedProjects) = preSolution
33+
{FCFCFE63-02D6-4CA3-947C-3E51DFE4389C} = {0131F226-313F-4F7C-9576-7AA726FA9584}
34+
{0A8E0EA7-3A93-4605-A690-C663F6239099} = {0131F226-313F-4F7C-9576-7AA726FA9584}
35+
EndGlobalSection
2836
GlobalSection(ExtensibilityGlobals) = postSolution
2937
SolutionGuid = {FCE31FDA-32E8-49AB-8D30-0D36D461CBC1}
3038
EndGlobalSection

0 commit comments

Comments
 (0)