diff --git a/EnotaryoPH/EnotaryoPH.Web/Common/Extensions/StringExtensions.cs b/EnotaryoPH/EnotaryoPH.Web/Common/Extensions/StringExtensions.cs index 391a55d..deacccc 100644 --- a/EnotaryoPH/EnotaryoPH.Web/Common/Extensions/StringExtensions.cs +++ b/EnotaryoPH/EnotaryoPH.Web/Common/Extensions/StringExtensions.cs @@ -10,6 +10,8 @@ public static bool IsInList(this string s, params string[] list) => list.Contains(s, StringComparer.OrdinalIgnoreCase); + public static bool IsInList(this string stringValue, IEnumerable listOfEnums) where T : struct, Enum => Enum.TryParse(stringValue, out T enumValue) && listOfEnums.Contains(enumValue); + public static string NullIfWhiteSpace(this string s) => string.IsNullOrWhiteSpace(s) ? null : s; public static Guid ToGuidFromBase64(this string s) diff --git a/EnotaryoPH/EnotaryoPH.Web/Pages/Participant/Registration/Index.cshtml.cs b/EnotaryoPH/EnotaryoPH.Web/Pages/Participant/Registration/Index.cshtml.cs index a51bc9e..d3d1596 100644 --- a/EnotaryoPH/EnotaryoPH.Web/Pages/Participant/Registration/Index.cshtml.cs +++ b/EnotaryoPH/EnotaryoPH.Web/Pages/Participant/Registration/Index.cshtml.cs @@ -24,16 +24,17 @@ namespace EnotaryoPH.Web.Pages.Participant.Registration return NotFound(); } + var validStates = new SignatoryStatus[] { SignatoryStatus.New, SignatoryStatus.Registered, SignatoryStatus.EmailSent }; var invitationCodeGuid = InvitationCode.ToGuidFromBase64(); var signatory = _notaryoDBContext.TransactionSignatories .Include(e => e.Transaction) - .FirstOrDefault(e => e.InvitationCode == invitationCodeGuid.ToString() && (e.Status == nameof(SignatoryStatus.New) || e.Status == nameof(SignatoryStatus.Registered))); - if (signatory == null) + .FirstOrDefault(e => e.InvitationCode == invitationCodeGuid.ToString()); + if (signatory == null || !signatory.Status.IsInList(validStates)) { return NotFound(); } - var existingUser = _notaryoDBContext.Users.FirstOrDefault(e => e.Email.Equals(signatory.Email, StringComparison.CurrentCultureIgnoreCase)); + var existingUser = _notaryoDBContext.Users.FirstOrDefault(e => e.Email.ToLower() == signatory.Email.ToLower()); if (existingUser != null) { signatory.Status = nameof(SignatoryStatus.Registered);