/// <summary> /// The parseQueryStringParameters method parses the string and sets some fields according to the result /// </summary> /// <param name="request">The request parameter</param> /// <param name="controller">The controller parameter</param> private void ParseQueryStringParameters(HttpRequestMessage request, AnetApiController controller) { var queryStringPairs = request.GetQueryNameValuePairs(); foreach (var pair in queryStringPairs) { switch (pair.Key) { case Constants.QueryParameters.Fields: this.ParseDataShapingParameters(controller, pair); break; case Constants.QueryParameters.Offset: this.ParsePageParameters(controller, pair); break; case Constants.QueryParameters.Limit: this.ParsePageParameters(controller, pair); break; case Constants.QueryParameters.PageSize: this.ParsePageParameters(controller, pair); break; case Constants.QueryParameters.PageNumber: this.ParsePageParameters(controller, pair); break; case Constants.QueryParameters.SortKey: this.ParseSortParameters(controller, pair); break; case Constants.QueryParameters.SortOrder: this.ParseSortParameters(controller, pair); break; case Constants.QueryParameters.Filter: this.ParseFilterParameters(controller, pair); break; } } }
/// <summary> /// The parsePageParameters method extracts the paging parameters from the string /// </summary> /// <param name="controller">The controller parameter</param> /// <param name="pair">The pair parameter</param> private void ParsePageParameters(AnetApiController controller, KeyValuePair<string, string> pair) { AnetPagerSettings pagerSettings = controller.QuerySettings.PagerSettings; if (pair.Key.Equals(Constants.QueryParameters.Limit, StringComparison.OrdinalIgnoreCase)) { pagerSettings.PageSize = int.Parse(pair.Value); pagerSettings.PagerMode = AnetPagerMode.OffsetLimit; } else if (pair.Key.Equals(Constants.QueryParameters.Offset, StringComparison.OrdinalIgnoreCase)) { pagerSettings.Offset = int.Parse(pair.Value); pagerSettings.PagerMode = AnetPagerMode.OffsetLimit; } else if (pair.Key.Equals(Constants.QueryParameters.PageSize, StringComparison.OrdinalIgnoreCase)) { pagerSettings.PageSize = int.Parse(pair.Value); pagerSettings.PagerMode = AnetPagerMode.PageSizeNumber; } else if (pair.Key.Equals(Constants.QueryParameters.PageNumber, StringComparison.OrdinalIgnoreCase)) { pagerSettings.PageNumber = int.Parse(pair.Value); pagerSettings.PagerMode = AnetPagerMode.PageSizeNumber; } }
/// <summary> /// The parseDataShapingParameters method sets if data shaping is required /// </summary> /// <param name="controller">The controller parameter</param> /// <param name="pair">The pair parameter</param> private void ParseDataShapingParameters(AnetApiController controller, KeyValuePair<string, string> pair) { controller.DataShapingRequired = true; controller.RequiredFields = new List<string>(); controller.RequiredFields.AddRange(StringParser.GetListFromCsv(pair.Value)); }
/// <summary> /// The parseFilterParameters method extracts the filter parameters from the string /// </summary> /// <param name="controller">The controller parameter</param> /// <param name="pair">The pair parameter</param> private void ParseFilterParameters(AnetApiController controller, KeyValuePair<string, string> pair) { AnetFilterSettings filterSettings = controller.QuerySettings.FilterSettings; }
/// <summary> /// The parseSortParameters method extracts the sorting parameters from the string /// </summary> /// <param name="controller">The controller parameter</param> /// <param name="pair">The pair parameter</param> private void ParseSortParameters(AnetApiController controller, KeyValuePair<string, string> pair) { AnetSortSettings sortSettings = controller.QuerySettings.SortSettings; if (pair.Key.Equals(Constants.QueryParameters.SortKey, StringComparison.OrdinalIgnoreCase)) { sortSettings.SortField = pair.Value; } else if (pair.Key.Equals(Constants.QueryParameters.SortOrder, StringComparison.OrdinalIgnoreCase)) { switch (pair.Value.ToLower()) { case Constants.QueryParameters.Ascending: sortSettings.Direction = SortDirection.Ascending; break; case Constants.QueryParameters.Descending: sortSettings.Direction = SortDirection.Descending; break; } } }