public static List <CM.Organization> MicroSearch(MicroSearchInputV2 query, int pageNumber, int pageSize, ref int pTotalRows) { string pOrderBy = ""; string filter = ""; int userId = 0; string keywords = query.GetFilterValueString("Keywords"); string orgMbrs = query.GetFilterValueString("OrgFilters"); //user is used to determine if can edit results AppUser user = new AppUser(); user = AccountServices.GetCurrentUser(); if (user != null && user.Id > 0) { userId = user.Id; } //this is an option on micro searches to only target orgs associated to the user //if ( orgMbrs == "myOrgs" ) // SetAuthorizationFilter( user, ref filter, true, true ); //else // SetAuthorizationFilter( user, ref filter, true, false ); SetKeywordFilter(keywords, true, ref filter); return(Mgr.Search(filter, pOrderBy, pageNumber, pageSize, ref pTotalRows)); }
//Do a MicroSearch public JsonResult DoMicroSearch(MicroSearchInputV2 query) { var totalResults = 0; List <MicroProfile> data = MicroSearchServicesV2.DoMicroSearch(query, ref totalResults, ref valid, ref status); return(JsonHelper.GetJsonWithWrapper(data, valid, status, new { TotalResults = totalResults })); }
//public ActionResult Filter( string keywords ) //{ // var response = ElasticClient.Search<MainSearchResult>( body => body.Query( query => query.QueryString( qs => qs.Query( keywords ) ) ) ); // return Json( response.Documents, JsonRequestBehavior.AllowGet ); //} //Do a MicroSearch public JsonResult DoMicroSearch(MicroSearchInputV2 query) { var totalResults = 0; var data = MicroSearchServicesV2.DoMicroSearch(query, ref totalResults, ref valid, ref status); return(JsonHelper.GetJsonWithWrapper(data, valid, status, totalResults)); }
//Do a micro search and return results public static List <MicroProfile> DoMicroSearch(MicroSearchInputV2 query, ref int totalResults, ref bool valid, ref string status) { //Ensure there is a query if (query.Filters.Count() == 0 && query.SearchType != "organization") { valid = false; status = "No search parameters found!"; return(null); } //Sanitize query foreach (var item in query.Filters) { item.Name = ServiceHelper.CleanText(item.Name ?? ""); item.Value = ServiceHelper.CleanText(item.Value as string ?? ""); } //Maybe useful. Based on notes in Search page. var mainSearchTypeCode = 0; switch ((query.ParentSearchType ?? "").ToLower()) { case "credential": mainSearchTypeCode = 1; break; case "organization": mainSearchTypeCode = 2; break; case "assessment": mainSearchTypeCode = 3; break; case "learningopportunity": mainSearchTypeCode = 7; break; case "widget": mainSearchTypeCode = 25; break; default: mainSearchTypeCode = 1; break; } totalResults = 0; switch (query.SearchType) { case "OrganizationSearch": case "organization": { var results = OrganizationServices.MicroSearch(query, query.PageNumber, query.PageSize, ref totalResults); return(results.ConvertAll(m => ConvertProfileToMicroProfile(m))); } case "RegionSearch": { var locationType = query.GetFilterValueString("LocationType").Split(',').ToList(); var results = new ThirdPartyApiServices().GeoNamesSearch(query.GetFilterValueString("Keywords"), query.PageNumber, query.PageSize, locationType, ref totalResults, false); return(results.ConvertAll(m => ConvertRegionToMicroProfile(m))); } case "IndustrySearch": { //TODO - getAll should be set to false if used by a search view (ie credential) bool getAll = query.IncludeAllCodes; var results = EnumerationServices.Industry_Search(mainSearchTypeCode, query.GetFilterValueInt("HeaderId"), query.GetFilterValueString("Keywords"), query.PageNumber, query.PageSize, ref totalResults, getAll); return(results.ConvertAll(m => ConvertCodeItemToMicroProfile(m))); } case "OccupationSearch": { //TODO - IncludeAllCodes should be set to false if used by a search view (ie credential) var results = EnumerationServices.Occupation_Search(query.GetFilterValueInt("HeaderId"), query.GetFilterValueString("Keywords"), query.PageNumber, query.PageSize, ref totalResults, query.IncludeAllCodes); return(results.ConvertAll(m => ConvertCodeItemToMicroProfile(m))); } case "CIPSearch": { //TODO - need entity type var results = EnumerationServices.CIPS_Search( mainSearchTypeCode, query.GetFilterValueInt("HeaderId"), query.GetFilterValueString("Keywords"), query.PageNumber, query.PageSize, ref totalResults, query.IncludeAllCodes); return(results.ConvertAll(m => ConvertCodeItemToMicroProfile(m))); } //case "LearningOpportunitySearch": //case "LearningOpportunityHasPartSearch": // { // var results = LearningOpportunityServices.Search( query.GetFilterValueString( "Keywords" ), query.PageNumber, query.PageSize, ref totalResults ); // return results.ConvertAll( m => ConvertProfileToMicroProfile( m ) ); // } default: totalResults = 0; valid = false; status = "Unable to find Search Type"; return(null); } }