using DocumentOperator.Application.Common.Interfaces; using MediatR; namespace DocumentOperator.Application.Features.Documents.ExtractSwissQrCode; /// /// Handles extraction of Swiss QR Code from PDF documents. /// Uses ISwissQrCodeProcessor to extract QR code from the last page and parse it. /// public sealed class ExtractSwissQrCodeHandler : IRequestHandler { private readonly ISwissQrCodeProcessor _qrCodeProcessor; public ExtractSwissQrCodeHandler(ISwissQrCodeProcessor qrCodeProcessor) { _qrCodeProcessor = qrCodeProcessor; } public async Task Handle(ExtractSwissQrCodeQuery request, CancellationToken cancellationToken) { // Convert Base64 string to byte array byte[] pdfBytes = request.PdfContent.ToByteArray(); // Extract and parse Swiss QR Code from last page var qrCodeData = await _qrCodeProcessor.ExtractSwissQrCodeAsync(pdfBytes, cancellationToken); // Return references (passed through) + QR code data return new ExtractSwissQrCodeResult( References: request.References, QrCodeData: qrCodeData ); } }