TransactionalNodeService.SearchConditions.BuildSearchQuery C# (CSharp) Method

BuildSearchQuery() public method

public BuildSearchQuery ( SqlConnection connection, System.Guid rootMapUid, int pageNumber = 1, int pageSize = 5 ) : SqlCommand
connection System.Data.SqlClient.SqlConnection
rootMapUid System.Guid
pageNumber int
pageSize int
return System.Data.SqlClient.SqlCommand
        public SqlCommand BuildSearchQuery(SqlConnection connection, Guid rootMapUid, int pageNumber = 1, int pageSize = 5)
        {
            BuildOrderByData();

            string searchQueryCount;
            string searchQueryText;

            int numberToTake = pageNumber * pageSize;

            List<SqlParameter> parameters = new List<SqlParameter>();

            parameters.Add(new SqlParameter("@RootMapUid", rootMapUid));

            if (MetadataFilters.Count > 0)
            {
                StringBuilder filterBuilder = new StringBuilder();

                int count = 1;

                foreach (SearchCondition condition in MetadataFilters)
                {
                    string conditionSqlQuery;

                    condition.Index = count;
                    count++;

                    if (condition.ValidateCondition(out conditionSqlQuery))
                    {
                        filterBuilder.Append(conditionSqlQuery);
                        filterBuilder.Append("AND");
                    }

                    parameters.Add(condition.MetadataNameParameter);
                    parameters.Add(condition.SearchConditionParameter);
                }

                searchQueryCount = string.Format(SearchQueryCount, filterBuilder.ToString());
                searchQueryText = string.Format(SearchQuery, numberToTake, SortColumn, OrderDirection, filterBuilder.ToString());
            }
            else
            {
                searchQueryCount = string.Format(SearchQueryCount, string.Empty);
                searchQueryText = string.Format(SearchQuery, numberToTake, SortColumn, OrderDirection, string.Empty);
            }

            if (pageNumber > 1)
            {
                string forwardOrder;
                string reverseOrder;

                if (Ascending)
                {
                    forwardOrder = "ASC";
                    reverseOrder = "DESC";
                }
                else
                {
                    forwardOrder = "DESC";
                    reverseOrder = "ASC";
                }

                searchQueryText = string.Format(PaginationSearchQuery, pageSize, searchQueryText, SortColumn, reverseOrder, forwardOrder);
            }

            SqlCommand searchQuery = new SqlCommand(searchQueryCount + ";" + searchQueryText, connection);
            searchQuery.Parameters.AddRange(parameters.ToArray());

            return searchQuery;
        }
    }