public string MainSearch(MainSearchInput query) { //DateTime start = DateTime.Now; //LoggingHelper.DoTrace( 6, string.Format( "$$$$SearchController.MainSearch === Started: " ) ); if (Request.Params["useSql"] == "true") { //query.useSql = true; //query.useElastic = false; } //if ( Request.Params["elastic"] == "true" ) query.ElasticSearch = true; var results = searchService.MainSearch(query, ref valid, ref status); //TimeSpan timeDifference = start.Subtract( DateTime.Now ); //LoggingHelper.DoTrace( 6, string.Format( "$$$$SearchController.MainSearch === Ended - Elapsed: {0}", timeDifference.TotalSeconds ) ); //Use a different return structure here because the default serialization method screws up the internal JObjects/JArrays/etc var finalResult = JObject.FromObject(new { data = results, valid = valid, status = status }); Response.ContentType = "application/json"; Response.ContentEncoding = Encoding.UTF8; return(finalResult.ToString()); }
public ApiResponse Search(MainQuery query) { var debug = new JObject(); try { var translatedQuery = API.SearchServices.TranslateMainQueryToMainSearchInput(query); var results = searchService.MainSearch(translatedQuery, ref valid, ref status, debug); var translatedResults = API.SearchServices.TranslateMainSearchResultsToAPIResults(results, debug); return(new ApiResponse(translatedResults, true, null)); } catch (Exception ex) { LoggingHelper.LogError(ex, "CredentialFinderWebAPI.Search. " + ex.Message + "\n\n" + debug.ToString()); return(new ApiResponse(debug, false, new List <string>() { string.Format("Error encountered returning data. {0} ", ex.Message), "See debug object for details." })); } }