From 287c14e11407d5a1d84866519c049ccd69aa613a Mon Sep 17 00:00:00 2001 From: TekH Date: Mon, 28 Sep 2026 11:55:31 +0200 Subject: [PATCH] Refactor signed status logic in EnvelopeSenderPage Introduce `GetSignedReceiverCount` and `IsReceiverSigned` helper methods to centralize and improve the logic for determining the signed status of receivers. Replace inline logic with these methods for better encapsulation and reusability. Update UI rendering logic to dynamically determine receiver badge states based on the new methods. These changes enhance code maintainability, reduce duplication, and ensure consistent behavior across the application. --- .../Components/Pages/EnvelopeSenderPage.razor | 52 ++++++++++++++++--- 1 file changed, 46 insertions(+), 6 deletions(-) diff --git a/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Components/Pages/EnvelopeSenderPage.razor b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Components/Pages/EnvelopeSenderPage.razor index 1c6133cf..b3de0f5f 100644 --- a/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Components/Pages/EnvelopeSenderPage.razor +++ b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Components/Pages/EnvelopeSenderPage.razor @@ -279,7 +279,7 @@ if (envelope != null) { var receivers = envelope.EnvelopeReceivers?.ToList() ?? []; - var signed = receivers.Count(r => r.Signed); + var signed = GetSignedReceiverCount(envelope); var total = receivers.Count;
@@ -314,8 +314,11 @@ @foreach (var receiver in envelope.EnvelopeReceivers) {
- - @if (receiver.Signed) + @{ + var isSigned = IsReceiverSigned(envelope, receiver); + } + + @if (isSigned) { @@ -442,7 +445,7 @@ if (envelope != null) { var receivers = envelope.EnvelopeReceivers?.ToList() ?? []; - var signed = receivers.Count(r => r.Signed); + var signed = GetSignedReceiverCount(envelope); var total = receivers.Count;
@@ -477,8 +480,11 @@ @foreach (var receiver in envelope.EnvelopeReceivers) {
- - @if (receiver.Signed) + @{ + var isSigned = IsReceiverSigned(envelope, receiver); + } + + @if (isSigned) { @@ -945,6 +951,40 @@ .ToList(); } + int GetSignedReceiverCount(EnvelopeDto envelope) + { + var receivers = envelope.EnvelopeReceivers?.ToList() ?? []; + if (receivers.Count == 0) + return 0; + + return receivers.Count(r => IsReceiverSigned(envelope, r)); + } + + bool IsReceiverSigned(EnvelopeDto envelope, EnvelopeGenerator.Application.Common.Dto.EnvelopeReceiver.EnvelopeReceiverDto receiver) + { + var status = (EnvelopeStatus)envelope.Status; + if (status is EnvelopeStatus.EnvelopeCompletelySigned or EnvelopeStatus.MessageCompletionSent) + return true; + + var histories = envelope.Histories?.Where(h => h.Status == EnvelopeStatus.DocumentSigned).ToList() ?? []; + if (histories.Count == 0) + return false; + + if (histories.Any(h => h.Receiver?.Id == receiver.ReceiverId)) + return true; + + var receiverEmail = receiver.Receiver?.EmailAddress; + if (!string.IsNullOrWhiteSpace(receiverEmail) && + histories.Any(h => string.Equals(h.UserReference, receiverEmail, StringComparison.OrdinalIgnoreCase))) + return true; + + if (!string.IsNullOrWhiteSpace(receiver.Name) && + histories.Any(h => string.Equals(h.UserReference, receiver.Name, StringComparison.OrdinalIgnoreCase))) + return true; + + return false; + } + DateTime GetHistoryDate(HistoryDto history) { return history.ActionDate ?? history.AddedWhen;