/// <summary> /// Returns the assignment results for the given set of submissions. /// </summary> public IList <SectionAssignmentResults> GetAssignmentGroupResultsSnapshot( IList <Assignment> assignments, IList <User> users, Section section, IList <UserQuestionSubmission> submissions, DateTime snapshotDate) { var sectionAssignments = _assignmentFilter.FilterAssignments ( assignments, section, assignmentGroupName: null, maxDueDate: snapshotDate ); var assignmentGroups = _assignmentFilter.GetAssignmentGroups ( section, sectionAssignments ); var sectionAssignmentSubmissions = _assignmentFilter.FilterSubmissions ( sectionAssignments, submissions, null /*user*/, snapshotDate ); var submissionsByGroup = sectionAssignmentSubmissions.GroupBy ( submission => submission.UserQuestionData .AssignmentQuestion .Assignment .GroupName ).ToDictionary(g => g.Key, g => g.ToList()); return(assignmentGroups.Select ( assignmentGroup => _sectionAssignmentReportGenerator .GetSectionAssignmentGroupResults ( assignmentGroup.Key, assignmentGroup.ToList(), section, users, submissionsByGroup.GetValueOrNew(assignmentGroup.Key) ) ).ToList()); }
/// <summary> /// Calculates the scores of all assignment groups for a given student. /// </summary> public StudentAssignmentResults GetStudentAssignmentGroupResults( User user, Section section, IList <Assignment> assignments, IList <UserQuestionSubmission> submissions, bool admin) { var sectionAssignments = _assignmentFilter.FilterAssignments ( assignments, section ); var userSubmissions = _assignmentFilter.FilterSubmissions ( sectionAssignments, submissions, user ); var assignmentGroups = _assignmentFilter.GetAssignmentGroups ( section, sectionAssignments ); var assignmentGroupResults = assignmentGroups.Select ( assignmentGroup => _assignmentGroupResultGenerator.GetAssignmentGroupResult ( assignmentGroup.Key, assignmentGroup.ToList(), section, user, userSubmissions, admin ) ).ToList(); return(new StudentAssignmentResults ( user.LastName, user.FirstName, section?.DisplayName, assignmentGroupResults )); }