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