/// <summary> /// Modifies a record after it has been generated to provide filter functionality based on System Variables. /// </summary> /// <param name="dataset">The dataset.</param> /// <param name="record">The record.</param> /// <param name="flag">The flag.</param> /// <returns></returns> private static Record PostSystemFilter(ObservableRangeCollection <VariableData> dataset, Record record, SystemVariable.EFlag flag) { var pageWhitelist = new List <string>(); foreach (var filter in dataset) { var selPage = filter.SelectedPage.Content as string; var selVal = filter.SelectedValue.Content as string; if (selVal == VariableData.VALUE_DEFAULT) { if (selPage == VariableData.PAGE_EMPTY) { pageWhitelist.Clear(); } else { pageWhitelist.Add(selPage); } continue; } switch (flag) { case SystemVariable.EFlag.PAGE_COUNTER_RECORD: int val = 0; if (!int.TryParse(selVal, out val)) { pageWhitelist.Clear(); } if (record.ElementAtOrDefault(val) != null) { pageWhitelist.Add(selPage); } break; case SystemVariable.EFlag.TOTAL_PAGES_RECORD: if (selVal == record.Count.ToString()) { pageWhitelist.Add(selPage); } break; } } record.RemoveAll((page) => !pageWhitelist.Contains(page.Id)); return(record); }
private static List <string> PreSystemFilter(ObservableRangeCollection <VariableData> dataset, int recordIndex, SystemVariable.EFlag flag) { var pageWhitelist = new List <string>(); foreach (var filter in dataset) { var selPage = filter.SelectedPage.Content as string; var selVal = filter.SelectedValue.Content as string; if (selVal == VariableData.VALUE_DEFAULT) { if (selPage == VariableData.PAGE_EMPTY) { pageWhitelist.Clear(); continue; } pageWhitelist.Add(selPage); } switch (flag) { case SystemVariable.EFlag.RECORD_INDEX: if (selVal == recordIndex.ToString()) { if (selPage != VariableData.PAGE_EMPTY) { pageWhitelist.Add(selPage); } } break; } } return(pageWhitelist); }