/// <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;
                }
            }
        }