public ActionResult RetestSubmission(SubmissionPostData data) { var course = _GetCourse(); if (course == null || course.CourseId != data.CourseId) { return(new HttpNotFoundResult()); } var user = ApplicationUser.FromUserId(data.UserId); if (user == null) { return(new HttpNotFoundResult()); } try { var studentAssignment = _db.StudentAssignments .Include(sa => sa.Submissions) .Include(sa => sa.Assignment.Pages) .Include(sa => sa.Enrollment.User) .FirstOrDefault(sa => sa.AssignmentId == data.AssignmentId && sa.Enrollment.UserName == user.UserName); if (studentAssignment == null) { return(new HttpNotFoundResult()); } StudentSubmission submission; if (data.SubmissionId > 0) { submission = studentAssignment.Submissions.FirstOrDefault(s => s.StudentSubmissionId == data.SubmissionId); } else { submission = studentAssignment.Submissions.LastOrDefault(); } if (submission == null) { return(null); } using (var t = new SubmissionTester(submission)) { t.TestAll(); } _db.SaveChanges(); return(new JsonNetResult(submission.FullResults)); } catch (Exception ex) { Elmah.ErrorSignal.FromCurrentContext().Raise(ex); return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError, ex.Message)); } }
public ActionResult GetSubmissionDetails(SubmissionPostData data) { Course course = _GetCourse(); if (course == null || course.CourseId != data.CourseId) { return(new HttpNotFoundResult()); } var user = ApplicationUser.Current; if (user == null || user.Id != data.UserId) { return(new HttpNotFoundResult()); } try { var submission = _db.StudentSubmissions .Where(ss => ss.StudentAssignment.Enrollment.CourseId == data.CourseId) .Where(ss => ss.StudentAssignment.Enrollment.UserId == user.Id) .Where(ss => ss.StudentAssignment.AssignmentId == data.AssignmentId) .Where(ss => ss.StudentSubmissionId == data.SubmissionId) .Include(ss => ss.StudentAssignment.Assignment) .Include(ss => ss.StudentAssignment.Enrollment) .FirstOrDefault(); if (submission == null) { return(new HttpNotFoundResult()); } var repo = SubmissionRepository.Get(submission.StudentAssignment); repo.Checkout(submission.CommitId); // get selected var dir = TempDir.Get(repo); var folder = dir.GetFolder(); return(new JsonNetResult(new { Folder = folder, Results = submission.PreSubmissionResults })); } catch (Exception ex) { Elmah.ErrorSignal.FromCurrentContext().Raise(ex); return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError, ex.Message)); } }