1313 public static class SettlementAggregateExtensions {
1414 public static void MarkFeeAsSettled ( this SettlementAggregate aggregate , Guid merchantId , Guid transactionId , Guid feeId )
1515 {
16- ( Guid transactionId , Guid merchantId , CalculatedFee calculatedFee ) pendingFee = aggregate . CalculatedFeesPendingSettlement
17- . SingleOrDefault ( c => c . merchantId == merchantId && c . transactionId == transactionId && c . calculatedFee . FeeId == feeId ) ;
16+ ( Guid transactionId , Guid merchantId , CalculatedFee calculatedFee ) pendingFee = SettlementAggregateExtensions . GetPendingFee ( aggregate , merchantId , transactionId , feeId ) ;
1817
19- ( Guid transactionId , Guid merchantId , CalculatedFee calculatedFee ) settledFee = aggregate . SettledCalculatedFees
20- . SingleOrDefault ( c => c . merchantId == merchantId && c . transactionId == transactionId && c . calculatedFee . FeeId == feeId ) ;
18+ ( Guid transactionId , Guid merchantId , CalculatedFee calculatedFee ) settledFee = SettlementAggregateExtensions . GetSettledFee ( aggregate , merchantId , transactionId , feeId ) ;
2119
2220 if ( settledFee != default ( ( Guid , Guid , CalculatedFee ) ) )
2321 {
@@ -31,15 +29,7 @@ public static void MarkFeeAsSettled(this SettlementAggregate aggregate, Guid mer
3129 return ;
3230 }
3331
34- MerchantFeeSettledEvent merchantFeeSettledEvent = new MerchantFeeSettledEvent ( aggregate . AggregateId ,
35- aggregate . EstateId ,
36- pendingFee . merchantId ,
37- pendingFee . transactionId ,
38- pendingFee . calculatedFee . CalculatedValue ,
39- ( Int32 ) pendingFee . calculatedFee . FeeCalculationType ,
40- pendingFee . calculatedFee . FeeId ,
41- pendingFee . calculatedFee . FeeValue ,
42- pendingFee . calculatedFee . FeeCalculatedDateTime ) ;
32+ MerchantFeeSettledEvent merchantFeeSettledEvent = SettlementAggregateExtensions . CreateMerchantFeeSettledEvent ( aggregate , pendingFee ) ;
4333
4434 aggregate . ApplyAndAppend ( merchantFeeSettledEvent ) ;
4535
@@ -51,13 +41,30 @@ public static void MarkFeeAsSettled(this SettlementAggregate aggregate, Guid mer
5141 }
5242 }
5343
44+ private static ( Guid transactionId , Guid merchantId , CalculatedFee calculatedFee ) GetSettledFee ( SettlementAggregate aggregate , Guid merchantId , Guid transactionId , Guid feeId ) {
45+ ( Guid transactionId , Guid merchantId , CalculatedFee calculatedFee ) settledFee = aggregate . SettledCalculatedFees
46+ . SingleOrDefault ( c => c . merchantId == merchantId && c . transactionId == transactionId && c . calculatedFee . FeeId == feeId ) ;
47+ return settledFee ;
48+ }
49+
50+ private static MerchantFeeSettledEvent CreateMerchantFeeSettledEvent ( SettlementAggregate aggregate , ( Guid transactionId , Guid merchantId , CalculatedFee calculatedFee ) feeDetails ) {
51+ MerchantFeeSettledEvent merchantFeeSettledEvent = new MerchantFeeSettledEvent ( aggregate . AggregateId ,
52+ aggregate . EstateId ,
53+ feeDetails . merchantId ,
54+ feeDetails . transactionId ,
55+ feeDetails . calculatedFee . CalculatedValue ,
56+ ( Int32 ) feeDetails . calculatedFee . FeeCalculationType ,
57+ feeDetails . calculatedFee . FeeId ,
58+ feeDetails . calculatedFee . FeeValue ,
59+ feeDetails . calculatedFee . FeeCalculatedDateTime ) ;
60+ return merchantFeeSettledEvent ;
61+ }
62+
5463 public static void ImmediatelyMarkFeeAsSettled ( this SettlementAggregate aggregate , Guid merchantId , Guid transactionId , Guid feeId )
5564 {
56- ( Guid transactionId , Guid merchantId , CalculatedFee calculatedFee ) pendingFee = aggregate . CalculatedFeesPendingSettlement
57- . SingleOrDefault ( c => c . merchantId == merchantId && c . transactionId == transactionId && c . calculatedFee . FeeId == feeId ) ;
65+ ( Guid transactionId , Guid merchantId , CalculatedFee calculatedFee ) pendingFee = SettlementAggregateExtensions . GetPendingFee ( aggregate , merchantId , transactionId , feeId ) ;
5866
59- ( Guid transactionId , Guid merchantId , CalculatedFee calculatedFee ) settledFee = aggregate . SettledCalculatedFees
60- . SingleOrDefault ( c => c . merchantId == merchantId && c . transactionId == transactionId && c . calculatedFee . FeeId == feeId ) ;
67+ ( Guid transactionId , Guid merchantId , CalculatedFee calculatedFee ) settledFee = SettlementAggregateExtensions . GetSettledFee ( aggregate , merchantId , transactionId , feeId ) ;
6168
6269 if ( settledFee != default ( ( Guid , Guid , CalculatedFee ) ) )
6370 {
@@ -71,23 +78,21 @@ public static void ImmediatelyMarkFeeAsSettled(this SettlementAggregate aggregat
7178 return ;
7279 }
7380
74- MerchantFeeSettledEvent merchantFeeSettledEvent = new MerchantFeeSettledEvent ( aggregate . AggregateId ,
75- aggregate . EstateId ,
76- pendingFee . merchantId ,
77- pendingFee . transactionId ,
78- pendingFee . calculatedFee . CalculatedValue ,
79- ( Int32 ) pendingFee . calculatedFee . FeeCalculationType ,
80- pendingFee . calculatedFee . FeeId ,
81- pendingFee . calculatedFee . FeeValue ,
82- pendingFee . calculatedFee . FeeCalculatedDateTime ) ;
81+ MerchantFeeSettledEvent merchantFeeSettledEvent = SettlementAggregateExtensions . CreateMerchantFeeSettledEvent ( aggregate , pendingFee ) ;
8382
8483 aggregate . ApplyAndAppend ( merchantFeeSettledEvent ) ;
8584 }
8685
86+ private static ( Guid transactionId , Guid merchantId , CalculatedFee calculatedFee ) GetPendingFee ( SettlementAggregate aggregate , Guid merchantId , Guid transactionId , Guid feeId ) {
87+ ( Guid transactionId , Guid merchantId , CalculatedFee calculatedFee ) pendingFee = aggregate . CalculatedFeesPendingSettlement
88+ . SingleOrDefault ( c => c . merchantId == merchantId && c . transactionId == transactionId && c . calculatedFee . FeeId == feeId ) ;
89+ return pendingFee ;
90+ }
91+
8792 public static void AddFee ( this SettlementAggregate aggregate ,
88- Guid merchantId ,
89- Guid transactionId ,
90- CalculatedFee calculatedFee )
93+ Guid merchantId ,
94+ Guid transactionId ,
95+ CalculatedFee calculatedFee )
9196 {
9297 Guard . ThrowIfInvalidGuid ( merchantId , nameof ( merchantId ) ) ;
9398 Guard . ThrowIfInvalidGuid ( transactionId , nameof ( merchantId ) ) ;
0 commit comments