Refactor envelope rejection logic in EnvelopeController

Clarified and streamlined the handling of rejected envelopes:
- Moved retrieval of rejecting receivers for clarity.
- Signed out users when any rejecting receivers are present.
- Improved determination of "external" users.
- Updated condition for showing the EnvelopeRejected view.
- Temporarily hardcoded ViewBag.IsExt with a TODO for future fix.
- Removed redundant code for better maintainability.
This commit is contained in:
2026-03-11 12:05:20 +01:00
parent e724a74f9c
commit 5e840db04c

View File

@@ -79,14 +79,16 @@ public class EnvelopeController : ViewControllerBase
return this.ViewEnvelopeNotFound();
#region Rejected or Signed
//check rejection
if (er.Envelope.IsReadAndSign())
var rejRcvrs = await _historyService.ReadRejectingReceivers(er.Envelope!.Id);
if (rejRcvrs.Any())
{
var rejRcvrs = await _historyService.ReadRejectingReceivers(er.Envelope!.Id);
if (rejRcvrs.Any())
await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
var isExt = !rejRcvrs.Where(rcv => rcv.Id == er.Receiver!.Id).Any(); //external if the current user is not rejected
if (er.Envelope.IsReadAndSign() || !isExt)
{
await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
ViewBag.IsExt = !rejRcvrs.Contains(er.Receiver); //external if the current user is not rejected
//TODO: Normally assigned to the isExt variable. However, since the relevant keys are not defined in the resx files, it was assigned false. Fix this.
ViewBag.IsExt = true;
return View("EnvelopeRejected", er);
}
}
@@ -166,14 +168,17 @@ public class EnvelopeController : ViewControllerBase
}
var er_secret = er_secret_res.Data;
//check rejection if the envelope is read-and-sign
if (er_secret.Envelope.IsReadAndSign())
var rejRcvrs = await _historyService.ReadRejectingReceivers(er_secret.Envelope!.Id);
if (rejRcvrs.Any())
{
var rejRcvrs = await _historyService.ReadRejectingReceivers(er_secret.Envelope!.Id);
if (rejRcvrs.Any())
await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
var isExt = !rejRcvrs.Where(rcv => rcv.Id == er_secret.Receiver!.Id).Any(); //external if the current user is not rejected
//check rejection if the envelope is read-and-sign or non-external (internal)
if (er_secret.Envelope.IsReadAndSign() || !isExt)
{
await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
ViewBag.IsExt = !rejRcvrs.Contains(er_secret.Receiver); //external if the current user is not rejected
//TODO: Normally assigned to the isExt variable. However, since the relevant keys are not defined in the resx files, it was assigned false. Fix this.
ViewBag.IsExt = true;
return View("EnvelopeRejected", er_secret);
}
}