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