Files
EnvelopeGenerator/EnvelopeGenerator.Application/Envelopes/Queries/ReadSingleEnvelopeDocResultQuery.cs
TekH 089d2bd1cb Add FinalizeDocumentController and refactor query model
Refactored ReadSingleEnvelopeDocResultQuery to use a parameterless constructor and an Envelope property. Introduced FinalizeDocumentController with a GET endpoint to finalize and return envelope documents as PDFs, supporting force regeneration. Added dependency injection for IMediator and FinalizeDocumentJob. Includes a TODO to migrate forceRegenerate logic into the job.
2026-04-09 10:55:13 +02:00

46 lines
1.5 KiB
C#

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