diff --git a/EnvelopeGenerator.Application/Envelopes/Queries/ReadSingleEnvelopeDocResultQuery.cs b/EnvelopeGenerator.Application/Envelopes/Queries/ReadSingleEnvelopeDocResultQuery.cs index 73760944..f2bb0f0e 100644 --- a/EnvelopeGenerator.Application/Envelopes/Queries/ReadSingleEnvelopeDocResultQuery.cs +++ b/EnvelopeGenerator.Application/Envelopes/Queries/ReadSingleEnvelopeDocResultQuery.cs @@ -8,8 +8,13 @@ namespace EnvelopeGenerator.Application.Envelopes.Queries; /// /// Repräsentiert eine Abfrage für Umschläge. /// -/// -public record ReadSingleEnvelopeDocResultQuery(ReadSingleEnvelopeQuery Envelope) : EnvelopeQueryBase, IRequest; +public record ReadSingleEnvelopeDocResultQuery() : EnvelopeQueryBase, IRequest +{ + /// + /// + /// + public ReadSingleEnvelopeQuery Envelope { get; set; } = null!; +} /// /// Verarbeitet und liefert passende -Ergebnisse. diff --git a/EnvelopeGenerator.ServiceHost/Controllers/FinalizeDocumentController.cs b/EnvelopeGenerator.ServiceHost/Controllers/FinalizeDocumentController.cs new file mode 100644 index 00000000..d5056901 --- /dev/null +++ b/EnvelopeGenerator.ServiceHost/Controllers/FinalizeDocumentController.cs @@ -0,0 +1,29 @@ +using EnvelopeGenerator.Application.Envelopes.Queries; +using EnvelopeGenerator.ServiceHost.Jobs; +using MediatR; +using Microsoft.AspNetCore.Mvc; + +namespace EnvelopeGenerator.ServiceHost.Controllers; + +/// +/// +/// +/// +/// +[Route("api/[controller]")] +[ApiController] +public class FinalizeDocumentController(IMediator mediator, FinalizeDocumentJob job) : ControllerBase +{ + [HttpGet] + public async Task FinalizeEnvelopeDocument([FromQuery] ReadSingleEnvelopeQuery query, [FromQuery] bool forceRegenerate = false, CancellationToken cancel = default) + { + var envelope = await mediator.Send(query, cancel); + + // TODO: migrate forceRegenerate input to FinalizeDocumentJob as property and remove this check from controller + if (envelope.DocResult is null || forceRegenerate) + await job.ExecuteAsync(envelope, cancel); + + var docResult = await mediator.Send(new ReadSingleEnvelopeDocResultQuery() { Envelope = query }, cancel); + return File(docResult, "application/pdf", $"envelope_{query.Uuid}.pdf"); + } +} \ No newline at end of file