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