diff --git a/TransactionProcessor.BusinessLogic/Manager/FeeCalculationManager.cs b/TransactionProcessor.BusinessLogic/Manager/FeeCalculationManager.cs index 4463c2f9..2ad8e3e3 100644 --- a/TransactionProcessor.BusinessLogic/Manager/FeeCalculationManager.cs +++ b/TransactionProcessor.BusinessLogic/Manager/FeeCalculationManager.cs @@ -36,7 +36,8 @@ public List CalculateFees(List feeList FeeType = transactionFeeToCalculate.FeeType, FeeCalculationType = transactionFeeToCalculate.CalculationType, FeeId = transactionFeeToCalculate.FeeId, - FeeValue = transactionFeeToCalculate.Value + FeeValue = transactionFeeToCalculate.Value, + FeeCalculatedDateTime = DateTime.Now }); } @@ -49,8 +50,9 @@ public List CalculateFees(List feeList FeeType = transactionFeeToCalculate.FeeType, FeeCalculationType = transactionFeeToCalculate.CalculationType, FeeId = transactionFeeToCalculate.FeeId, - FeeValue = transactionFeeToCalculate.Value - }); + FeeValue = transactionFeeToCalculate.Value, + FeeCalculatedDateTime = DateTime.Now + }); } } diff --git a/TransactionProcessor.Models/CalculatedFee.cs b/TransactionProcessor.Models/CalculatedFee.cs index a7a9a976..ac2dd81d 100644 --- a/TransactionProcessor.Models/CalculatedFee.cs +++ b/TransactionProcessor.Models/CalculatedFee.cs @@ -27,6 +27,14 @@ public class CalculatedFee /// public CalculationType FeeCalculationType { get; set; } + /// + /// Gets or sets the fee calculated date time. + /// + /// + /// The fee calculated date time. + /// + public DateTime FeeCalculatedDateTime { get; set; } + /// /// Gets or sets the fee identifier. /// diff --git a/TransactionProcessor.Testing/TestData.cs b/TransactionProcessor.Testing/TestData.cs index 716a4860..421dc86b 100644 --- a/TransactionProcessor.Testing/TestData.cs +++ b/TransactionProcessor.Testing/TestData.cs @@ -699,6 +699,8 @@ public static TokenResponse TokenResponse() public static String TransactionFeeDescription = "Commission for Merchant"; public static Decimal TransactionFeeValue = 0.5m; + + public static DateTime TransactionFeeCalculateDateTime = new DateTime(2021, 3, 18); public static Decimal CalculatedFeeValue = 0.5m; public static Int32 ReconciliationTransactionCount = 1; diff --git a/TransactionProcessor.Transaction.DomainEvents/MerchantFeeAddedToTransactionEvent.cs b/TransactionProcessor.Transaction.DomainEvents/MerchantFeeAddedToTransactionEvent.cs index bf0828c7..1b24a6c9 100644 --- a/TransactionProcessor.Transaction.DomainEvents/MerchantFeeAddedToTransactionEvent.cs +++ b/TransactionProcessor.Transaction.DomainEvents/MerchantFeeAddedToTransactionEvent.cs @@ -21,13 +21,15 @@ public record MerchantFeeAddedToTransactionEvent : DomainEventRecord.DomainEvent /// Type of the fee calculation. /// The fee identifier. /// The fee value. + /// public MerchantFeeAddedToTransactionEvent(Guid aggregateId, Guid estateId, Guid merchantId, Decimal calculatedValue, Int32 feeCalculationType, Guid feeId, - Decimal feeValue) : base(aggregateId, Guid.NewGuid()) + Decimal feeValue, + DateTime feeCalculatedDateTime) : base(aggregateId, Guid.NewGuid()) { this.TransactionId = aggregateId; this.EstateId = estateId; @@ -36,6 +38,7 @@ public MerchantFeeAddedToTransactionEvent(Guid aggregateId, this.FeeCalculationType = feeCalculationType; this.FeeId = feeId; this.FeeValue = feeValue; + this.FeeCalculatedDateTime = feeCalculatedDateTime; } #endregion @@ -50,6 +53,14 @@ public MerchantFeeAddedToTransactionEvent(Guid aggregateId, /// public Decimal CalculatedValue { get; init; } + /// + /// Gets or sets the fee calculated date time. + /// + /// + /// The fee calculated date time. + /// + public DateTime FeeCalculatedDateTime { get; init; } + /// /// Gets the estate identifier. /// diff --git a/TransactionProcessor.Transaction.DomainEvents/ServiceProviderFeeAddedToTransactionEvent.cs b/TransactionProcessor.Transaction.DomainEvents/ServiceProviderFeeAddedToTransactionEvent.cs index 4aebc0ec..7b18caa7 100644 --- a/TransactionProcessor.Transaction.DomainEvents/ServiceProviderFeeAddedToTransactionEvent.cs +++ b/TransactionProcessor.Transaction.DomainEvents/ServiceProviderFeeAddedToTransactionEvent.cs @@ -23,13 +23,15 @@ public record ServiceProviderFeeAddedToTransactionEvent : DomainEventRecord.Doma /// Type of the fee calculation. /// The fee identifier. /// The fee value. + /// The fee calculated date time. public ServiceProviderFeeAddedToTransactionEvent(Guid aggregateId, Guid estateId, Guid merchantId, Decimal calculatedValue, Int32 feeCalculationType, Guid feeId, - Decimal feeValue) : base(aggregateId, Guid.NewGuid()) + Decimal feeValue, + DateTime feeCalculatedDateTime) : base(aggregateId, Guid.NewGuid()) { this.TransactionId = aggregateId; this.EstateId = estateId; @@ -38,6 +40,7 @@ public ServiceProviderFeeAddedToTransactionEvent(Guid aggregateId, this.FeeCalculationType = feeCalculationType; this.FeeId = feeId; this.FeeValue = feeValue; + this.FeeCalculatedDateTime = feeCalculatedDateTime; } #endregion @@ -84,6 +87,14 @@ public ServiceProviderFeeAddedToTransactionEvent(Guid aggregateId, /// public Decimal FeeValue { get; init; } + /// + /// Gets or sets the fee calculated date time. + /// + /// + /// The fee calculated date time. + /// + public DateTime FeeCalculatedDateTime { get; init; } + /// /// Gets the merchant identifier. /// diff --git a/TransactionProcessor.TransactionAggregate.Tests/DomainEventTests.cs b/TransactionProcessor.TransactionAggregate.Tests/DomainEventTests.cs index fd41cbbb..7d89b508 100644 --- a/TransactionProcessor.TransactionAggregate.Tests/DomainEventTests.cs +++ b/TransactionProcessor.TransactionAggregate.Tests/DomainEventTests.cs @@ -252,7 +252,8 @@ public void MerchantFeeAddedToTransactionEvent_CanBeCreated_IsCreated() TestData.CalculatedFeeValue, (Int32)CalculationType.Fixed, TestData.TransactionFeeId, - TestData.TransactionFeeValue); + TestData.TransactionFeeValue, + TestData.TransactionFeeCalculateDateTime); merchantFeeAddedToTransactionEvent.ShouldNotBeNull(); merchantFeeAddedToTransactionEvent.AggregateId.ShouldBe(TestData.TransactionId); @@ -264,6 +265,7 @@ public void MerchantFeeAddedToTransactionEvent_CanBeCreated_IsCreated() merchantFeeAddedToTransactionEvent.FeeCalculationType.ShouldBe((Int32)CalculationType.Fixed); merchantFeeAddedToTransactionEvent.FeeId.ShouldBe(TestData.TransactionFeeId); merchantFeeAddedToTransactionEvent.FeeValue.ShouldBe(TestData.TransactionFeeValue); + merchantFeeAddedToTransactionEvent.FeeCalculatedDateTime.ShouldBe(TestData.TransactionFeeCalculateDateTime); } @@ -276,7 +278,8 @@ public void ServiceProviderFeeAddedToTransactionEvent_CanBeCreated_IsCreated() TestData.CalculatedFeeValue, (Int32)CalculationType.Fixed, TestData.TransactionFeeId, - TestData.TransactionFeeValue); + TestData.TransactionFeeValue, + TestData.TransactionFeeCalculateDateTime); serviceProviderFeeAddedToTransactionEvent.ShouldNotBeNull(); serviceProviderFeeAddedToTransactionEvent.AggregateId.ShouldBe(TestData.TransactionId); @@ -288,6 +291,7 @@ public void ServiceProviderFeeAddedToTransactionEvent_CanBeCreated_IsCreated() serviceProviderFeeAddedToTransactionEvent.FeeCalculationType.ShouldBe((Int32)CalculationType.Fixed); serviceProviderFeeAddedToTransactionEvent.FeeId.ShouldBe(TestData.TransactionFeeId); serviceProviderFeeAddedToTransactionEvent.FeeValue.ShouldBe(TestData.TransactionFeeValue); + serviceProviderFeeAddedToTransactionEvent.FeeCalculatedDateTime.ShouldBe(TestData.TransactionFeeCalculateDateTime); } } diff --git a/TransactionProcessor.TransactionAgrgegate/TransactionAggregate.cs b/TransactionProcessor.TransactionAgrgegate/TransactionAggregate.cs index 32df2cb2..4ac6188f 100644 --- a/TransactionProcessor.TransactionAgrgegate/TransactionAggregate.cs +++ b/TransactionProcessor.TransactionAgrgegate/TransactionAggregate.cs @@ -299,7 +299,8 @@ public void AddFee(CalculatedFee calculatedFee) calculatedFee.CalculatedValue, (Int32)calculatedFee.FeeCalculationType, calculatedFee.FeeId, - calculatedFee.FeeValue); + calculatedFee.FeeValue, + calculatedFee.FeeCalculatedDateTime); } else if (calculatedFee.FeeType == FeeType.ServiceProvider) { @@ -310,7 +311,8 @@ public void AddFee(CalculatedFee calculatedFee) calculatedFee.CalculatedValue, (Int32)calculatedFee.FeeCalculationType, calculatedFee.FeeId, - calculatedFee.FeeValue); + calculatedFee.FeeValue, + calculatedFee.FeeCalculatedDateTime); } else {