public IActionResult InstructorGradeByAssignment(int id) { AssignmentDataService assignmentDataService = new AssignmentDataService(dbContext); Assignment assignment = assignmentDataService.GetAssignmentById(id); ViewData["Title"] = "Grades: " + assignment.Name; ViewData["AssignmentName"] = assignment.Name; ViewData["AssignmentId"] = assignment.Id; ClassDataService classDataService = new ClassDataService(dbContext); Class c = classDataService.GetClassById(assignment.ClassId); StudentClassDataService studentDataService = new StudentClassDataService(dbContext); var students = studentDataService.GetStudentsByClassid(c.Id); foreach (var student in students) { var result = assignmentDataService.GetTopSubmissionForStudent(assignment.Id, student.Id); if (result == null) { ViewData[student.FirstName + student.LastName] = 0.0; } else { ViewData[student.FirstName + student.LastName] = result.Grade; } } return(View(students)); }
public IActionResult AssignmentDetails(int id) { AssignmentDataService assignmentDataService = new AssignmentDataService(dbContext); Assignment assignment = assignmentDataService.GetAssignmentById(id); return(View(assignment)); }
public async Task <IActionResult> SubmitAssignment(SubmissionInputViewModel input) { StudentDataService studentDataService = new StudentDataService(dbContext); Student student = studentDataService.GetStudentById(input.UserId); bool hasAccess = false; foreach (StudentClass studentClass in student.StudentClasses) { if (studentClass.ClassId == input.ClassId) { hasAccess = true; } } if (ModelState.IsValid && hasAccess) { Submission submission = new Submission(); submission.Input.SourceCode = input.SourceCode; submission.Input.Language = input.Language; submission.AssignmentId = input.AssignmentId; submission.UserId = input.UserId; submission.SubmissionTime = DateTime.Now; SubmissionDataService submissionService = new SubmissionDataService(dbContext); submissionService.AddSubmission(submission); await dbContext.SaveChangesAsync(); // SubmissionId now set on local submission AssignmentDataService assignmentDataService = new AssignmentDataService(dbContext); Assignment assignment = assignmentDataService.GetAssignmentById(submission.AssignmentId); assignment.Submissions.Add(submission); GraderMethod.GradeSubmission(submission, dbContext); submission.Output.Runtime = assignment.TimeLimit; if (submission.Compile()) { submission.RunAndCompare(); submission.GradeTestCases(); submission.MaxRunTime(); } dbContext.Submissions.Update(submission); dbContext.Assignments.Update(assignment); await dbContext.SaveChangesAsync(); submission.deleteJunkFiles(); return(RedirectToAction("SubmissionDetails", "Assignment", new { id = submission.SubmissionId })); } return(RedirectToAction("UnAuthorized", "Home")); }
public async Task <ActionResult> DeleteAssignment(int assignmentId) { AssignmentDataService assignmentDataService = new AssignmentDataService(dbContext); Assignment assignment = assignmentDataService.GetAssignmentById(assignmentId); assignmentDataService.DeleteAssignment(assignment); await dbContext.SaveChangesAsync(); return(RedirectToAction("Details", "Instructor", new { id = assignment.ClassId })); }
public async Task <IActionResult> EditAssignment(EditAssignmentViewModel model, int assignmentId) { AssignmentDataService assignmentDataService = new AssignmentDataService(dbContext); Assignment assignment = assignmentDataService.GetAssignmentById(assignmentId); assignmentDataService.UpdateAssignment(model, assignment); await dbContext.SaveChangesAsync(); return(RedirectToAction("Details", "Instructor", new { id = assignment.ClassId })); }
public IActionResult SubmissionDetails(int id) { SubmissionDataService submissionDataService = new SubmissionDataService(dbContext); var submission = submissionDataService.GetSubmissionById(id); AssignmentDataService assignmentDataService = new AssignmentDataService(dbContext); ViewData["AssignmentName"] = assignmentDataService.GetAssignmentById(submission.AssignmentId).Name; return(View(submission)); }
public IActionResult Details(int id) { ClassDataService classDataService = new ClassDataService(dbContext); Class c = classDataService.GetClassById(id); AssignmentDataService assignmentDataService = new AssignmentDataService(dbContext); var list = assignmentDataService.GetAssignments().Where(e => e.ClassId == c.Id).Reverse(); ViewData["Assignments"] = list; return(View(c)); }
public IActionResult ViewAssignments(int classId) { AssignmentDataService assignmentDataService = new AssignmentDataService(dbContext); IEnumerable <Assignment> assignments = assignmentDataService.GetAssignmentsByClassId(classId).Reverse(); StudentDataService studentDataService = new StudentDataService(dbContext); student = studentDataService.GetStudentByUsername(UserManager.GetUserName(User)); ViewData.Add("StudentId", student.Id); return(View(assignments)); }
public IActionResult AddExistingAssignment(int classId, int instructorId) { AssignmentDataService assignmentDataService = new AssignmentDataService(dbContext); var assignments = assignmentDataService.GetAssignmentsByInstructorId(instructorId).Reverse(); ClassDataService classDataService = new ClassDataService(dbContext); var c = classDataService.GetClassById(classId); ViewData["ClassName"] = c.Name; ViewData["ClassId"] = c.Id; return(View(assignments)); }
public static void GradeSubmission(Submission submission, AutoGraderDbContext dbContext) { AssignmentDataService assignmentDataService = new AssignmentDataService(dbContext); Assignment assignment = assignmentDataService.GetAssignmentById(submission.AssignmentId); submission.Output.MemoryLimit = assignment.MemoryLimit; TestCaseDataService testCaseDataService = new TestCaseDataService(dbContext); IEnumerable <TestCaseSpecification> testCaseSpecifications = testCaseDataService.GetTestCaseByAssignmentId(submission.AssignmentId); foreach (TestCaseSpecification testCaseSpecification in testCaseSpecifications) { TestCaseReport testCaseReport = new TestCaseReport(); testCaseReport.CodeInput = testCaseSpecification.Input; testCaseReport.ExpectedOutput = testCaseSpecification.ExpectedOutput; testCaseReport.Feedback = testCaseSpecification.Feedback; submission.Output.TestCases.Add(testCaseReport); } /* if (submission.Compile()) * { * submission.RunAndCompare(); * } * else * { * for (int i = 0; i < submission.Output.TestCases.Count(); i++) * { * submission.Output.TestCases[i].Pass = false; * } * } * * SubmissionService submissionService = new SubmissionService(dbContext); * submissionService.AddSubmission(submission); */ // Send the Submission to the compiler and get the output back // Object returned with contain a pass or fail bool, and compiler output // if it did not compile correctly, make the output the error message // Print out compiler output // Mark all test cases on the report as failed in submissionOutput // else // Call the method to populate CodeInput, ExpectedOutput, Feedback -- Add in 10/30 // call the grading function passing the submission, ** 2d array of input output files/or assignment ID **, source code, language, runtime, and submission id // get back the submission with the chekced fields updated // Update the database for the report ID to say which test cases were passed and save the output string for each // return submission / submission output to the user }
public IActionResult ViewAllSubmissions(int assignmentId, int studentId) { AssignmentDataService assignmentDataService = new AssignmentDataService(dbContext); IEnumerable <Submission> submissions = assignmentDataService.GetStudentSubmissionsOnAssignment(studentId, assignmentId).Reverse(); var assignmentName = assignmentDataService.GetAssignmentById(assignmentId).Name; ViewData["AssignmentName"] = assignmentName; StudentDataService studentDataService = new StudentDataService(dbContext); var student = studentDataService.GetStudentById(studentId); var name = student.FirstName + " " + student.LastName; ViewData["StudentName"] = name; return(View(submissions)); }
public IActionResult SubmitAssignment(int Id, int studentId) { AssignmentDataService assignmentDataService = new AssignmentDataService(dbContext); Assignment assignment = assignmentDataService.GetAssignmentById(Id); SubmissionInputViewModel model = new SubmissionInputViewModel { AssignmentId = Id, Language = assignment.Languages[0], UserId = studentId, ClassId = assignment.ClassId }; return(View(model)); }
public async Task <IActionResult> CreateAssignment(AssignmentViewModel model) { if (ModelState.IsValid) { Assignment assignment = new Assignment(model); AssignmentDataService assignmentDataService = new AssignmentDataService(dbContext); assignmentDataService.AddAssignment(assignment); ClassDataService classDataService = new ClassDataService(dbContext); Class c = classDataService.GetClassById(assignment.ClassId); c.Assignments.Add(assignment); } await dbContext.SaveChangesAsync(); return(RedirectToAction("Index", "Home")); }
public async Task <IActionResult> AddSelectedAssignment(int classId, int assignmentId) { AssignmentDataService assignmentDataService = new AssignmentDataService(dbContext); var assignment = assignmentDataService.GetAssignmentById(assignmentId); var newAssignment = new Assignment { Submissions = new List <Submission>(), Name = assignment.Name, StartDate = assignment.StartDate, EndDate = assignment.EndDate, Description = assignment.Description, MemoryLimit = assignment.MemoryLimit, TimeLimit = assignment.TimeLimit, Languages = assignment.Languages, ClassId = classId, }; assignmentDataService.AddAssignment(newAssignment); foreach (var test in assignment.TestCases) { var testCase = new TestCaseSpecification(test); testCase.AssignmentId = newAssignment.Id; newAssignment.TestCases.Add(testCase); } ClassDataService classDataService = new ClassDataService(dbContext); var c = classDataService.GetClassById(classId); c.Assignments.Add(newAssignment); await dbContext.SaveChangesAsync(); return(RedirectToAction("Index", "Home")); }
public IActionResult EditAssignment(int id) { AssignmentDataService assignmentDataService = new AssignmentDataService(dbContext); Assignment assignment = assignmentDataService.GetAssignmentById(id); EditAssignmentViewModel model = new EditAssignmentViewModel() { ClassId = assignment.ClassId, Description = assignment.Description, EndDate = assignment.EndDate, StartDate = assignment.StartDate, Languages = assignment.Languages, MemoryLimit = assignment.MemoryLimit, TimeLimit = assignment.TimeLimit, Name = assignment.Name, NumberOfTestCases = assignment.TestCases.Count, TestCases = assignment.TestCases }; ViewData["AssignmentId"] = assignment.Id; return(View(model)); }