public ActionResult AddMembershipUser(AdminMemberAddViewModel viewModel)
        {
            using (var unitOfWork = UnitOfWorkManager.NewUnitOfWork())
            {
                var loggedOnUserId = LoggedOnReadOnlyUser?.Id ?? Guid.Empty;
                var admin          = MembershipService.Get(loggedOnUserId);
                var settings       = SettingsService.GetSettings();
                var homeRedirect   = false;

                var userToSave = new MembershipUser
                {
                    Email     = viewModel.Email,
                    FirstName = viewModel.FirstName,
                    LastName  = viewModel.LastName,
                    City      = viewModel.City,
                    State     = viewModel.State
                };
                var createStatus = MembershipService.AdminCreateUser(userToSave, admin);
                if (createStatus != MembershipCreateStatus.Success)
                {
                    ShowMessage(new AdminGenericMessageViewModel
                    {
                        Message     = "Failed registering user: "******"MembershipUser", "AdminMembershipUser", new { area = "Admin" }));
                    //ModelState.AddModelError(string.Empty, MembershipService.ErrorCodeToString(createStatus));
                }
                SetRegisterViewBagMessage(false, false, userToSave);
                homeRedirect = true;
                try
                {
                    // Only send the email if the admin is not manually authorising emails or it's pointless
                    //SendEmailConfirmationEmail(userToSave);
                    unitOfWork.Commit();

                    if (homeRedirect)
                    {
                        if (Url.IsLocalUrl(viewModel.ReturnUrl) && viewModel.ReturnUrl.Length > 1 && viewModel.ReturnUrl.StartsWith("/") &&
                            !viewModel.ReturnUrl.StartsWith("//") && !viewModel.ReturnUrl.StartsWith("/\\"))
                        {
                            return(Redirect(viewModel.ReturnUrl));
                        }
                        return(RedirectToAction("MembershipUser", "AdminMembershipUser", new { area = "Admin" }));
                    }
                }
                catch (Exception ex)
                {
                    unitOfWork.Rollback();
                    LoggingService.Error(ex);
                    FormsAuthentication.SignOut();
                    ShowMessage(new AdminGenericMessageViewModel
                    {
                        Message     = "Failed registering user.",
                        MessageType = GenericMessages.danger
                    });
                }
                return(RedirectToAction("Index", "Admin", new { area = "Admin" }));
            }
        }
 private void SetRegisterViewBagMessage(bool manuallyAuthoriseMembers, bool memberEmailAuthorisationNeeded, MembershipUser userToSave)
 {
     if (manuallyAuthoriseMembers)
     {
         TempData[AppConstants.MessageViewBagName] = new AdminGenericMessageViewModel
         {
             Message     = "An administrator will authorize you shortly",
             MessageType = GenericMessages.success
         };
     }
     else if (memberEmailAuthorisationNeeded)
     {
         TempData[AppConstants.MessageViewBagName] = new AdminGenericMessageViewModel
         {
             Message     = "Check your email for authorization",
             MessageType = GenericMessages.success
         };
     }
     else
     {
         // If not manually authorise then log the user in
         FormsAuthentication.SetAuthCookie(userToSave.Email, false);
         TempData[AppConstants.MessageViewBagName] = new AdminGenericMessageViewModel
         {
             Message     = "You are registered with Chamber's app",
             MessageType = GenericMessages.success
         };
     }
 }