@@ -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