Skip to content

Commit 088e310

Browse files
Merge pull request #119 from TransactionProcessing/task/#116_shared_nuget_update
Remove the need for Callback enricher projection
2 parents dd51c2a + 0516ec2 commit 088e310

File tree

9 files changed

+40
-60
lines changed

9 files changed

+40
-60
lines changed

CallbackHander.Testing/TestData.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ public class TestData
1919

2020
public static String[] Destinations = new[] {"A", "B"};
2121

22-
public static String Reference = "TestRef";
22+
public static String Reference = "640E863C23E244BDB9717C92733FFD4C-9D20A3961CF645EDAA7BDD436318BA29";
23+
public static Guid EstateReference = Guid.Parse("640E863C-23E2-44BD-B971-7C92733FFD4C");
24+
public static Guid MerchantReference = Guid.Parse("9D20A396-1CF6-45ED-AA7B-DD436318BA29");
2325

2426
public static CallbackCommands.RecordCallbackRequest RecordCallbackRequest =>
2527
new CallbackCommands.RecordCallbackRequest(TestData.CallbackId,
@@ -41,7 +43,7 @@ public static CallbackMessageAggregate RecordedCallbackMessageAggregate()
4143
{
4244
CallbackMessageAggregate aggregate = new CallbackMessageAggregate();
4345
aggregate.RecordCallback(TestData.CallbackId, TestData.TypeString, (MessageFormat)TestData.MessageFormat,
44-
TestData.CallbackMessage, TestData.Reference, TestData.Destinations);
46+
TestData.CallbackMessage, TestData.Reference, TestData.Destinations, EstateReference, MerchantReference);
4547

4648
return aggregate;
4749
}

CallbackHandler.BusinessLogic/Services/CallbackDomainService.cs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,26 @@ public async Task<Result> RecordCallback(Guid callbackId,
2626
String reference,
2727
String[] destinations,
2828
CancellationToken cancellationToken) {
29-
var getResult = await this.AggregateRepository.GetLatestVersion(callbackId, cancellationToken);
29+
30+
// split the reference string into an array of strings
31+
String[] referenceData = reference?.Split(new[] { '-' }, StringSplitOptions.RemoveEmptyEntries) ?? Array.Empty<string>();
32+
if (referenceData.Length == 0)
33+
{
34+
return Result.Failure("Reference cannot be empty.");
35+
}
36+
// Element 0 is estate reference, Element 1 is merchant reference
37+
String estateReference = referenceData[0];
38+
String merchantReference = referenceData[1];
39+
40+
// TODO: Validate the reference data
41+
42+
Result<CallbackMessageAggregate> getResult = await this.AggregateRepository.GetLatestVersion(callbackId, cancellationToken);
3043
Result<CallbackMessageAggregate> callbackMessageAggregateResult =
3144
DomainServiceHelper.HandleGetAggregateResult(getResult, callbackId, false);
3245

3346
CallbackMessageAggregate aggregate = callbackMessageAggregateResult.Data;
34-
aggregate.RecordCallback(callbackId, typeString, messageFormat, callbackMessage, reference, destinations);
47+
aggregate.RecordCallback(callbackId, typeString, messageFormat, callbackMessage, reference, destinations,
48+
Guid.Parse(estateReference), Guid.Parse(merchantReference));
3549

3650
return await this.AggregateRepository.SaveChanges(aggregate, cancellationToken);
3751
}

CallbackHandler.CallbackMessage.DomainEvents/CallbackReceivedEvent.cs

Lines changed: 8 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,12 @@
33
using System;
44
using Shared.DomainDrivenDesign.EventSourcing;
55

6-
public record CallbackReceivedEvent : DomainEvent
7-
{
8-
public CallbackReceivedEvent(Guid aggregateId, String typeString,
9-
Int32 messageFormat,
10-
String callbackMessage,
11-
String reference,
12-
String destination) : base(aggregateId, Guid.NewGuid())
13-
{
14-
this.TypeString = typeString;
15-
this.MessageFormat = messageFormat;
16-
this.CallbackMessage = callbackMessage;
17-
this.Destination = destination;
18-
this.Reference = reference;
19-
}
20-
21-
public String TypeString { get; init; }
22-
public Int32 MessageFormat { get; init; }
23-
public String CallbackMessage { get; init; }
24-
25-
public String Reference { get; init; }
26-
27-
public String Destination { get; init; }
28-
}
6+
public record CallbackReceivedEvent(Guid AggregateId,
7+
String TypeString,
8+
Int32 MessageFormat,
9+
String CallbackMessage,
10+
String Reference,
11+
String Destination,
12+
Guid EstateId,
13+
Guid MerchantId) : DomainEvent(AggregateId, Guid.NewGuid());
2914
}

CallbackHandler.CallbackMessageAggregate.Tests/CallbackMessageAggregateTests.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ public void CallbackMessageAggregate_RecordCallback_CallbackIsRecorded()
2020
{
2121
CallbackMessageAggregate aggregate = new CallbackMessageAggregate();
2222

23-
aggregate.RecordCallback(TestData.CallbackId, TestData.TypeString, MessageFormat.JSON, TestData.CallbackMessage, TestData.Reference, TestData.Destinations);
23+
aggregate.RecordCallback(TestData.CallbackId, TestData.TypeString, MessageFormat.JSON, TestData.CallbackMessage, TestData.Reference, TestData.Destinations,
24+
TestData.EstateReference, TestData.MerchantReference);
2425

2526
aggregate.ShouldSatisfyAllConditions(() => aggregate.CallbackMessage.ShouldBe(TestData.CallbackMessage),
2627
() => aggregate.TypeString.ShouldBe(TestData.TypeString),

CallbackHandler.CallbackMessageAggregate.Tests/DomainEventTests.cs

Lines changed: 0 additions & 25 deletions
This file was deleted.

CallbackHandler.CallbackMessageAggregate/CallbackMessageAggregate.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,14 @@ public static void RecordCallback(this CallbackMessageAggregate aggregate,
5555
MessageFormat messageFormat,
5656
String callbackMessage,
5757
String reference,
58-
String[] destinations)
58+
String[] destinations,
59+
Guid estateId,Guid merchantId)
5960
{
6061
foreach (String destination in destinations)
6162
{
6263
DomainEvent callbackReceivedEvent = CreateCallbackReceivedEvent(aggregate,aggregateId, typeString,
63-
messageFormat, callbackMessage, reference, destination);
64+
messageFormat, callbackMessage, reference, destination,
65+
estateId, merchantId);
6466

6567
aggregate.ApplyAndAppend(callbackReceivedEvent);
6668
}
@@ -72,12 +74,13 @@ internal static DomainEvent CreateCallbackReceivedEvent(this CallbackMessageAggr
7274
MessageFormat messageFormat,
7375
String callbackMessage,
7476
String reference,
75-
String destination)
77+
String destination,
78+
Guid estateId, Guid merchantId)
7679
{
7780
return new CallbackReceivedEvent(aggregateId, typeString, (Int32) messageFormat,
7881
callbackMessage,
7982
reference,
80-
destination);
83+
destination, estateId, merchantId);
8184
}
8285

8386
public static String[] GetDestinations(this CallbackMessageAggregate aggregate)

CallbackHandler.IntegrationTests/Features/BankDepositCallback.feature

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ Feature: BankDepositCallback
44
Scenario: Process a Bank Deposit Callback
55
Given I have the following Bank Deposit Callbacks
66
| Amount | DateTime | DepositId | HostIdentifier | Reference | SortCode | AccountNumber |
7-
| 100.00 | Today | 6AE04AFC-D7F8-4936-A3A2-DCA177CAA106 | DC4A7DDA-45A1-4D5B-8D46-21FA99A3868E | Deposit1 | 11-22-33 | 12345678 |
7+
| 100.00 | Today | 6AE04AFC-D7F8-4936-A3A2-DCA177CAA106 | DC4A7DDA-45A1-4D5B-8D46-21FA99A3868E | DC4A7DDA45A14D5B8D4621FA99A3868E-6AE04AFCD7F84936A3A2DCA177CAA106 | 11-22-33 | 12345678 |
88
When I send the requests to the callback handler for deposits
99
Then the deposit records are recorded

CallbackHandler.IntegrationTests/Features/BankDepositCallback.feature.cs

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

CallbackHandler.Tests/CallbackHandler.Tests.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
<ItemGroup>
1010
<PackageReference Include="Lamar" Version="15.0.0" />
11-
<PackageReference Include="Microsoft.Extensions.Configuration" Version="9.0.5" />
11+
<PackageReference Include="Microsoft.Extensions.Configuration" Version="9.0.6" />
1212
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.7" />
1313
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.0" />
1414
<PackageReference Include="Moq" Version="4.20.72" />

0 commit comments

Comments
 (0)