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 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()); }