diff --git a/TransactionProcessorACL.BusinessLogic.Tests/MediatorTests.cs b/TransactionProcessorACL.BusinessLogic.Tests/MediatorTests.cs index 04c968f..e26f372 100644 --- a/TransactionProcessorACL.BusinessLogic.Tests/MediatorTests.cs +++ b/TransactionProcessorACL.BusinessLogic.Tests/MediatorTests.cs @@ -128,20 +128,20 @@ public async Task> ProcessReconciliation(G Decimal transactionValue, CancellationToken cancellationToken) => Result.Success(new ProcessReconciliationResponse()); - public async Task GetVoucher(Guid estateId, - Guid contractId, - String voucherCode, - CancellationToken cancellationToken) + public async Task> GetVoucher(Guid estateId, + Guid contractId, + String voucherCode, + CancellationToken cancellationToken) { - return new GetVoucherResponse(); + return Result.Success(new GetVoucherResponse()); } - public async Task RedeemVoucher(Guid estateId, - Guid contractId, - String voucherCode, + public async Task> RedeemVoucher(Guid estateId, + Guid contractId, + String voucherCode, CancellationToken cancellationToken) { - return new RedeemVoucherResponse(); + return Result.Success(new RedeemVoucherResponse()); } public async Task>> GetMerchantContracts(Guid estateId, diff --git a/TransactionProcessorACL.BusinessLogic.Tests/TransactionProcessorACLApplicationServiceTests.cs b/TransactionProcessorACL.BusinessLogic.Tests/TransactionProcessorACLApplicationServiceTests.cs index 9650fc2..bbe03d2 100644 --- a/TransactionProcessorACL.BusinessLogic.Tests/TransactionProcessorACLApplicationServiceTests.cs +++ b/TransactionProcessorACL.BusinessLogic.Tests/TransactionProcessorACLApplicationServiceTests.cs @@ -416,15 +416,16 @@ public async Task VoucherManagementACLApplicationService_GetVoucher_VoucherRetri .ReturnsAsync(TestData.GetVoucherResponse); securityServiceClient.Setup(s => s.GetToken(It.IsAny(), It.IsAny(), It.IsAny())).ReturnsAsync(Result.Success(TestData.TokenResponse)); - GetVoucherResponse voucherResponse = await applicationService.GetVoucher(TestData.EstateId, TestData.ContractId, TestData.VoucherCode, CancellationToken.None); - - voucherResponse.ShouldNotBeNull(); - voucherResponse.VoucherCode.ShouldBe(TestData.GetVoucherResponse.VoucherCode); - voucherResponse.ContractId.ShouldBe(TestData.ContractId); - voucherResponse.EstateId.ShouldBe(TestData.EstateId); - voucherResponse.ExpiryDate.ShouldBe(TestData.GetVoucherResponse.ExpiryDate); - voucherResponse.Value.ShouldBe(TestData.GetVoucherResponse.Value); - voucherResponse.VoucherId.ShouldBe(TestData.GetVoucherResponse.VoucherId); + Result voucherResponse = await applicationService.GetVoucher(TestData.EstateId, TestData.ContractId, TestData.VoucherCode, CancellationToken.None); + + voucherResponse.IsSuccess.ShouldBeTrue(); + voucherResponse.Data.ShouldNotBeNull(); + voucherResponse.Data.VoucherCode.ShouldBe(TestData.GetVoucherResponse.VoucherCode); + voucherResponse.Data.ContractId.ShouldBe(TestData.ContractId); + voucherResponse.Data.EstateId.ShouldBe(TestData.EstateId); + voucherResponse.Data.ExpiryDate.ShouldBe(TestData.GetVoucherResponse.ExpiryDate); + voucherResponse.Data.Value.ShouldBe(TestData.GetVoucherResponse.Value); + voucherResponse.Data.VoucherId.ShouldBe(TestData.GetVoucherResponse.VoucherId); } [Fact] @@ -432,10 +433,9 @@ public async Task VoucherManagementACLApplicationService_GetVoucher_GetTokenFail { securityServiceClient.Setup(s => s.GetToken(It.IsAny(), It.IsAny(), It.IsAny())).ReturnsAsync(Result.Failure()); - GetVoucherResponse voucherResponse = await applicationService.GetVoucher(TestData.EstateId, TestData.ContractId, TestData.VoucherCode, CancellationToken.None); + Result voucherResponse = await applicationService.GetVoucher(TestData.EstateId, TestData.ContractId, TestData.VoucherCode, CancellationToken.None); - voucherResponse.ShouldNotBeNull(); - voucherResponse.ResponseCode.ShouldBe("0004"); + voucherResponse.IsFailed.ShouldBeTrue(); } [Fact] @@ -445,10 +445,9 @@ public async Task VoucherManagementACLApplicationService_GetVoucher_GetVoucherFa .ReturnsAsync(Result.Failure()); securityServiceClient.Setup(s => s.GetToken(It.IsAny(), It.IsAny(), It.IsAny())).ReturnsAsync(Result.Success(TestData.TokenResponse)); - GetVoucherResponse voucherResponse = await applicationService.GetVoucher(TestData.EstateId, TestData.ContractId, TestData.VoucherCode, CancellationToken.None); + Result voucherResponse = await applicationService.GetVoucher(TestData.EstateId, TestData.ContractId, TestData.VoucherCode, CancellationToken.None); - voucherResponse.ShouldNotBeNull(); - voucherResponse.ResponseCode.ShouldBe("0005"); + voucherResponse.IsFailed.ShouldBeTrue(); } [Fact] @@ -458,11 +457,9 @@ public async Task VoucherManagementACLApplicationService_GetVoucher_ExceptionErr .ThrowsAsync(new Exception("Error")); securityServiceClient.Setup(s => s.GetToken(It.IsAny(), It.IsAny(), It.IsAny())).ReturnsAsync(Result.Success(TestData.TokenResponse)); - GetVoucherResponse voucherResponse = await applicationService.GetVoucher(TestData.EstateId, TestData.ContractId, TestData.VoucherCode, CancellationToken.None); + Result voucherResponse = await applicationService.GetVoucher(TestData.EstateId, TestData.ContractId, TestData.VoucherCode, CancellationToken.None); - voucherResponse.ShouldNotBeNull(); - voucherResponse.ResponseMessage.ShouldBe(TestData.VoucherExceptionResponseMessage); - voucherResponse.ResponseCode.ShouldBe(TestData.ExceptionErrorResponseCode); + voucherResponse.IsFailed.ShouldBeTrue(); } [Fact] @@ -472,11 +469,11 @@ public async Task VoucherManagementACLApplicationService_RedeemVoucher_VoucherRe .ReturnsAsync(Result.Success); securityServiceClient.Setup(s => s.GetToken(It.IsAny(), It.IsAny(), It.IsAny())).ReturnsAsync(Result.Success(TestData.TokenResponse)); - RedeemVoucherResponse voucherResponse = await applicationService.RedeemVoucher(TestData.EstateId, TestData.ContractId, TestData.VoucherCode, CancellationToken.None); + Result voucherResponse = await applicationService.RedeemVoucher(TestData.EstateId, TestData.ContractId, TestData.VoucherCode, CancellationToken.None); - voucherResponse.ShouldNotBeNull(); - voucherResponse.ContractId.ShouldBe(TestData.ContractId); - voucherResponse.EstateId.ShouldBe(TestData.EstateId); + voucherResponse.IsSuccess.ShouldBeTrue(); + voucherResponse.Data.ContractId.ShouldBe(TestData.ContractId); + voucherResponse.Data.EstateId.ShouldBe(TestData.EstateId); } [Fact] @@ -486,10 +483,9 @@ public async Task VoucherManagementACLApplicationService_RedeemVoucher_GetTokenF .ReturnsAsync(Result.Failure); securityServiceClient.Setup(s => s.GetToken(It.IsAny(), It.IsAny(), It.IsAny())).ReturnsAsync(Result.Failure()); - RedeemVoucherResponse voucherResponse = await applicationService.RedeemVoucher(TestData.EstateId, TestData.ContractId, TestData.VoucherCode, CancellationToken.None); + Result voucherResponse = await applicationService.RedeemVoucher(TestData.EstateId, TestData.ContractId, TestData.VoucherCode, CancellationToken.None); - voucherResponse.ShouldNotBeNull(); - voucherResponse.ResponseCode.ShouldBe("0004"); + voucherResponse.IsFailed.ShouldBeTrue(); } [Fact] @@ -499,10 +495,9 @@ public async Task VoucherManagementACLApplicationService_RedeemVoucher_RedeemVou .ReturnsAsync(Result.Failure()); securityServiceClient.Setup(s => s.GetToken(It.IsAny(), It.IsAny(), It.IsAny())).ReturnsAsync(Result.Success(TestData.TokenResponse)); - RedeemVoucherResponse voucherResponse = await applicationService.RedeemVoucher(TestData.EstateId, TestData.ContractId, TestData.VoucherCode, CancellationToken.None); + Result voucherResponse = await applicationService.RedeemVoucher(TestData.EstateId, TestData.ContractId, TestData.VoucherCode, CancellationToken.None); - voucherResponse.ShouldNotBeNull(); - voucherResponse.ResponseCode.ShouldBe("0005"); + voucherResponse.IsFailed.ShouldBeTrue(); } [Fact] @@ -513,11 +508,9 @@ public async Task VoucherManagementACLApplicationService_RedeemVoucher_Exception securityServiceClient.Setup(s => s.GetToken(It.IsAny(), It.IsAny(), It.IsAny())).ReturnsAsync(Result.Success(TestData.TokenResponse)); - RedeemVoucherResponse voucherResponse = await applicationService.RedeemVoucher(TestData.EstateId, TestData.ContractId, TestData.VoucherCode, CancellationToken.None); + Result voucherResponse = await applicationService.RedeemVoucher(TestData.EstateId, TestData.ContractId, TestData.VoucherCode, CancellationToken.None); - voucherResponse.ShouldNotBeNull(); - voucherResponse.ResponseMessage.ShouldBe(TestData.RedeemVoucherExceptionResponseMessage); - voucherResponse.ResponseCode.ShouldBe(TestData.ExceptionErrorResponseCode); + voucherResponse.IsFailed.ShouldBeTrue(); } [Theory] diff --git a/TransactionProcessorACL.BusinessLogic/Services/ITransactionProcessorACLApplicationService.cs b/TransactionProcessorACL.BusinessLogic/Services/ITransactionProcessorACLApplicationService.cs index 5d9da57..c1f4f15 100644 --- a/TransactionProcessorACL.BusinessLogic/Services/ITransactionProcessorACLApplicationService.cs +++ b/TransactionProcessorACL.BusinessLogic/Services/ITransactionProcessorACLApplicationService.cs @@ -42,12 +42,12 @@ Task> ProcessReconciliation(Guid estateId, Decimal transactionValue, CancellationToken cancellationToken); - Task GetVoucher(Guid estateId, + Task> GetVoucher(Guid estateId, Guid contractId, String voucherCode, CancellationToken cancellationToken); - Task RedeemVoucher(Guid estateId, + Task> RedeemVoucher(Guid estateId, Guid contractId, String voucherCode, CancellationToken cancellationToken); diff --git a/TransactionProcessorACL.BusinessLogic/Services/TransactionProcessorACLApplicationService.cs b/TransactionProcessorACL.BusinessLogic/Services/TransactionProcessorACLApplicationService.cs index 8c8a90f..b9dd723 100644 --- a/TransactionProcessorACL.BusinessLogic/Services/TransactionProcessorACLApplicationService.cs +++ b/TransactionProcessorACL.BusinessLogic/Services/TransactionProcessorACLApplicationService.cs @@ -76,11 +76,7 @@ public async Task> ProcessLogonTransacti String deviceIdentifier, CancellationToken cancellationToken) { - // Get a client token to call the Transaction Processor - String clientId = ConfigurationReader.GetValue("AppSettings", "ClientId"); - String clientSecret = ConfigurationReader.GetValue("AppSettings", "ClientSecret"); - - Result accessTokenResult = await this.SecurityServiceClient.GetToken(clientId, clientSecret, cancellationToken); + Result accessTokenResult = await this.GetAccessToken(cancellationToken); if (accessTokenResult.IsFailed) { return ResultHelpers.CreateFailure(accessTokenResult); } @@ -127,10 +123,10 @@ public async Task> ProcessSaleTransaction Dictionary additionalRequestMetadata, CancellationToken cancellationToken) { Result accessTokenResult = await this.GetAccessToken(cancellationToken); - if (accessTokenResult.IsFailed) - { + if (accessTokenResult.IsFailed) { return ResultHelpers.CreateFailure(accessTokenResult); } + TokenResponse accessToken = accessTokenResult.Data; SaleTransactionRequest saleTransactionRequest = this.BuildSaleTransactionRequest(transactionNumber, @@ -250,11 +246,7 @@ public async Task> ProcessReconciliation(G Decimal transactionValue, CancellationToken cancellationToken) { - // Get a client token to call the Transaction Processor - String clientId = ConfigurationReader.GetValue("AppSettings", "ClientId"); - String clientSecret = ConfigurationReader.GetValue("AppSettings", "ClientSecret"); - - Result accessTokenResult = await this.SecurityServiceClient.GetToken(clientId, clientSecret, cancellationToken); + Result accessTokenResult = await this.GetAccessToken(cancellationToken); if (accessTokenResult.IsFailed) { return ResultHelpers.CreateFailure(accessTokenResult); } @@ -281,110 +273,74 @@ public async Task> ProcessReconciliation(G } } - public async Task GetVoucher(Guid estateId, - Guid contractId, - String voucherCode, - CancellationToken cancellationToken) + public async Task> GetVoucher(Guid estateId, + Guid contractId, + String voucherCode, + CancellationToken cancellationToken) { - // Get a client token to call the Voucher Management - String clientId = ConfigurationReader.GetValue("AppSettings", "ClientId"); - String clientSecret = ConfigurationReader.GetValue("AppSettings", "ClientSecret"); - - Result accessTokenResult = await this.SecurityServiceClient.GetToken(clientId, clientSecret, cancellationToken); + Result accessTokenResult = await this.GetAccessToken(cancellationToken); if (accessTokenResult.IsFailed) { - return CreateGetVoucherTokenErrorResponse(); + return ResultHelpers.CreateFailure(accessTokenResult); } TokenResponse accessToken = accessTokenResult.Data; - try - { + try { Result getVoucherResult = await this.TransactionProcessorClient.GetVoucherByCode(accessToken.AccessToken, estateId, voucherCode, cancellationToken); - if (getVoucherResult.IsFailed) - { - return CreateGetVoucherFailureResponse(getVoucherResult.Message); + if (getVoucherResult.IsFailed) { + return ResultHelpers.CreateFailure(getVoucherResult); } - return CreateGetVoucherSuccessResponse(estateId, contractId, getVoucherResult.Data); + return Result.Success(CreateGetVoucherSuccessResponse(estateId, contractId, getVoucherResult.Data)); } - catch (Exception ex) - { - return CreateGetVoucherErrorResponse(ex); + catch (Exception ex) { + return Result.Failure(ex.GetExceptionMessages()); } } - public async Task RedeemVoucher(Guid estateId, - Guid contractId, - String voucherCode, - CancellationToken cancellationToken) + public async Task> RedeemVoucher(Guid estateId, + Guid contractId, + String voucherCode, + CancellationToken cancellationToken) { - // Get a client token to call the Voucher Management - String clientId = ConfigurationReader.GetValue("AppSettings", "ClientId"); - String clientSecret = ConfigurationReader.GetValue("AppSettings", "ClientSecret"); - - Result accessTokenResult = await this.SecurityServiceClient.GetToken(clientId, clientSecret, cancellationToken); + Result accessTokenResult = await this.GetAccessToken(cancellationToken); if (accessTokenResult.IsFailed) { - return new RedeemVoucherResponse { - ResponseCode = "0004", // Token error - ResponseMessage = "Token Error", - }; + return ResultHelpers.CreateFailure(accessTokenResult); } + TokenResponse accessToken = accessTokenResult.Data; - RedeemVoucherResponse response; - - try - { - RedeemVoucherRequest redeemVoucherRequest = new() { - EstateId = estateId, - VoucherCode = voucherCode - }; + try { + RedeemVoucherRequest redeemVoucherRequest = new() { EstateId = estateId, VoucherCode = voucherCode }; Result redeemVoucherResponseResult = await this.TransactionProcessorClient.RedeemVoucher(accessToken.AccessToken, redeemVoucherRequest, cancellationToken); - if (redeemVoucherResponseResult.IsFailed) - { - return new RedeemVoucherResponse - { - ResponseCode = "0005", // Voucher not found or already redeemed - ResponseMessage = redeemVoucherResponseResult.Message, - }; + if (redeemVoucherResponseResult.IsFailed) { + return ResultHelpers.CreateFailure(redeemVoucherResponseResult); } - response = new RedeemVoucherResponse - { + return Result.Success(new RedeemVoucherResponse { ResponseCode = "0000", // Success ResponseMessage = "SUCCESS", ContractId = contractId, EstateId = estateId - }; + }); } - catch (Exception ex) - { - // This means there is an error in the request - response = new RedeemVoucherResponse - { - ResponseCode = "0001", // Request Message error - ResponseMessage = "Redeem Voucher Failed", - ErrorMessages = ex.GetExceptionMessages() - }; + catch (Exception ex) { + return Result.Failure(ex.GetExceptionMessages()); } - - return response; } public async Task>> GetMerchantContracts(Guid estateId, Guid merchantId, CancellationToken cancellationToken) { Logger.LogInformation($"GetMerchantContracts: {estateId} {merchantId}"); - // Get a client token to call the Transaction Processor - String clientId = ConfigurationReader.GetValue("AppSettings", "ClientId"); - String clientSecret = ConfigurationReader.GetValue("AppSettings", "ClientSecret"); - Result accessTokenResult = await this.SecurityServiceClient.GetToken(clientId, clientSecret, cancellationToken); + Result accessTokenResult = await this.GetAccessToken(cancellationToken); if (accessTokenResult.IsFailed) { return ResultHelpers.CreateFailure(accessTokenResult); } + TokenResponse accessToken = accessTokenResult.Data; Result> result = await this.TransactionProcessorClient.GetMerchantContracts(accessToken.AccessToken, estateId, merchantId, cancellationToken); @@ -459,14 +415,11 @@ public async Task> GetMerchant(Guid estateId, Guid merchantId, CancellationToken cancellationToken) { Logger.LogWarning("in GetMerchant"); - // Get a client token to call the Transaction Processor - String clientId = ConfigurationReader.GetValue("AppSettings", "ClientId"); - String clientSecret = ConfigurationReader.GetValue("AppSettings", "ClientSecret"); - - Result accessTokenResult = await this.SecurityServiceClient.GetToken(clientId, clientSecret, cancellationToken); + Result accessTokenResult = await this.GetAccessToken(cancellationToken); if (accessTokenResult.IsFailed) { return ResultHelpers.CreateFailure(accessTokenResult); } + Logger.LogWarning("in GetMerchant - Got Token"); TokenResponse accessToken = accessTokenResult.Data; @@ -511,35 +464,7 @@ private static GetVoucherResponse CreateGetVoucherSuccessResponse(Guid estateId, Balance = getVoucherResponse.Balance }; } - - private static GetVoucherResponse CreateGetVoucherFailureResponse(String responseMessage) - { - return new GetVoucherResponse - { - ResponseCode = "0005", // Voucher not found - ResponseMessage = responseMessage - }; - } - - private static GetVoucherResponse CreateGetVoucherTokenErrorResponse() - { - return new GetVoucherResponse - { - ResponseCode = "0004", // Token error - ResponseMessage = "Token Error", - }; - } - - private static GetVoucherResponse CreateGetVoucherErrorResponse(Exception ex) - { - return new GetVoucherResponse - { - ResponseCode = "0001", // Request Message error - ResponseMessage = "Get Voucher Failed", - ErrorMessages = ex.GetExceptionMessages() - }; - } - + private static ProcessReconciliationResponse CreateReconciliationErrorResponse(Guid estateId, Guid merchantId, Exception ex) @@ -569,7 +494,7 @@ private static SerialisedMessage CreateReconciliationRequestMessage(Guid estateI TransactionValue = transactionValue }; - SerialisedMessage requestSerialisedMessage = new SerialisedMessage(); + SerialisedMessage requestSerialisedMessage = new(); requestSerialisedMessage.Metadata.Add(MetadataContants.KeyNameEstateId, estateId.ToString()); requestSerialisedMessage.Metadata.Add(MetadataContants.KeyNameMerchantId, merchantId.ToString()); requestSerialisedMessage.SerialisedData = JsonConvert.SerializeObject(reconciliationRequest, @@ -625,7 +550,7 @@ private static SerialisedMessage CreateLogonRequestMessage(Guid estateId, TransactionType = "LOGON" }; - SerialisedMessage requestSerialisedMessage = new SerialisedMessage(); + SerialisedMessage requestSerialisedMessage = new(); requestSerialisedMessage.Metadata.Add(MetadataContants.KeyNameEstateId, estateId.ToString()); requestSerialisedMessage.Metadata.Add(MetadataContants.KeyNameMerchantId, merchantId.ToString()); requestSerialisedMessage.SerialisedData = JsonConvert.SerializeObject(logonTransactionRequest,