コード例 #1
0
        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"));
        }
コード例 #2
0
        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));
        }