Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ public class QueueDEConfiguration

public bool CloseOpenTSETransactionsOnDailyClosing { get; set; } = false;

public bool RegisterClient { get; set; } = false;

public static QueueDEConfiguration FromMiddlewareConfiguration(ILogger<QueueDEConfiguration> logger, MiddlewareConfiguration middlewareConfiguration)
{
var configuration = JsonConvert.DeserializeObject<QueueDEConfiguration>(JsonConvert.SerializeObject(middlewareConfiguration.Configuration));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public abstract class RequestCommand
protected readonly IPersistentTransactionRepository<OpenTransaction> _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;

Expand Down Expand Up @@ -377,6 +377,15 @@ await _failedFinishTransactionRepo.InsertOrUpdateTransactionAsync(new FailedFini
protected async Task<(ulong transactionNumber, List<SignaturItem> 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);
Expand All @@ -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<SignaturItem> signatures, string clientId, string signatureAlgorithm, string publicKeyBase64, string serialNumberOctet)> ProcessOutOfOperationReceiptAsync(string processType, string payload, ftQueueItem queueItem, ftQueue queue, ftQueueDE queueDE, ReceiptRequest request)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,11 @@ public override async Task<RequestCommandResponse> 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);

Expand Down
Loading