diff --git a/CallbackHandler.BusinessLogic/Services/CallbackDomainService.cs b/CallbackHandler.BusinessLogic/Services/CallbackDomainService.cs index b74f23e..ee544d6 100644 --- a/CallbackHandler.BusinessLogic/Services/CallbackDomainService.cs +++ b/CallbackHandler.BusinessLogic/Services/CallbackDomainService.cs @@ -44,9 +44,10 @@ public async Task RecordCallback(Guid callbackId, DomainServiceHelper.HandleGetAggregateResult(getResult, callbackId, false); CallbackMessageAggregate aggregate = callbackMessageAggregateResult.Data; - aggregate.RecordCallback(callbackId, typeString, messageFormat, callbackMessage, reference, destinations, + Result stateResult = aggregate.RecordCallback(callbackId, typeString, messageFormat, callbackMessage, reference, destinations, Guid.Parse(estateReference), Guid.Parse(merchantReference)); - + if (stateResult.IsFailed) + return stateResult; return await this.AggregateRepository.SaveChanges(aggregate, cancellationToken); } } diff --git a/CallbackHandler.CallbackMessageAggregate.Tests/CallbackMessageAggregateTests.cs b/CallbackHandler.CallbackMessageAggregate.Tests/CallbackMessageAggregateTests.cs index 1cdb74d..1e55d5f 100644 --- a/CallbackHandler.CallbackMessageAggregate.Tests/CallbackMessageAggregateTests.cs +++ b/CallbackHandler.CallbackMessageAggregate.Tests/CallbackMessageAggregateTests.cs @@ -1,3 +1,5 @@ +using SimpleResults; + namespace CallbackHandler.CallbackMessageAggregate.Tests { using CallbackHander.Testing; @@ -20,8 +22,9 @@ public void CallbackMessageAggregate_RecordCallback_CallbackIsRecorded() { CallbackMessageAggregate aggregate = new CallbackMessageAggregate(); - aggregate.RecordCallback(TestData.CallbackId, TestData.TypeString, MessageFormat.JSON, TestData.CallbackMessage, TestData.Reference, TestData.Destinations, + Result result = aggregate.RecordCallback(TestData.CallbackId, TestData.TypeString, MessageFormat.JSON, TestData.CallbackMessage, TestData.Reference, TestData.Destinations, TestData.EstateReference, TestData.MerchantReference); + result.IsSuccess.ShouldBeTrue(); aggregate.ShouldSatisfyAllConditions(() => aggregate.CallbackMessage.ShouldBe(TestData.CallbackMessage), () => aggregate.TypeString.ShouldBe(TestData.TypeString), diff --git a/CallbackHandler.CallbackMessageAggregate/CallbackMessageAggregate.cs b/CallbackHandler.CallbackMessageAggregate/CallbackMessageAggregate.cs index 3bd6d8d..2ee0830 100644 --- a/CallbackHandler.CallbackMessageAggregate/CallbackMessageAggregate.cs +++ b/CallbackHandler.CallbackMessageAggregate/CallbackMessageAggregate.cs @@ -1,4 +1,5 @@ using System.Runtime.CompilerServices; +using SimpleResults; namespace CallbackHandler.CallbackMessageAggregate { @@ -49,7 +50,7 @@ public static void PlayEvent(this CallbackMessageAggregate aggregate, CallbackRe aggregate.Destinations.Add(domainEvent.Destination); } - public static void RecordCallback(this CallbackMessageAggregate aggregate, + public static Result RecordCallback(this CallbackMessageAggregate aggregate, Guid aggregateId, String typeString, MessageFormat messageFormat, @@ -66,6 +67,8 @@ public static void RecordCallback(this CallbackMessageAggregate aggregate, aggregate.ApplyAndAppend(callbackReceivedEvent); } + + return Result.Success(); } internal static DomainEvent CreateCallbackReceivedEvent(this CallbackMessageAggregate aggregate,