Пример #1
0
        public static SubmissionResult FromSolution(ExerciseSolutionByGrader solution, ExerciseSlide slide)
        {
            var automaticChecking = solution.Submission?.AutomaticChecking;

            if (automaticChecking == null || automaticChecking.Status != AutomaticExerciseCheckingStatus.Done)
            {
                return new SubmissionResult {
                           Status = "IN_PROCESS"
                }
            }
            ;

            var score = (double)automaticChecking.Score / slide.Scoring.PassedTestsScore;

            if (score > 1)
            {
                score = 1;
            }

            return(new SubmissionResult
            {
                Status = "READY",
                Result = score,
                CompilationLog = automaticChecking.CompilationError?.Text ?? "",
                ExecutionLog = automaticChecking.Output?.Text ?? "",
            });
        }
Пример #2
0
        public async Task <ExerciseSolutionByGrader> AddSolutionFromGraderClient(Guid clientId, int submissionId, string clientUserId)
        {
            var exerciseSolutionByGrader = new ExerciseSolutionByGrader
            {
                ClientId     = clientId,
                SubmissionId = submissionId,
                ClientUserId = clientUserId,
            };

            db.ExerciseSolutionsByGrader.Add(exerciseSolutionByGrader);
            await db.SaveChangesAsync();

            return(exerciseSolutionByGrader);
        }
Пример #3
0
        public async Task <ExerciseSolutionByGrader> AddSolutionFromGraderClient(Guid clientId, int submissionId, string clientUserId)
        {
            var exerciseSolutionByGrader = new ExerciseSolutionByGrader
            {
                ClientId     = clientId,
                SubmissionId = submissionId,
                ClientUserId = clientUserId,
            };

            db.ExerciseSolutionsByGrader.Add(exerciseSolutionByGrader);
            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbEntityValidationException e)
            {
                var errors = string.Join(", ", e.EntityValidationErrors.SelectMany(err => err.ValidationErrors.Select(error => error.ErrorMessage)));
                throw new Exception(errors);
            }

            return(exerciseSolutionByGrader);
        }
Пример #4
0
        public static SubmissionResult FromSolution(ExerciseSolutionByGrader solution)
        {
            var automaticChecking = solution.Submission?.AutomaticChecking;

            if (automaticChecking == null || automaticChecking.Status != AutomaticExerciseCheckingStatus.Done)
            {
                return new SubmissionResult {
                           Status = "IN_PROCESS"
                }
            }
            ;

            var score = automaticChecking.IsRightAnswer ? 1 : 0;

            return(new SubmissionResult
            {
                Status = "READY",
                Result = score,
                CompilationLog = automaticChecking.CompilationError?.Text ?? "",
                ExecutionLog = automaticChecking.Output?.Text ?? "",
            });
        }