public async Task <IActionResult> Search(
            Guid?siteId,
            string query   = "",
            int sortMode   = 2,
            int pageNumber = 1,
            int pageSize   = -1,
            bool ajaxGrid  = false
            )
        {
            var selectedSite = await _siteManager.GetSiteForDataOperations(siteId);

            // only server admin site can edit other sites settings
            if (selectedSite.Id != _siteManager.CurrentSite.Id)
            {
                ViewData["Title"] = string.Format(CultureInfo.CurrentUICulture, _sr["{0} - User Management"], selectedSite.SiteName);
            }
            else
            {
                ViewData["Title"] = _sr["User Management"];
            }

            var itemsPerPage = _uiOptions.DefaultPageSize_UserList;

            if (pageSize > 0)
            {
                itemsPerPage = pageSize;
            }

            if (query == null)
            {
                query = string.Empty;
            }

            var siteMembers = await _userManager.GetUserAdminSearchPage(
                selectedSite.Id,
                pageNumber,
                itemsPerPage,
                query,
                sortMode);

            var model = new UserListViewModel
            {
                SiteId      = selectedSite.Id,
                UserList    = siteMembers,
                SearchQuery = query,
                SortMode    = sortMode,
                ActionName  = "Search",
                TimeZoneId  = await _timeZoneIdResolver.GetUserTimeZoneId()
            };

            if (Request.IsAjaxRequest())
            {
                if (ajaxGrid)
                {
                    return(PartialView("UserModalGridPartial", model));
                }
                else
                {
                    return(PartialView("UserLookupModal", model));
                }
            }

            return(View("Index", model));
        }