public JsonResult ProcessPasswordResetRequest(ResetUserAccessInfoObj resetObj)
        {
            try
            {
                if (resetObj == null || string.IsNullOrEmpty(resetObj.Email) ||
                    string.IsNullOrEmpty(resetObj.ConfirmationCode) || resetObj.Email.Length < 5 ||
                    resetObj.ConfirmationCode.Length < 5)
                {
                    return(Json(new { IsSuccessful = false, Error = "Invalid Password Reset Information" }));
                }

                if (string.IsNullOrEmpty(resetObj.NewPassword) || resetObj.NewPassword.Length < 3)
                {
                    return(Json(new { IsSuccessful = false, Error = "New Password must be at least 3 characters" }));
                }

                if (string.IsNullOrEmpty(resetObj.ConfirmPassword) || resetObj.ConfirmPassword.Length < 3)
                {
                    return(Json(new { IsSuccessful = false, Error = "Confirm Password must be at least 3 characters" }));
                }

                if (string.Compare(resetObj.NewPassword, resetObj.ConfirmPassword, StringComparison.CurrentCultureIgnoreCase) != 0)
                {
                    return(Json(new { IsSuccessful = false, Error = "New Password and Confirm Password must match" }));
                }

                var passObj = new PasswordResetConfirmObj
                {
                    Password         = resetObj.NewPassword,
                    Email            = resetObj.Email,
                    ConfirmationCode = resetObj.ConfirmationCode,
                };

                var changePassword = new PortalUserManager().ProcessPasswordReset(passObj, "");
                if (changePassword?.Status == null)
                {
                    return(Json(new { IsSuccessful = false, Error = "Error Occurred! Please try again later" }));
                }

                if (!changePassword.Status.IsSuccessful)
                {
                    return(Json(new { IsSuccessful = false, Error = string.IsNullOrEmpty(changePassword.Status.Message.FriendlyMessage) ? "Process Failed! Unable to reset your password" : changePassword.Status.Message.FriendlyMessage }));
                }

                return(Json(new { IsSuccessful = true, Error = "" }));
            }
            catch (Exception ex)
            {
                UtilTools.LogE(ex.StackTrace, ex.Source, ex.Message);
                return(Json(new { IsAuthenticated = true, IsSuccessful = false, IsReload = false, Error = "Process Error Occurred! Please try again later" }));
            }
        }
        public ActionResult ResetUserAccess(string userId, string userCode)
        {
            try
            {
                ViewBag.Error = "";
                Session["_resetSystem_data"] = null;
                if (string.IsNullOrEmpty(userId) || string.IsNullOrEmpty(userCode))
                {
                    ViewBag.Error = "Invalid Password Reset Link";
                    return(View(new ResetUserAccessInfoObj()));
                }

                userId   = userId.CleanEncryptedString();
                userCode = userCode.CleanEncryptedString();

                var username = userId.DecryptUrlItem();
                var code     = userCode.DecryptUrlItem();

                if (string.IsNullOrEmpty(username) || username.Length < 5)
                {
                    ViewBag.Error = "Invalid Password Reset Link";
                    return(View(new ResetUserAccessInfoObj()));
                }

                if (string.IsNullOrEmpty(code) || code.Length < 5)
                {
                    ViewBag.Error = "Invalid Password Reset Link";
                    return(View(new ResetUserAccessInfoObj()));
                }

                var confirm = new ResetUserAccessInfoObj
                {
                    ConfirmationCode = code.Trim(),
                    Email            = username,
                    NewPassword      = "",
                    ConfirmPassword  = ""
                };
                Session["_resetSystem_data"] = confirm;
                return(View(confirm));
            }
            catch (Exception ex)
            {
                ViewBag.Error = "Error Occurred! Please try again later";
                UtilTools.LogE(ex.StackTrace, ex.Source, ex.Message);
                return(View(new ResetUserAccessInfoObj()));
            }
        }