Skip to content

Commit 3db7d0a

Browse files
Merge pull request #434 from TransactionProcessing/task/#433_splitsettlementbymerchant
Split settlement streams by merchant
2 parents 584a12b + 923ef63 commit 3db7d0a

File tree

34 files changed

+151
-154
lines changed

34 files changed

+151
-154
lines changed

TransactionProcessor.BusinessLogic.Tests/DomainEventHandlers/VoucherDomainEventHandlerTests.cs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,13 +74,14 @@ public async Task VoucherDomainEventHandler_VoucherIssuedEvent_WithEmailAddress_
7474
context.Transactions.Add(new EstateManagement.Database.Entities.Transaction()
7575
{
7676
TransactionId = TestData.TransactionId,
77-
EstateId = TestData.EstateId,
78-
ContractId = TestData.ContractId
77+
MerchantReportingId = TestData.MerchantReportingId,
78+
ContractReportingId = TestData.ContractReportingId
7979
});
8080
context.Contracts.Add(new Contract
8181
{
8282
ContractId = TestData.ContractId,
83-
EstateId = TestData.EstateId,
83+
ContractReportingId = TestData.ContractReportingId,
84+
EstateReportingId = TestData.EstateReportingId,
8485
Description = TestData.OperatorIdentifier
8586
});
8687
await context.SaveChangesAsync(CancellationToken.None);
@@ -123,13 +124,14 @@ public async Task VoucherDomainEventHandler_VoucherIssuedEvent_WithRecipientMobi
123124
context.Transactions.Add(new EstateManagement.Database.Entities.Transaction()
124125
{
125126
TransactionId = TestData.TransactionId,
126-
EstateId = TestData.EstateId,
127-
ContractId = TestData.ContractId
128-
});
127+
MerchantReportingId = TestData.MerchantReportingId,
128+
ContractReportingId = TestData.ContractReportingId
129+
});
129130
context.Contracts.Add(new Contract
130131
{
131132
ContractId = TestData.ContractId,
132-
EstateId = TestData.EstateId,
133+
ContractReportingId = TestData.ContractReportingId,
134+
EstateReportingId = TestData.EstateReportingId,
133135
Description = TestData.OperatorIdentifier
134136
});
135137
await context.SaveChangesAsync(CancellationToken.None);

TransactionProcessor.BusinessLogic.Tests/Manager/VoucherManagementManagerTests.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ public async Task VoucherManagementManager_GetVoucherByCode_VoucherRetrieved()
5151
EstateManagementGenericContext context = await this.GetContext(Guid.NewGuid().ToString("N"), TestDatabaseType.InMemory);
5252
await context.Vouchers.AddAsync(new Voucher
5353
{
54-
EstateId = TestData.EstateId,
5554
VoucherId = TestData.VoucherId,
5655
VoucherCode = TestData.VoucherCode,
5756
OperatorIdentifier = TestData.OperatorIdentifier,

TransactionProcessor.BusinessLogic.Tests/Mediator/DummySettlementDomainService.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ public class DummySettlementDomainService : ISettlementDomainService
1010
{
1111
public async Task<ProcessSettlementResponse> ProcessSettlement(DateTime pendingSettlementDate,
1212
Guid estateId,
13+
Guid merchantId,
1314
CancellationToken cancellationToken) {
1415
return new ProcessSettlementResponse();
1516
}

TransactionProcessor.BusinessLogic.Tests/Requests/RequestTests.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,10 +85,13 @@ public void ProcessSaleTransactionRequest_CanBeCreated_IsCreated() {
8585

8686
[Fact]
8787
public void ProcessSettlementRequest_CanBeCreated_IsCreated() {
88-
ProcessSettlementRequest processSettlementRequest = ProcessSettlementRequest.Create(TestData.SettlementDate, TestData.EstateId);
88+
ProcessSettlementRequest processSettlementRequest = ProcessSettlementRequest.Create(TestData.SettlementDate,
89+
TestData.MerchantId,
90+
TestData.EstateId);
8991

9092
processSettlementRequest.ShouldNotBeNull();
9193
processSettlementRequest.EstateId.ShouldBe(TestData.EstateId);
94+
processSettlementRequest.MerchantId.ShouldBe(TestData.MerchantId);
9295
processSettlementRequest.SettlementDate.ShouldBe(TestData.SettlementDate);
9396
}
9497

TransactionProcessor.BusinessLogic.Tests/Services/SettlementDomainServiceTests.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ public async Task SettlementDomainService_ProcessSettlement_SettlementIsProcesse
5050

5151
ProcessSettlementResponse response = await settlementDomainService.ProcessSettlement(TestData.SettlementDate,
5252
TestData.EstateId,
53+
TestData.MerchantId,
5354
CancellationToken.None);
5455

5556
response.ShouldNotBeNull();
@@ -66,6 +67,7 @@ public async Task SettlementDomainService_ProcessSettlement_SettlementAggregateN
6667

6768
ProcessSettlementResponse response = await settlementDomainService.ProcessSettlement(TestData.SettlementDate,
6869
TestData.EstateId,
70+
TestData.MerchantId,
6971
CancellationToken.None);
7072

7173
response.ShouldNotBeNull();
@@ -82,6 +84,7 @@ public async Task SettlementDomainService_ProcessSettlement_SettlementAggregateN
8284

8385
ProcessSettlementResponse response = await settlementDomainService.ProcessSettlement(TestData.SettlementDate,
8486
TestData.EstateId,
87+
TestData.MerchantId,
8588
CancellationToken.None);
8689

8790
response.ShouldNotBeNull();
@@ -98,6 +101,7 @@ public async Task SettlementDomainService_ProcessSettlement_AddSettledFeeThrownE
98101

99102
ProcessSettlementResponse response = await settlementDomainService.ProcessSettlement(TestData.SettlementDate,
100103
TestData.EstateId,
104+
TestData.MerchantId,
101105
CancellationToken.None);
102106

103107
response.ShouldNotBeNull();

TransactionProcessor.BusinessLogic.Tests/Services/VoucherDomainServiceTests.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,6 @@ public async Task VoucherDomainService_RedeemVoucher_InvalidEstate_ErrorThrown()
237237
EstateManagementGenericContext context = await this.GetContext(Guid.NewGuid().ToString("N"));
238238
context.Vouchers.Add(new EstateManagement.Database.Entities.Voucher {
239239
VoucherCode = TestData.VoucherCode,
240-
EstateId = TestData.EstateId,
241240
OperatorIdentifier = TestData.OperatorIdentifier
242241
});
243242
await context.SaveChangesAsync();
@@ -276,7 +275,6 @@ public async Task VoucherDomainService_RedeemVoucher_VoucherIssued() {
276275
EstateManagementGenericContext context = await this.GetContext(Guid.NewGuid().ToString("N"));
277276
context.Vouchers.Add(new EstateManagement.Database.Entities.Voucher {
278277
VoucherCode = TestData.VoucherCode,
279-
EstateId = TestData.EstateId,
280278
OperatorIdentifier = TestData.OperatorIdentifier
281279
});
282280
await context.SaveChangesAsync();

TransactionProcessor.BusinessLogic.Tests/TransactionProcessor.BusinessLogic.Tests.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88

99
<ItemGroup>
1010
<PackageReference Include="Lamar" Version="12.0.0" />
11-
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.5" />
12-
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="7.0.5" />
11+
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.7" />
12+
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="7.0.7" />
1313
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.6.2" />
1414
<PackageReference Include="Moq" Version="4.18.4" />
1515
<PackageReference Include="Shouldly" Version="4.2.1" />

TransactionProcessor.BusinessLogic/Common/Extensions.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,10 @@ namespace TransactionProcessor.BusinessLogic.Common
1313
public static class Helpers
1414
{
1515
public static Guid CalculateSettlementAggregateId(DateTime settlementDate,
16+
Guid merchantId,
1617
Guid estateId)
1718
{
18-
Guid aggregateId = GuidCalculator.Combine(estateId, settlementDate.ToGuid());
19+
Guid aggregateId = GuidCalculator.Combine(estateId,merchantId, settlementDate.ToGuid());
1920
return aggregateId;
2021
}
2122
}

TransactionProcessor.BusinessLogic/EventHandling/TransactionDomainEventHandler.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -214,13 +214,13 @@ private async Task HandleSpecificDomainEvent(TransactionHasBeenCompletedEvent do
214214
// Determine when the fee should be applied
215215
DateTime settlementDate = this.CalculateSettlementDate(merchant.SettlementSchedule, domainEvent.CompletedDateTime);
216216

217-
Guid aggregateId = Helpers.CalculateSettlementAggregateId(settlementDate, domainEvent.EstateId);
217+
Guid aggregateId = Helpers.CalculateSettlementAggregateId(settlementDate, domainEvent.MerchantId, domainEvent.EstateId);
218218

219219
// We need to add the fees to a pending settlement stream (for today)
220220
SettlementAggregate aggregate = await this.SettlementAggregateRepository.GetLatestVersion(aggregateId, cancellationToken);
221221

222222
if (aggregate.IsCreated == false) {
223-
aggregate.Create(transactionAggregate.EstateId, settlementDate);
223+
aggregate.Create(transactionAggregate.EstateId, transactionAggregate.MerchantId, settlementDate);
224224
}
225225

226226
//Guid eventId = IdGenerationService.GenerateEventId(new {
@@ -282,7 +282,7 @@ private async Task HandleSpecificDomainEvent(MerchantFeeAddedToTransactionEvent
282282
return;
283283
}
284284

285-
Guid aggregateId = Helpers.CalculateSettlementAggregateId(domainEvent.SettlementDueDate, domainEvent.EstateId);
285+
Guid aggregateId = Helpers.CalculateSettlementAggregateId(domainEvent.SettlementDueDate, domainEvent.MerchantId, domainEvent.EstateId);
286286

287287
SettlementAggregate pendingSettlementAggregate = await this.SettlementAggregateRepository.GetLatestVersion(aggregateId, cancellationToken);
288288

TransactionProcessor.BusinessLogic/EventHandling/VoucherDomainEventHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ private async Task<String> GetVoucherOperator(Models.Voucher voucherModel,
170170
EstateManagementGenericContext context = await this.DbContextFactory.GetContext(voucherModel.EstateId, ConnectionStringIdentifier, cancellationToken);
171171

172172
Transaction transaction = await context.Transactions.SingleOrDefaultAsync(t => t.TransactionId == voucherModel.TransactionId, cancellationToken);
173-
Contract contract = await context.Contracts.SingleOrDefaultAsync(c => c.ContractId == transaction.ContractId);
173+
Contract contract = await context.Contracts.SingleOrDefaultAsync(c => c.ContractReportingId == transaction.ContractReportingId);
174174

175175
return contract.Description;
176176
}

0 commit comments

Comments
 (0)