using MediatR;
using EnvelopeGenerator.Application.Common.Dto;
using DigitalData.Core.Exceptions;
namespace EnvelopeGenerator.Application.Envelopes.Queries;
///
/// Repräsentiert eine Abfrage für Umschläge.
///
public record ReadSingleEnvelopeDocResultQuery() : IRequest
{
///
///
///
public ReadSingleEnvelopeQuery Envelope { get; set; } = null!;
}
///
/// Verarbeitet und liefert passende -Ergebnisse.
///
public class ReadSingleEnvelopeDocResultQueryHandler : IRequestHandler
{
private readonly IMediator _mediator;
///
///
///
///
public ReadSingleEnvelopeDocResultQueryHandler(IMediator mediator)
{
_mediator = mediator;
}
///
///
///
///
///
///
public async Task Handle(ReadSingleEnvelopeDocResultQuery request, CancellationToken cancellationToken)
{
request.Envelope.IncludeDocResult = true;
var result = await _mediator.Send(request.Envelope, cancellationToken);
return result.DocResult is byte[] docResult && docResult.Length > 0
? docResult
: throw new NotFoundException($"Document for Envelope with ID {request.Envelope.Id} not found");
}
}