From 1929bdfa7345817af4de7e7e5cd3589311ce547d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 13 Mar 2026 14:45:21 +0000 Subject: [PATCH 1/3] Initial plan From fea4295ab289f38e1c2af9f56292293fe434215d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 13 Mar 2026 18:44:21 +0000 Subject: [PATCH 2/3] Reduce AddContractToMerchant complexity Co-authored-by: StuartFerguson <16325469+StuartFerguson@users.noreply.github.com> --- .../Services/MerchantDomainService.cs | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/TransactionProcessor.BusinessLogic/Services/MerchantDomainService.cs b/TransactionProcessor.BusinessLogic/Services/MerchantDomainService.cs index 1105a1bb..debc374b 100644 --- a/TransactionProcessor.BusinessLogic/Services/MerchantDomainService.cs +++ b/TransactionProcessor.BusinessLogic/Services/MerchantDomainService.cs @@ -419,17 +419,11 @@ public async Task AddContractToMerchant(MerchantCommands.AddMerchantCont if (validateResult.IsFailed) return ResultHelpers.CreateFailure(validateResult); - Result getContractResult = await this.AggregateService.Get(command.RequestDto.ContractId, cancellationToken); - if (getContractResult.IsFailed) { - return ResultHelpers.CreateFailure(getContractResult); - } - - ContractAggregate contractAggregate = getContractResult.Data; - if (contractAggregate.IsCreated == false) { - return Result.Invalid($"Contract Id {command.RequestDto.ContractId} has not been created"); - } + Result contractResult = await this.GetCreatedContract(command.RequestDto.ContractId, cancellationToken); + if (contractResult.IsFailed) + return contractResult; - Result stateResult = merchantAggregate.AddContract(contractAggregate); + Result stateResult = merchantAggregate.AddContract(contractResult.Data); if (stateResult.IsFailed) return stateResult; @@ -713,6 +707,20 @@ private Result ValidateEstateAndMerchant(EstateAggregate estateAggregate, return Result.Success(); } + private async Task> GetCreatedContract(Guid contractId, + CancellationToken cancellationToken) + { + Result contractResult = await this.AggregateService.Get(contractId, cancellationToken); + if (contractResult.IsFailed) + return ResultHelpers.CreateFailure(contractResult); + + ContractAggregate contractAggregate = contractResult.Data; + if (contractAggregate.IsCreated == false) + return Result.Invalid($"Contract Id {contractId} has not been created"); + + return contractResult; + } + private async Task> GetMerchantDepositListForWithdrawal(MerchantCommands.MakeMerchantWithdrawalCommand command, CancellationToken cancellationToken) { From 93211d4000f17c19e637c29d70165af65b802ea9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 13 Mar 2026 18:48:59 +0000 Subject: [PATCH 3/3] Address review feedback on contract helper Co-authored-by: StuartFerguson <16325469+StuartFerguson@users.noreply.github.com> --- .../Services/MerchantDomainService.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TransactionProcessor.BusinessLogic/Services/MerchantDomainService.cs b/TransactionProcessor.BusinessLogic/Services/MerchantDomainService.cs index debc374b..465eef71 100644 --- a/TransactionProcessor.BusinessLogic/Services/MerchantDomainService.cs +++ b/TransactionProcessor.BusinessLogic/Services/MerchantDomainService.cs @@ -421,7 +421,7 @@ public async Task AddContractToMerchant(MerchantCommands.AddMerchantCont Result contractResult = await this.GetCreatedContract(command.RequestDto.ContractId, cancellationToken); if (contractResult.IsFailed) - return contractResult; + return ResultHelpers.CreateFailure(contractResult); Result stateResult = merchantAggregate.AddContract(contractResult.Data); if (stateResult.IsFailed) @@ -718,7 +718,7 @@ private async Task> GetCreatedContract(Guid contractId if (contractAggregate.IsCreated == false) return Result.Invalid($"Contract Id {contractId} has not been created"); - return contractResult; + return Result.Success(contractAggregate); } private async Task> GetMerchantDepositListForWithdrawal(MerchantCommands.MakeMerchantWithdrawalCommand command,