private List <DataProviderFilterInfo> FixFilters(List <DataProviderFilterInfo> filters) { if (filters == null) { return(filters); } List <DataProviderFilterInfo> newFilters = new List <DataProviderFilterInfo>(); DataProviderFilterInfo.NormalizeFilters(typeof(SchedulerItemData), filters); foreach (DataProviderFilterInfo f in filters) { if (f.Field == "IsRunning") { bool val; if (f.Value.GetType() == typeof(bool)) { val = (bool)f.Value; } else { throw new InternalError("Unexpected value type in filter for IsRunning"); } if (f.Operator == "==") { // nothing } else if (f.Operator == "!=") { val = !val; } else { throw new InternalError("Unexpected operator in filter for IsRunning"); } newFilters.Add(new DataProviderFilterInfo { Field = nameof(SchedulerItemData.Next), Operator = val ? ">=" : "<", Value = DateTime.MaxValue }); } else if (f.Filters != null) { f.Filters = FixFilters(f.Filters); newFilters.Add(f); } else { newFilters.Add(f); } } return(newFilters); }