/// <summary>
        /// Convert ComplexFilterScope collection to SearchRequestComplexFilter collection
        /// </summary>
        /// <param name="source">ComplexFilterScope collection</param>
        /// <returns>SearchRequestComplexFilter collection</returns>
        public static IEnumerable <SearchRequestComplexFilter> ToDomainList(this IEnumerable <ComplexFilterScope> source)
        {
            if (source == null)
            {
                throw new ArgumentException("ConfigurationScope collection is null");
            }

            var result = new List <SearchRequestComplexFilter>();

            foreach (var filterScope in source)
            {
                result.Add(SearchRequestComplexFilter.FromConfig(filterScope));
            }

            return(result);
        }
        /// <summary>
        /// Convert ComplexFilterScope to SearchRequestComplexFilter
        /// </summary>
        /// <param name="filterScope">ComplexFilterScope</param>
        /// <returns>SearchRequestComplexFilter instance</returns>
        public static SearchRequestComplexFilter FromConfig(ComplexFilterScope filterScope)
        {
            var complexFilter = new SearchRequestComplexFilter();

            complexFilter.Name    = filterScope.Type;
            complexFilter.Items   = new List <SearchRequestFilterItem>();
            complexFilter.Tooltip = filterScope.Tooltip;

            //enumerate compound filter kes
            foreach (var filterElement in filterScope.ComplexFiltersCollection)
            {
                var filter = new SearchRequestFilterItem();
                filter.Name        = string.Concat(filterScope.BasePath, ".", filterElement.Property.ToString());
                filter.Description = filterElement.Description.ToString();
                filter.FilterType  = (FilterType)Enum.Parse(typeof(FilterType), filterElement.Type.ToString());

                complexFilter.Items.Add(filter);
            }

            return(complexFilter);
        }