Skip to content

Commit 338e39a

Browse files
Merge pull request #1343 from TransactionProcessing/codacy/#1327_processsaletxn_to_complex
complexity refactoring on Process Sale Transaction
2 parents 4af7305 + b272d10 commit 338e39a

9 files changed

Lines changed: 240 additions & 177 deletions

File tree

TransactionProcessor.Aggregates.Tests/ReconciliationAggregateTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ public void ReconciliationAggregate_Authorise_ReconciliationIsAuthorised()
121121
Result result = reconciliationAggregate.Authorise(TestData.ResponseCode, TestData.ResponseMessage);
122122
result.IsSuccess.ShouldBeTrue();
123123

124-
reconciliationAggregate.ResponseCode.ShouldBe(TestData.ResponseCode);
124+
reconciliationAggregate.ResponseCode.ShouldBe(TestData.ResponseCode.ToCodeString());
125125
reconciliationAggregate.ResponseMessage.ShouldBe(TestData.ResponseMessage);
126126
reconciliationAggregate.IsAuthorised.ShouldBeTrue();
127127
}
@@ -186,7 +186,7 @@ public void ReconciliationAggregate_Decline_ReconciliationIsDeclined()
186186
Result result = reconciliationAggregate.Decline(TestData.ResponseCode, TestData.ResponseMessage);
187187
result.IsSuccess.ShouldBeTrue();
188188

189-
reconciliationAggregate.ResponseCode.ShouldBe(TestData.ResponseCode);
189+
reconciliationAggregate.ResponseCode.ShouldBe(TestData.ResponseCode.ToCodeString());
190190
reconciliationAggregate.ResponseMessage.ShouldBe(TestData.ResponseMessage);
191191
reconciliationAggregate.IsAuthorised.ShouldBeFalse();
192192
}

TransactionProcessor.Aggregates.Tests/TransactionAggregateTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,7 @@ public void TransactionAggregate_AuthoriseTransactionLocally_TransactionIsAuthor
378378
transactionAggregate.IsLocallyAuthorised.ShouldBeTrue();
379379
transactionAggregate.IsAuthorised.ShouldBeFalse();
380380
transactionAggregate.AuthorisationCode.ShouldBe(TestData.AuthorisationCode);
381-
transactionAggregate.ResponseCode.ShouldBe(TestData.ResponseCode);
381+
transactionAggregate.ResponseCode.ShouldBe(TestData.ResponseCode.ToCodeString());
382382
transactionAggregate.ResponseMessage.ShouldBe(TestData.ResponseMessage);
383383
}
384384

@@ -543,7 +543,7 @@ public void TransactionAggregate_DeclineTransactionLocally_TransactionIsDeclined
543543
transactionAggregate.IsDeclined.ShouldBeFalse();
544544
transactionAggregate.IsLocallyDeclined.ShouldBeTrue();
545545

546-
transactionAggregate.ResponseCode.ShouldBe(TestData.DeclinedResponseCode);
546+
transactionAggregate.ResponseCode.ShouldBe(TestData.DeclinedResponseCode.ToCodeString());
547547
transactionAggregate.ResponseMessage.ShouldBe(TestData.DeclinedResponseMessage);
548548
}
549549

TransactionProcessor.Aggregates/ReconciliationAggregate.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ public static Result RecordOverallTotals(this ReconciliationAggregate aggregate,
9393
return Result.Success();
9494
}
9595

96-
public static Result Authorise(this ReconciliationAggregate aggregate, String responseCode, String responseMessage)
96+
public static Result Authorise(this ReconciliationAggregate aggregate, TransactionResponseCode responseCode, String responseMessage)
9797
{
9898
if (aggregate.IsAuthorised || aggregate.IsDeclined) {
9999
return Result.Success();
@@ -107,7 +107,7 @@ public static Result Authorise(this ReconciliationAggregate aggregate, String re
107107
return result;
108108

109109
ReconciliationDomainEvents.ReconciliationHasBeenLocallyAuthorisedEvent reconciliationHasBeenLocallyAuthorisedEvent = new(aggregate.AggregateId, aggregate.EstateId, aggregate.MerchantId,
110-
responseCode, responseMessage, aggregate.TransactionDateTime);
110+
responseCode.ToCodeString(), responseMessage, aggregate.TransactionDateTime);
111111

112112
aggregate.ApplyAndAppend(reconciliationHasBeenLocallyAuthorisedEvent);
113113
return Result.Success();
@@ -122,7 +122,7 @@ private static Result CheckReconciliationHasBeenAuthorisedOrDeclined(this Reconc
122122
return Result.Success();
123123
}
124124

125-
public static Result Decline(this ReconciliationAggregate aggregate,String responseCode, String responseMessage)
125+
public static Result Decline(this ReconciliationAggregate aggregate,TransactionResponseCode responseCode, String responseMessage)
126126
{
127127
if (aggregate.IsAuthorised || aggregate.IsDeclined) {
128128
return Result.Success();
@@ -136,7 +136,7 @@ public static Result Decline(this ReconciliationAggregate aggregate,String respo
136136
return result;
137137

138138
ReconciliationDomainEvents.ReconciliationHasBeenLocallyDeclinedEvent reconciliationHasBeenLocallyDeclinedEvent = new(aggregate.AggregateId, aggregate.EstateId, aggregate.MerchantId,
139-
responseCode, responseMessage, aggregate.TransactionDateTime);
139+
responseCode.ToCodeString(), responseMessage, aggregate.TransactionDateTime);
140140

141141
aggregate.ApplyAndAppend(reconciliationHasBeenLocallyDeclinedEvent);
142142

TransactionProcessor.Aggregates/TransactionAggregate.cs

Lines changed: 48 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,50 @@ namespace TransactionProcessor.Aggregates
1313
using Shared.EventStore.Aggregate;
1414
using Shared.General;
1515

16+
public enum TransactionResponseCode
17+
{
18+
Success = 0,
19+
SuccessNeedToAddDevice = 1,
20+
21+
InvalidDeviceIdentifier = 1000,
22+
InvalidEstateId = 1001,
23+
InvalidMerchantId = 1002,
24+
NoValidDevices = 1003,
25+
NoEstateOperators = 1004,
26+
OperatorNotValidForEstate = 1005,
27+
NoMerchantOperators = 1006,
28+
OperatorNotValidForMerchant = 1007,
29+
TransactionDeclinedByOperator = 1008,
30+
MerchantDoesNotHaveEnoughCredit = 1009,
31+
OperatorCommsError = 1010,
32+
InvalidSaleTransactionAmount = 1011,
33+
InvalidContractIdValue = 1012,
34+
InvalidProductIdValue = 1013,
35+
MerchantHasNoContractsConfigured = 1014,
36+
ContractNotValidForMerchant = 1015,
37+
ProductNotValidForMerchant = 1016,
38+
OperatorNotEnabledForEstate = 1017,
39+
OperatorNotEnabledForMerchant = 1018,
40+
41+
// A Catch All generic Error where reason has not been identified
42+
UnknownFailure = 9999
43+
}
44+
45+
public static class TransactionResponseCodeExtensions
46+
{
47+
public static string ToCodeString(this TransactionResponseCode code)
48+
{
49+
return ((int)code).ToString("D4");
50+
}
51+
}
52+
1653
public static class TransactionAggregateExtensions{
1754

1855
public static Result DeclineTransaction(this TransactionAggregate aggregate,
1956
Guid operatorId,
2057
String operatorResponseCode,
2158
String operatorResponseMessage,
22-
String responseCode,
59+
TransactionResponseCode responseCode,
2360
String responseMessage)
2461
{
2562
Result result = aggregate.CheckTransactionHasBeenStarted();
@@ -32,23 +69,25 @@ public static Result DeclineTransaction(this TransactionAggregate aggregate,
3269
if (result.IsFailed)
3370
return result;
3471

72+
73+
3574
TransactionDomainEvents.TransactionDeclinedByOperatorEvent transactionDeclinedByOperatorEvent =
3675
new(aggregate.AggregateId,
3776
aggregate.EstateId,
3877
aggregate.MerchantId,
3978
operatorId,
4079
operatorResponseCode,
4180
operatorResponseMessage,
42-
responseCode,
81+
responseCode.ToCodeString(),
4382
responseMessage,
4483
aggregate.TransactionDateTime);
4584
aggregate.ApplyAndAppend(transactionDeclinedByOperatorEvent);
4685

4786
return Result.Success();
4887
}
4988

50-
public static Result DeclineTransactionLocally(this TransactionAggregate aggregate,
51-
String responseCode,
89+
public static Result DeclineTransactionLocally(this TransactionAggregate aggregate,
90+
TransactionResponseCode responseCode,
5291
String responseMessage)
5392
{
5493
Result result = aggregate.CheckTransactionHasBeenStarted();
@@ -61,7 +100,7 @@ public static Result DeclineTransactionLocally(this TransactionAggregate aggrega
61100
if (result.IsFailed)
62101
return result;
63102
TransactionDomainEvents.TransactionHasBeenLocallyDeclinedEvent transactionHasBeenLocallyDeclinedEvent =
64-
new(aggregate.AggregateId, aggregate.EstateId, aggregate.MerchantId, responseCode, responseMessage,
103+
new(aggregate.AggregateId, aggregate.EstateId, aggregate.MerchantId, responseCode.ToCodeString(), responseMessage,
65104
aggregate.TransactionDateTime);
66105

67106
aggregate.ApplyAndAppend(transactionHasBeenLocallyDeclinedEvent);
@@ -276,7 +315,7 @@ public static Result AuthoriseTransaction(this TransactionAggregate aggregate,
276315
String operatorResponseCode,
277316
String operatorResponseMessage,
278317
String operatorTransactionId,
279-
String responseCode,
318+
TransactionResponseCode responseCode,
280319
String responseMessage)
281320
{
282321
Result result = aggregate.CheckTransactionHasBeenStarted();
@@ -294,7 +333,7 @@ public static Result AuthoriseTransaction(this TransactionAggregate aggregate,
294333
operatorResponseCode,
295334
operatorResponseMessage,
296335
operatorTransactionId,
297-
responseCode,
336+
responseCode.ToCodeString(),
298337
responseMessage,
299338
aggregate.TransactionDateTime);
300339
aggregate.ApplyAndAppend(transactionAuthorisedByOperatorEvent);
@@ -304,7 +343,7 @@ public static Result AuthoriseTransaction(this TransactionAggregate aggregate,
304343

305344
public static Result AuthoriseTransactionLocally(this TransactionAggregate aggregate,
306345
String authorisationCode,
307-
String responseCode,
346+
TransactionResponseCode responseCode,
308347
String responseMessage)
309348
{
310349
var result = aggregate.CheckTransactionHasBeenStarted();
@@ -317,7 +356,7 @@ public static Result AuthoriseTransactionLocally(this TransactionAggregate aggre
317356
if (result.IsFailed)
318357
return result;
319358
TransactionDomainEvents.TransactionHasBeenLocallyAuthorisedEvent transactionHasBeenLocallyAuthorisedEvent =
320-
new(aggregate.AggregateId, aggregate.EstateId, aggregate.MerchantId, authorisationCode, responseCode, responseMessage,
359+
new(aggregate.AggregateId, aggregate.EstateId, aggregate.MerchantId, authorisationCode, responseCode.ToCodeString(), responseMessage,
321360
aggregate.TransactionDateTime);
322361

323362
aggregate.ApplyAndAppend(transactionHasBeenLocallyAuthorisedEvent);

0 commit comments

Comments
 (0)