public UriParamList ToUriParamList() { var result = new UriParamList(); if (!String.IsNullOrEmpty(Query)) { result.Add(Tuple.Create(SEARCH_PARAM_QUERY, Query)); } if (!String.IsNullOrEmpty(Text)) { result.Add(Tuple.Create(SEARCH_PARAM_TEXT, Text)); } if (!String.IsNullOrEmpty(Content)) { result.Add(Tuple.Create(SEARCH_PARAM_CONTENT, Content)); } if (Count != null) { result.Add(Tuple.Create(SEARCH_PARAM_COUNT, Count.Value.ToString())); } if (Include.Any()) { result.AddRange(Include.Select(i => Tuple.Create(SEARCH_PARAM_INCLUDE, i))); } if (RevInclude.Any()) { result.AddRange(RevInclude.Select(i => Tuple.Create(SEARCH_PARAM_REVINCLUDE, i))); } if (Sort.Any()) { result.AddRange(Sort.Select(s => Tuple.Create(createSortParamName(s.Item2), s.Item1))); } if (Summary != null) { result.Add(Tuple.Create(SEARCH_PARAM_SUMMARY, Summary.Value.ToString().ToLower())); } if (!String.IsNullOrEmpty(Filter)) { result.Add(Tuple.Create(SEARCH_PARAM_FILTER, Filter)); } if (Contained != null) { result.Add(Tuple.Create(SEARCH_PARAM_CONTAINED, Contained.Value.ToString().ToLower())); } if (ContainedType != null) { result.Add(Tuple.Create(SEARCH_PARAM_CONTAINEDTYPE, ContainedType.Value.ToString().ToLower())); } if (Elements.Any()) { result.Add(Tuple.Create(SEARCH_PARAM_ELEMENTS, String.Join(",", Elements))); } result.AddRange(Parameters); return(result); }
/// <summary> /// Add a parameter with a given name and value. /// </summary> /// <param name="name">The name of the parameter</param> /// <param name="value">The value of the parameter as a FHIR datatype or Resource</param> /// <returns>this (Parameters), so you can chain AddParameter calls</returns> public SearchParams Add(string name, string value) { if (name == null) { throw Error.ArgumentNull("name"); } if (value == null) { throw Error.ArgumentNull("value"); } if (String.IsNullOrEmpty(value)) { throw Error.Argument("value", "value cannot be empty"); } if (name == SEARCH_PARAM_QUERY) { Query = value; } else if (name == SEARCH_PARAM_TEXT) { Text = value; } else if (name == SEARCH_PARAM_CONTENT) { Content = value; } else if (name == SEARCH_PARAM_COUNT) { Count = Int32.Parse(value); } else if (name == SEARCH_PARAM_INCLUDE) { Include.Add(value); } else if (name == SEARCH_PARAM_REVINCLUDE) { RevInclude.Add(value); } else if (name.StartsWith(SEARCH_PARAM_SORT + SEARCH_MODIFIERSEPARATOR)) { var order = name.Substring(SEARCH_PARAM_SORT.Length + 1).ToLower(); if (order.StartsWith("asc")) { Sort.Add(Tuple.Create(value, SortOrder.Ascending)); } else if (order.StartsWith("desc")) { Sort.Add(Tuple.Create(value, SortOrder.Descending)); } else { throw Error.Format("Cannot parse sort order '{0}'", null, order); } } else if (name == SEARCH_PARAM_SUMMARY) { SummaryType st = SummaryType.False; if (Enum.TryParse <SummaryType>(value, ignoreCase: true, result: out st)) { Summary = st; } else { throw Error.Format("Cannot parse summary value '{0}'", null, value); } } else if (name == SEARCH_PARAM_FILTER) { Filter = value; } else if (name == SEARCH_PARAM_CONTAINED) { if (SEARCH_CONTAINED_TRUE.Equals(value)) { Contained = ContainedSearch.True; } else if (SEARCH_CONTAINED_FALSE.Equals(value)) { Contained = ContainedSearch.False; } else if (SEARCH_CONTAINED_BOTH.Equals(value)) { Contained = ContainedSearch.Both; } else { throw Error.Format("Cannot parse contained value '{0}'", null, value); } } else if (name == SEARCH_PARAM_CONTAINEDTYPE) { if (SEARCH_CONTAINED_TYPE_CONTAINED.Equals(value)) { ContainedType = ContainedResult.Contained; } else if (SEARCH_CONTAINED_TYPE_CONTAINER.Equals(value)) { ContainedType = ContainedResult.Container; } else { throw Error.Format("Cannot parse containedType value '{0}'", null, value); } } else if (name == SEARCH_PARAM_ELEMENTS) { Elements.AddRange(value.Split(',')); } else { Parameters.Add(Tuple.Create(name, value)); } return(this); }
public UriParamList ToUriParamList() { var result = new UriParamList(); if (!String.IsNullOrEmpty(Query)) { result.Add(Tuple.Create(SEARCH_PARAM_QUERY, Query)); } if (!String.IsNullOrEmpty(Text)) { result.Add(Tuple.Create(SEARCH_PARAM_TEXT, Text)); } if (!String.IsNullOrEmpty(Content)) { result.Add(Tuple.Create(SEARCH_PARAM_CONTENT, Content)); } if (Count != null) { result.Add(Tuple.Create(SEARCH_PARAM_COUNT, Count.Value.ToString())); } if (Include.Any()) { result.AddRange(Include.Select(i => Tuple.Create(SEARCH_PARAM_INCLUDE, i))); } if (RevInclude.Any()) { result.AddRange(RevInclude.Select(i => Tuple.Create(SEARCH_PARAM_REVINCLUDE, i))); } if (Sort.Any()) { result.Add(createSortParam(Sort)); } if (Summary != null) { result.Add(Tuple.Create(SEARCH_PARAM_SUMMARY, Summary.Value.ToString().ToLower())); } if (!String.IsNullOrEmpty(Filter)) { result.Add(Tuple.Create(SEARCH_PARAM_FILTER, Filter)); } if (Contained != null) { result.Add(Tuple.Create(SEARCH_PARAM_CONTAINED, Contained.Value.ToString().ToLower())); } if (ContainedType != null) { result.Add(Tuple.Create(SEARCH_PARAM_CONTAINEDTYPE, ContainedType.Value.ToString().ToLower())); } if (Elements.Any()) { result.Add(Tuple.Create(SEARCH_PARAM_ELEMENTS, String.Join(",", Elements))); } result.AddRange(Parameters); return(result); Tuple <string, string> createSortParam(IList <Tuple <string, SortOrder> > sorts) { var values = from s in sorts let orderPrefix = s.Item2 == SortOrder.Descending ? "-" : "" select orderPrefix + s.Item1; return(new Tuple <string, string>(SEARCH_PARAM_SORT, String.Join(",", values))); } }