Example #1
0
        public bool IsMatch(SearchQueryParameter searchQueryParameter)
        {
            var searchPropertyMap =
                _filterMapper.GetSearchPropertyMap(searchQueryParameter.Parent, searchQueryParameter.Name);

            return(!searchPropertyMap.IsCollection);
        }
Example #2
0
        private string EmptyFieldQuery(SearchQueryParameter searchFilterInfo, SearchPropertyMap searchProperty,
                                       bool isNullCheck)
        {
            var anyQuery =
                $"{searchProperty.AzureSearchPropertyMap}/{searchFilterInfo.ODataOperator.ToString().ToLower()}()";

            return(isNullCheck ? $"not {anyQuery}" : anyQuery);
        }
Example #3
0
        private string BuildSubQuery(SearchQueryParameter searchFilterInfo)
        {
            var subQueryList = new List <string>();

            foreach (var additionalSearchFilter in searchFilterInfo.SubQueryParameters)
            {
                var additionalFilter = _filterMapper.GetSearchPropertyMap(
                    additionalSearchFilter.AdditionalFilterParent, additionalSearchFilter.AdditionalFilterName);
                var subQuery = GetAdditionalFilter(additionalFilter, additionalSearchFilter);
                subQueryList.Add(subQuery);
            }

            return(BuildCustomQuery(searchFilterInfo.SubQueryParameterQueryCondition, subQueryList.ToArray()));
        }
Example #4
0
        public string BuildQuery(SearchQueryParameter searchQueryParameter)
        {
            var searchProperty =
                _filterMapper.GetSearchPropertyMap(searchQueryParameter.Parent, searchQueryParameter.Name);

            if ((searchQueryParameter.IsNullCheck || searchQueryParameter.SubQueryParameters == null ||
                 searchQueryParameter.SubQueryParameters.Count == 0) &&
                searchQueryParameter.ODataOperator == ODataOperators.Any)
            {
                return(EmptyFieldQuery(searchQueryParameter, searchProperty, searchQueryParameter.IsNullCheck));
            }

            return(BuildCollectionQuery(searchQueryParameter, searchProperty));
        }
Example #5
0
        private string GetFilter(SearchPropertyMap propertyMap, SearchQueryParameter searchQueryParameter)
        {
            var data = _dataFormats.First(s => s.IsMatch(searchQueryParameter)).GetFormattedValue(searchQueryParameter);

            var queryList = new List <string>();

            if (!string.IsNullOrWhiteSpace(data.Value))
            {
                queryList.Add(
                    $"{propertyMap.AzureSearchPropertyMap} {searchQueryParameter.ODataOperator.ToString().ToLower()} {data.Value}");
            }

            if (data.IsAdditionalNullCheckRequired)
            {
                queryList.Add(
                    $"{propertyMap.AzureSearchPropertyMap} {searchQueryParameter.ODataOperator.ToString().ToLower()} null");
            }

            return(BuildCustomQuery(QueryConditions.Or, queryList.ToArray()));
        }
Example #6
0
        public string BuildQuery(SearchQueryParameter searchQueryParameter)
        {
            var searchPropertyMap =
                _filterMapper.GetSearchPropertyMap(searchQueryParameter.Parent, searchQueryParameter.Name);

            var query = searchQueryParameter.ODataOperator == ODataOperators.SearchIn
                ? GetSearchInFilter(searchPropertyMap, searchQueryParameter.Value)
                : GetFilter(searchPropertyMap, searchQueryParameter);

            if (searchQueryParameter.SubQueryParameters == null || searchQueryParameter.SubQueryParameters.Count <= 0)
            {
                return(query);
            }

            var subQueryValue = BuildSubQuery(searchQueryParameter);

            query = BuildCustomQuery(searchQueryParameter.SubQueryParameterQueryCondition, query, subQueryValue);

            return(query);
        }
Example #7
0
        private string BuildCollectionQuery(SearchQueryParameter searchQueryParameter, SearchPropertyMap searchProperty)
        {
            var queryList = new List <string>();

            if (searchQueryParameter.ODataOperator == ODataOperators.SearchIn)
            {
                return(GetSearchInFilter(searchProperty, searchQueryParameter.Value));
            }

            StringBuilder builder =
                new StringBuilder(
                    $"{searchProperty.AzureSearchPropertyMap}/{searchQueryParameter.ODataOperator.ToString().ToLower()}({_itemName}: ");

            builder.Append(BuildSubQuery(searchQueryParameter));
            builder.Append(")");

            queryList.Add(builder.ToString());

            return(BuildCustomQuery(QueryConditions.Or, queryList.ToArray()));
        }