示例#1
0
        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));
        }
示例#2
0
        public static StudentExplorerViewData Create(StudentExplorerInfo studentExplorerInfo, IList <StudentHealthCondition> healthConditions
                                                     , IList <StudentCustomAlertDetail> customAlerts, IList <ClaimInfo> claims, IList <StudentHealthFormInfo> healthForms)
        {
            var res = new StudentExplorerViewData
            {
                Student            = StudentProfileViewData.Create(studentExplorerInfo.Student, customAlerts, healthConditions, healthForms),
                ClassesGradingInfo = StudentClassExplorerViewData.Create(studentExplorerInfo.ClassesGradingInfo, claims)
            };

            res.ClassesGradingInfo = res.ClassesGradingInfo
                                     .OrderBy(x => x.Avg.HasValue ? x.Avg : int.MaxValue)
                                     .ThenBy(x => x.Class.Name).ToList();
            return(res);
        }
示例#3
0
        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));
        }