diff --git a/queue/src/fiskaltrust.Middleware.Localization.QueueDE/QueueDEConfiguration.cs b/queue/src/fiskaltrust.Middleware.Localization.QueueDE/QueueDEConfiguration.cs index 92a72a477..2668852d3 100644 --- a/queue/src/fiskaltrust.Middleware.Localization.QueueDE/QueueDEConfiguration.cs +++ b/queue/src/fiskaltrust.Middleware.Localization.QueueDE/QueueDEConfiguration.cs @@ -28,6 +28,8 @@ public class QueueDEConfiguration public bool CloseOpenTSETransactionsOnDailyClosing { get; set; } = false; + public bool RegisterClient { get; set; } = false; + public static QueueDEConfiguration FromMiddlewareConfiguration(ILogger logger, MiddlewareConfiguration middlewareConfiguration) { var configuration = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(middlewareConfiguration.Configuration)); diff --git a/queue/src/fiskaltrust.Middleware.Localization.QueueDE/RequestCommands/RequestCommand.cs b/queue/src/fiskaltrust.Middleware.Localization.QueueDE/RequestCommands/RequestCommand.cs index 62e43e223..9b0e31411 100644 --- a/queue/src/fiskaltrust.Middleware.Localization.QueueDE/RequestCommands/RequestCommand.cs +++ b/queue/src/fiskaltrust.Middleware.Localization.QueueDE/RequestCommands/RequestCommand.cs @@ -38,7 +38,7 @@ public abstract class RequestCommand protected readonly IPersistentTransactionRepository _openTransactionRepo; private readonly IJournalDERepository _journalDERepository; private readonly MiddlewareConfiguration _middlewareConfiguration; - private readonly QueueDEConfiguration _queueDEConfiguration; + protected readonly QueueDEConfiguration _queueDEConfiguration; private readonly ITarFileCleanupService _tarFileCleanupService; protected readonly IMasterDataService _masterDataService; @@ -377,6 +377,15 @@ await _failedFinishTransactionRepo.InsertOrUpdateTransactionAsync(new FailedFini protected async Task<(ulong transactionNumber, List signatures, string clientId, string signatureAlgorithm, string publicKeyBase64, string serialNumberOctet)> ProcessInitialOperationReceiptAsync(string transactionIdentifier, string processType, string payload, ftQueueItem queueItem, ftQueueDE queueDE, bool clientIdRegistrationOnly) { _logger.LogTrace("RequestCommand.ProcessInitialOperationReceiptAsync [enter]."); + await RegisterClient(queueDE, clientIdRegistrationOnly).ConfigureAwait(false); + + var processReceiptResponse = await ProcessReceiptAsync(transactionIdentifier, processType, payload, queueItem, queueDE).ConfigureAwait(false); + _logger.LogTrace("RequestCommand.ProcessInitialOperationReceiptAsync [exit]."); + return (processReceiptResponse.TransactionNumber, processReceiptResponse.Signatures, processReceiptResponse.ClientId, processReceiptResponse.SignatureAlgorithm, processReceiptResponse.PublicKeyBase64, processReceiptResponse.SerialNumberOctet); + } + + protected async Task RegisterClient(ftQueueDE queueDE, bool clientIdRegistrationOnly) + { if (!clientIdRegistrationOnly) { await _deSSCDProvider.Instance.SetTseStateAsync(new TseState { CurrentState = TseStates.Initialized }).ConfigureAwait(false); @@ -400,10 +409,6 @@ await _failedFinishTransactionRepo.InsertOrUpdateTransactionAsync(new FailedFini _logger.LogError(ex, $"TSE client registration failed. ClientId: {queueDE.CashBoxIdentification}"); throw; } - - var processReceiptResponse = await ProcessReceiptAsync(transactionIdentifier, processType, payload, queueItem, queueDE).ConfigureAwait(false); - _logger.LogTrace("RequestCommand.ProcessInitialOperationReceiptAsync [exit]."); - return (processReceiptResponse.TransactionNumber, processReceiptResponse.Signatures, processReceiptResponse.ClientId, processReceiptResponse.SignatureAlgorithm, processReceiptResponse.PublicKeyBase64, processReceiptResponse.SerialNumberOctet); } protected async Task<(ulong transactionNumber, List signatures, string clientId, string signatureAlgorithm, string publicKeyBase64, string serialNumberOctet)> ProcessOutOfOperationReceiptAsync(string processType, string payload, ftQueueItem queueItem, ftQueue queue, ftQueueDE queueDE, ReceiptRequest request) diff --git a/queue/src/fiskaltrust.Middleware.Localization.QueueDE/RequestCommands/ZeroReceiptCommand.cs b/queue/src/fiskaltrust.Middleware.Localization.QueueDE/RequestCommands/ZeroReceiptCommand.cs index 71ea5e42f..2f7ab13d5 100644 --- a/queue/src/fiskaltrust.Middleware.Localization.QueueDE/RequestCommands/ZeroReceiptCommand.cs +++ b/queue/src/fiskaltrust.Middleware.Localization.QueueDE/RequestCommands/ZeroReceiptCommand.cs @@ -43,6 +43,11 @@ public override async Task ExecuteAsync(ftQueue queue, f try { + + if (_queueDEConfiguration.RegisterClient) + { + await RegisterClient(queueDE, true).ConfigureAwait(false); + } var processReceiptResponse = await ProcessReceiptAsync(request.cbReceiptReference, processType, payload, queueItem, queueDE).ConfigureAwait(false); receiptResponse.ftReceiptIdentification = request.GetReceiptIdentification(queue.ftReceiptNumerator, processReceiptResponse.TransactionNumber);