Skip to content

Commit 06f3888

Browse files
More tweaks to generator
1 parent 5b09c15 commit 06f3888

File tree

2 files changed

+82
-38
lines changed

2 files changed

+82
-38
lines changed

TransactionProcessor.DataGenerator/TransactionProcessing.DataGeneration/ITransactionDataGenerator.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ public interface ITransactionDataGenerator{
88
List<DateTime> GenerateDateRange(DateTime startDate, DateTime endDate);
99
Task<List<ContractResponse>> GetMerchantContracts(MerchantResponse merchant, CancellationToken cancellationToken);
1010
Task<List<MerchantResponse>> GetMerchants(Guid estateId, CancellationToken cancellationToken);
11-
Task PerformMerchantLogon(DateTime dateTime, MerchantResponse merchant, CancellationToken cancellationToken);
12-
Task PerformSettlement(DateTime dateTime, Guid estateId, CancellationToken cancellationToken);
13-
Task SendSales(DateTime dateTime, MerchantResponse merchant, ContractResponse contract, CancellationToken cancellationToken);
14-
Task SendUploadFile(DateTime dateTime, ContractResponse contract, MerchantResponse merchant, CancellationToken cancellationToken);
11+
Task<Boolean> PerformMerchantLogon(DateTime dateTime, MerchantResponse merchant, CancellationToken cancellationToken);
12+
Task<Boolean> PerformSettlement(DateTime dateTime, Guid estateId, CancellationToken cancellationToken);
13+
Task<Boolean> SendSales(DateTime dateTime, MerchantResponse merchant, ContractResponse contract, CancellationToken cancellationToken);
14+
Task<Boolean> SendUploadFile(DateTime dateTime, ContractResponse contract, MerchantResponse merchant, CancellationToken cancellationToken);
1515
Task<MerchantResponse> GetMerchant(Guid estateId, Guid merchantId, CancellationToken cancellationToken);
16-
Task GenerateMerchantStatement(Guid estateId, Guid merchantId, DateTime statementDateTime, CancellationToken cancellationToken);
16+
Task<Boolean> GenerateMerchantStatement(Guid estateId, Guid merchantId, DateTime statementDateTime, CancellationToken cancellationToken);
1717

1818
event TraceHandler TraceGenerated;
1919

TransactionProcessor.DataGenerator/TransactionProcessing.DataGeneration/TransactionDataGenerator.cs

Lines changed: 77 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -186,12 +186,12 @@ public async Task<List<MerchantResponse>> GetMerchants(Guid estateId, Cancellati
186186
return merchants;
187187
}
188188

189-
public async Task PerformMerchantLogon(DateTime dateTime, MerchantResponse merchant, CancellationToken cancellationToken){
189+
public async Task<Boolean> PerformMerchantLogon(DateTime dateTime, MerchantResponse merchant, CancellationToken cancellationToken){
190190

191191
if (merchant == null)
192192
{
193193
this.WriteError("Merchant is null");
194-
return;
194+
return false;
195195
}
196196

197197
// Build logon message
@@ -213,33 +213,38 @@ public async Task PerformMerchantLogon(DateTime dateTime, MerchantResponse merch
213213
await this.SendLogonTransaction(merchant, logonTransactionRequest, cancellationToken);
214214

215215
this.WriteTrace($"Logon Transaction for Merchant [{merchant.MerchantName}] sent");
216+
return true;
216217

217218
}
218219
catch (Exception ex)
219220
{
220221
this.WriteError($"Error sending logon transaction for Merchant {merchant.MerchantId} Estate [{merchant.EstateId}]");
221222
this.WriteError(ex);
222223
}
224+
225+
return false;
223226
}
224227

225-
public async Task PerformSettlement(DateTime dateTime, Guid estateId, CancellationToken cancellationToken){
228+
public async Task<Boolean> PerformSettlement(DateTime dateTime, Guid estateId, CancellationToken cancellationToken){
226229
try
227230
{
228231
this.WriteTrace($"About to send Process Settlement Request for Date [{dateTime:dd-MM-yyyy}] and Estate [{estateId}]");
229232

230233
await this.SendProcessSettlementRequest(dateTime, estateId, cancellationToken);
231234

232235
this.WriteTrace($"Process Settlement Request sent for Date [{dateTime:dd-MM-yyyy}] and Estate [{estateId}]");
236+
return true;
233237

234238
}
235239
catch (Exception ex)
236240
{
237241
this.WriteError($"Error sending Process Settlement Request for Date [{dateTime:dd-MM-yyyy}] and Estate [{estateId}]");
238242
this.WriteError(ex);
243+
return false;
239244
}
240245
}
241246

242-
public async Task SendSales(DateTime dateTime, MerchantResponse merchant, ContractResponse contract, CancellationToken cancellationToken){
247+
public async Task<Boolean> SendSales(DateTime dateTime, MerchantResponse merchant, ContractResponse contract, CancellationToken cancellationToken){
243248
List<SaleTransactionRequest> salesToSend = new List<SaleTransactionRequest>();
244249

245250
Decimal depositAmount = 0;
@@ -284,35 +289,60 @@ public async Task SendSales(DateTime dateTime, MerchantResponse merchant, Contra
284289
MakeMerchantDepositRequest depositRequest = this.CreateMerchantDepositRequest(depositAmount, dateTime);
285290

286291
// Send the deposit
287-
await this.SendMerchantDepositRequest(merchant, depositRequest, cancellationToken);
292+
Boolean depositSent = await this.SendMerchantDepositRequest(merchant, depositRequest, cancellationToken);
293+
294+
if (depositSent == false){
295+
return false;
296+
}
288297

298+
Int32 salesSent = 0;
289299
IOrderedEnumerable<SaleTransactionRequest> orderedSales = salesToSend.OrderBy(s => s.TransactionDateTime);
290300
// Send the sales to the host
291301
foreach (SaleTransactionRequest sale in orderedSales){
292302
sale.TransactionNumber = this.GetTransactionNumber().ToString();
293-
await this.SendSaleTransaction(merchant, sale, cancellationToken);
303+
Boolean saleSent = await this.SendSaleTransaction(merchant, sale, cancellationToken);
304+
if (saleSent){
305+
salesSent++;
306+
}
307+
}
308+
309+
if (salesSent == 0){
310+
// All sales failed
311+
return false;
294312
}
313+
314+
return true;
295315
}
296316

297-
public async Task SendUploadFile(DateTime dateTime, ContractResponse contract, MerchantResponse merchant, CancellationToken cancellationToken){
317+
public async Task<Boolean> SendUploadFile(DateTime dateTime, ContractResponse contract, MerchantResponse merchant, CancellationToken cancellationToken){
298318
Int32 numberOfSales = this.r.Next(5, 15);
299319
(Decimal, UploadFile) uploadFile = await this.BuildUploadFile(dateTime, merchant, contract, numberOfSales, cancellationToken);
300320

301321
if (uploadFile.Item2 == null){
302-
return;
322+
return false;
303323
}
304324
if (this.RunningMode == RunningMode.WhatIf){
305325
this.WriteTrace($"Send File for Merchant [{merchant.MerchantName}] Contract [{contract.OperatorName}] Lines [{uploadFile.Item2.GetNumberOfLines()}]");
306-
return;
326+
return true;
307327
}
308328

309329
// Build up a deposit (minus the last sale amount)
310330
MakeMerchantDepositRequest depositRequest = this.CreateMerchantDepositRequest(uploadFile.Item1, dateTime);
311331

312332
// Send the deposit
313-
await this.SendMerchantDepositRequest(merchant, depositRequest, cancellationToken);
333+
Boolean depositSent = await this.SendMerchantDepositRequest(merchant, depositRequest, cancellationToken);
334+
335+
if (depositSent == false){
336+
return false;
337+
}
314338

315-
await this.UploadFile(uploadFile.Item2, Guid.Empty, dateTime, cancellationToken);
339+
Boolean fileSent = await this.UploadFile(uploadFile.Item2, Guid.Empty, dateTime, cancellationToken);
340+
341+
if (fileSent == false){
342+
return false;
343+
}
344+
345+
return true;
316346
}
317347

318348
public async Task<MerchantResponse> GetMerchant(Guid estateId, Guid merchantId, CancellationToken cancellationToken){
@@ -335,7 +365,7 @@ public async Task<MerchantResponse> GetMerchant(Guid estateId, Guid merchantId,
335365

336366
}
337367

338-
public async Task GenerateMerchantStatement(Guid estateId, Guid merchantId, DateTime statementDateTime, CancellationToken cancellationToken)
368+
public async Task<Boolean> GenerateMerchantStatement(Guid estateId, Guid merchantId, DateTime statementDateTime, CancellationToken cancellationToken)
339369
{
340370
try
341371
{
@@ -361,14 +391,15 @@ public async Task GenerateMerchantStatement(Guid estateId, Guid merchantId, Date
361391
}
362392

363393
this.WriteTrace($"Generate Merchant Statement Request sent for Estate [{estateId}] and Merchant [{merchantId}] StatementDate [{statementDateTime:dd-MM-yyyy}]");
394+
return true;
364395

365396
}
366397
catch (Exception ex)
367398
{
368399
this.WriteError($"Error sending Generate Merchant Statement Request for Date [{statementDateTime:dd-MM-yyyy}] and Estate [{estateId}] and Merchant [{merchantId}]");
369400
this.WriteError(ex);
401+
return false;
370402
}
371-
372403
}
373404

374405
public event TraceHandler? TraceGenerated;
@@ -673,51 +704,62 @@ private Int32 GetTransactionNumber(){
673704
return this.TransactionNumber;
674705
}
675706

676-
private async Task SendMerchantDepositRequest(MerchantResponse merchant, MakeMerchantDepositRequest request, CancellationToken cancellationToken){
707+
private async Task<Boolean> SendMerchantDepositRequest(MerchantResponse merchant, MakeMerchantDepositRequest request, CancellationToken cancellationToken){
677708
if (this.RunningMode == RunningMode.WhatIf){
678709
this.WriteTrace($"Make Deposit [{request.Amount}] for Merchant [{merchant.MerchantName}]");
679-
return;
710+
return true;
680711
}
681712
String token = await this.GetAuthToken(cancellationToken);
682713
try{
683714

684715
this.WriteTrace($"About to make Deposit [{request.Amount}] for Merchant [{merchant.MerchantName}]");
685716
MakeMerchantDepositResponse response = await this.EstateClient.MakeMerchantDeposit(token, merchant.EstateId, merchant.MerchantId, request, cancellationToken);
686717
this.WriteTrace($"Deposit [{request.Amount}] made for Merchant [{merchant.MerchantName}]");
718+
return true;
687719
}
688720
catch (Exception ex)
689721
{
690722
this.WriteError($"Error making merchant deposit for merchant [{merchant.MerchantName}]");
691723
this.WriteError(ex);
724+
return false;
692725
}
693726
}
694727

695-
private async Task SendSaleTransaction(MerchantResponse merchant, SaleTransactionRequest request, CancellationToken cancellationToken){
728+
private async Task<Boolean> SendSaleTransaction(MerchantResponse merchant, SaleTransactionRequest request, CancellationToken cancellationToken){
696729
if (this.RunningMode == RunningMode.WhatIf){
697730
this.WriteTrace($"Send Sale for Merchant [{merchant.MerchantName}] - {request.TransactionNumber} - {request.OperatorIdentifier} - {request.GetAmount()}");
698-
return;
731+
return true;
699732
}
700733

701734
String token = await this.GetAuthToken(cancellationToken);
702-
SerialisedMessage requestSerialisedMessage = request.CreateSerialisedMessage();
703-
SerialisedMessage responseSerialisedMessage = null;
704735

705-
this.WriteTrace($"About to Send sale for Merchant [{merchant.MerchantName}]");
706-
for (int i = 0; i < 3; i++){
707-
try
708-
{
709-
responseSerialisedMessage =
710-
await this.TransactionProcessorClient.PerformTransaction(token, requestSerialisedMessage, CancellationToken.None);
711-
break;
712-
}
713-
catch(TaskCanceledException e){
714-
this.WriteError(e);
736+
try{
737+
SerialisedMessage requestSerialisedMessage = request.CreateSerialisedMessage();
738+
SerialisedMessage responseSerialisedMessage = null;
739+
740+
this.WriteTrace($"About to Send sale for Merchant [{merchant.MerchantName}]");
741+
for (int i = 0; i < 3; i++){
742+
try{
743+
responseSerialisedMessage =
744+
await this.TransactionProcessorClient.PerformTransaction(token, requestSerialisedMessage, CancellationToken.None);
745+
break;
746+
}
747+
catch(TaskCanceledException e){
748+
this.WriteError(e);
749+
}
715750
}
716-
}
717751

718-
SaleTransactionResponse saleTransactionResponse = responseSerialisedMessage.GetSerialisedMessageResponseDTO<SaleTransactionResponse>();
752+
SaleTransactionResponse saleTransactionResponse = responseSerialisedMessage.GetSerialisedMessageResponseDTO<SaleTransactionResponse>();
753+
754+
this.WriteTrace($"Sale Transaction for Merchant [{merchant.MerchantName}] sent");
719755

720-
this.WriteTrace($"Sale Transaction for Merchant [{merchant.MerchantName}] sent");
756+
return true;
757+
}
758+
catch(Exception ex){
759+
this.WriteError($"Error sending sale for merchant [{merchant.MerchantName}]");
760+
this.WriteError(ex);
761+
return false;
762+
}
721763
}
722764

723765
private async Task SendLogonTransaction(MerchantResponse merchant, LogonTransactionRequest request, CancellationToken cancellationToken)
@@ -737,7 +779,7 @@ private async Task SendLogonTransaction(MerchantResponse merchant, LogonTransact
737779
SaleTransactionResponse saleTransactionResponse = responseSerialisedMessage.GetSerialisedMessageResponseDTO<SaleTransactionResponse>();
738780
}
739781

740-
private async Task UploadFile(UploadFile uploadFile, Guid userId, DateTime fileDateTime, CancellationToken cancellationToken){
782+
private async Task<Boolean> UploadFile(UploadFile uploadFile, Guid userId, DateTime fileDateTime, CancellationToken cancellationToken){
741783
var formData = new MultipartFormDataContent();
742784
String token = await this.GetAuthToken(cancellationToken);
743785

@@ -766,11 +808,13 @@ private async Task UploadFile(UploadFile uploadFile, Guid userId, DateTime fileD
766808
response = await client.SendAsync(request, cancellationToken);
767809
}
768810
this.WriteTrace($"File uploaded for Merchant [{uploadFile.MerchantId}]");
811+
return true;
769812
}
770813
catch (Exception ex)
771814
{
772815
this.WriteError($"Error uploading file for merchant [{uploadFile.MerchantId}]");
773816
this.WriteError(ex);
817+
return false;
774818
}
775819
}
776820

0 commit comments

Comments
 (0)