Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ public async Task ProcessSaleTransactionRequestHandler_Handle_RequestIsHandled()
It.IsAny<String>(),
It.IsAny<Decimal>(),
It.IsAny<String>(),
It.IsAny<String>(),
It.IsAny<CancellationToken>())).ReturnsAsync(TestData.ProcessSaleTransactionResponse);

ProcessSaleTransactionRequestHandler requestHandler = new ProcessSaleTransactionRequestHandler(applicationService.Object);
Expand Down
4 changes: 3 additions & 1 deletion TransactionProcessorACL.BusinessLogic.Tests/RequestTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,8 @@ public void ProcessSaleTransactionRequest_CanBeCreated_IsCreated()
TestData.DeviceIdentifier,
TestData.OperatorIdentifier,
TestData.SaleAmount,
TestData.CustomerAccountNumber);
TestData.CustomerAccountNumber,
TestData.CustomerEmailAddress);

request.EstateId.ShouldBe(TestData.EstateId);
request.MerchantId.ShouldBe(TestData.MerchantId);
Expand All @@ -53,6 +54,7 @@ public void ProcessSaleTransactionRequest_CanBeCreated_IsCreated()
request.OperatorIdentifier.ShouldBe(TestData.OperatorIdentifier);
request.Amount.ShouldBe(TestData.SaleAmount);
request.CustomerAccountNumber.ShouldBe(TestData.CustomerAccountNumber);
request.CustomerEmailAddress.ShouldBe(TestData.CustomerEmailAddress);
}

#endregion
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.6.0" />
<PackageReference Include="Moq" Version="4.13.1" />
<PackageReference Include="Shouldly" Version="3.0.2" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="coverlet.msbuild" Version="2.8.0">
<PackageReference Include="coverlet.msbuild" Version="2.8.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ public async Task TransactionProcessorACLApplicationService_ProcessSaleTransacti
TestData.OperatorIdentifier,
TestData.SaleAmount,
TestData.CustomerAccountNumber,
TestData.CustomerEmailAddress,
CancellationToken.None);

saleResponse.ShouldNotBeNull();
Expand Down Expand Up @@ -143,6 +144,7 @@ public async Task TransactionProcessorACLApplicationService_ProcessSaleTransacti
TestData.OperatorIdentifier,
TestData.SaleAmount,
TestData.CustomerAccountNumber,
TestData.CustomerEmailAddress,
CancellationToken.None);

saleResponse.ShouldNotBeNull();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,55 +59,4 @@ public async Task<ProcessLogonTransactionResponse> Handle(ProcessLogonTransactio

#endregion
}

public class ProcessSaleTransactionRequestHandler : IRequestHandler<ProcessSaleTransactionRequest, ProcessSaleTransactionResponse>
{
#region Fields

/// <summary>
/// The application service
/// </summary>
private readonly ITransactionProcessorACLApplicationService ApplicationService;

#endregion

#region Constructors

/// <summary>
/// Initializes a new instance of the <see cref="ProcessSaleTransactionRequestHandler"/> class.
/// </summary>
/// <param name="applicationService">The application service.</param>
public ProcessSaleTransactionRequestHandler(ITransactionProcessorACLApplicationService applicationService)
{
this.ApplicationService = applicationService;
}

#endregion

#region Methods

/// <summary>
/// Handles the specified request.
/// </summary>
/// <param name="request">The request.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>
/// Response from the request
/// </returns>
public async Task<ProcessSaleTransactionResponse> Handle(ProcessSaleTransactionRequest request,
CancellationToken cancellationToken)
{
return await this.ApplicationService.ProcessSaleTransaction(request.EstateId,
request.MerchantId,
request.TransactionDateTime,
request.TransactionNumber,
request.DeviceIdentifier,
request.OperatorIdentifier,
request.Amount,
request.CustomerAccountNumber,
cancellationToken);
}

#endregion
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
namespace TransactionProcessorACL.BusinessLogic.RequestHandlers
{
using System.Threading;
using System.Threading.Tasks;
using MediatR;
using Models;
using Requests;
using Services;

public class ProcessSaleTransactionRequestHandler : IRequestHandler<ProcessSaleTransactionRequest, ProcessSaleTransactionResponse>
{
#region Fields

/// <summary>
/// The application service
/// </summary>
private readonly ITransactionProcessorACLApplicationService ApplicationService;

#endregion

#region Constructors

/// <summary>
/// Initializes a new instance of the <see cref="ProcessSaleTransactionRequestHandler"/> class.
/// </summary>
/// <param name="applicationService">The application service.</param>
public ProcessSaleTransactionRequestHandler(ITransactionProcessorACLApplicationService applicationService)
{
this.ApplicationService = applicationService;
}

#endregion

#region Methods

/// <summary>
/// Handles the specified request.
/// </summary>
/// <param name="request">The request.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>
/// Response from the request
/// </returns>
public async Task<ProcessSaleTransactionResponse> Handle(ProcessSaleTransactionRequest request,
CancellationToken cancellationToken)
{
return await this.ApplicationService.ProcessSaleTransaction(request.EstateId,
request.MerchantId,
request.TransactionDateTime,
request.TransactionNumber,
request.DeviceIdentifier,
request.OperatorIdentifier,
request.Amount,
request.CustomerAccountNumber,
request.CustomerEmailAddress,
cancellationToken);
}

#endregion
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,21 +19,24 @@ public class ProcessSaleTransactionRequest : IRequest<ProcessSaleTransactionResp
/// <param name="operatorIdentifier">The operator identifier.</param>
/// <param name="amount">The amount.</param>
/// <param name="customerAccountNumber">The customer account number.</param>
/// <param name="customerEmailAddress">The customer email address.</param>
private ProcessSaleTransactionRequest(Guid estateId,
Guid merchantId,
DateTime transactionDateTime,
String transactionNumber,
String deviceIdentifier,
String operatorIdentifier,
Decimal amount,
String customerAccountNumber)
String customerAccountNumber,
String customerEmailAddress)
{
this.EstateId = estateId;
this.MerchantId = merchantId;
this.DeviceIdentifier = deviceIdentifier;
this.OperatorIdentifier = operatorIdentifier;
this.Amount = amount;
this.CustomerAccountNumber = customerAccountNumber;
this.CustomerEmailAddress = customerEmailAddress;
this.TransactionDateTime = transactionDateTime;
this.TransactionNumber = transactionNumber;
}
Expand All @@ -58,6 +61,14 @@ private ProcessSaleTransactionRequest(Guid estateId,
/// </value>
public String CustomerAccountNumber { get; }

/// <summary>
/// Gets the customer email address.
/// </summary>
/// <value>
/// The customer email address.
/// </value>
public String CustomerEmailAddress { get; private set; }

/// <summary>
/// Gets the device identifier.
/// </summary>
Expand Down Expand Up @@ -121,6 +132,7 @@ private ProcessSaleTransactionRequest(Guid estateId,
/// <param name="operatorIdentifier">The operator identifier.</param>
/// <param name="amount">The amount.</param>
/// <param name="customerAccountNumber">The customer account number.</param>
/// <param name="customerEmailAddress">The customer email address.</param>
/// <returns></returns>
public static ProcessSaleTransactionRequest Create(Guid estateId,
Guid merchantId,
Expand All @@ -129,7 +141,8 @@ public static ProcessSaleTransactionRequest Create(Guid estateId,
String deviceIdentifier,
String operatorIdentifier,
Decimal amount,
String customerAccountNumber)
String customerAccountNumber,
String customerEmailAddress)
{
return new ProcessSaleTransactionRequest(estateId,
merchantId,
Expand All @@ -138,7 +151,8 @@ public static ProcessSaleTransactionRequest Create(Guid estateId,
deviceIdentifier,
operatorIdentifier,
amount,
customerAccountNumber);
customerAccountNumber,
customerEmailAddress);
}

#endregion
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ Task<ProcessLogonTransactionResponse> ProcessLogonTransaction(Guid estateId,
/// <param name="operatorIdentifier">The operator identifier.</param>
/// <param name="amount">The amount.</param>
/// <param name="customerAccountNumber">The customer account number.</param>
/// <param name="customerEmailAddress">The customer email address.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns></returns>
Task<ProcessSaleTransactionResponse> ProcessSaleTransaction(Guid estateId,
Expand All @@ -49,6 +50,7 @@ Task<ProcessSaleTransactionResponse> ProcessSaleTransaction(Guid estateId,
String operatorIdentifier,
Decimal amount,
String customerAccountNumber,
String customerEmailAddress,
CancellationToken cancellationToken);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,7 @@ public async Task<ProcessLogonTransactionResponse> ProcessLogonTransaction(Guid
/// <param name="operatorIdentifier">The operator identifier.</param>
/// <param name="amount">The amount.</param>
/// <param name="customerAccountNumber">The customer account number.</param>
/// <param name="customerEmailAddress">The customer email address.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns></returns>
public async Task<ProcessSaleTransactionResponse> ProcessSaleTransaction(Guid estateId,
Expand All @@ -140,6 +141,7 @@ public async Task<ProcessSaleTransactionResponse> ProcessSaleTransaction(Guid es
String operatorIdentifier,
Decimal amount,
String customerAccountNumber,
String customerEmailAddress,
CancellationToken cancellationToken)
{
// Get a client token to call the Transaction Processor
Expand All @@ -154,6 +156,7 @@ public async Task<ProcessSaleTransactionResponse> ProcessSaleTransaction(Guid es
saleTransactionRequest.TransactionDateTime = transactionDateTime;
saleTransactionRequest.TransactionType = "SALE";
saleTransactionRequest.OperatorIdentifier = operatorIdentifier;
saleTransactionRequest.CustomerEmailAddress = customerEmailAddress;

// Build up the metadata
saleTransactionRequest.AdditionalTransactionMetadata = new Dictionary<String, String>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<PackageReference Include="MediatR" Version="8.0.1" />
<PackageReference Include="SecurityService.Client" Version="0.0.9" />
<PackageReference Include="Shared" Version="0.0.12" />
<PackageReference Include="TransactionProcessor.Client" Version="0.0.5.3" />
<PackageReference Include="TransactionProcessor.Client" Version="0.0.7" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,14 @@ public class SaleTransactionRequestMessage : TransactionRequestMessage
/// </value>
public String OperatorIdentifier { get; set; }

/// <summary>
/// Gets or sets the customer email address.
/// </summary>
/// <value>
/// The customer email address.
/// </value>
public String CustomerEmailAddress { get; set; }

#endregion
}
}
Loading