private void InitializeReportMetadata(HeirarchicalTIRDetailModel model, TIRDetailReportParameter detailReportParameter)
        {
            base.SetNavigationLinksUrl();

            int decimalPlace = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["SiteDecimalPlace"].ToString());

            SiteUser su = ((SiteUser)Session["SiteUser"]);
            ModelServices service = new ModelServices();

            model.SchoolYear = service.SchoolYearDescriptionByYearId(detailReportParameter.Year);

            SetDetailReportUrlData(detailReportParameter);
            UpdateReportTemplateConfigurations(service, detailReportParameter.ReportTemplateId);
            ViewBag.SchoolTermList = service.GetSchoolTerms(detailReportParameter);

            var details = service.GetHeirarchicalDetailReport(su.Districts.First().Id, detailReportParameter);
            model.details = details;
            model.Subject = service.GetSubjectDescriptionById(detailReportParameter.Subject);
            model.SubjectId = detailReportParameter.Subject;
            model.SchoolYearId = detailReportParameter.Year;
            model.AssessmentTypeId = detailReportParameter.AssessmentTypeId;
            model.CameFromTitle = detailReportParameter.CameFromTitle;
            if (details.Count > 0)
            {
                model.AssessmentList = new List<AssessmentMEPerc>();
                var firstTirDetail = details[0];
                var schoolTermId = firstTirDetail.SchoolTermId;
                detailReportParameter.InputTermId = schoolTermId;
                foreach (var score in firstTirDetail.ScoreDataCollection)
                {
                    AssignMePercentForAssessment(score, service, su, detailReportParameter, ref model.AssessmentList);
                }

                service.IsChildAssessmentsExists(model.AssessmentList);

                List<int> studentCounts = studentCounts = new List<int>();
                List<decimal> impactSums = new List<decimal>();
                List<decimal> avgImpacts = new List<decimal>();
                List<int> countOfMeetOrExceed = new List<int>();

                for (int i = 0; i < model.details[0].ScoreDataCollection.Count; i++)
                {
                    studentCounts.Add(model.details.Count(d => d.ScoreDataCollection[i].Impact != null));
                    impactSums.Add(model.details.Sum(d => d.ScoreDataCollection[i].Impact.GetValueOrDefault()));
                    countOfMeetOrExceed.Add(model.details.Where(d => d.ScoreDataCollection[i].Impact >= -2).Count());
                    if (studentCounts[i] > 0)
                    {
                        avgImpacts.Add(Math.Round(impactSums[i] / studentCounts[i], decimalPlace));
                    }
                    else
                    {
                        avgImpacts.Add(0);
                    }
                }
                ViewBag.avgImpacts = avgImpacts;
            }
            var filterParameter = new FilterParameter
            {
                ClassId = detailReportParameter.ClassId,
                Teacher = detailReportParameter.Teacher,
                Year = detailReportParameter.Year,
                Race = detailReportParameter.Race,
                Gender = detailReportParameter.Gender,
                FrlIndicator = detailReportParameter.FrlIndicator,
                IEPIndicator = detailReportParameter.IEPIndicator,
                LEPIndicator = detailReportParameter.LEPIndicator,
                Hispanic = detailReportParameter.Hispanic,
                SchoolYear = model.SchoolYear
            };

            var reportFilterViewModel = ReportsFilterHelper.PopulateReportFilterViewModel(filterParameter, service, su);
            ViewBag.ReportFilters = reportFilterViewModel;
        }
 private void AssignMePercentForAssessment(HeirarchicalScoreData scoreData, ModelServices service, SiteUser su, TIRDetailReportParameter detailReportParameter, ref List<AssessmentMEPerc> AssessmentMePercentages)
 {
     if (scoreData != null)
     {
         detailReportParameter.AssessmentTypeId = scoreData.AssessmentTypeId;
         var mePercentForAssessment = service.GetMEPercentForAssessment(su.Districts.First().Id, scoreData.AssessmentId, detailReportParameter);
         AssessmentMePercentages.Add(mePercentForAssessment);
     }
 }
 public ActionResult AssessmentDetail(TIRDetailReportParameter detailReportParameter)
 {
     try
     {
         HeirarchicalTIRDetailModel model = new HeirarchicalTIRDetailModel();
         InitializeReportMetadata(model, detailReportParameter);
         model.ReportType = detailReportParameter.AssessmentTypeDesc;
         model.ReportTemplateId = detailReportParameter.ReportTemplateId;
         ViewBag.ShowPercentile = detailReportParameter.ReportTemplateId != EDS.Constants.SystemParameter.ReportTemplateType.FandPType;
         ViewBag.ShowGrowth = detailReportParameter.ReportTemplateId == EDS.Constants.SystemParameter.ReportTemplateType.FandPType;
         return View("HeirarchicalTIRDetail", model);
     }
     catch (Exception ex)
     {
         Logging log = new Logging();
         log.LogException(ex);
         return View("GeneralError");
     }
 }
 private void SetDetailReportUrlData(TIRDetailReportParameter detailReportParameter)
 {
     ViewBag.Subject = detailReportParameter.Subject;
     ViewBag.Year = detailReportParameter.Year;
     ViewBag.AssessmentTypeDesc = detailReportParameter.AssessmentTypeDesc;
     ViewBag.Teacher = detailReportParameter.Teacher;
     ViewBag.ClassID = detailReportParameter.ClassId;
     ViewBag.Grade = detailReportParameter.Grade;
     ViewBag.ViewScaledScore = detailReportParameter.ViewScaledScore;
     ViewBag.SummaryCount = detailReportParameter.SummaryCount + 1;
     ViewBag.Race = detailReportParameter.Race;
     ViewBag.Gender = detailReportParameter.Gender;
     ViewBag.FrlIndicator = detailReportParameter.FrlIndicator;
     ViewBag.IEPIndicator = detailReportParameter.IEPIndicator;
     ViewBag.LEPIndicator = detailReportParameter.LEPIndicator;
     ViewBag.Hispanic = detailReportParameter.Hispanic;
     ViewBag.AssessmentTypeId = detailReportParameter.AssessmentTypeId;
     ViewBag.ReportTemplateId = detailReportParameter.ReportTemplateId;
     ViewBag.HorizontalPageIndex = detailReportParameter.HorizontalPageIndex;
 }
        /// <summary>
        /// GetDetailReport is used to get detail report data.
        /// </summary>
        /// <param name="assessmentTypeId"></param>
        /// <param name="assessmentList"></param>
        /// <param name="districtId"></param>
        /// <param name="detailReportParameter"></param>
        /// <returns></returns>
        internal List<HeirarchicalTIRDetail> GetHeirarchicalDetailReport(int districtId, TIRDetailReportParameter detailReportParameter)
        {
            //int horizontalPageIndex = 0;

            List<HeirarchicalTIRDetail> results = new List<HeirarchicalTIRDetail>();
            SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
            connection.Open();
            SqlCommand command = new SqlCommand("spGetHeirarchicalTeacherImpactDetail", connection);
            command.CommandType = System.Data.CommandType.StoredProcedure;

            command.Parameters.Add(new SqlParameter("@SubjectId", detailReportParameter.Subject));
            command.Parameters.Add(new SqlParameter("@SchoolYearId", detailReportParameter.Year));
            command.Parameters.Add(new SqlParameter("@AssessmentTypeId", detailReportParameter.AssessmentTypeId));
            command.Parameters.Add(new SqlParameter("@TeacherId", detailReportParameter.Teacher));
            command.Parameters.Add(new SqlParameter("@GradeLevel", detailReportParameter.Grade));
            command.Parameters.Add(new SqlParameter("@ViewScaledScore", detailReportParameter.ViewScaledScore));
            command.Parameters.Add(new SqlParameter("@ClassID", detailReportParameter.ClassId));
            command.Parameters.Add(new SqlParameter("@DistrictId", districtId));
            command.Parameters.Add(new SqlParameter("@InputTermId", detailReportParameter.InputTermId));
            command.Parameters.Add(new SqlParameter("@Race", detailReportParameter.Race == -1 ? (int?)null : detailReportParameter.Race));
            command.Parameters.Add(new SqlParameter("@Gender", detailReportParameter.Gender == -1 ? (int?)null : detailReportParameter.Gender));
            command.Parameters.Add(new SqlParameter("@FrlIndicator", detailReportParameter.FrlIndicator));
            command.Parameters.Add(new SqlParameter("@IepIndicator", detailReportParameter.IEPIndicator));
            command.Parameters.Add(new SqlParameter("@LepIndicator", detailReportParameter.LEPIndicator));
            command.Parameters.Add(new SqlParameter("@Hispanic", detailReportParameter.Hispanic));
            command.Parameters.Add(new SqlParameter("@InputParentAssessmentTypeId", detailReportParameter.InputParentAssessmentTypeId));

            SqlDataReader reader = command.ExecuteReader();

            HeirarchicalTIRDetail tempDetail = null;
            int prevStudent = -1;
            int assessmentIndex = 0;
            while (reader.Read())
            {
                var currentStudentId = Convert.ToInt32(reader["StudentId"]);
                if (prevStudent != currentStudentId)
                {
                    prevStudent = currentStudentId;

                    if (tempDetail != null)
                    {
                        //creating new row
                        tempDetail.AssessmentCount = assessmentIndex;
                        results.Add(tempDetail);
                        assessmentIndex = 0;
                    }

                    tempDetail = new HeirarchicalTIRDetail();
                    tempDetail.StudentId = currentStudentId;
                    tempDetail.LocalId = reader["LocalId"].ToString();
                    tempDetail.StudentName = reader["StudentName"].ToString();
                    tempDetail.LastName = reader["LastName"].ToString();
                    tempDetail.SchoolTermId = reader["SchoolTermId"] == DBNull.Value ? (int?)null : Convert.ToInt32(reader["SchoolTermId"]);
                    tempDetail.RubricFileName = reader["RubricFileName"].ToString();
                    tempDetail.SLOFileName = reader["SLOFileName"].ToString();
                }

                decimal? score = null;
                decimal? projection = null;
                decimal? impact = null;
                decimal? percentile = null;
                int? meetExceedValue = null;
                decimal? growth = null;
                int? parentAssessmentTypeId = null;
                int assessmentId;
                int assessmentTypeId;
                string assessmentDesc = null;
                string assessmentCode = null;
                SetHeirarchicalAssessmentScoreData(out score, out projection, out impact, out percentile, out meetExceedValue, out growth, out parentAssessmentTypeId, out assessmentId, out assessmentTypeId, out assessmentDesc, out assessmentCode, detailReportParameter.ViewScaledScore, reader);
                try
                {
                    var scoreData = new HeirarchicalScoreData();
                    tempDetail.ScoreDataCollection.Add(scoreData);

                    scoreData.RoundingType = HelperService.GetDecimalDisplayFormat(detailReportParameter.ViewScaledScore ? RoundingType.SiteDefaultDecimalPlace : RoundingType.NoDecimalPlace);
                    scoreData.Growth = growth;
                    scoreData.Percentile = percentile;
                    scoreData.Score = score;
                    scoreData.Projection = projection;
                    scoreData.Impact = impact;
                    scoreData.MeetExceedValue = meetExceedValue;
                    scoreData.AssessmentDesc = assessmentDesc;
                    scoreData.ParentAssessmentTypeId = parentAssessmentTypeId;
                    scoreData.AssessmentId = assessmentId;
                    scoreData.AssessmentTypeId = assessmentTypeId;
                    scoreData.AssessmentCode = assessmentCode;
                }
                catch (Exception ex)
                {
                    throw new Exception("Check if field exists belongs to correct assessment", ex);
                }
                assessmentIndex++;

            }

            if (tempDetail != null)
            {
                tempDetail.AssessmentCount = assessmentIndex;
                results.Add(tempDetail);
                //if any student has less assessments than total assessments, then in order to create same header for all,
                //add assessment with null score from previous assessments. 
                results = GetFinalAssessmentAfterMergingMissingAssessments(results);
            }
            reader.Close();
            connection.Close();
            return results;
        }
        /// <summary>
        /// GetDetailReportAssessmentList
        /// </summary>
        /// <param name="districtId"></param>
        /// <param name="assessmentTypeId"></param>
        /// <param name="detailReportParameter"></param>
        /// <returns></returns>
        internal List<AssessmentMEPerc> GetDetailReportAssessmentList(int districtId, TIRDetailReportParameter detailReportParameter)
        {
            List<AssessmentMEPerc> results = new List<AssessmentMEPerc>();

            SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
            connection.Open();
            SqlCommand command = new SqlCommand("spGetTeacherAssessmentWithMEPerc", connection);
            command.CommandType = System.Data.CommandType.StoredProcedure;

            command.Parameters.Add(new SqlParameter("@DistrictId", districtId));
            command.Parameters.Add(new SqlParameter("@SubjectId", detailReportParameter.Subject));
            command.Parameters.Add(new SqlParameter("@SchoolYearId", detailReportParameter.Year));
            command.Parameters.Add(new SqlParameter("@AssessmentTypeId", detailReportParameter.AssessmentTypeId));
            command.Parameters.Add(new SqlParameter("@TeacherId", detailReportParameter.Teacher));
            command.Parameters.Add(new SqlParameter("@GradeLevel", detailReportParameter.Grade));
            command.Parameters.Add(new SqlParameter("@ClassID", detailReportParameter.ClassId));
            command.Parameters.Add(new SqlParameter("@Race", detailReportParameter.Race == -1 ? (int?)null : detailReportParameter.Race));
            command.Parameters.Add(new SqlParameter("@Gender", detailReportParameter.Gender == -1 ? (int?)null : detailReportParameter.Gender));
            command.Parameters.Add(new SqlParameter("@FrlIndicator", detailReportParameter.FrlIndicator));
            command.Parameters.Add(new SqlParameter("@IepIndicator", detailReportParameter.IEPIndicator));
            command.Parameters.Add(new SqlParameter("@LepIndicator", detailReportParameter.LEPIndicator));
            command.Parameters.Add(new SqlParameter("@Hispanic", detailReportParameter.Hispanic));

            SqlDataReader reader = command.ExecuteReader();

            AssessmentMEPerc tempAssessmentME = null;

            while (reader.Read())
            {
                tempAssessmentME = new AssessmentMEPerc();
                tempAssessmentME.AssessmentDesc = reader["AssessmentDesc"].ToString();
                tempAssessmentME.MeetExceedPerc = reader["MeetExceedPerc"] == DBNull.Value ? (decimal)0.0 : HelperService.GetRoundedValue(RoundingType.SiteDefaultDecimalPlace, Convert.ToDecimal(reader["MeetExceedPerc"]));
                tempAssessmentME.MeetExceedCategory = reader["MeetExceedCategory"] == DBNull.Value ? (decimal?)null : Convert.ToDecimal(reader["MeetExceedCategory"]);
                tempAssessmentME.SchoolTermId = Convert.ToInt32(reader["TermId"]);
                tempAssessmentME.AssessmentId = Convert.ToInt32(reader["AssessmentId"]);
                tempAssessmentME.AssessmentTypeId = detailReportParameter.AssessmentTypeId;
                results.Add(tempAssessmentME);
            }

            reader.Close();
            connection.Close();
            return results;
        }
        /// <summary>
        /// GetDetailReport is used to get detail report data.
        /// </summary>
        /// <param name="assessmentTypeId"></param>
        /// <param name="assessmentList"></param>
        /// <param name="districtId"></param>
        /// <param name="detailReportParameter"></param>
        /// <returns></returns>
        internal List<TIRDetail> GetDetailReport(List<string> assessmentList, int districtId, TIRDetailReportParameter detailReportParameter)
        {
            List<TIRDetail> results = new List<TIRDetail>();

            SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
            connection.Open();
            SqlCommand command = new SqlCommand("spGetTeacherImpactDetail", connection);
            command.CommandType = System.Data.CommandType.StoredProcedure;

            command.Parameters.Add(new SqlParameter("@SubjectId", detailReportParameter.Subject));
            command.Parameters.Add(new SqlParameter("@SchoolYearId", detailReportParameter.Year));
            command.Parameters.Add(new SqlParameter("@AssessmentTypeId", detailReportParameter.AssessmentTypeId));
            command.Parameters.Add(new SqlParameter("@TeacherId", detailReportParameter.Teacher));
            command.Parameters.Add(new SqlParameter("@GradeLevel", detailReportParameter.Grade));
            command.Parameters.Add(new SqlParameter("@ViewScaledScore", detailReportParameter.ViewScaledScore));
            command.Parameters.Add(new SqlParameter("@ClassID", detailReportParameter.ClassId));
            command.Parameters.Add(new SqlParameter("@DistrictId", districtId));
            command.Parameters.Add(new SqlParameter("@Race", detailReportParameter.Race == -1 ? (int?)null : detailReportParameter.Race));
            command.Parameters.Add(new SqlParameter("@Gender", detailReportParameter.Gender == -1 ? (int?)null : detailReportParameter.Gender));
            command.Parameters.Add(new SqlParameter("@FrlIndicator", detailReportParameter.FrlIndicator));
            command.Parameters.Add(new SqlParameter("@IepIndicator", detailReportParameter.IEPIndicator));
            command.Parameters.Add(new SqlParameter("@LepIndicator", detailReportParameter.LEPIndicator));
            command.Parameters.Add(new SqlParameter("@Hispanic", detailReportParameter.Hispanic));

            SqlDataReader reader = command.ExecuteReader();

            TIRDetail tempDetail = null;
            int prevStudent = -1;
            int assessmentIndex = 0;


            while (reader.Read())
            {
                var currentStudentId = Convert.ToInt32(reader["StudentId"]);
                if (prevStudent != currentStudentId)
                {
                    prevStudent = currentStudentId;

                    if (tempDetail != null)
                    {
                        results.Add(tempDetail);
                    }

                    tempDetail = new TIRDetail();
                    tempDetail.StudentId = currentStudentId;
                    tempDetail.LocalId = reader["LocalId"].ToString();
                    tempDetail.StudentName = reader["StudentName"].ToString();
                    tempDetail.LastName = reader["LastName"].ToString();
                    tempDetail.RubricFileName = reader["RubricFileName"].ToString();
                    tempDetail.SLOFileName = reader["SLOFileName"].ToString();
                }
                assessmentIndex = assessmentList.IndexOf(reader["AssessmentDesc"].ToString());

                decimal? score = null;
                decimal? projection = null;
                decimal? impact = null;
                decimal? percentile = null;
                int? meetExceedValue = null;
                decimal? growth = null;
                SetAssessmentScoreData(out score, out projection, out impact, out percentile, out meetExceedValue, out growth, detailReportParameter.ViewScaledScore, reader);
                try
                {
                    var propertyIndex = assessmentIndex + 1;
                    var scoreData = tempDetail.ScoreData1;
                    if (propertyIndex == 2) scoreData = tempDetail.ScoreData2;
                    if (propertyIndex == 3) scoreData = tempDetail.ScoreData3;
                    if (propertyIndex == 4) scoreData = tempDetail.ScoreData4;
                    if (propertyIndex == 5) scoreData = tempDetail.ScoreData5;

                    scoreData.RoundingType = HelperService.GetDecimalDisplayFormat(detailReportParameter.ViewScaledScore ? RoundingType.SiteDefaultDecimalPlace : RoundingType.NoDecimalPlace);
                    scoreData.Growth = growth;
                    scoreData.Percentile = percentile;
                    scoreData.Score = score;
                    scoreData.Projection = projection;
                    scoreData.Impact = impact;
                    scoreData.MeetExceedValue = meetExceedValue;
                }
                catch (Exception ex)
                {
                    throw new Exception("Check if field exists belonging to correct assessment", ex);
                }
            }

            results.Add(tempDetail);

            reader.Close();
            connection.Close();
            return results;
        }
        public IEnumerable GetSchoolTerms(TIRDetailReportParameter detailReportParameter)
        {
            var terms = (from a in entities.tblAssessments
                         join st in entities.tblSchoolTerms on a.SchoolTermId equals st.SchoolTermId
                         join ass in entities.tblAssessmentScores on a.AssessmentId equals ass.AssessmentId
                         where a.AssessmentTypeId == detailReportParameter.AssessmentTypeId && a.SchoolYearId == detailReportParameter.Year
                               && a.SubjectId == detailReportParameter.Subject
                         orderby st.OrderBy descending
                         select new { SchoolTermId = a.SchoolTermId, SchoolTermDesc = st.SchoolTermDesc }
                        ).Distinct().ToList();

            return new MultiSelectList(
                   terms,
                   "SchoolTermId", "SchoolTermDesc", new int?[] { detailReportParameter.InputTermId });
        }
        private void InitializeReportMetadata(TIRDetailModel model, TIRDetailReportParameter detailReportParameter)
        {
            base.SetNavigationLinksUrl();
            int decimalPlace = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["SiteDecimalPlace"].ToString());

            SiteUser su = ((SiteUser)Session["SiteUser"]);
            ModelServices service = new ModelServices();

            model.SchoolYear = service.SchoolYearDescriptionByYearId(detailReportParameter.Year);

            SetDetailReportUrlData(detailReportParameter);
            UpdateReportTemplateConfigurations(service, detailReportParameter.ReportTemplateId);

            model.AssessmentList = service.GetDetailReportAssessmentList(su.Districts.First().Id, detailReportParameter);
            var list = (model.AssessmentList).Select(x => x.AssessmentDesc).ToList();

            var details = service.GetDetailReport(list, su.Districts.First().Id, detailReportParameter);
            model.details = details;
            model.Subject = service.GetSubjectDescriptionById(detailReportParameter.Subject);

            int[] studentCounts = new int[5];
            decimal[] impactSums = new decimal[5];
            decimal[] avgImpacts = new decimal[5];
            int[] countOfMeetOrExceed = new int[5];
            decimal[] percOfMeetOrExceed = new decimal[5];

            //TODO: Need to handle null check here if no data found in model.details list it will give object refrence not found error.
            studentCounts[0] = model.details.Count(d => d.ScoreData1.Impact != null);
            studentCounts[1] = model.details.Count(d => d.ScoreData2.Impact != null);
            studentCounts[2] = model.details.Count(d => d.ScoreData3.Impact != null);
            studentCounts[3] = model.details.Count(d => d.ScoreData4.Impact != null);
            studentCounts[4] = model.details.Count(d => d.ScoreData5.Impact != null);

            impactSums[0] = model.details.Sum(d => d.ScoreData1.Impact.GetValueOrDefault());
            impactSums[1] = model.details.Sum(d => d.ScoreData2.Impact.GetValueOrDefault());
            impactSums[2] = model.details.Sum(d => d.ScoreData3.Impact.GetValueOrDefault());
            impactSums[3] = model.details.Sum(d => d.ScoreData4.Impact.GetValueOrDefault());
            impactSums[4] = model.details.Sum(d => d.ScoreData5.Impact.GetValueOrDefault());

            for (int i = 0; i < studentCounts.Length; i++)
            {
                if (studentCounts[i] > 0)
                {
                    avgImpacts[i] = Math.Round(impactSums[i] / studentCounts[i], decimalPlace);
                }
            }
            countOfMeetOrExceed[0] = model.details.Where(tirDetail => tirDetail.ScoreData1.Impact >= -2).Count();
            countOfMeetOrExceed[1] = model.details.Where(tirDetail => tirDetail.ScoreData2.Impact >= -2).Count();
            countOfMeetOrExceed[2] = model.details.Where(tirDetail => tirDetail.ScoreData3.Impact >= -2).Count();
            countOfMeetOrExceed[3] = model.details.Where(tirDetail => tirDetail.ScoreData4.Impact >= -2).Count();
            countOfMeetOrExceed[4] = model.details.Where(tirDetail => tirDetail.ScoreData5.Impact >= -2).Count();

            service.IsChildAssessmentsExists(model.AssessmentList);

            for (int i = 0; i < model.AssessmentList.Count; i++)
            {
                if (studentCounts[i] > 0)
                {
                    percOfMeetOrExceed[i] = GetPerOfMeetValue(countOfMeetOrExceed[i], studentCounts[i], true);
                }
            }
            ViewBag.percOfMeetOrExceed = percOfMeetOrExceed;
            ViewBag.studentCounts = studentCounts;
            ViewBag.impactSums = impactSums;
            ViewBag.avgImpacts = avgImpacts;


            var filterParameter = new FilterParameter
            {
                ClassId = detailReportParameter.ClassId,
                Teacher = detailReportParameter.Teacher,
                Year = detailReportParameter.Year,
                Race = detailReportParameter.Race,
                Gender = detailReportParameter.Gender,
                FrlIndicator = detailReportParameter.FrlIndicator,
                IEPIndicator = detailReportParameter.IEPIndicator,
                LEPIndicator = detailReportParameter.LEPIndicator,
                Hispanic = detailReportParameter.Hispanic,
                SchoolYear = model.SchoolYear
            };

            var reportFilterViewModel = ReportsFilterHelper.PopulateReportFilterViewModel(filterParameter, service, su);
            ViewBag.ReportFilters = reportFilterViewModel;
        }