private JObject SetupQueryForListing() { //Get Trial Query, inject pager stuff, call manager JObject query; //The query comes from the concrete implementation if (this.GetTrialQuery() != null) { query = new JObject(this.GetTrialQuery()); } else { query = new JObject(); } // Merge both sets of dynamic filter params.'query' overrides 'urlParams', meaning that any duplicate elements in urlParams // will not be included, e.g., given // query == { "key1":value1, "key2":["value2,value3"] } // and urlParms == { "key2":["value4,value5"], "key3":"value6" } // merged query == { "key1":value1, "key2":["value2,value3"], "key3":"value6" } JObject filteredQuery = TrialListingQueryHelper.MergeQueryAndURLFilters(query, HttpContext.Current.Request.QueryString); JObject activeTrialStatuses = new JObject(); //Only return active statuses UNLESS the query in the listing states other statuses. activeTrialStatuses.Add(new JProperty("current_trial_status", new JArray(CTSConstants.ActiveTrialStatuses))); activeTrialStatuses.Merge(filteredQuery, new JsonMergeSettings { MergeArrayHandling = MergeArrayHandling.Concat }); return(activeTrialStatuses); }
public void ExtractFiltersFromUrl(string filterParams, JObject expectedCriteria) { NameValueCollection coll = HttpUtility.ParseQueryString(filterParams); JObject filterObject = TrialListingQueryHelper.ExtractFiltersFromUrl(coll); Assert.Equal(expectedCriteria, filterObject, new JTokenEqualityComparer()); }
public void AddFilterParamsToUrl(NciUrl url, string filterParams, NciUrl expectedUrl) { NameValueCollection coll = HttpUtility.ParseQueryString(filterParams); TrialListingQueryHelper.AddFilterParamsToUrl(url, coll); Assert.Equal(expectedUrl, url, new NciUrlComparer()); }
public void MergeFilterQuery(JObject query, string filterParams, JObject expectedCriteria) { NameValueCollection coll = HttpUtility.ParseQueryString(filterParams); JObject filterObject = TrialListingQueryHelper.MergeQueryAndURLFilters(query, coll); //NOTE: Original Params (query) will come second. So ORDER MATTERS! Assert.Equal(expectedCriteria, filterObject, new JTokenEqualityComparer()); }
/// <summary> /// Gets URL for a Single Page of Results /// </summary> /// <param name="pageNum"></param> /// <returns></returns> public string GetPageUrl(int pageNum) { NciUrl url = this.PageInstruction.GetUrl("CurrentURL"); if (!url.QueryParameters.ContainsKey(PAGENUM_PARAM)) { url.QueryParameters.Add(PAGENUM_PARAM, pageNum.ToString()); } else { url.QueryParameters[PAGENUM_PARAM] = pageNum.ToString(); } //TODO: What about items per page? //TODO: Why are the filters not part of the URL already? //Add the filters back into the URL TrialListingQueryHelper.AddFilterParamsToUrl(url, HttpContext.Current.Request.QueryString); return(url.ToString()); }