From 643501f484e21de4fb0baa46fc7059570eac8ee4 Mon Sep 17 00:00:00 2001 From: TekH Date: Thu, 18 Sep 2025 17:14:28 +0200 Subject: [PATCH] refactor(EnvelopeController): simplify EnvelopeController actions and view handling - Added overload of CreateShowEnvelopeView(EnvelopeReceiverDto) to remove redundant id parsing logic - Refactored EnvelopeLocked action to receive EnvelopeReceiverDto directly instead of fetching inside - Centralized ViewData assignments for cleaner envelope rendering - Improved error logging to include envelope UUID and receiver signature where applicable - Adjusted EnvelopeLocked GET to return explicit "EnvelopeLocked" view for unauthenticated users --- .../Controllers/EnvelopeController.cs | 34 +++++++++++++++---- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/EnvelopeGenerator.Web/Controllers/EnvelopeController.cs b/EnvelopeGenerator.Web/Controllers/EnvelopeController.cs index 3454a933..48c1f9d1 100644 --- a/EnvelopeGenerator.Web/Controllers/EnvelopeController.cs +++ b/EnvelopeGenerator.Web/Controllers/EnvelopeController.cs @@ -59,6 +59,8 @@ public class EnvelopeController : ViewControllerBase { try { + ViewData["EnvelopeKey"] = envelopeReceiverId; + if (!envelopeReceiverId.TryDecode(out var decoded)) { Response.StatusCode = StatusCodes.Status401Unauthorized; @@ -119,12 +121,10 @@ public class EnvelopeController : ViewControllerBase [HttpGet("{envelopeReceiverId}/Locked")] [Obsolete("Use DigitalData.Core.Exceptions and .Middleware")] - public async Task EnvelopeLocked([FromRoute] string envelopeReceiverId, CancellationToken cancel) + public async Task EnvelopeLocked(EnvelopeReceiverDto er, CancellationToken cancel) { try { - var er = await _mediator.ReadEnvelopeReceiverAsync(envelopeReceiverId, cancel); - if (er is null) { Response.StatusCode = StatusCodes.Status401Unauthorized; @@ -132,24 +132,44 @@ public class EnvelopeController : ViewControllerBase } if (User.IsInRole(ReceiverRole.FullyAuth)) - return await CreateShowEnvelopeView(envelopeReceiverId, er); + return await CreateShowEnvelopeView(er); else { - ViewData["EnvelopeKey"] = envelopeReceiverId; ViewData["TFAEnabled"] = er.Envelope!.TFAEnabled; ViewData["HasPhoneNumber"] = er.HasPhoneNumber; ViewData["SenderEmail"] = er.Envelope.User!.Email; ViewData["EnvelopeTitle"] = er.Envelope.Title; - return View(); + return View("EnvelopeLocked"); } } catch(Exception ex) { - _logger.LogEnvelopeError(envelopeReceiverId: envelopeReceiverId, exception: ex); + _logger.LogEnvelopeError(uuid: er.Envelope?.Uuid, er.Receiver!.Signature, exception: ex); return this.ViewInnerServiceError(); } } + [Obsolete("Use MediatR")] + private async Task CreateShowEnvelopeView(EnvelopeReceiverDto er) + { + if (er.Envelope!.Documents?.FirstOrDefault() is DocumentDto doc && doc.ByteData is not null) + { + ViewData["DocumentBytes"] = doc.ByteData; + } + else + { + _logger.LogEnvelopeError(uuid: er.Envelope.Uuid, er.Receiver?.Signature, message: "No document byte-data was found in ENVELOPE_DOCUMENT table."); + return this.ViewDocumentNotFound(); + } + + await HttpContext.SignInEnvelopeAsync(er, ReceiverRole.FullyAuth); + + //add PSPDFKit licence key + ViewData["PSPDFKitLicenseKey"] = _configuration["PSPDFKitLicenseKey"]; + + return View("ShowEnvelope", er); + } + [Obsolete("Use MediatR")] private async Task CreateShowEnvelopeView(string envelopeReceiverId, EnvelopeReceiverDto er) {