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);
        }
Esempio n. 2
0
        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());
        }