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