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));
        }
示例#2
0
        //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);
            }
        }