Esempio n. 1
0
        public StudentSummaryInfo GetStudentSummaryInfo(int studentId)
        {
            var classRank = new ClassRank
            {
                StudentId = studentId,
                ClassSize = 10
            };

            var syId = Context.SchoolYearId ?? ServiceLocator.SchoolYearService.GetCurrentSchoolYear().Id;

            var discipline = ((DemoDisciplineService)ServiceLocator.DisciplineService).GetList(DateTime.Today);

            var infractions = new List <StiConnector.Connectors.Model.Infraction>();

            foreach (var disciplineReferral in discipline.Where(disciplineReferral => disciplineReferral.Infractions != null))
            {
                infractions.AddRange(disciplineReferral.Infractions);
            }

            var chlkInfractions = ServiceLocator.InfractionService.GetInfractions();

            var infractionSummaries = from infr in infractions
                                      group infr by infr.Id
                                      into g
                                      select new { Id = g.Key, Count = g.Count() };

            var attendances =
                ((DemoAttendanceService)ServiceLocator.AttendanceService).GetStudentAbsenceSummary(studentId);

            var infractionSummary = infractionSummaries.Select(x => new InfractionSummary
            {
                StudentId    = studentId,
                InfractionId = x.Id,
                Occurrences  = x.Count
            }).ToList();

            var nowDashboard = new NowDashboard
            {
                ClassRank         = classRank,
                Infractions       = infractionSummary,
                SectionAttendance = new List <StudentSectionAbsenceSummary>(), //attendances,
                Scores            = ((DemoStudentAnnouncementService)ServiceLocator.StudentAnnouncementService).GetActivityScoresForStudent(studentId)
            };
            var student       = GetStudentDetails(studentId, syId);
            var activitiesids = nowDashboard.Scores.GroupBy(x => x.ActivityId).Select(x => x.Key).ToList();

            //TODO: impl
            var anns = new List <AnnouncementComplex>(); //((DemoAnnouncementService) ServiceLocator.ClassAnnouncementService).GetByActivitiesIds(activitiesids);
            var res  = StudentSummaryInfo.Create(student, nowDashboard, chlkInfractions, anns, MapperFactory.GetMapper <StudentAnnouncement, Score>());

            return(res);
        }
Esempio n. 2
0
        public static StudentSummaryInfo Create(Student student, NowDashboard nowDashboard
                                                , IList <Data.School.Model.Infraction> infractions, IList <AnnouncementComplex> anns, IMapper <StudentAnnouncement, Score> mapper)
        {
            var res = new StudentSummaryInfo
            {
                StudentInfo = student,
                ClassRank   = nowDashboard.ClassRank != null?ClassRankInfo.Create(nowDashboard.ClassRank) : null,
                                  CurrentSectionId           = nowDashboard.CurrentSectionId,
                                  TotalDisciplineOccurrences = nowDashboard.Infractions.Any() ? nowDashboard.Infractions.Sum(x => x.Occurrences) : 0,
                                  InfractionSummaries        = InfractionSummaryInfo.Create(nowDashboard.Infractions.ToList(), infractions),
                                  StudentAnnouncements       = new List <StudentAnnouncement>(),
                                  Attendances            = ShortStudentClassAttendanceSummary.Create(nowDashboard.SectionAttendance.ToList()),
                                  CurrentAttendanceLevel = nowDashboard.CurrentAttendanceStatus
            };

            if (nowDashboard.DailyAttendance == null)
            {
                nowDashboard.DailyAttendance = new StudentDailyAbsenceSummary {
                    Absences = 0, Tardies = 0, Presents = 0
                }
            }
            ;
            res.DailyAttendance = DailyAbsenceSummaryInfo.Create(nowDashboard.DailyAttendance);

            var scores = nowDashboard.Scores.Where(x => !string.IsNullOrEmpty(x.ScoreValue)).ToList();

            foreach (var score in scores)
            {
                var ann = anns.FirstOrDefault(x => x.ClassAnnouncementData.SisActivityId == score.ActivityId);
                if (ann == null)
                {
                    continue;
                }
                var studentAnn = new StudentAnnouncement {
                    AnnouncementId = ann.Id
                };
                mapper.Map(studentAnn, score);
                res.StudentAnnouncements.Add(studentAnn);
            }
            return(res);
        }
    }