public async Task <IActionResult> OnPostAsync()
        {
            Assignment = await PreAssignments.FindAsync(Id);

            if (Assignment == null)
            {
                return(NotFound());
            }

            Context.Entry(Assignment).Reference(x => x.PreAssignmentReport).Load();

            if (Assignment.PreAssignmentReport.Type == PreAssignmentReport.PreAssignmentReportTypes.Success)
            {
                Context.Entry(Assignment).Reference(x => x.Solution).Query()
                .Include(x => x.MethodDeclarations).Load();
                Context.Entry(Assignment).Reference(x => x.CourseClass).Query().Load();
                Context.Entry(Assignment).Reference(x => x.TestProject).Query()
                .Include(x => x.UnitTests).Load();

                var assignment = new Assignment()
                {
                    CourseClass = Assignment.CourseClass,
                    Filename    = Assignment.Filename,
                    Name        = Assignment.Name,
                    Solution    = Assignment.Solution,
                    TestProject = Assignment.TestProject,
                };
                Assignments.Add(assignment);
                PreAssignments.Remove(Assignment);
                await Context.SaveChangesAsync();

                return(RedirectToPage("/Assignments/Details", new { assignment.Id }));
            }
            else
            {
                Assignment.PreAssignmentReport = new PreAssignmentPendingReport();
                PreAssignments.Update(Assignment);
                await Context.SaveChangesAsync();

                BackgroundJob.Enqueue(() => EngineService.RunPreAssignment(Id));
            }

            return(RedirectToPage(new { Id }));
        }
예제 #2
0
        public async Task <IActionResult> OnPostCreateAsync()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            var course = await CourseClasses.FindAsync(Id);

            if (course == null)
            {
                return(NotFound());
            }

            Context.Entry(course).Collection(x => x.PreAssignments).Load();

            PreAssignment.PreAssignmentReport = new PreAssignmentPendingReport();

            var testProject = FileHelper.ProcessFormFile(TestProjectFiles, ModelState);
            var solution    = FileHelper.ProcessFormFile(SolutionFiles, ModelState);

            if (!ModelState.IsValid)
            {
                return(Page());
            }

            PreAssignment.TestProject.Files = testProject;
            PreAssignment.Solution.Files    = solution;

            course.PreAssignments.Add(PreAssignment);
            CourseClasses.Update(course);
            await Context.SaveChangesAsync();

            var id = PreAssignment.Id;

            EngineService.RunPreAssignment(id);

            return(RedirectToPage("/PendingAssignments/Index", new { Id }));
        }