Esempio n. 1
0
        public SearchResultsModel DoSearch(string[] contentTypes, string size, string school, string role, string grade, string enrollStatus)
        {
            SearchResultsModel SearchResultsModel = null;
            bool validContentTypes = true;

            foreach (string contentType in contentTypes)
            {
                validContentTypes &= SearchValidation.ValidateSearchFilter(contentType);
            }

            if (validContentTypes &&                                //required
                SearchValidation.ValidateSearchFilter(size) &&      //required
                SearchValidation.ValidateSearchFilter(school)       //required
                )
            {
                SearchResultsModel = _searchAdapter.DoSearch(contentTypes, size, school, role, grade, enrollStatus);
            }
            else
            {
                SearchResultsModel = new SearchResultsModel();
                ErrorModel error = new ErrorModel("Invalid search criteria", "Web Search Service");
                SearchResultsModel.ErrorList.Add(error);
            }

            return(SearchResultsModel);
        }
        public ActionResult Index(string searchText, int page = DEFAULT_PAGE_NUMBER)
        {
            if (String.IsNullOrWhiteSpace(searchText))
            {
                var empty = new SearchResultsModel
                {
                    Items = new StaticPagedList <SearchResultItemModel>(Enumerable.Empty <SearchResultItemModel>(), page, PAGE_SIZE, 0)
                };
                return(View(empty));
            }

            // Validate page number (starting from 1)
            page = Math.Max(page, DEFAULT_PAGE_NUMBER);

            var searchParameters = SearchParameters.PrepareForPages(searchText, new[] { INDEX_NAME }, page, PAGE_SIZE, MembershipContext.AuthenticatedUser);
            var searchResults    = SearchHelper.Search(searchParameters);

            mPagesActivityLogger.LogInternalSearch(searchText);

            var searchResultItemModels = searchResults.Items
                                         .Select(searchResultItem => mSearchItemViewModelFactory.GetTypedSearchResultItemModel(searchResultItem));

            var model = new SearchResultsModel
            {
                Items = new StaticPagedList <SearchResultItemModel>(searchResultItemModels, page, PAGE_SIZE, searchResults.TotalNumberOfResults),
                Query = searchText
            };

            return(View(model));
        }
        public async Task SearchActionRedirectsToTrustViewIfCompanyNumberIsUsedAsId()
        {
            Task <SearchResultsModel <TrustSearchResult> > task = Task.Run(() =>
            {
                var facets  = new Dictionary <string, FacetResultModel[]>();
                var matches = new List <TrustSearchResult>();
                matches.Add(new TrustSearchResult());
                var results = new SearchResultsModel <TrustSearchResult>(5, facets, matches, 5, 0);
                return(results);
            });

            _mockTrustSearchService.Setup(m => m.SearchTrustByCompanyNoAsync("6182612", 0, 1, "", null)).Returns(task);

            var controller = new TrustSearchController(_mockLaService.Object, _mockLaSearchService.Object, _mockLocationSearchService.Object, _mockFilterBuilder.Object,
                                                       _valService, _mockContextDataService.Object, _mockTrustSearchService.Object, _mockSchoolSearchService.Object, _mockCookieManager.Object);

            controller.ControllerContext = new ControllerContext(_rc, controller);

            var result = await controller.Search("6182612", null, SearchTypes.SEARCH_BY_TRUST_NAME_ID, null, null, null, null, false, null, 0);

            Assert.IsNotNull(result);
            Assert.AreEqual("Trust", (result as RedirectToRouteResult).RouteValues["controller"]);
            Assert.AreEqual("Detail", (result as RedirectToRouteResult).RouteValues["action"]);
            Assert.AreEqual("6182612", (result as RedirectToRouteResult).RouteValues["companyNo"].ToString());
        }
Esempio n. 4
0
        public async Task SearchActionReturnsViewWithErrorIfNameIsUsedAsIdAndNoResultsFound()
        {
            var schoolTask = Task.Run(() =>
            {
                var facets  = new Dictionary <string, FacetResultModel[]>();
                var matches = new List <SchoolSearchResult>();
                var results = new SearchResultsModel <SchoolSearchResult>(0, facets, matches, 0, 0);
                return(results);
            });

            _mockSchoolSearchService.Setup(m => m.SearchSchoolByNameAsync("abc", 0, SearchDefaults.RESULTS_PER_PAGE, null, null))
            .Returns((string laEstab, int skip, int take, string @orderby, NameValueCollection queryParams) => schoolTask);

            var controller = new SchoolSearchController(_mockLaService.Object, _mockLaSearchService.Object, _mockLocationSearchService.Object, _mockFilterBuilder.Object,
                                                        _valService, _mockContextDataService.Object, _mockSchoolSearchService.Object, _mockCookieManager.Object);

            controller.ControllerContext = new ControllerContext(_rc, controller);

            var response = await controller.Search("abc", SearchTypes.SEARCH_BY_NAME_ID, null, null, null, null, null, false, null, 1);

            Assert.IsNotNull(response);
            Assert.IsNotNull((response as ViewResult).Model);
            Assert.IsTrue(((response as ViewResult).Model as SearchViewModel).HasError());
            Assert.AreEqual(SearchErrorMessages.NO_SCHOOL_NAME_RESULTS, ((response as ViewResult).Model as SearchViewModel).ErrorMessage);
        }
Esempio n. 5
0
        public async Task SearchActionNotRedirectsToSchoolViewIfValidUrnProvidedInAddSchoolPage()
        {
            var matches = new List <SchoolSearchResult>();

            matches.Add(new SchoolSearchResult()
            {
                URN = "654321"
            });
            matches.Add(new SchoolSearchResult()
            {
                URN = "123456"
            });
            var edubaseSearchResponse = new SearchResultsModel <SchoolSearchResult>(1, null, matches, 50, 0);
            var task = Task.Run(() =>
            {
                return(edubaseSearchResponse);
            });

            _mockSchoolSearchService.Setup(m => m.SearchSchoolByNameAsync("Test", 50, 50, It.IsAny <string>(), It.IsAny <NameValueCollection>()))
            .Returns((string name, int skip, int take, string orderby, NameValueCollection queryParams) => task);

            var controller = new SchoolSearchController(_mockLaService.Object, _mockLaSearchService.Object, _mockLocationSearchService.Object, _mockFilterBuilder.Object, _valService,
                                                        _mockContextDataService.Object, _mockSchoolSearchService.Object, _mockCookieManager.Object);

            controller.ControllerContext = new ControllerContext(_rc, controller);

            var result = await controller.Search("Test (ABC 3DX)", SearchTypes.SEARCH_BY_NAME_ID, "123456", null, null, null, null, false, null, 2, null, "AddSchool");

            Assert.IsTrue(result is ViewResult);
            Assert.AreEqual("SearchResults", (result as ViewResult).ViewName);
        }
Esempio n. 6
0
        public async Task SearchActionCallsServiceWithAddressRemovedFromSchoolNameOnAddSchools()
        {
            var matches = new List <SchoolSearchResult>();

            matches.Add(new SchoolSearchResult()
            {
                URN = "654321"
            });
            matches.Add(new SchoolSearchResult()
            {
                URN = "123456"
            });
            var edubaseSearchResponse = new SearchResultsModel <SchoolSearchResult>(1, null, matches, 50, 0);
            var task = Task.Run(() =>
            {
                return(edubaseSearchResponse);
            });

            _mockSchoolSearchService.Setup(m => m.SearchSchoolByNameAsync("Test", 50, 50, It.IsAny <string>(), It.IsAny <NameValueCollection>()))
            .Returns((string name, int skip, int take, string orderby, NameValueCollection queryParams) => task);

            var controller = new SchoolSearchController(_mockLaService.Object, _mockLaSearchService.Object, _mockLocationSearchService.Object, _mockFilterBuilder.Object, _valService,
                                                        _mockContextDataService.Object, _mockSchoolSearchService.Object, _mockCookieManager.Object);

            controller.ControllerContext = new ControllerContext(_rc, controller);

            var result = await controller.Search("Test (SQR 3NT)", SearchTypes.SEARCH_BY_NAME_ID, "123", null, null, null, null, false, string.Empty, 2, null, "addSchools");

            _mockSchoolSearchService.Verify(req => req.SearchSchoolByNameAsync("Test", 50, 50, string.Empty, null), Times.Once());
        }
Esempio n. 7
0
        private SearchResultsModel randomizeResults(SearchResultsModel srm)
        {
            SearchResultsModel randomizedResults = new SearchResultsModel();
            bool   stillWorking = true;
            Random r            = new Random();

            while (stillWorking)
            {
                if (srm.Records.Count > 0)
                {
                    //get random index into search results
                    int iRandom = r.Next(0, srm.Records.Count);

                    //add that record to the randomized results
                    randomizedResults.Records.Add(srm.Records[iRandom]);

                    //remove that record from the non-randomized results
                    srm.Records.RemoveAt(iRandom);
                }
                else
                {
                    stillWorking = false;
                }
            }

            return(randomizedResults);
        }
        public ActionResult Search(SearchRouteModel model)
        {
            var departStation = RouteFacade.GetAllStationsByFilter(new StationFilter
            {
                Name = model.DepartName,
                Town = model.DepartTown
            }).FirstOrDefault();
            var arriveStation = RouteFacade.GetAllStationsByFilter(new StationFilter
            {
                Name = model.ArriveName,
                Town = model.ArriveTown
            }).FirstOrDefault();

            if (arriveStation == null || departStation == null || !ModelState.IsValid)
            {
                ViewBag.Message = "Station cannot be null";
                return(View(model));
            }
            var routeStations = RouteFacade.FindRoutesWithStations(departStation.ID, arriveStation.ID, model.Time);
            var resultModel   = new SearchResultsModel
            {
                DepartStation = departStation,
                ArriveStation = arriveStation,
                Results       = routeStations
            };

            //return View("DisplaySearchResults", resultModel);
            TempData["model"] = resultModel;
            return(RedirectToAction("DisplaySearchResults"));
        }
        public ActionResult FacetSearchResults(string query)
        {
            //var siteSearchPage = SitecoreContext.GetCurrentItem<SiteSearchPage>();

            var searchTerm = query;
            var selFacet = Request.QueryString[FacetQueryStringKey];
            var model = new SearchResultsModel
            {
                QueryStringKey = QueryStringKey,
                FacetQueryStringKey = FacetQueryStringKey,
                Facet = selFacet
            };
            model.Keyword = searchTerm;
            string totalCount = "0";
            string selFacetCount = string.Empty;
            model.Facets = GetFacets(searchTerm, out totalCount);
            if (!string.IsNullOrEmpty(selFacet))
            {
                model.Facets.TryGetValue(selFacet, out selFacetCount);
            }
            model.AllResultsCount = totalCount;
            if (!string.IsNullOrEmpty(selFacetCount))
            {
                model.SelectedFacetCount = selFacetCount.Split('|')[1];
            }

            return this.View("~/Views/HabSearch/AdvanceSearchResults.cshtml", model);
        }
Esempio n. 10
0
        protected override async Task <dynamic> GetSearchResultsAsync(string nameId, string searchType, string locationorpostcode, string locationCoordinates, string laCode, decimal?radius, bool openOnly, string orderby, int page, int take = 50)
        {
            SearchResultsModel <SchoolSearchResult> response = null;

            switch (searchType)
            {
            case SearchTypes.SEARCH_BY_LA_ESTAB:
                response = await _schoolSearchService.SearchSchoolByLaEstabAsync(nameId,
                                                                                 (page - 1) *SearchDefaults.RESULTS_PER_PAGE, take, orderby,
                                                                                 Request.QueryString);

                break;

            case SearchTypes.SEARCH_BY_LOCATION:
                var latLng = locationCoordinates.Split(',');
                response = await _schoolSearchService.SearchSchoolByLatLonAsync(latLng[0], latLng[1],
                                                                                (radius ?? SearchDefaults.TRUST_LOCATION_SEARCH_DISTANCE) * 1.6m,
                                                                                (page - 1) *SearchDefaults.RESULTS_PER_PAGE, take, orderby,
                                                                                Request.QueryString);

                break;

            case SearchTypes.SEARCH_BY_LA_CODE_NAME:
                response = await _schoolSearchService.SearchSchoolByLaCodeAsync(laCode,
                                                                                (page - 1) *SearchDefaults.RESULTS_PER_PAGE, take,
                                                                                string.IsNullOrEmpty(orderby)?EdubaseDataFieldNames.ESTAB_NAME : orderby,
                                                                                Request.QueryString);

                break;
            }

            OrderFacetFilters(response);

            return(response);
        }
Esempio n. 11
0
        public IActionResult Results(string searchQuery)
        {
            var posts = _postService.GetFilteredPosts(searchQuery);

            var areNoResults = (!string.IsNullOrEmpty(searchQuery) && !posts.Any());

            var postListing = posts.Select(post => new PostListingModel
            {
                Id           = post.Id,
                AuthorId     = post.User.Id,
                AuthorRating = post.User.Rating,
                AuthorName   = post.User.UserName,
                Title        = post.Title,
                DatePosted   = post.Created,
                RepliesCount = post.Replies.Count(),
                Forum        = BuildForumListing(post)
            });
            var model = new SearchResultsModel {
                posts              = postListing,
                searchQuery        = searchQuery,
                EmptySearchResults = areNoResults
            };

            return(View(model));
        }
Esempio n. 12
0
        SearchResultsModel IDAL.GetSearchResults(string query, ref IDbConnection conn)
        {
            if (conn.State == ConnectionState.Closed || conn.State == ConnectionState.Broken)
            {
                conn.Open();
            }
            SearchResultsModel results = new SearchResultsModel();

            IDbCommand cmd = SqlUtility.CreateCommand(conn, SP_SEARCH_TOTALS,
                                                      new Dictionary <string, object>()
            {
                { "Criteria", query }
            });
            DataTable dt = SqlUtility.Execute(cmd);

            if (dt != null)
            {
                foreach (DataRow dr in dt.Rows)
                {
                    results = new SearchResultsModel(dr);
                    break;
                }
            }
            results.Query = query;

            return(results);
        }
Esempio n. 13
0
        public ActionResult Index(string searchText, int page = DEFAULT_PAGE_NUMBER)
        {
            if (String.IsNullOrWhiteSpace(searchText))
            {
                var empty = new SearchResultsModel
                {
                    Items = new StaticPagedList <SearchResultItemModel>(Enumerable.Empty <SearchResultItemModel>(), page, PAGE_SIZE, 0)
                };
                return(View(empty));
            }

            // Validate page number (starting from 1)
            page = Math.Max(page, DEFAULT_PAGE_NUMBER);

            var searchResults = mSearchService.Search(new SearchOptions(searchText, new [] { INDEX_NAME })
            {
                PageNumber = page,
                PageSize   = PAGE_SIZE
            });

            var searchResultItemModels = searchResults.Items
                                         .Select(searchResultItem => mSearchItemViewModelFactory.GetTypedSearchResultItemModel(searchResultItem));

            var model = new SearchResultsModel
            {
                Items = new StaticPagedList <SearchResultItemModel>(searchResultItemModels, page, PAGE_SIZE, searchResults.TotalNumberOfResults),
                Query = searchText
            };

            return(View(model));
        }
        public async Task <SearchResultsModel <SchoolSearchResult> > ExecuteGeoSpatialSearch(
            string lat,
            string lon,
            decimal distance,
            string filter,
            string orderBy,
            int skip,
            int take)
        {
            const string search    = "*";
            var          latitude  = double.Parse(lat);
            var          longitude = double.Parse(lon);

            var filterBuilder = new StringBuilder();
            var orderByField  = string.IsNullOrEmpty(orderBy)
                ? string.Format(GeoDistanceLocationOrderFormat, latitude, longitude)
                : orderBy;

            filterBuilder.AppendFormat(GeoDistanceLocationSearchFormat, latitude, longitude, distance);
            if (!string.IsNullOrEmpty(filter))
            {
                filterBuilder.AppendFormat(" and " + filter);
            }

            var facets     = new[] { EdubaseDataFieldNames.TYPE_OF_ESTAB, EdubaseDataFieldNames.OVERALL_PHASE, EdubaseDataFieldNames.RELIGIOUS_CHARACTER, EdubaseDataFieldNames.OFSTED_RATING, EdubaseDataFieldNames.ESTAB_STATUS };
            var parameters = new SearchParameters()
            {
                OrderBy = new[] { orderByField },
                Filter  = filterBuilder.ToString(),
                Skip    = skip,
                Top     = take,
                IncludeTotalResultCount = true,
                Facets     = facets.ToList(),
                SearchMode = SearchMode.All
            };

            DocumentSearchResult <SchoolSearchResult> response;

            try
            {
                response = await _indexClient.Documents.SearchAsync <SchoolSearchResult>(search, parameters);
            }
            catch (Exception exc)
            {
                throw new ApplicationException(
                          $"Edubase school search error: {exc.Message}");
            }

            var facetsModel = MapResponseFacetsToFacetsModel(response);

            var results = new SearchResultsModel <SchoolSearchResult>((int)response.Count, facetsModel, response.Results.Select(r => r.Document), take, skip)
            {
                QueryLat  = latitude.ToString(),
                QueryLong = longitude.ToString()
            };


            return(results);
        }
Esempio n. 15
0
        public SearchResultsModel DoSearch(string[] contentTypes, string size, string school, string role, string grade, string enrollStatus)
        {
            SearchResultsModel srm = new SearchResultsModel();

            srm.ErrorList.Add(new ErrorModel("DoSearch not implemented for mocking."));

            return(srm);
        }
Esempio n. 16
0
        public IActionResult Search(string query)
        {
            var model = new SearchResultsModel {
                Query = query
            };

            return(View(model));
        }
Esempio n. 17
0
 public void Update(SearchResultsModel model)
 {
     this.Results.Clear();
     foreach (SearchResult result in model.Results)
     {
         this.Results.Add(result);
     }
 }
Esempio n. 18
0
        public SearchResultsModel GetSchools(string filter, int offset, int rows)
        {
            SearchResultsModel srm = null;

            srm = GetOrganizations(filter, offset, rows, OrganizationTypes.SCHL);

            return(srm);
        }
Esempio n. 19
0
        public IActionResult Search(string searchText)
        {
            var response = searchClient.SearchOrder(searchText);
            var model    = new SearchResultsModel {
                Results = response.Documents.ToList()
            };

            return(View(model));
        }
Esempio n. 20
0
        public async Task <IActionResult> Index([FromQuery] SearchParameters parameters)
        {
            _logger.LogInformation("Search: " + parameters);
            var results = await _solr.QueryAsync(BuildQuery(parameters), BuildQueryOptions(parameters));

            var model = new SearchResultsModel(results, BuildFacetModels(results.FacetFields), results.NumFound, parameters);

            return(View(model));
        }
Esempio n. 21
0
 private void MarkAcademiesInsideSearchArea(SearchResultsModel <SchoolSearchResult> academySearchResults, List <AcademyTrustViewModel> trustList)
 {
     foreach (var academySearchResult in academySearchResults.Results)
     {
         var schoolMatch = trustList.SelectMany(t => t.AcademiesList).Where(a => a.Id.ToString() == academySearchResult.URN).FirstOrDefault();
         if (schoolMatch != null)
         {
             schoolMatch.InsideSearchArea = true;
         }
     }
 }
Esempio n. 22
0
        public IActionResult SearchResults(SearchModel parameter)
        {
            SearchResultsModel Results = new SearchResultsModel();

            Results.Results = profileSearchDAL.SearchAll(parameter.searchParameter);
            if (Results.Results.Count == 0)
            {
                ProfileViewModel Container = new ProfileViewModel();
                Results.Results.Add(Container);
            }
            return(View(Results));
        }
Esempio n. 23
0
        public ActionResult Search(string txtSearch)
        {
            TempData["SearchText"] = txtSearch;

            esvWrapper wrapper = new esvWrapper("passageQuery", txtSearch, "crossway-xml-1.0");

            ViewBag.Notes = db.Notes.ToList();
            SearchResultsModel search = new SearchResultsModel();

            search = wrapper.getEsvXml();

            return(View("SearchResults", search));
        }
Esempio n. 24
0
        public async Task SearchActionRunsAndReturnsTheOnlyLaSuggestionResultIfSearchByLAName()
        {
            dynamic laSearchResponse = new List <dynamic>()
            {
                new{
                    id         = "840",
                    LANAME     = "County Durham",
                    REGION     = "1",
                    REGIONNAME = "North East A"
                },
                new{
                    id         = "841",
                    LANAME     = "Darlington",
                    REGION     = "1",
                    REGIONNAME = "North East A"
                }
            };

            _mockLaService.Setup(m => m.GetLocalAuthorities()).Returns(() => laSearchResponse);

            _mockLaSearchService.Setup(m => m.SearchExactMatch("Test")).Returns(() => new LaModel()
            {
                Id = "123", LaName = "Test"
            });

            var matchedResults = new List <SchoolSearchResult>();

            matchedResults.Add(new SchoolSearchResult()
            {
                URN = "654321"
            });
            var edubaseSearchResponse = new SearchResultsModel <SchoolSearchResult>(2, null, matchedResults, 50, 0);
            var task = Task.Run(() =>
            {
                return(edubaseSearchResponse);
            });

            _mockSchoolSearchService.Setup(m => m.SearchSchoolByLaCodeAsync("123", 0, 50, "EstablishmentName", null)).Returns((string name, int skip, int take, string orderby, NameValueCollection queryParams) => task);

            var controller = new SchoolSearchController(_mockLaService.Object, _mockLaSearchService.Object, _mockLocationSearchService.Object, _mockFilterBuilder.Object, _valService, _mockContextDataService.Object,
                                                        _mockSchoolSearchService.Object, _mockCookieManager.Object);

            controller.ControllerContext = new ControllerContext(_rc, controller);

            var result = await controller.Search(null, SearchTypes.SEARCH_BY_LA_CODE_NAME, null, null, null, "Test", null, false, null);

            Assert.IsTrue(result is ViewResult);
            Assert.AreEqual("SearchResults", (result as ViewResult).ViewName);
        }
Esempio n. 25
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="organizations"></param>
        /// <returns></returns>
        public static SearchResultsModel FromOrgContractList(List <RefOrganizationContract> organizations)
        {
            var srm = new SearchResultsModel();

            srm.Records = new List <SearchRecordModel>();

            foreach (var org in organizations)
            {
                var record = new SearchRecordModel();
                record.Fields = PopulateRecord(org);
                srm.Records.Add(record);
            }

            return(srm);
        }
        protected void OrderFacetFilters(SearchResultsModel <SchoolSearchResult> results)
        {
            if (results?.Facets != null)
            {
                var orderedFacetFilters = new Dictionary <string, FacetResultModel[]>();
                foreach (var facet in results.Facets)
                {
                    if (facet.Key == "OverallPhase")
                    {
                        orderedFacetFilters.Add(facet.Key, facet.Value.OrderBy(fr => {
                            switch (fr.Value)
                            {
                            case "Nursery":
                                return(1);

                            case "Primary":
                                return(2);

                            case "Secondary":
                                return(3);

                            case "All-through":
                            case "All through":
                                return(4);

                            case "Pupil referral unit":
                                return(5);

                            case "Special":
                                return(6);

                            case "16 plus":
                                return(7);

                            default:
                                return(0);;
                            }
                        }).ToArray());
                    }
                    else
                    {
                        orderedFacetFilters.Add(facet.Key, facet.Value.OrderBy(fr => fr.Value).ToArray());
                    }
                }

                results.Facets = orderedFacetFilters;
            }
        }
Esempio n. 27
0
        public ActionResult Index(string searchText, int page = DEFAULT_PAGE_NUMBER)
        {
            // Validate page number (starting from 1)
            var pageNumber = Math.Max(page, DEFAULT_PAGE_NUMBER);

            int totalItemsCount;
            var searchResults = mService.Search(searchText, pageNumber - 1, PAGE_SIZE, out totalItemsCount);

            var model = new SearchResultsModel
            {
                Items = new StaticPagedList <SearchResultItem>(searchResults ?? new List <SearchResultItem>(), pageNumber, PAGE_SIZE, totalItemsCount),
                Query = searchText
            };

            return(View(model));
        }
Esempio n. 28
0
        /// <summary>
        /// Gets the search results model from the search term///
        /// </summary>
        /// <param name="searchModel">The search model with search term and other settings in it</param>
        /// <param name="allKeys">The form keys that were submitted</param>
        /// <returns>A SearchResultsModel object loaded with the results</returns>
        public SearchResultsModel GetSearchResults(SearchViewModel searchModel, string[] allKeys)
        {
            SearchResultsModel resultsModel = new SearchResultsModel();

            resultsModel.SearchTerm = searchModel.SearchTerm;
            resultsModel.PageNumber = GetPageNumber(allKeys);

            ISearchResults allResults = SearchUsingExamine(searchModel.DocTypeAliases.Split(','), searchModel.SearchGroups);

            resultsModel.TotalItemCount = allResults.TotalItemCount;
            resultsModel.Results        = GetResultsForThisPage(allResults, resultsModel.PageNumber, searchModel.PageSize);

            resultsModel.PageCount    = Convert.ToInt32(Math.Ceiling((decimal)resultsModel.TotalItemCount / (decimal)searchModel.PageSize));
            resultsModel.PagingBounds = GetPagingBounds(resultsModel.PageCount, resultsModel.PageNumber, searchModel.PagingGroupSize);
            return(resultsModel);
        }
Esempio n. 29
0
        private static SearchResultsModel handleNoResults(string input)
        {
            if (input != null)
            {
                _log.Warn("search results were null: " + input);
            }
            else
            {
                _log.Warn("search results were null and input was null");
            }

            SearchResultsModel results = new SearchResultsModel();

            results.ErrorList.Add(new ErrorModel("There was a problem performing the search"));
            return(results);
        }
Esempio n. 30
0
        public SearchResultsModel getEsvXml()
        {
            SearchResultsModel sr = new SearchResultsModel();

            using (var client = new HttpClient())
            {
                if (this.Passage.Length > 0)
                {
                    String xml = string.Empty;

                    xml = getESVPassage("&include-simple-entities=true");

                    // may want to change this to the original search text followed by a seperate call for the xml
                    // that way i have both cached in memory
                    sr.searchResults = xml;

                    XDocument xDoc = XDocument.Parse(xml);

                    //xDoc.Save(AppDomain.CurrentDomain.BaseDirectory.ToString() + @"\Gen1.xml");

                    var           verses = (from v in xDoc.Descendants("verse-unit") select v);
                    StringBuilder sb     = new StringBuilder();

                    var chapter = (from v in xDoc.Descendants("current") select v);

                    foreach (XElement c in chapter)
                    {
                        sr.chapter = c.Value;
                    }



                    // below:
                    // instead of building verse html, i will build a verse model
                    // and pass that model thru to the view for html parsing
                    foreach (XElement verse in verses)
                    {
                        sr.verses.Add(buildVerse(verse));
                    }


                    // perform xml verse formatting prior to output.
                }

                return(sr);
            }
        }
Esempio n. 31
0
        private async Task <ActionResult> SearchByTrustLocationCoordinates(string locationOrPostcode, string locationCoordinates, decimal?radius, bool openOnly = false, string orderby = "", int page = 1, string referrer = "home/index")
        {
            var schoolLevelOrdering = DetermineSchoolLevelOrdering(orderby);

            SearchResultsModel <SchoolSearchResult> searchResults = await GetSearchResultsAsync(null, SearchTypes.SEARCH_BY_TRUST_LOCATION, null, locationCoordinates, null, radius, openOnly, schoolLevelOrdering, page);

            if (searchResults.NumberOfResults == 0)
            {
                return(ErrorView(SearchTypes.SEARCH_BY_TRUST_LOCATION, referrer, SearchErrorMessages.NO_LOCATION_RESULTS));
            }

            var trustsVm = await BuildTrustViewModelListFromFoundAcademiesAsync(searchResults, orderby, page, SearchTypes.SEARCH_BY_TRUST_LOCATION, null, locationOrPostcode, null);

            ApplyTrustLevelOrdering(orderby, trustsVm);

            return(View("SearchResults", trustsVm));
        }
Esempio n. 32
0
 public ClaimSearchController(ApplicationModel applicationModel, IUnityContainer container, IClaimClientService claimService, AppModel appModel, ISearchServiceHandler searchService, SearchResultsModel searchFilterModel, IMetadataClientService metadataService, IEventAggregator eventAggregator, ClaimSearchModel searchModel)
     : base(eventAggregator, searchFilterModel, container)
 {
     this.ClaimSearchModel = searchModel;
     this._applicationModel = applicationModel;
     this._claimsService = claimService;
     this._metadataService = metadataService;
     this._claimContainer = container;
     this._eventAggregator = eventAggregator;
     this._searchManager = new SearchManager();
     // Close the search tab.
     this.ClaimSearchModel.OnCloseClick += new EventHandler(this._claimSearchModel_OnCloseClick);
     // Display the preview of the selected claim.
     this.ClaimSearchModel.SelectedRowChanged += new EventHandler<SelectedRowChangedEventArgs>(this._claimSearchModel_SelectedRowChanged);
     // Grid paging.
     this.ClaimSearchModel.NeedData += new EventHandler<SearchDataRequestEventArgs>(this._claimSearchModel_NeedData);
     this.ClaimSearchModel.RefreshView += new EventHandler(this._claimSearchModel_RefreshView);
 }
        public string SearchModelObj(BrowseResultsModel model)
        {
            var searchModel = new SearchResultsModel();
            searchModel.Dates = model.Dates;
            searchModel.Location = model.Location;
            searchModel.FirstName = model.FirstName;
            searchModel.LastName = model.LastName;
            searchModel.AllOfTheWordsString = model.AllOfTheWordsString;
            searchModel.ExactPhraseString = model.ExactPhraseString;
            searchModel.AnyOfTheWordsString = model.AnyOfTheWordsString;
            searchModel.WithoutWordsString = model.WithoutWordsString;

            if (!string.IsNullOrWhiteSpace(searchModel.AllOfTheWordsString)) { if (searchModel.AllOfTheWordsString.Trim().ToLower() == "battle gettysburg civil war") { searchModel.AllOfTheWordsString = ""; } }
            if (!string.IsNullOrWhiteSpace(searchModel.AnyOfTheWordsString)) { if (searchModel.AnyOfTheWordsString.Trim().ToLower() == "soldier infantry") { searchModel.AnyOfTheWordsString = ""; } }
            if (!string.IsNullOrWhiteSpace(searchModel.ExactPhraseString)) { if (searchModel.ExactPhraseString.Trim().ToLower() == "john smith buried") { searchModel.ExactPhraseString = ""; } }
            if (!string.IsNullOrWhiteSpace(searchModel.WithoutWordsString)) { if (searchModel.WithoutWordsString.Trim().ToLower() == "adams george henry") { searchModel.WithoutWordsString = ""; } }

            if (String.IsNullOrWhiteSpace(searchModel.AllOfTheWordsString) && String.IsNullOrWhiteSpace(searchModel.ExactPhraseString) && String.IsNullOrWhiteSpace(searchModel.AnyOfTheWordsString) && String.IsNullOrWhiteSpace(searchModel.LastName))
            {
                return string.Empty;
            }

            var helper = new SearchHelper(_savedSearchService, _common);
            if (searchModel.Dates.IsPublicationDate == false) { searchModel.Dates = new DateModels(); }
            else
            {
                if (searchModel.Dates.IsExactDate == true)
                {
                    searchModel.Dates.EndYear = "";
                    searchModel.Dates.EndMonth = "";
                    searchModel.Dates.EndDay = "";
                }
                if (searchModel.Dates.IsBetweenYears == true)
                {
                    searchModel.Dates.StartYear = searchModel.Dates.BetweenStartYear;
                    searchModel.Dates.EndYear = searchModel.Dates.BetweenEndYear;

                    searchModel.Dates.StartMonth = "";
                    searchModel.Dates.StartDay = "";
                    searchModel.Dates.EndMonth = "";
                    searchModel.Dates.EndDay = "";
                }
                if (searchModel.Dates.IsBetweenDates == true)
                {
                    searchModel.Dates.StartYear = searchModel.Dates.BetweenDatesYear;
                    searchModel.Dates.StartMonth = searchModel.Dates.BetweenDatesMonth;
                    searchModel.Dates.StartDay = searchModel.Dates.BetweenDatesDay;
                }
            }

            if (searchModel.Location.IsPublicationLocation == false) { searchModel.Location = new LocationModels(); }
            string _url = helper.getURLfromSearchValues(searchModel, "", 0);

            return _url;
        }
        //
        // GET: /Search/
        public ActionResult Index(string searchterm, string Subject, string quarter, string timestart, string timeend, string day_su, string day_m, string day_t, string day_w, string day_th, string day_f, string day_s, string f_oncampus, string f_online, string f_hybrid, string avail, string latestart, string numcredits, int p_offset = 0)
        {
            // We don't currently support quoted phrases. - 4/19/2012, [email protected]
            searchterm = searchterm.Replace("\"", string.Empty);

            // TODO: This needs to be configurable
            if (quarter == "CE")
            {
                Response.Redirect("http://www.campusce.net/BC/Search/Search.aspx?q=" + searchterm, true);
                return null;
            }

            if (String.IsNullOrEmpty(searchterm.Trim()))
            {
                return RedirectToAction("AllClasses", "Classes", new { YearQuarterID = quarter });
            }

            ViewBag.timestart = timestart;
            ViewBag.timeend = timeend;
              ViewBag.avail = avail;
              ViewBag.Modality = Helpers.ConstructModalityList(f_oncampus, f_online, f_hybrid);
            ViewBag.Days = Helpers.ConstructDaysList(day_su, day_m, day_t, day_w, day_th, day_f, day_s);
            ViewBag.Subject = Subject;
            ViewBag.searchterm = Regex.Replace(searchterm, @"\s+", " ");	// replace each clump of whitespace w/ a single space (so the database can better handle it)
              ViewBag.ErrorMsg = string.Empty;

            IList<ISectionFacet> facets = Helpers.addFacets(timestart, timeend, day_su, day_m, day_t, day_w, day_th, day_f, day_s,
                                                            f_oncampus, f_online, f_hybrid, avail, latestart, numcredits);

            ViewBag.LinkParams = Helpers.getLinkParams(Request, "submit");

            using (OdsRepository repository = new OdsRepository())
            {
                YearQuarter yrq = string.IsNullOrWhiteSpace(quarter) ? repository.CurrentYearQuarter : YearQuarter.FromFriendlyName(quarter);
            IList<YearQuarter> menuQuarters = Helpers.GetYearQuarterListForMenus(repository);
              QuarterNavigationModel quarterNavigation = new QuarterNavigationModel
                                                           {
                                                             NavigationQuarters = menuQuarters,
                                                             CurrentQuarter = menuQuarters[0],
                                                             ViewingQuarter = yrq,
                                                           };

                IList<Section> sections;
                using (_profiler.Step("API::GetSections()"))
                {
                    if (string.IsNullOrWhiteSpace(Subject))
                    {
                        sections = repository.GetSections(yrq, facets);
                    }
                    else
                    {
            IList<string> prefixes = SubjectInfo.GetSubjectPrefixes(Subject);
                        sections = repository.GetSections(prefixes, yrq, facets);
                    }
                }

            int currentPage;
            int totalPages;
            int itemCount;
            IList<SectionWithSeats> sectionsEnum;
                IList<SearchResult> searchResults;
            SearchResultNoSectionModel noSectionSearchResults;
              IList<SectionsBlock> courseBlocks;
              using (ClassScheduleDb db = new ClassScheduleDb())
                {
                    searchResults = GetSearchResults(db, searchterm, quarter);
                    noSectionSearchResults = GetNoSectionSearchResults(db, searchterm, yrq);

              sections = (from s in sections
                      join r in searchResults on s.ID.ToString() equals r.ClassID
                      select s).ToList();

                    sectionsEnum = Helpers.GetSectionsWithSeats(yrq.ID, sections, db);

              // do not count Linked sections (since we don't display them)
              itemCount = sectionsEnum.Count(s => !s.IsLinked);

                  totalPages = (int)Math.Round((itemCount / ITEMS_PER_PAGE) + 0.5);
                  currentPage = p_offset + 1;

              using (_profiler.Step("Getting just records for page"))
              {
            if (currentPage > totalPages && totalPages > 0)
            {
              currentPage = totalPages;
            }
            sectionsEnum = sectionsEnum.Skip(p_offset * ITEMS_PER_PAGE).Take(ITEMS_PER_PAGE).ToList();
              }

              courseBlocks = Helpers.GroupSectionsIntoBlocks(sectionsEnum, db);
                }

                IEnumerable<string> allSubjects;
                using (_profiler.Step("Getting distinct list of subjects"))
                {
                    allSubjects = sectionsEnum.Select(c => c.CourseSubject).Distinct().OrderBy(c => c);
                }

            SearchResultsModel model = new SearchResultsModel
                                           {
                                             ItemCount = itemCount,
                                       TotalPages = totalPages,
                                       CurrentPage = currentPage,
                                       Courses = courseBlocks,
                                             SearchResultNoSection = noSectionSearchResults,
                                             AllSubjects = allSubjects,
                                       QuarterNavigation = quarterNavigation,
                                           };
                return View(model);
            }
        }
        public ActionResult AdvanceSearchResults(int? page)
        {
           
            var searchTerm = Request.QueryString[QueryStringKey];

            if (Tracker.Current != null && Tracker.Enabled)
            {
                //Check HabSearch Analytics Settings
                var habSearchAnalytics = HabSearchAnalyticsRepository.GetHabSearchAnalyticsSettings();
                if (habSearchAnalytics != null
                    && (habSearchAnalytics.IsAnalyticsEnabled && !string.IsNullOrWhiteSpace(habSearchAnalytics.SearchTermsRootFolderPath)))
                {
                    SetPatternCard(searchTerm, habSearchAnalytics.SearchTermsRootFolderPath);
                }
            }
            var model = new SearchResultsModel
            {

                QueryStringKey = QueryStringKey,
                FacetQueryStringKey = FacetQueryStringKey,

            };

            try
            {
                var selFacet = Request.QueryString[FacetQueryStringKey];
                model.Keyword = searchTerm;
                model.Facet = selFacet;

                var results = SearchProvider.Search(searchTerm);

                model.SearchResults = results;
                model.ResultsCount = results.Count().ToString();
                string totalCount = "0";
                model.Facets = GetFacets(searchTerm, out totalCount);
                model.AllResultsCount = totalCount;
                if (int.Parse(model.ResultsCount) < model.EndResultNumber)
                {
                    model.EndResultNumber = int.Parse(model.ResultsCount);
                }

                string selFacetCount = string.Empty;
                if (!string.IsNullOrEmpty(selFacet))
                {
                    model.Facets.TryGetValue(selFacet, out selFacetCount);
                }
                model.AllResultsCount = totalCount;
                if (!string.IsNullOrEmpty(selFacetCount))
                {
                    model.SelectedFacetCount = selFacetCount.Split('|')[1];
                }

                var searchResultsModel = HttpContext.Items["SearchModel"] as SearchResultsModel;
                if (searchResultsModel == null)
                    HttpContext.Items["SearchModel"] = model;

                return View("~/Views/HabSearch/AdvanceSearchResults.cshtml", model);
            }
            catch (Exception ex)
            {
                Log.Error("Something went wrong while performing a site search", ex, this);
                return View("~/Views/HabSearch/AdvanceSearchResults.cshtml");
            }
        }
        /// <summary>
        /// Set search term(user given) in search model
        /// </summary>
        /// <param name="model"></param>
        private void SearchModelObj(ref BrowseResultsModel model)
        {
            var searchModel = new SearchResultsModel();
            searchModel.Dates = model.Dates;
            searchModel.Location = model.Location;
            searchModel.FirstName = model.FirstName;
            searchModel.LastName = model.LastName;
            searchModel.AllOfTheWordsString = model.AllOfTheWordsString;
            searchModel.ExactPhraseString = string.Empty;
            searchModel.AnyOfTheWordsString = string.Empty;
            searchModel.WithoutWordsString = string.Empty;

            if (!string.IsNullOrWhiteSpace(searchModel.AllOfTheWordsString)) { if (searchModel.AllOfTheWordsString.Trim().ToLower() == "E.g., Moon Landing") { searchModel.AllOfTheWordsString = ""; } }
            if (!string.IsNullOrWhiteSpace(searchModel.FirstName)) { if (searchModel.FirstName.Trim().ToLower() == "e.g., william") { searchModel.FirstName = ""; } }
            if (!string.IsNullOrWhiteSpace(searchModel.LastName)) { if (searchModel.LastName.Trim().ToLower() == "e.g., smith") { searchModel.LastName = ""; } }

            if (String.IsNullOrWhiteSpace(searchModel.AllOfTheWordsString) && String.IsNullOrWhiteSpace(searchModel.ExactPhraseString) && String.IsNullOrWhiteSpace(searchModel.AnyOfTheWordsString) && String.IsNullOrWhiteSpace(searchModel.LastName))
            {
                model.ReturnUrl = string.Empty;
            }
            else
            {
                if (!string.IsNullOrEmpty(model.Location.CountryID)) { searchModel.Location.IsPublicationLocation = true; }

                var helper = new SearchHelper(_savedSearchService, _common);
                if (searchModel.Dates.IsPublicationDate == false) { searchModel.Dates = new DateModels(); }
                else
                {
                    if (searchModel.Dates.IsExactDate == true)
                    {
                        searchModel.Dates.EndYear = "";
                        searchModel.Dates.EndMonth = "";
                        searchModel.Dates.EndDay = "";
                    }
                    if (searchModel.Dates.IsBetweenYears == true)
                    {
                        searchModel.Dates.StartYear = searchModel.Dates.BetweenStartYear;
                        searchModel.Dates.EndYear = searchModel.Dates.BetweenEndYear;

                        searchModel.Dates.StartMonth = "";
                        searchModel.Dates.StartDay = "";
                        searchModel.Dates.EndMonth = "";
                        searchModel.Dates.EndDay = "";
                    }
                    if (searchModel.Dates.IsBetweenDates == true)
                    {
                        searchModel.Dates.StartYear = searchModel.Dates.BetweenDatesYear;
                        searchModel.Dates.StartMonth = searchModel.Dates.BetweenDatesMonth;
                        searchModel.Dates.StartDay = searchModel.Dates.BetweenDatesDay;
                    }
                }

                if (searchModel.Location.IsPublicationLocation == false) { searchModel.Location = new LocationModels(); }
                model.ReturnUrl = helper.getURLfromSearchValues(searchModel, "", 0);

            }
        }
        public ActionResult Search(string s, string c)
        {
            User user = Users.GetLoggedInUser();
            SearchResultsModel searchResults = new SearchResultsModel();
            searchResults.UserRelationships = null;
            searchResults.Courses = db.CarsCourses
                                        .Where(cc => cc.UserID == user.UserID)
                                        .OrderBy(cc => cc.Year)
                //.ThenBy(cc => cc.SessionOrder)
                                        .ToList()
                                        .OrderBy(cc => cc.Year)
                                            .ThenBy(cc => cc.SessionOrder)
                                        .ToList();

            if (!String.IsNullOrEmpty(s)) {
                //results.FriendUserIDs = UserRelationships.GetApprovedFriends().Select(user => user.UserID).ToList();

                string query = s;

                List<User> foundUsers = db.Users
                                            .Include("Degrees")
                                            .Include("Students")
                                            .Include("Employees")
                                            .Where(u =>
                                                u.FirstName == query ||
                                                u.LastName == query ||
                                                //u.MiddleName == query ||
                                                (u.FirstName + " " + u.LastName == query) ||
                                                //(u.MiddleName + " " + u.LastName == query) ||
                                                u.AliasFirstName == query ||
                                                u.AliasLastName == query)
                                            .ToList()
                                                .OrderByDescending(u => (u.Degrees.Count > 0 || u.Students.Count > 0 || u.Employees.Count > 0))
                                            .ToList();

                searchResults.UserRelationships = UserRelationships.GetRelationshipStatuses(foundUsers);

                UserAction ua = new UserAction() {
                    SourceUserID = user.UserID,
                    TargetUserID = 0,
                    UserActionType = UserActionType.SimpleSearch,
                    ActionDate = DateTime.Now,
                    GroupID = 0,
                    MessageID = 0,
                    PostCommentID = 0,
                    PostID = 0,
                    Text = s
                };
                db.UserActions.Add(ua);
                db.SaveChanges();

            } else if (!String.IsNullOrEmpty(c)) {
                string[] parts = c.Split(new char[] { ',' });
                int year = Int32.Parse(parts[0]);
                string session = parts[1];
                string courseCode = parts[2];
                string section = parts[3];

                List<int> classmateIds = db.CarsCourses
                                                .Where(cc => cc.Year == year && cc.Session == session && cc.CourseCode == courseCode && cc.Section == section)
                                                .Select(cc => cc.UserID)
                                                .ToList();

                List<User> usersInCourse = db.Users
                                                .Where(u => classmateIds.Contains(u.UserID)
                                                    /* && u.ScheduleSecurity == (int) UserSecuritySetting.Public */ )
                                                .OrderBy(u => u.LastName)
                                                    .ThenBy(u => u.FirstName)
                                                .ToList();

                searchResults.UserRelationships = UserRelationships.GetRelationshipStatuses(usersInCourse);

                UserAction ua = new UserAction() {
                    SourceUserID = user.UserID,
                    TargetUserID = 0,
                    UserActionType = UserActionType.ScheduleSearch,
                    ActionDate = DateTime.Now,
                    GroupID = 0,
                    MessageID = 0,
                    PostCommentID = 0,
                    PostID = 0,
                    Text = c
                };
                db.UserActions.Add(ua);
                db.SaveChanges();
            }

            /*
            if (searchResults.UserRelationships != null) {
                searchResults.UserRelationships.RemoveAll(rel => rel.TargetUserID == user.UserID);
            }
            */

            return View(searchResults);
        }
        public ActionResult Index()
        {
            User user = Users.GetLoggedInUser();
            SearchResultsModel searchResults = new SearchResultsModel();
            searchResults.UserRelationships = null;
            searchResults.Courses = db.CarsCourses
                                        .Where(cc => cc.UserID == user.UserID)
                                        .OrderBy(cc => cc.Year)
                                            .ThenBy(cc => cc.Session)
                                        .ToList();
            return View();

            //return Redirect("/community/search/");
        }
 private string fcnRedirectedPage()
 {
     var url = string.Empty;
     if ((Request.Cookies[_config.GetStringValueFromConfig("cookiePrefix", "NewspaperARCHIVE.com") + ".SearchValues"] != null && Request.Cookies[_config.GetStringValueFromConfig("cookiePrefix", "NewspaperARCHIVE.com") + ".SearchValues"].HasKeys))
     {
         var _searchResModel = new SearchResultsModel();
         var helper = new SearchHelper(_savedSearchService, _common);
         _searchResModel = helper.GetModelSearchValuesCookie(_searchResModel);
         url = helper.getURLfromSearchValues(_searchResModel, "", 0);
     }
     return url;
 }