/// <summary>
        /// Builds the by user verification.
        /// </summary>
        /// <param name="userVerification">The user verification.</param>
        /// <returns></returns>
        public IRegister BuildByUserVerification(IUserVerification userVerification)
        {
            Guard.ArgumentNotNull(userVerification, "userVerification");

            var register = new Register
            {
                Identifier = userVerification.Identifier
            };

            return register;
        }
        public ActionResult Register(Register model)
        {
            Guard.ArgumentNotNull(model, "model");
            Guard.ParameterGuidNotEmpty(model.Identifier, "identifier");

            var userVerification = this.userVerificationService.GetUserInviteNotice(model.Identifier);

            if ((userVerification == null) || (userVerification.DateAccessed != null))
            {
                //They probably came here manually... Send them back to home page
                return RedirectToAction("Index", "Home");
            }

            if (ModelState.IsValid)
            {
                model.PersonId = userVerification.PersonId;
                var registerUserResult = this.registrationService.RegisterUser(model);

                if (registerUserResult.Success)
                {
                    this.userVerificationService.UpdateUserInviteNotice(userVerification);

                    //Log them in on success...
                    var loginModel = new LoginUser
                    {
                        UserName = model.UserName,
                        Password = model.Password,
                        RememberMe = false
                    };
                    return RedirectToAction("Login", "Account", new { model = loginModel, returnUrl = "" });
                }

                if (registerUserResult.MembershipCreateStatus == MembershipCreateStatus.DuplicateUserName)
                {
                    ModelState.AddModelError("", Messages.DuplicateUserName);
                    return View("Register", model);
                }
            }

            return View("Register", model);
        }