/// <summary>
        ///
        /// </summary>
        /// <param name="request"></param>
        /// <param name="model"></param>
        /// <returns></returns>
        private byte[] toXMLModel(IDnsRequestContext request, IDnsPostContext post, SPANQueryBuilderModel model)
        {
            var helper = new drn_query_builder_helper()
            {
                QueryType        = request.RequestType.Name,
                QueryName        = request.Header.Name,
                QueryDescription = request.Header.Description,
                SubmitterEmail   = request.Header.AuthorEmail,

                PeriodStart          = model.ObservationPeriod.StartPeriod.ToString("MM/dd/yyyy"),
                PeriodEnd            = model.ObservationPeriod.EndPeriod.ToString("MM/dd/yyyy"),
                ContinuousEnrollment = model.EnrollmentSelector.Continuous ? "y" : "n",
                EnrollmentPrior      = model.EnrollmentSelector.Prior.ToString(),
                EnrollmentPost       = model.EnrollmentSelector.After.ToString()
            };

            helper.IndexVariable.index_code = model.IndexVariable;
            switch (model.IndexVariable)
            {
            case "bmi":
                helper.IndexVariable.bmi_var = new[] { new drn_query_builderIndex_variableBmi_var()
                                                       {
                                                           group = model.IndexVariableBMISelector.BMIOption,
                                                           Value = model.IndexVariableBMISelector.BMI
                                                       } };
                break;

            case "age":
                helper.IndexVariable.age_var = new[] { new age_var()
                                                       {
                                                           age          = model.IndexVariableAgeSelector.Age.ToString(),
                                                           age_operator = model.IndexVariableAgeSelector.AgeOperator,
                                                           as_of        = model.IndexVariableAgeSelector.AgeAsOfDate.ToString("MM/dd/yyyy")
                                                       } };
                break;

                //case "dx":
                //    helper.IndexVariable.dx_var = new[] { new dx_var() {
                //        bool_operator = model.IndexVariableDxSelector.BoolOperator,
                //        code = model.IndexVariableDxSelector.Codes.Split(",".ToCharArray()).Select(c => new code() { Value = c }).ToArray()
                //    }};
                //    break;

                //case "px":
                //    helper.IndexVariable.px_var = new[] { new px_var() {
                //        bool_operator = model.IndexVariablePxSelector.BoolOperator,
                //        code = model.IndexVariablePxSelector.Codes.Split(",".ToCharArray()).Select(c => new code() { Value = c }).ToArray()
                //    }};
                //    break;

                //case "rx":
                //    helper.IndexVariable.rx_var = new[] { new rx_var() {
                //        bool_operator = model.IndexVariableRxSelector.BoolOperator,
                //        code = model.IndexVariableRxSelector.Codes.Split(",".ToCharArray()).Select(c => new code() { Value = c }).ToArray()
                //    }};
                //    break;
            }

            //if (!string.IsNullOrEmpty(model.InclusionDxSelector.Codes) && !string.IsNullOrEmpty(model.InclusionDxSelector.BoolOperator))
            //{
            //    helper.InclusionCriteria.dx_var = new[] { new dx_var() {
            //        bool_operator = model.InclusionDxSelector.BoolOperator,
            //        code = model.InclusionDxSelector.Codes.Split(",".ToCharArray()).Select(c => new code() { Value = c }).ToArray()
            //    }};
            //}

            //if (!string.IsNullOrEmpty(model.InclusionPxSelector.Codes) && !string.IsNullOrEmpty(model.InclusionPxSelector.BoolOperator))
            //{
            //    helper.InclusionCriteria.px_var = new[] { new px_var() {
            //        bool_operator = model.InclusionPxSelector.BoolOperator,
            //        code = model.InclusionPxSelector.Codes.Split(",".ToCharArray()).Select(c => new code() { Value = c }).ToArray()
            //    }};
            //}

            //if (!string.IsNullOrEmpty(model.InclusionRxSelector.Codes) && !string.IsNullOrEmpty(model.InclusionRxSelector.BoolOperator))
            //{
            //    helper.InclusionCriteria.rx_var = new[] { new rx_var() {
            //        bool_operator = model.InclusionRxSelector.BoolOperator,
            //        code = model.InclusionRxSelector.Codes.Split(",".ToCharArray()).Select(c => new code() { Value = c }).ToArray()
            //    }};
            //}

            //if (!string.IsNullOrEmpty(model.ExclusionDxSelector.Codes) && !string.IsNullOrEmpty(model.ExclusionDxSelector.BoolOperator))
            //{
            //    helper.ExclusionCriteria.dx_var = new[] { new dx_var() {
            //        bool_operator = model.ExclusionDxSelector.BoolOperator,
            //        code = model.ExclusionDxSelector.Codes.Split(",".ToCharArray()).Select(c => new code() { Value = c }).ToArray()
            //    }};
            //}

            //if (!string.IsNullOrEmpty(model.ExclusionPxSelector.Codes) && !string.IsNullOrEmpty(model.ExclusionPxSelector.BoolOperator))
            //{
            //    helper.ExclusionCriteria.px_var = new[] { new px_var() {
            //        bool_operator = model.ExclusionPxSelector.BoolOperator,
            //        code = model.ExclusionPxSelector.Codes.Split(",".ToCharArray()).Select(c => new code() { Value = c }).ToArray()
            //    }};
            //}

            //if (!string.IsNullOrEmpty(model.ExclusionRxSelector.Codes) && !string.IsNullOrEmpty(model.ExclusionRxSelector.BoolOperator))
            //{
            //    helper.ExclusionCriteria.rx_var = new[] { new rx_var() {
            //        bool_operator = model.ExclusionRxSelector.BoolOperator,
            //        code = model.ExclusionRxSelector.Codes.Split(",".ToCharArray()).Select(c => new code() { Value = c }).ToArray()
            //    }};
            //}

            if (model.ExclusionAgeSelector.Age > 0)
            {
                helper.ExclusionCriteria.age_var = new[] { new age_var()
                                                           {
                                                               age          = model.ExclusionAgeSelector.Age.ToString(),
                                                               age_operator = model.ExclusionAgeSelector.AgeOperator,
                                                               as_of        = "NA"
                                                           } };
            }

            // foreach report...
            var reports = new List <drn_query_builderReport>();

            if (!model.ReportSelector1.Column.Equals("NA") || !model.ReportSelector1.Group.Equals("NA") || !model.ReportSelector1.Row.Equals("NA"))
            {
                reports.Add(new drn_query_builderReport()
                {
                    column = model.ReportSelector1.Column,
                    group  = model.ReportSelector1.Group,
                    option = model.ReportSelector1.Option,
                    row    = model.ReportSelector1.Row,
                    Value  = "Report0"
                });
            }
            ;

            if (!model.ReportSelector2.Column.Equals("NA") || !model.ReportSelector2.Group.Equals("NA") || !model.ReportSelector2.Row.Equals("NA"))
            {
                reports.Add(new drn_query_builderReport()
                {
                    column = model.ReportSelector2.Column,
                    group  = model.ReportSelector2.Group,
                    option = model.ReportSelector2.Option,
                    row    = model.ReportSelector2.Row,
                    Value  = "Report1"
                });
            }
            ;

            if (!model.ReportSelector3.Column.Equals("NA") || !model.ReportSelector3.Group.Equals("NA") || !model.ReportSelector3.Row.Equals("NA"))
            {
                reports.Add(new drn_query_builderReport()
                {
                    column = model.ReportSelector3.Column,
                    group  = model.ReportSelector3.Group,
                    option = model.ReportSelector3.Option,
                    row    = model.ReportSelector3.Row,
                    Value  = "Report2"
                });
            }
            ;

            if (!model.ReportSelector4.Column.Equals("NA") || !model.ReportSelector4.Group.Equals("NA") || !model.ReportSelector4.Row.Equals("NA"))
            {
                reports.Add(new drn_query_builderReport()
                {
                    column = model.ReportSelector4.Column,
                    group  = model.ReportSelector4.Group,
                    option = model.ReportSelector4.Option,
                    row    = model.ReportSelector4.Row,
                    Value  = "Report3"
                });
            }
            ;

            if (!model.ReportSelector5.Column.Equals("NA") || !model.ReportSelector5.Group.Equals("NA") || !model.ReportSelector5.Row.Equals("NA"))
            {
                reports.Add(new drn_query_builderReport()
                {
                    column = model.ReportSelector5.Column,
                    group  = model.ReportSelector5.Group,
                    option = model.ReportSelector5.Option,
                    row    = model.ReportSelector5.Row,
                    Value  = "Report4"
                });
            }
            ;

            // clear out the option field unless at least one of them is "Age"
            foreach (var report in reports.Where(r => (r.row != "Age") && (r.column != "Age") && (r.group != "Age")))
            {
                report.option = "NA";
            }

            helper.Reports = reports.ToArray();

            // SelectedDatamarts has a list of ids, and the request.DataMarts has the whole list of datamarts
            // so, split the selected dms by comma, and then select the dm if its id is in any of the selected ids
            helper.DataMarts = request.DataMarts.Where(dm =>
                                                       post.Values.GetValue("SelectedDataMarts").AttemptedValue.Split(",".ToCharArray()).Any(s => s == dm.ID.ToString()))
                               .Select(dm => new drn_query_builderDatamart()
            {
                Value = dm.Name
            }).ToArray();

            var xml = helper.XMLString;

            return(helper.XMLStringByteArray);
        }
        /// <summary>
        /// Sets up the model for editing
        /// </summary>
        /// <param name="model"></param>
        /// <param name="request"></param>
        /// <returns></returns>
        private SPANQueryBuilderModel initializeModel(SPANQueryBuilderModel model, IDnsRequestContext request)
        {
            var dxList = Lists.SPANDiagnosis;
            var pxList = Lists.SPANProcedure;
            var rxList = Lists.SPANDRUG;

            using (var db = new DataContext())
            {
                var dxCats = db.LookupListCategories.Where(c => c.ListId == dxList);
                var pxCats = db.LookupListCategories.Where(c => c.ListId == pxList);
                var rxCats = db.LookupListCategories.Where(c => c.ListId == rxList);

                model.EnrollmentSelector.ParentContext = "EnrollmentSelector";

                model.ExclusionAgeSelector.ParentContext     = "ExclusionAgeSelector";
                model.ExclusionAgeSelector.AgeAsOfDatePreset = "As of Index Date";

                //model.ExclusionDxSelector.ParentContext = "ExclusionDxSelector";
                //model.ExclusionDxSelector.Categories = dxCats;
                //model.ExclusionDxSelector.Definition = new Lpp.Dns.HealthCare.CodeSelectorDefinition()
                //{
                //    List = dxList,
                //    AsPopup = true
                //};

                //model.ExclusionPxSelector.ParentContext = "ExclusionPxSelector";
                //model.ExclusionPxSelector.Categories = pxCats;
                //model.ExclusionPxSelector.Definition = new Lpp.Dns.HealthCare.CodeSelectorDefinition()
                //{
                //    List = pxList,
                //    AsPopup = true
                //};

                //model.ExclusionRxSelector.ParentContext = "ExclusionRxSelector";
                //model.ExclusionRxSelector.Categories = rxCats;
                //model.ExclusionRxSelector.Definition = new Lpp.Dns.HealthCare.CodeSelectorDefinition()
                //{
                //    List = rxList,
                //    AsPopup = true
                //};

                //model.InclusionDxSelector.ParentContext = "InclusionDxSelector";
                //model.InclusionDxSelector.Categories = dxCats;
                //model.InclusionDxSelector.Definition = new Lpp.Dns.HealthCare.CodeSelectorDefinition()
                //{
                //    List = dxList,
                //    AsPopup = true
                //};

                //model.InclusionPxSelector.ParentContext = "InclusionPxSelector";
                //model.InclusionPxSelector.Categories = pxCats;
                //model.InclusionPxSelector.Definition = new Lpp.Dns.HealthCare.CodeSelectorDefinition()
                //{
                //    List = pxList,
                //    AsPopup = true
                //};

                //model.InclusionRxSelector.ParentContext = "InclusionRxSelector";
                //model.InclusionRxSelector.Categories = rxCats;
                //model.InclusionRxSelector.Definition = new Lpp.Dns.HealthCare.CodeSelectorDefinition()
                //{
                //    List = rxList,
                //    AsPopup = true
                //};

                model.IndexVariableAgeSelector.ParentContext = "IndexVariableAgeSelector";

                model.IndexVariableBMISelector.ParentContext = "IndexVariableBMISelector";

                //model.IndexVariableDxSelector.ParentContext = "IndexVariableDxSelector";
                //model.IndexVariableDxSelector.Categories = dxCats;
                //model.IndexVariableDxSelector.Definition = new Lpp.Dns.HealthCare.CodeSelectorDefinition()
                //{
                //    List = dxList,
                //    AsPopup = true
                //};

                //model.IndexVariablePxSelector.ParentContext = "IndexVariablePxSelector";
                //model.IndexVariablePxSelector.Categories = pxCats;
                //model.IndexVariablePxSelector.Definition = new Lpp.Dns.HealthCare.CodeSelectorDefinition()
                //{
                //    List = pxList,
                //    AsPopup = true
                //};

                //model.IndexVariableRxSelector.ParentContext = "IndexVariableRxSelector";
                //model.IndexVariableRxSelector.Categories = rxCats;
                //model.IndexVariableRxSelector.Definition = new Lpp.Dns.HealthCare.CodeSelectorDefinition()
                //{
                //    List = rxList,
                //    AsPopup = true
                //};

                //model.ObservationPeriod.ParentContext = "ObservationPeriod";

                //model.ReportSelector1.ParentContext = "ReportSelector1";
                //model.ReportSelector2.ParentContext = "ReportSelector2";
                //model.ReportSelector3.ParentContext = "ReportSelector3";
                //model.ReportSelector4.ParentContext = "ReportSelector4";
                //model.ReportSelector5.ParentContext = "ReportSelector5";
            }

            return(model);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="model"></param>
        /// <param name="errorMessages"></param>
        /// <returns></returns>
        private bool validate(SPANQueryBuilderModel model, out IList <string> errorMessages)
        {
            errorMessages = new List <string>();

            // index variable
            switch (model.IndexVariable)
            {
            case "bmi":
                if (string.IsNullOrEmpty(model.IndexVariableBMISelector.BMIOption) || string.IsNullOrEmpty(model.IndexVariableBMISelector.BMI))
                {
                    errorMessages.Add("Index Variable: Please select a BMI value");
                }
                break;

            case "age":
                if ((model.IndexVariableAgeSelector.Age <= 0) || (model.IndexVariableAgeSelector.Age > 120) ||
                    (model.IndexVariableAgeSelector.AgeAsOfDate < new DateTime(1900, 1, 1)))
                {
                    errorMessages.Add("Index Variable: Please enter an age between 1-120 and a date > 01/01/1900");
                }
                break;

                //case "dx":
                //    if (string.IsNullOrEmpty(model.IndexVariableDxSelector.BoolOperator) || string.IsNullOrEmpty(model.IndexVariableDxSelector.Codes))
                //        errorMessages.Add("Index Variable: Please select at least one dx code");
                //    break;

                //case "px":
                //    if (string.IsNullOrEmpty(model.IndexVariablePxSelector.BoolOperator) || string.IsNullOrEmpty(model.IndexVariablePxSelector.Codes))
                //        errorMessages.Add("Index Variable: Please select at least one px code");
                //    break;

                //case "rx":
                //    if (string.IsNullOrEmpty(model.IndexVariableRxSelector.BoolOperator) || string.IsNullOrEmpty(model.IndexVariableRxSelector.Codes))
                //        errorMessages.Add("Index Variable: Please select at least one rx code");
                //    break;
            }

            // observation period
            if (model.ObservationPeriod.StartPeriod < new DateTime(1900, 1, 1))
            {
                errorMessages.Add("Observation Period: Please enter a valid start date > 01/01/1900");
            }

            if (model.ObservationPeriod.EndPeriod < new DateTime(1900, 1, 1))
            {
                errorMessages.Add("Observation Period: Please enter a valid end date > 01/01/1900");
            }

            if (model.ObservationPeriod.StartPeriod > model.ObservationPeriod.EndPeriod)
            {
                errorMessages.Add("Observation Period: Start date must be before end date");
            }

            // inclusion - all optional

            // exclusion
            // age of zero is a skip, so if not zero, then make sure it is in range
            if ((model.ExclusionAgeSelector.Age != 0) &&
                ((model.ExclusionAgeSelector.Age < 0) || (model.ExclusionAgeSelector.Age > 120)))
            {
                errorMessages.Add("Exclusion Criteria: Please enter an age between 1-120");
            }

            return(errorMessages.Count == 0);
        }
        /// <summary>
        /// Creates a new model, and optionally restores the values from the request document
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        private SPANQueryBuilderModel getModel(IDnsRequestContext context)
        {
            var m = new SPANQueryBuilderModel();

            // set up ui defaults, overridden if we deserialize
            m.ExclusionAgeSelector.Age           = 0;
            m.IndexVariable                      = "dx";
            m.IndexVariableBMISelector.BMIOption = "1";
            m.ObservationPeriod.EndPeriod        = DateTime.Today;
            m.ObservationPeriod.StartPeriod      = DateTime.Today;
            m.ReportSelector1.Column             = NA;
            m.ReportSelector1.Group              = NA;
            m.ReportSelector1.Option             = NA;
            m.ReportSelector1.Row                = NA;
            m.ReportSelector2.Column             = NA;
            m.ReportSelector2.Group              = NA;
            m.ReportSelector2.Option             = NA;
            m.ReportSelector2.Row                = NA;
            m.ReportSelector3.Column             = NA;
            m.ReportSelector3.Group              = NA;
            m.ReportSelector3.Option             = NA;
            m.ReportSelector3.Row                = NA;
            m.ReportSelector4.Column             = NA;
            m.ReportSelector4.Group              = NA;
            m.ReportSelector4.Option             = NA;
            m.ReportSelector4.Row                = NA;
            m.ReportSelector5.Column             = NA;
            m.ReportSelector5.Group              = NA;
            m.ReportSelector5.Option             = NA;
            m.ReportSelector5.Row                = NA;

            if ((context.Documents != null) && (context.Documents.Where(d => d.Name == REQUEST_FILENAME).Count() > 0))
            {
                var doc = context.Documents.Where(d => d.Name == REQUEST_FILENAME).First();
                using (var db = new DataContext())
                {
                    using (var docStream = new DocumentStream(db, doc.ID))
                    {
                        XmlSerializer serializer = new XmlSerializer(typeof(drn_query_builder));
                        using (XmlTextReader reader = new XmlTextReader(docStream))
                        {
                            drn_query_builder deserializedModel = (drn_query_builder)serializer.Deserialize(reader);

                            // set up enrollment selector
                            m.EnrollmentSelector.After      = Convert.ToInt32(deserializedModel.enroll_post);
                            m.EnrollmentSelector.Continuous = deserializedModel.enroll_cont == "y";
                            m.EnrollmentSelector.Prior      = Convert.ToInt32(deserializedModel.enroll_prior);

                            // set up exclusion age selector
                            var agevar = deserializedModel.exclusion_criteria.FirstOrDefault().age_var;
                            if (agevar != null)
                            {
                                m.ExclusionAgeSelector.Age         = Convert.ToInt32(agevar[0].age);
                                m.ExclusionAgeSelector.AgeOperator = agevar[0].age_operator;
                            }

                            // set up exclusion Dx selector
                            var dxvar = deserializedModel.exclusion_criteria.FirstOrDefault().dx_var;
                            if (dxvar != null)
                            {
                                //m.ExclusionDxSelector.SelectedCodes = dxvar[0].code.Select(c => new LookupListValue() { ItemCode = c.Value });
                                //m.ExclusionDxSelector.BoolOperator = dxvar[0].bool_operator;
                            }

                            // set up exclusion Px selector
                            var pxvar = deserializedModel.exclusion_criteria.FirstOrDefault().px_var;
                            if (pxvar != null)
                            {
                                //m.ExclusionPxSelector.SelectedCodes = pxvar[0].code.Select(c => new LookupListValue() { ItemCode = c.Value });
                                //m.ExclusionPxSelector.BoolOperator = pxvar[0].bool_operator;
                            }

                            // set up exclusion Rx selector
                            var rxvar = deserializedModel.exclusion_criteria.FirstOrDefault().rx_var;
                            if (rxvar != null)
                            {
                                //m.ExclusionRxSelector.SelectedCodes = rxvar[0].code.Select(c => new LookupListValue() { ItemCode = c.Value });
                                //m.ExclusionRxSelector.BoolOperator = rxvar[0].bool_operator;
                            }

                            // set up inclusion Dx selector
                            dxvar = deserializedModel.inclusion_criteria.FirstOrDefault().dx_var;
                            if (dxvar != null)
                            {
                                //m.InclusionDxSelector.SelectedCodes = dxvar[0].code.Select(c => new LookupListValue() { ItemCode = c.Value });
                                //m.InclusionDxSelector.BoolOperator = dxvar[0].bool_operator;
                            }

                            // set up inclusion Px selector
                            pxvar = deserializedModel.inclusion_criteria.FirstOrDefault().px_var;
                            if (pxvar != null)
                            {
                                //m.InclusionPxSelector.SelectedCodes = pxvar[0].code.Select(c => new LookupListValue() { ItemCode = c.Value });
                                //m.InclusionPxSelector.BoolOperator = pxvar[0].bool_operator;
                            }

                            // set up inclusion Rx selector
                            rxvar = deserializedModel.inclusion_criteria.FirstOrDefault().rx_var;
                            if (rxvar != null)
                            {
                                //m.InclusionRxSelector.SelectedCodes = rxvar[0].code.Select(c => new LookupListValue() { ItemCode = c.Value });
                                //m.InclusionRxSelector.BoolOperator = rxvar[0].bool_operator;
                            }

                            m.IndexVariable = deserializedModel.index_variable.FirstOrDefault().index_code;

                            // set up index variable age selector
                            agevar = deserializedModel.index_variable.FirstOrDefault().age_var;
                            if (agevar != null)
                            {
                                m.IndexVariableAgeSelector.Age         = Convert.ToInt32(agevar[0].age);
                                m.IndexVariableAgeSelector.AgeAsOfDate = Convert.ToDateTime(agevar[0].as_of);
                                m.IndexVariableAgeSelector.AgeOperator = agevar[0].age_operator;
                            }
                            ;

                            // set up index variable bmi selector
                            var bmivar = deserializedModel.index_variable.FirstOrDefault().bmi_var;
                            if (bmivar != null)
                            {
                                m.IndexVariableBMISelector.BMI       = bmivar[0].Value;
                                m.IndexVariableBMISelector.BMIOption = bmivar[0].group;
                            }
                            ;

                            // set up index variable Dx selector
                            dxvar = deserializedModel.index_variable.FirstOrDefault().dx_var;
                            if (dxvar != null)
                            {
                                //m.IndexVariableDxSelector.SelectedCodes = dxvar[0].code.Select(c => new LookupListValue() { ItemCode = c.Value });
                                //m.IndexVariableDxSelector.BoolOperator = dxvar[0].bool_operator;
                            }

                            // set up index variable Px selector
                            pxvar = deserializedModel.index_variable.FirstOrDefault().px_var;
                            if (pxvar != null)
                            {
                                //m.IndexVariablePxSelector.SelectedCodes = pxvar[0].code.Select(c => new LookupListValue() { ItemCode = c.Value });
                                //m.IndexVariablePxSelector.BoolOperator = pxvar[0].bool_operator;
                            }

                            // set up index variable Rx selector
                            rxvar = deserializedModel.index_variable.FirstOrDefault().rx_var;
                            if (rxvar != null)
                            {
                                //m.IndexVariableRxSelector.SelectedCodes = rxvar[0].code.Select(c => new LookupListValue() { ItemCode = c.Value });
                                //m.IndexVariableRxSelector.BoolOperator = rxvar[0].bool_operator;
                            }

                            // set up observation period range
                            m.ObservationPeriod.EndPeriod   = Convert.ToDateTime(deserializedModel.period_end);
                            m.ObservationPeriod.StartPeriod = Convert.ToDateTime(deserializedModel.period_start);

                            // set up reports
                            if (deserializedModel.report != null)
                            {
                                foreach (var repvar in deserializedModel.report)
                                {
                                    switch (repvar.Value)
                                    {
                                    case "Report0":
                                        m.ReportSelector1.Column = repvar.column ?? NA;
                                        m.ReportSelector1.Group  = repvar.group ?? NA;
                                        m.ReportSelector1.Option = repvar.option ?? NA;
                                        m.ReportSelector1.Row    = repvar.row ?? NA;
                                        break;

                                    case "Report1":
                                        m.ReportSelector2.Column = repvar.column ?? NA;
                                        m.ReportSelector2.Group  = repvar.group ?? NA;
                                        m.ReportSelector2.Option = repvar.option ?? NA;
                                        m.ReportSelector2.Row    = repvar.row ?? NA;
                                        break;

                                    case "Report2":
                                        m.ReportSelector3.Column = repvar.column ?? NA;
                                        m.ReportSelector3.Group  = repvar.group ?? NA;
                                        m.ReportSelector3.Option = repvar.option ?? NA;
                                        m.ReportSelector3.Row    = repvar.row ?? NA;
                                        break;

                                    case "Report3":
                                        m.ReportSelector4.Column = repvar.column ?? NA;
                                        m.ReportSelector4.Group  = repvar.group ?? NA;
                                        m.ReportSelector4.Option = repvar.option ?? NA;
                                        m.ReportSelector4.Row    = repvar.row ?? NA;
                                        break;

                                    case "Report4":
                                        m.ReportSelector5.Column = repvar.column ?? NA;
                                        m.ReportSelector5.Group  = repvar.group ?? NA;
                                        m.ReportSelector5.Option = repvar.option ?? NA;
                                        m.ReportSelector5.Row    = repvar.row ?? NA;
                                        break;
                                    }
                                }
                            }
                        }
                    }
                }
            }

            return(m);
        }