public ActionResult Search(SearchUserViewModel model)
        {
            if (!ModelState.IsValid || String.IsNullOrEmpty(model.SearchText))
            {
                return RedirectToAction("Search", "Membership");
            }

            return RedirectToAction("Search", "Membership",
                new { filter = model.SearchCriteria.ToString(), searchText = model.SearchText });
        }
        public ActionResult Search(string filter, string searchText, int? Page)
        {
            int page = Page ?? 1;
            SearchUserViewModel model = new SearchUserViewModel();

            try
            {
                // TODO : Better to move paging to the Manager project.
                // Otherwise, cache the IEnumerable<ApplicationUser> so that
                // the entire collection does not have to be re-queried when changing page.
                Result<IEnumerable<ApplicationUser>> result = new Result<IEnumerable<ApplicationUser>>();

                if (String.IsNullOrEmpty(searchText) || !Enum.GetNames(typeof(SearchUserEnum)).Contains(filter))
                {
                    // Show all accounts
                    model.SearchHeading = "Showing all accounts";
                    result = userService.GetAllUsers();
                }
                else
                {
                    // Filter accounts
                    model.SearchCriteria = (SearchUserEnum)Enum.Parse(typeof(SearchUserEnum), filter);
                    model.SearchText = searchText;
                    model.SearchHeading = "Showing accounts with " + filter + " containing \"" + searchText + "\"";
                    result = userService.GetUsersByFilter(model.SearchCriteria, searchText);
                }

                switch (result.Status)
                {
                    case ResultEnum.Success:
                        IEnumerable<ApplicationUser> pagedList = result.Data.ToPagedList<ApplicationUser>(page, 10);

                        model.PagedList = pagedList;
                        model.PagedUsers = GetPagedUsers(pagedList);

                        return View(model);

                    case ResultEnum.Fail:
                        break;

                    default:
                        break;
                }
            }
            catch
            {
                ModelState.AddModelError("ErrorMessage", "Fail");
                return View(model);
            }

            ModelState.AddModelError("ErrorMessage", "Fail");
            return View(model);
        }