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