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