예제 #1
0
        public SearchIndexResultViewModel GetSearchIndexResultViewModel(SearchFilter filter, int UserId, string BrowserLanguage)
        {
            SearchIndexResultViewModel model = new SearchIndexResultViewModel();

            try
            {
                int maxCount = 999999;

                string term = filter.Pattern ?? "";


                bool isAdmin = false;

                User loggedUser = null;
                if (UserId > 0)
                {
                    loggedUser = _userRepo.Get(UserId);
                    if (loggedUser != null)
                    {
                        isAdmin = _userRolesService.IsInRole(UserId, UserRoles.Admin);
                    }
                }
                int searchId = -1;
                if (!isAdmin)
                {
                    searchId = InsertSearchResultItem(term, UserId, 0, false);
                }

                string urlPrefix = "";
                if ((loggedUser != null && loggedUser.LanguageId == Languages.French) || (loggedUser == null && BrowserLanguage.ToLower().StartsWith("fr")))
                {
                    urlPrefix = "/fr";
                }

                if (filter.ShowUsers)
                {
                    model.Users = new SearchIndexResultTypeViewModel(fixSearchItemsList(GetSearchUsers(term, loggedUser, maxCount), maxCount, searchId, urlPrefix), "[[[Users]]]", "user");
                }
                if (filter.ShowPages)
                {
                    model.Pages = new SearchIndexResultTypeViewModel(fixSearchItemsList(GetSearchPages(term, maxCount, loggedUser, isAdmin), maxCount, searchId, urlPrefix), "[[[Pages]]]", "globe");
                }
                model.SearchResultsGeneralCount = model.Pages.Items.Count + model.Users.Items.Count;

                SearchResult searchItem = _searchResultRepo.Get(searchId);
                if (searchItem != null)
                {
                    searchItem.SearchResultsCount = model.SearchResultsGeneralCount;
                    _searchResultRepo.Edit(searchItem);
                    _searchResultRepo.Save();
                }
            }
            catch (Exception e)
            {
                Logger.GenerateError(e, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "term = " + filter.Pattern);
            }
            return(model);
        }
예제 #2
0
        public ActionResult _IndexSearchResult(SearchFilter filter)
        {
            try
            {
                SearchIndexResultViewModel model = new SearchIndexResultViewModel();
                int LoggedUserId = 0;
                if (User != null && User.Identity.IsAuthenticated)
                {
                    LoggedUserId = UserSession.UserId;
                }
                model = _searchService.GetSearchIndexResultViewModel(filter, LoggedUserId);

                return(PartialView(model));
            }
            catch (Exception e)
            {
                Logger.GenerateError(e, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "pattern = " + filter.Pattern);
            }
            return(Content(PartialViewResults.UnknownError));
        }