/// <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> /// Returns the results for a single assignment group in a single section. /// </summary> public async Task <SectionAssignmentResults> GetSectionAssignmentResultsAsync( string classroomName, string sectionName, string assignmentGroupName) { var classroom = await LoadClassroomAsync(classroomName); var section = classroom.Sections.SingleOrDefault(s => s.Name == sectionName); if (section == null) { return(null); } var assignments = await GetAssignmentsAsync ( classroomName, sectionName, assignmentGroupName, admin : true ); var students = await _dbContext.SectionMemberships .Where ( sm => sm.SectionId == section.Id && sm.Role == SectionRole.Student ) .Select(sm => sm.ClassroomMembership.User) .ToListAsync(); var submissions = await GetUserQuestionSubmissionsAsync ( classroom.Id, section.Id, assignmentGroupName, userId : null ); return(_sectionAssignmentReportGenerator.GetSectionAssignmentGroupResults ( assignmentGroupName, assignments, section, students, submissions )); }