private static string GetQueryParameters(string parameters, bool showHistory, string search, string gridFiltersStr, IJournal journal) { var queryParameters = GlobalObject.decodeURIComponent(parameters); if (showHistory) { queryParameters = "/showhistory?" + queryParameters; } if (string.IsNullOrEmpty(queryParameters) || queryParameters[queryParameters.Length - 1] == '?') { queryParameters += BaseFilterParameterSearch <object> .SearchQueryParameter + "=" + search; } else { queryParameters += "&" + BaseFilterParameterSearch <object> .SearchQueryParameter + "=" + search; } if (!string.IsNullOrEmpty(gridFiltersStr) && journal != null) { var gridFilters = new FilterConditions(gridFiltersStr); if (gridFilters.Conditions.Count > 0) { var columnsDic = journal.GetColumns().OfType <GridColumn>().ToDictionary(r => r.ColumnNameIndex); foreach (var condition in gridFilters.Conditions) { if (!string.IsNullOrEmpty(queryParameters)) { queryParameters += "&" + (columnsDic[condition.Field].FilterColumnMapping ?? condition.Field); } switch (condition.Type) { case FilterType.List: queryParameters += ".EqualsCollection=" + string.Join(",", condition.List); break; case FilterType.Boolean: case FilterType.Date: case FilterType.Numeric: switch (condition.Comparison) { case Comparison.Eq: queryParameters += ".Equals="; break; case Comparison.Gt: queryParameters += ".EqualsOrMore="; break; case Comparison.Lt: queryParameters += ".EqualsOrLess="; break; default: throw new ArgumentOutOfRangeException(); } queryParameters += condition.Value <string>(); break; case FilterType.String: queryParameters += ".Contains=" + condition.Value <string>(); break; default: throw new ArgumentOutOfRangeException(); } } } } return(queryParameters); }