@@ -107,23 +107,9 @@ public async Task<Result<ProcessLogonTransactionResponse>> ProcessLogonTransacti
107107 return ResultHelpers . CreateFailure ( stateResult ) ;
108108
109109 Result < TransactionValidationResult > validationResult = await this . TransactionValidationService . ValidateLogonTransaction ( command . EstateId , command . MerchantId , command . DeviceIdentifier , cancellationToken ) ;
110-
111- if ( validationResult . IsSuccess && ( validationResult . Data . ResponseCode == TransactionResponseCode . Success || validationResult . Data . ResponseCode == TransactionResponseCode . SuccessNeedToAddDevice ) ) {
112- if ( validationResult . Data . ResponseCode == TransactionResponseCode . SuccessNeedToAddDevice ) {
113- await this . AddDeviceToMerchant ( command . MerchantId , command . DeviceIdentifier , cancellationToken ) ;
114- }
115-
116- // Record the successful validation
117- stateResult = transactionAggregate . AuthoriseTransactionLocally ( TransactionHelpers . GenerateAuthCode ( ) , validationResult . Data . ResponseCode , validationResult . Data . ResponseMessage ) ;
118- if ( stateResult . IsFailed )
119- return ResultHelpers . CreateFailure ( stateResult ) ;
120- }
121- else {
122- // Record the failure
123- stateResult = transactionAggregate . DeclineTransactionLocally ( validationResult . Data . ResponseCode , validationResult . Data . ResponseMessage ) ;
124- if ( stateResult . IsFailed )
125- return ResultHelpers . CreateFailure ( stateResult ) ;
126- }
110+ stateResult = await this . RecordLogonTransactionValidation ( command , transactionAggregate , validationResult , cancellationToken ) ;
111+ if ( stateResult . IsFailed )
112+ return ResultHelpers . CreateFailure ( stateResult ) ;
127113
128114 stateResult = transactionAggregate . CompleteTransaction ( ) ;
129115 if ( stateResult . IsFailed )
@@ -136,13 +122,7 @@ public async Task<Result<ProcessLogonTransactionResponse>> ProcessLogonTransacti
136122 Result saveResult = await this . AggregateService . Save ( transactionAggregate , cancellationToken ) ;
137123 if ( saveResult . IsFailed )
138124 return ResultHelpers . CreateFailure ( saveResult ) ;
139- return Result . Success ( new ProcessLogonTransactionResponse {
140- ResponseMessage = transactionAggregate . ResponseMessage ,
141- ResponseCode = transactionAggregate . ResponseCode ,
142- EstateId = command . EstateId ,
143- MerchantId = command . MerchantId ,
144- TransactionId = command . TransactionId
145- } ) ;
125+ return Result . Success ( this . CreateLogonTransactionResponse ( command , transactionAggregate ) ) ;
146126 }
147127 catch ( Exception ex ) {
148128 return Result . Failure ( ex . GetExceptionMessages ( ) ) ;
@@ -450,6 +430,36 @@ private async Task<Result> AddDeviceToMerchant(Guid merchantId,
450430 return await this . AggregateService . Save ( merchantAggregate . Data , cancellationToken ) ;
451431 }
452432
433+ private ProcessLogonTransactionResponse CreateLogonTransactionResponse ( TransactionCommands . ProcessLogonTransactionCommand command ,
434+ TransactionAggregate transactionAggregate ) {
435+ return new ProcessLogonTransactionResponse {
436+ ResponseMessage = transactionAggregate . ResponseMessage ,
437+ ResponseCode = transactionAggregate . ResponseCode ,
438+ EstateId = command . EstateId ,
439+ MerchantId = command . MerchantId ,
440+ TransactionId = command . TransactionId
441+ } ;
442+ }
443+
444+ private async Task < Result > RecordLogonTransactionValidation ( TransactionCommands . ProcessLogonTransactionCommand command ,
445+ TransactionAggregate transactionAggregate ,
446+ Result < TransactionValidationResult > validationResult ,
447+ CancellationToken cancellationToken ) {
448+ if ( validationResult . IsSuccess && this . IsSuccessfulLogonValidation ( validationResult . Data . ResponseCode ) ) {
449+ if ( validationResult . Data . ResponseCode == TransactionResponseCode . SuccessNeedToAddDevice ) {
450+ await this . AddDeviceToMerchant ( command . MerchantId , command . DeviceIdentifier , cancellationToken ) ;
451+ }
452+
453+ return transactionAggregate . AuthoriseTransactionLocally ( TransactionHelpers . GenerateAuthCode ( ) , validationResult . Data . ResponseCode , validationResult . Data . ResponseMessage ) ;
454+ }
455+
456+ return transactionAggregate . DeclineTransactionLocally ( validationResult . Data . ResponseCode , validationResult . Data . ResponseMessage ) ;
457+ }
458+
459+ private Boolean IsSuccessfulLogonValidation ( TransactionResponseCode responseCode ) {
460+ return responseCode == TransactionResponseCode . Success || responseCode == TransactionResponseCode . SuccessNeedToAddDevice ;
461+ }
462+
453463
454464
455465 private async Task < Result < Merchant > > GetMerchant ( Guid merchantId ,
0 commit comments