示例#1
0
        public static (FilterResult baseFilter, FilterResult topFilter) AdjustFilterToFilter(FilterResult baseFilter, FilterResult topFilter)
        {
            //Special case for Raptor filter to filter comparisons.
            //If base filter is earliest and top filter is latest with a DateTime filter then replace
            //base filter with latest with a date filter with the start date at the beginning of time and
            //the end date at the original start date. This is to avoid losing data between original start date
            //and first event after the start date with data.
            if (baseFilter.HasTimeComponent() && (baseFilter.ReturnEarliest ?? false) &&
                topFilter.HasTimeComponent() && !(topFilter.ReturnEarliest ?? false))
            {
                //Note: filters are cached so we need to make a copy to adjust.
                var newTopFilter = new FilterResult(topFilter);
                newTopFilter.ElevationType = null;

                // Adjust the base filter accordingly
                var newBaseFilter = new FilterResult(baseFilter);
                newBaseFilter.EndUtc         = baseFilter.StartUtc;
                newBaseFilter.StartUtc       = Consts.MIN_DATETIME_AS_UTC;
                newBaseFilter.ReturnEarliest = false;
                newBaseFilter.ElevationType  = null;

                return(baseFilter : newBaseFilter, topFilter : newTopFilter);
            }
            return(baseFilter, topFilter);
        }