feat(EnvelopeReceiverReadOnly): Modelldaten und Dokument im Endpunkt sind so eingestellt, dass sie als Bytes geladen werden.

This commit is contained in:
Developer 02
2024-10-05 02:04:57 +02:00
parent bc6955055a
commit efa9160c04
4 changed files with 78 additions and 24 deletions

View File

@@ -16,6 +16,7 @@ using EnvelopeGenerator.Web.Models;
using EnvelopeGenerator.Application.Resources;
using EnvelopeGenerator.Application.DTOs.EnvelopeReceiver;
using static EnvelopeGenerator.Common.Constants;
using EnvelopeGenerator.Domain.Entities;
namespace EnvelopeGenerator.Web.Controllers
{
@@ -51,7 +52,7 @@ namespace EnvelopeGenerator.Web.Controllers
{
try
{
envelopeReceiverId = _urlEncoder.Encode(envelopeReceiverId);
//envelopeReceiverId = _urlEncoder.Encode(envelopeReceiverId);
if (!envelopeReceiverId.TryDecode(out var decoded))
{
@@ -198,7 +199,7 @@ namespace EnvelopeGenerator.Web.Controllers
{
_logger.LogEnvelopeError(envelopeReceiverId: envelopeReceiverId, message: "No document was found.");
return this.ViewDocumentNotFound();
}
}
var claims = new List<Claim> {
new(ClaimTypes.NameIdentifier, uuid),
@@ -304,13 +305,12 @@ namespace EnvelopeGenerator.Web.Controllers
}
}
[Authorize]
[HttpGet("EnvelopeKey/{readOnlyId}/ReadOnly")]
public async Task<IActionResult> EnvelopeReceiverReadOnly(string readOnlyKey)
[HttpGet("EnvelopeKey/{readOnlyKey}/ReadOnly")]
public async Task<IActionResult> EnvelopeReceiverReadOnly([FromRoute] string readOnlyKey)
{
try
{
readOnlyKey = _urlEncoder.Encode(readOnlyKey);
//readOnlyKey = _urlEncoder.Encode(readOnlyKey);
// check if the readOnlyId is valid
if (!readOnlyKey.TryDecode(out var decodedKeys) || decodedKeys.GetEncodeType() != EncodeType.EnvelopeReceiverReadOnly)
@@ -320,17 +320,43 @@ namespace EnvelopeGenerator.Web.Controllers
}
var readOnlyId = decodedKeys.ParseReadOnlyId();
return await _readOnlyService.ReadByIdAsync(readOnlyId).ThenAsync(
Success: erro =>
var erro_res = await _readOnlyService.ReadByIdAsync(readOnlyId);
if (erro_res.IsFailed)
{
_logger.LogNotice(erro_res.Notices);
return this.ViewInnerServiceError();
}
var erro = erro_res.Data;
return await _envRcvService.ReadByUuidSignatureAsync(uuid: erro.Envelope!.Uuid, erro.Receiver!.Signature).ThenAsync(
SuccessAsync: async er =>
{
var envelopeKey = (er.Envelope!.Uuid, er.Receiver!.Signature).EncodeEnvelopeReceiverId();
EnvelopeResponse response = await envelopeOldService.LoadEnvelope(envelopeKey);
if (response.Envelope.Documents.Count > 0)
{
ViewData["model"] = erro;
return View("ShowEnvelope");
},
Fail: IActionResult (msg, ntc) =>
var document = await envelopeOldService.GetDocument(response.Envelope.Documents[0].Id, envelopeKey);
byte[] bytes = await envelopeOldService.GetDocumentContents(document);
ViewData["EnvelopeKey"] = envelopeKey;
ViewData["DocumentBytes"] = bytes;
ViewData["IsReadOnly"] = true;
ViewData["PSPDFKitLicenseKey"] = _configuration["PSPDFKitLicenseKey"];
return View("ShowEnvelope", er);
}
else
{
_logger.LogNotice(ntc);
return this.ViewInnerServiceError();
});
_logger.LogEnvelopeError(envelopeReceiverId: envelopeKey, message: "No document was found.");
return this.ViewDocumentNotFound();
}
},
Fail: (messages, notices) =>
{
_logger.LogNotice(notices);
return this.ViewEnvelopeNotFound();
});
}
catch (Exception ex)
{