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