From 8744f58612d7ad824894de7a2357f6b251d34b72 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 18 Mar 2026 12:58:01 +0000 Subject: [PATCH 1/2] Initial plan From 66a3749da89c6f5981e0816aa1cb43b428d7a157 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 18 Mar 2026 13:01:31 +0000 Subject: [PATCH 2/2] refactor: split merchant statement creation helpers Co-authored-by: StuartFerguson <16325469+StuartFerguson@users.noreply.github.com> --- .../MerchantStatementForDateAggregate.cs | 35 +++++++++++-------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/TransactionProcessor.Aggregates/MerchantStatementForDateAggregate.cs b/TransactionProcessor.Aggregates/MerchantStatementForDateAggregate.cs index a0e3f5fd..58eec227 100644 --- a/TransactionProcessor.Aggregates/MerchantStatementForDateAggregate.cs +++ b/TransactionProcessor.Aggregates/MerchantStatementForDateAggregate.cs @@ -168,28 +168,35 @@ public static void PlayEvent(this MerchantStatementForDateAggregate aggregate, M public static MerchantStatementForDate GetStatement(this MerchantStatementForDateAggregate aggregate, Boolean includeStatementLines = false) { - MerchantStatementForDate merchantStatement = new MerchantStatementForDate - { - EstateId = aggregate.EstateId, - MerchantId = aggregate.MerchantId, - MerchantStatementId = aggregate.MerchantStatementId, - IsCreated = aggregate.IsCreated, - ActivityDate = aggregate.ActivityDate, - MerchantStatementForDateId = aggregate.AggregateId, - StatementDate = aggregate.StatementDate - }; + MerchantStatementForDate merchantStatement = aggregate.CreateStatement(); if (includeStatementLines) { - merchantStatement.AddStatementLines(aggregate.Transactions, transaction => transaction.Amount, transaction => transaction.DateTime, TransactionLineType); - merchantStatement.AddStatementLines(aggregate.SettledFees, settledFee => settledFee.Amount, settledFee => settledFee.DateTime, SettledFeeLineType); - merchantStatement.AddStatementLines(aggregate.Deposits, deposit => deposit.Amount, deposit => deposit.DepositDateTime, DepositLineType); - merchantStatement.AddStatementLines(aggregate.Withdrawals, withdrawal => withdrawal.Amount, withdrawal => withdrawal.WithdrawalDateTime, WithdrawalLineType); + merchantStatement.PopulateStatementLines(aggregate); } return merchantStatement; } + private static MerchantStatementForDate CreateStatement(this MerchantStatementForDateAggregate aggregate) => new() + { + EstateId = aggregate.EstateId, + MerchantId = aggregate.MerchantId, + MerchantStatementId = aggregate.MerchantStatementId, + IsCreated = aggregate.IsCreated, + ActivityDate = aggregate.ActivityDate, + MerchantStatementForDateId = aggregate.AggregateId, + StatementDate = aggregate.StatementDate + }; + + private static void PopulateStatementLines(this MerchantStatementForDate merchantStatement, MerchantStatementForDateAggregate aggregate) + { + merchantStatement.AddStatementLines(aggregate.Transactions, transaction => transaction.Amount, transaction => transaction.DateTime, TransactionLineType); + merchantStatement.AddStatementLines(aggregate.SettledFees, settledFee => settledFee.Amount, settledFee => settledFee.DateTime, SettledFeeLineType); + merchantStatement.AddStatementLines(aggregate.Deposits, deposit => deposit.Amount, deposit => deposit.DepositDateTime, DepositLineType); + merchantStatement.AddStatementLines(aggregate.Withdrawals, withdrawal => withdrawal.Amount, withdrawal => withdrawal.WithdrawalDateTime, WithdrawalLineType); + } + private static void AddStatementLines(this MerchantStatementForDate merchantStatement, IEnumerable source, Func amountSelector,