@@ -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 ( ) ) ;
@@ -427,6 +407,36 @@ private async Task<Result> AddDeviceToMerchant(Guid merchantId,
427407 return await this . AggregateService . Save ( merchantAggregate . Data , cancellationToken ) ;
428408 }
429409
410+ private ProcessLogonTransactionResponse CreateLogonTransactionResponse ( TransactionCommands . ProcessLogonTransactionCommand command ,
411+ TransactionAggregate transactionAggregate ) {
412+ return new ProcessLogonTransactionResponse {
413+ ResponseMessage = transactionAggregate . ResponseMessage ,
414+ ResponseCode = transactionAggregate . ResponseCode ,
415+ EstateId = command . EstateId ,
416+ MerchantId = command . MerchantId ,
417+ TransactionId = command . TransactionId
418+ } ;
419+ }
420+
421+ private async Task < Result > RecordLogonTransactionValidation ( TransactionCommands . ProcessLogonTransactionCommand command ,
422+ TransactionAggregate transactionAggregate ,
423+ Result < TransactionValidationResult > validationResult ,
424+ CancellationToken cancellationToken ) {
425+ if ( validationResult . IsSuccess && this . IsSuccessfulLogonValidation ( validationResult . Data . ResponseCode ) ) {
426+ if ( validationResult . Data . ResponseCode == TransactionResponseCode . SuccessNeedToAddDevice ) {
427+ await this . AddDeviceToMerchant ( command . MerchantId , command . DeviceIdentifier , cancellationToken ) ;
428+ }
429+
430+ return transactionAggregate . AuthoriseTransactionLocally ( TransactionHelpers . GenerateAuthCode ( ) , validationResult . Data . ResponseCode , validationResult . Data . ResponseMessage ) ;
431+ }
432+
433+ return transactionAggregate . DeclineTransactionLocally ( validationResult . Data . ResponseCode , validationResult . Data . ResponseMessage ) ;
434+ }
435+
436+ private Boolean IsSuccessfulLogonValidation ( TransactionResponseCode responseCode ) {
437+ return responseCode == TransactionResponseCode . Success || responseCode == TransactionResponseCode . SuccessNeedToAddDevice ;
438+ }
439+
430440
431441
432442 private async Task < Result < Merchant > > GetMerchant ( Guid merchantId ,
0 commit comments