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