public ActionResult StudentSubmission(int id) { var selectedSubmissionId = id; var context = HttpContext.GetOwinContext().Get <ApplicationDbContext>(); //Select the specific submission from submissions Table var selectedSubmission = context.SubmissionGrades.Where(x => x.ID == selectedSubmissionId).Include(x => x.Assignment).Include(x => x.User).ToList(); var StudentSubmissionViewModel = new StudentSubmissionViewModel() { SelectedStudentSubmission = selectedSubmission, }; var submissionType = selectedSubmission.Select(x => x.Assignment.SubmissionType).ToList(); if (submissionType.Equals("File-Upload")) { string filePathOriginal = selectedSubmission.Select(x => x.FileSubmission).FirstOrDefault(); string[] words = filePathOriginal.Split('$'); string fileDisplayName = words[0]; ViewBag.displayFile = fileDisplayName; } return(View(StudentSubmissionViewModel)); }
/// <summary> /// Get the most recent submisssion with the fewest failed cases, or null if there are no submissions /// </summary> public StudentSubmissionViewModel GetBestSubmission(List <StudentSubmissionViewModel> groupSubmissions) { var bestSubmission = new StudentSubmissionViewModel(); if (groupSubmissions.Count != 0) { //List is sorted by FailedTests (Null last) then by Submission time, fewest failed cases first, in order of submissison time groupSubmissions = groupSubmissions.OrderByDescending(x => x.FailedTests.HasValue) .ThenBy(x => x.FailedTests) .ThenByDescending(x => x.SubmissionTime) .ToList(); //The first submission in the list will be the most recent submission with the fewest failed cases bestSubmission = groupSubmissions.First(); return(bestSubmission); } //if there are no submissions, return null else { return(null); } }