diff --git a/EnvelopeGenerator.Application/Services/EnvelopeGeneratorExtensions.cs b/EnvelopeGenerator.Application/Services/EnvelopeGeneratorExtensions.cs
index 67c32b74..d111202b 100644
--- a/EnvelopeGenerator.Application/Services/EnvelopeGeneratorExtensions.cs
+++ b/EnvelopeGenerator.Application/Services/EnvelopeGeneratorExtensions.cs
@@ -1,7 +1,15 @@
namespace EnvelopeGenerator.Application.Services
{
+ ///
+ /// Provides extension methods for decoding and extracting information from an envelope receiver ID.
+ ///
public static class EnvelopeGeneratorExtensions
{
+ ///
+ /// Decodes the envelope receiver ID and extracts the envelope UUID and receiver signature.
+ ///
+ /// The base64 encoded string containing the envelope UUID and receiver signature.
+ /// A tuple containing the envelope UUID and receiver signature.
public static (string EnvelopeUuid, string ReceiverSignature) DecodeEnvelopeReceiverId(this string envelopeReceiverId)
{
byte[] bytes = Convert.FromBase64String(envelopeReceiverId);
@@ -13,5 +21,19 @@
else
return (string.Empty, string.Empty);
}
+
+ ///
+ /// Gets the envelope UUID from the decoded envelope receiver ID.
+ ///
+ /// The base64 encoded string to decode.
+ /// The envelope UUID.
+ public static string GetEnvelopeUuid(this string envelopeReceiverId) => envelopeReceiverId.DecodeEnvelopeReceiverId().EnvelopeUuid;
+
+ ///
+ /// Gets the receiver signature from the decoded envelope receiver ID.
+ ///
+ /// The base64 encoded string to decode.
+ /// The receiver signature.
+ public static string GetReceiverSignature(this string envelopeReceiverId) => envelopeReceiverId.DecodeEnvelopeReceiverId().ReceiverSignature;
}
}
\ No newline at end of file
diff --git a/EnvelopeGenerator.Web/Controllers/HomeController.cs b/EnvelopeGenerator.Web/Controllers/HomeController.cs
index 1af7547e..edb39a69 100644
--- a/EnvelopeGenerator.Web/Controllers/HomeController.cs
+++ b/EnvelopeGenerator.Web/Controllers/HomeController.cs
@@ -62,7 +62,29 @@ namespace EnvelopeGenerator.Web.Controllers
}
[HttpGet("/EnvelopeKey/{envelopeReceiverId}")]
- public IActionResult ShowEnvelope([FromRoute] string envelopeReceiverId) => Redirect($"/EnvelopeKey/{envelopeReceiverId}/Locked");
+ public async Task ShowEnvelope([FromRoute] string envelopeReceiverId)
+ {
+ EnvelopeResponse response = await envelopeOldService.LoadEnvelope(envelopeReceiverId);
+
+ if (response.Envelope.UseAccessCode)
+ {
+ bool accessCodeAlreadyRequested = database.Models.receiverModel.AccessCodeAlreadyRequested(response.Receiver.Email, response.Envelope.Id);
+
+ if (!accessCodeAlreadyRequested)
+ {
+ // Send email with password
+ bool actionResult = database.Services.actionService.RequestAccessCode(response.Envelope, response.Receiver);
+ bool result = database.Services.emailService.SendDocumentAccessCodeReceivedEmail(response.Envelope, response.Receiver);
+ }
+
+ return Redirect($"/EnvelopeKey/{envelopeReceiverId}/Locked");
+ }
+ else
+ {
+ ViewData["EnvelopeKey"] = envelopeReceiverId;
+ return View();
+ }
+ }
[HttpPost("/EnvelopeKey/{envelopeReceiverId}/Locked")]
public async Task ShowEnvelope([FromRoute] string envelopeReceiverId, [FromForm] string access_code)