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.
29 lines
1.1 KiB
C#
29 lines
1.1 KiB
C#
using EnvelopeGenerator.Application.Envelopes.Queries;
|
|
using EnvelopeGenerator.ServiceHost.Jobs;
|
|
using MediatR;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace EnvelopeGenerator.ServiceHost.Controllers;
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="mediator"></param>
|
|
/// <param name="job"></param>
|
|
[Route("api/[controller]")]
|
|
[ApiController]
|
|
public class FinalizeDocumentController(IMediator mediator, FinalizeDocumentJob job) : ControllerBase
|
|
{
|
|
[HttpGet]
|
|
public async Task<IActionResult> 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");
|
|
}
|
|
} |