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
);
}
}