public async Task <ChalkableGradeBook> GetGradeBook(int classId, GradingPeriod gradingPeriod, int?standardId = null, int?classAnnouncementType = null, bool needsReCalculate = true) { Task <Gradebook> stiGradeBook; var isTeacherClass = DoRead(u => new ClassTeacherDataAccess(u).Exists(classId, Context.PersonId)); if (needsReCalculate && GradebookSecurity.CanReCalculateGradebook(Context, isTeacherClass)) { stiGradeBook = ConnectorLocator.GradebookConnector.Calculate(classId, gradingPeriod.Id); } else { stiGradeBook = ConnectorLocator.GradebookConnector.GetBySectionAndGradingPeriod(classId, classAnnouncementType, gradingPeriod.Id, standardId); } Trace.WriteLine("GetGradeBooks" + DateTime.Now.Ticks * 1.0 / TimeSpan.TicksPerSecond); return(GetGradeBooks(classId, gradingPeriod, await stiGradeBook)); }
public async Task <IList <GradingStandardInfo> > GetGradingStandards(int classId, int?gradingPeriodId, bool reCalculateStandards = true) { var isTeacherClass = DoRead(u => new ClassTeacherDataAccess(u).Exists(classId, Context.PersonId)); Task <Gradebook> calculateTask = null; if (reCalculateStandards && GradebookSecurity.CanReCalculateGradebook(Context, isTeacherClass)) { calculateTask = ConnectorLocator.GradebookConnector.Calculate(classId, gradingPeriodId); } var standards = ServiceLocator.StandardService.GetGridStandardsByPacing(classId, null, null, gradingPeriodId); if (calculateTask != null) { await calculateTask; } var standardScores = ConnectorLocator.StandardScoreConnector.GetStandardScores(classId, null, gradingPeriodId); standards = standards.Where(s => s.IsActive || standardScores.Any(ss => ss.StandardId == s.Id && ss.HasScore)).ToList(); var res = GradingStandardInfo.Create(standardScores, standards); return(res); }