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)