public async Task <StudentExplorerInfo> GetStudentExplorerInfo(int studentId, int schoolYearId) { Trace.Assert(Context.SchoolLocalId.HasValue); Trace.Assert(Context.PersonId.HasValue); Trace.Assert(Context.SchoolYearId.HasValue); var date = Context.NowSchoolYearTime; var inowStiExpolorerTask = ConnectorLocator.StudentConnector.GetStudentExplorerDashboard(schoolYearId, studentId, date); var student = GetById(studentId, schoolYearId); var classes = ServiceLocator.ClassService.GetStudentClasses(schoolYearId, studentId).ToList(); var classPersons = ServiceLocator.ClassService.GetClassPersons(studentId, true); classes = classes.Where(c => classPersons.Any(cp => cp.ClassRef == c.Id)).ToList(); if (Context.Role == CoreRoles.TEACHER_ROLE) { var classTeachers = ServiceLocator.ClassService.GetClassTeachers(null, Context.PersonId.Value); classes = classes.Where(c => classTeachers.Any(ct => ct.ClassRef == c.Id)).ToList(); } var standards = ServiceLocator.StandardService.GetStandards(null, null, null); IList <int> importanActivitiesIds = new List <int>(); IList <AnnouncementComplex> announcements = new List <AnnouncementComplex>(); IList <StandardScore> standardScores = new List <StandardScore>(); IList <StudentAverage> mostRecentAverages = new List <StudentAverage>(); var inowStExpolorer = await inowStiExpolorerTask; if (inowStExpolorer != null) { mostRecentAverages = inowStExpolorer.Averages.Where(x => x.IsGradingPeriodAverage && (x.HasGrade)).OrderBy(x => x.GradingPeriodId).ToList(); standardScores = inowStExpolorer.Standards.ToList(); standards = standards.Where(s => s.IsActive || standardScores.Any(ss => ss.StandardId == s.Id && ss.HasScore)).ToList(); if (inowStExpolorer.Activities != null && inowStExpolorer.Activities.Any()) { foreach (var classDetailse in classes) { var activity = inowStExpolorer.Activities.Where(x => x.SectionId == classDetailse.Id) .OrderByDescending(x => x.MaxWeight) .FirstOrDefault(); if (activity == null) { continue; } importanActivitiesIds.Add(activity.Id); } announcements = DoRead(uow => new ClassAnnouncementForTeacherDataAccess(uow, Context.SchoolYearId.Value).GetByActivitiesIds(importanActivitiesIds, Context.PersonId.Value)); } } return(StudentExplorerInfo.Create(student, classes, mostRecentAverages, standardScores, announcements, standards)); }
public async Task <StudentExplorerInfo> GetStudentExplorerInfo(int studentId, int schoolYearId) { await Task.Delay(0); Trace.Assert(Context.SchoolLocalId.HasValue); var student = GetById(studentId, schoolYearId); var classes = ServiceLocator.ClassService.GetStudentClasses(schoolYearId, studentId).ToList(); var classPersons = ServiceLocator.ClassService.GetClassPersons(studentId, true); classes = classes.Where(c => classPersons.Any(cp => cp.ClassRef == c.Id)).ToList(); var inowStExpolorer = new StudentExplorerDashboard { Averages = new List <StudentAverage>(), Standards = new Stack <StandardScore>(), Activities = new List <Activity>() }; var standards = ServiceLocator.StandardService.GetStandards(null, null, null); IList <int> importantActivitiesIds = new List <int>(); IList <AnnouncementComplex> announcements = new List <AnnouncementComplex>(); if (inowStExpolorer.Activities.Any()) { foreach (var details in classes) { var activity = inowStExpolorer.Activities.Where(x => x.SectionId == details.Id) .OrderByDescending(x => x.MaxScore * x.WeightMultiplier + x.WeightAddition).FirstOrDefault(); if (activity == null) { continue; } importantActivitiesIds.Add(activity.Id); } //TODO : impl later //announcements = ((DemoAnnouncementService)ServiceLocator.AnnouncementService).GetTeacherAnnouncementService() // .GetByActivitiesIds(importantActivitiesIds); } return(StudentExplorerInfo.Create(student, classes, inowStExpolorer.Averages.ToList() , inowStExpolorer.Standards.ToList(), announcements, standards)); }