diff --git a/TransactionProcessor.BusinessLogic/EventHandling/VoucherDomainEventHandler.cs b/TransactionProcessor.BusinessLogic/EventHandling/VoucherDomainEventHandler.cs index 188b6abc..f724ad9a 100644 --- a/TransactionProcessor.BusinessLogic/EventHandling/VoucherDomainEventHandler.cs +++ b/TransactionProcessor.BusinessLogic/EventHandling/VoucherDomainEventHandler.cs @@ -141,6 +141,11 @@ private async Task GetVoucherOperator(Models.Voucher voucherModel, EstateManagementGenericContext context = await this.DbContextFactory.GetContext(voucherModel.EstateId, ConnectionStringIdentifier, cancellationToken); Database.Entities.Transaction transaction = await context.Transactions.SingleOrDefaultAsync(t => t.TransactionId == voucherModel.TransactionId, cancellationToken); + if (transaction == null) + { + throw new Exception($"Transaction not found Transaction Id {voucherModel.TransactionId}"); + } + Contract contract = await context.Contracts.SingleOrDefaultAsync(c => c.ContractId == transaction.ContractId, cancellationToken); return contract.Description; diff --git a/TransactionProcessor.Repository/ITransactionProcessorReadModelRepository.cs b/TransactionProcessor.Repository/ITransactionProcessorReadModelRepository.cs index 976074e9..10eac1b1 100644 --- a/TransactionProcessor.Repository/ITransactionProcessorReadModelRepository.cs +++ b/TransactionProcessor.Repository/ITransactionProcessorReadModelRepository.cs @@ -1272,7 +1272,7 @@ public async Task RecordTransactionAdditionalRequestData(TransactionDoma await context.TransactionsAdditionalRequestData.AddAsync(additionalRequestData, cancellationToken); - return await context.SaveChangesAsync(cancellationToken); + return await context.SaveChangesWithDuplicateHandling(cancellationToken); } public async Task RecordTransactionAdditionalResponseData(TransactionDomainEvents.AdditionalResponseDataRecordedEvent domainEvent, @@ -1301,7 +1301,7 @@ public async Task RecordTransactionAdditionalResponseData(TransactionDom await context.TransactionsAdditionalResponseData.AddAsync(additionalResponseData, cancellationToken); - return await context.SaveChangesAsync(cancellationToken); + return await context.SaveChangesWithDuplicateHandling(cancellationToken); } public async Task SetTransactionAmount(TransactionDomainEvents.AdditionalRequestDataRecordedEvent domainEvent, @@ -1374,7 +1374,7 @@ public async Task StartTransaction(TransactionDomainEvents.TransactionHa await context.AddAsync(t, cancellationToken); Logger.LogDebug($"Transaction Loaded with Id [{domainEvent.TransactionId}]"); - return await context.SaveChangesAsync(cancellationToken); + return await context.SaveChangesWithDuplicateHandling(cancellationToken); } public async Task UpdateEstate(EstateDomainEvents.EstateReferenceAllocatedEvent domainEvent, diff --git a/TransactionProcessor/appsettings.json b/TransactionProcessor/appsettings.json index 39b6fbad..bea2041d 100644 --- a/TransactionProcessor/appsettings.json +++ b/TransactionProcessor/appsettings.json @@ -191,10 +191,11 @@ "TransactionProcessor.BusinessLogic.EventHandling.ReadModelDomainEventHandler,TransactionProcessor.BusinessLogic" ], "VoucherIssuedEvent": [ + "TransactionProcessor.BusinessLogic.EventHandling.ReadModelDomainEventHandler,TransactionProcessor.BusinessLogic", "TransactionProcessor.BusinessLogic.EventHandling.VoucherDomainEventHandler, TransactionProcessor.BusinessLogic", - "TransactionProcessor.BusinessLogic.EventHandling.TransactionDomainEventHandler, TransactionProcessor.BusinessLogic" ], "VoucherFullyRedeemedEvent": [ + "TransactionProcessor.BusinessLogic.EventHandling.ReadModelDomainEventHandler,TransactionProcessor.BusinessLogic", "TransactionProcessor.BusinessLogic.EventHandling.ReadModelDomainEventHandler,TransactionProcessor.BusinessLogic" ], // Operator Domain Event Handler