public async Task <IActionResult> PutExerciseResult([FromRoute] int id, [FromBody] ExerciseResult exerciseResult)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != exerciseResult.Id)
            {
                return(BadRequest());
            }

            _context.Entry(exerciseResult).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ExerciseResultExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Пример #2
0
        public IActionResult Result([FromBody] SolveExerciseModel se)
        {
            var user = db.Users.FirstOrDefault(u => u.UserName == User.Identity.Name);
            var exerciseResultExists = db.ExerciseResults.Where(er => er.ExerciseId == se.Id && er.UserId == user.Id).Any();

            if (exerciseResultExists)
            {
                var exerciseResult = db.ExerciseResults.FirstOrDefault(er => er.ExerciseId == se.Id && er.UserId == user.Id);
                exerciseResult.Score = se.Score;
                db.ExerciseResults.Update(exerciseResult);
                db.SaveChanges();
            }
            else
            {
                var newExerciseResult = new ExerciseResult
                {
                    ExerciseId = se.Id,
                    UserId     = user.Id,
                    Score      = se.Score
                };

                db.ExerciseResults.Add(newExerciseResult);
                db.SaveChanges();
            }
            return(Json(new { message = "Success!" }));
        }
Пример #3
0
        public static OperationResult <JudgeResult> JudgeExercise(Exercise exercise, ExerciseResult exerciseResult, User user)
        {
            JudgeResult judgeResult = null;

            try
            {
                judgeResult = ExerciseGeneratorFactory.DriveGenerator().JudgeExercise(exercise, exerciseResult);
                JudgeInfo judgeInfo = DataBaseFactory.DriveDataBase().GetJudgeInfo(user.UserID);
                if (judgeInfo == null)
                {
                    return(new OperationResult <JudgeResult>("批改失败!", true, null));
                }
                judgeInfo.QuestionNum        += judgeResult.TotalNum;
                judgeInfo.QuestionErrorNum   += judgeResult.ErrorNum;
                judgeInfo.LastestCompleteTime = DateTime.Now;
                if (!JudgeInfoLogic.UpdateJudgeInfo(judgeInfo, user))
                {
                    return(new OperationResult <JudgeResult>("更改批改信息失败!", true, null));
                }
            }
            catch (Exception e)
            {
                return(new OperationResult <JudgeResult>("批改失败!" + e.Message, true, null));
            }
            return(new OperationResult <JudgeResult>("批改成功!", true, judgeResult));
        }
Пример #4
0
        public ExerciseUI(Exercise exercise, ExerciseResult res)
        {
            this.ID = exercise.ID;
            this.SortOrder = exercise.SortOrder;
            this.Title = exercise.Title;
            this.Description = exercise.Description;
            this.HasInteractive = exercise.Content.HasInteractive;
            this.Html = exercise.Content.Html;

            if (res != null)
            {
                this.Html = res.Html ?? this.Html;
                this.Complete = res.End != null;
                this.Points = res.Points;
                this.HasInteractive = this.HasInteractive && !this.Complete;
            }

            if (this.Complete)
            {
                this.Passed = true;

                if (exercise.Content.HasInteractive)
                {
                    this.Passed = this.Points > 0;
                }
            }
        }
Пример #5
0
        private void reset_timer(object sender, RoutedEventArgs e)
        {
            //Debug.WriteLine(App.viewModel.stopwatch.ElapsedMilliseconds);
            App.viewModel.timer.Reset();
            ExerciseResult testresult = new ExerciseResult();

            Debug.WriteLine(testresult.Name);
            App.recordBook.Records.Add("test", testresult);
            Debug.WriteLine("Attempting to print a record" + App.recordBook.Records["test"].Name);
        }
Пример #6
0
        public static void Main(string[] args)
        {
            Console.WriteLine("输入创建用户名,例如:FREEstrikerABbo");
            //string userName = Console.ReadLine();
            string userName = "******";

            Console.WriteLine("输入创建密码,例如:1236zccg99326TEST");
            //string password = Console.ReadLine();
            string password = "******";

            Console.WriteLine(UserLogic.CreateUser(userName, password).Prompt);
            var userOR = UserLogic.LogInUser(userName, password);

            Console.WriteLine(userOR.Prompt);
            var userInfoOR = UserInfoLogic.GetUserInfo(userOR.Result);

            Console.WriteLine(userInfoOR.Prompt);
            var judgeInfoOR = JudgeInfoLogic.GetJudgeInfo(userOR.Result);

            Console.WriteLine(judgeInfoOR.Prompt);
            ExerciseOption exerciseOption = new ExerciseOption(IntervalType.LE10,
                                                               //OperationType.Plus |
                                                               //OperationType.Sub |
                                                               //OperationType.Mul |
                                                               //OperationType.Div |
                                                               OperationType.DivWithRemainder, QuantityType.E10);
            var exerciseOR = ExerciseLogic.GetExercise(exerciseOption);

            Console.WriteLine(exerciseOR.Prompt);
            for (int i = 0; i < exerciseOR.Result.ExerciseUnits.Length; i++)
            {
                Console.WriteLine(exerciseOR.Result.ExerciseUnits[i].Topic);
            }
            Console.WriteLine("输入答案:");
            ExerciseResult exerciseResult = new ExerciseResult()
            {
                ExerciseResultUnit = new ExerciseResultUnit[exerciseOR.Result.ExerciseUnits.Length]
            };

            for (int i = 0; i < exerciseOR.Result.ExerciseUnits.Length; i++)
            {
                exerciseResult.ExerciseResultUnit[i].Remainder = 0;
                exerciseResult.ExerciseResultUnit[i].Result    = Convert.ToInt32(Console.ReadLine());
            }
            var judgeResultOR = ExerciseLogic.JudgeExercise(exerciseOR.Result, exerciseResult, userOR.Result);

            Console.WriteLine(judgeResultOR.Prompt);
            userInfoOR = UserInfoLogic.GetUserInfo(userOR.Result);
            Console.WriteLine(userInfoOR.Prompt);
            judgeInfoOR = JudgeInfoLogic.GetJudgeInfo(userOR.Result);
            Console.WriteLine(judgeInfoOR.Prompt);
            Console.WriteLine(UserLogic.DeleteUser(userOR.Result).Prompt);
            Console.ReadKey();
        }
Пример #7
0
        private ExerciseResult CreateExerciseResultFromRawData(List<string> data)
        {
            ExerciseResult er = new ExerciseResult();
            ExerciseResultExerciseGroup exerciseGroup = new ExerciseResultExerciseGroup();

            foreach (string dataMessage in data)
            {

            }

            return er;
        }
        public async Task <IActionResult> PostExerciseResult([FromBody] ExerciseResult exerciseResult)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            _context.ExerciseResults.Add(exerciseResult);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetExerciseResult", new { id = exerciseResult.Id }, exerciseResult));
        }
        // Add an exerciseResult based on planning ID and today's date
        private void AddExerciseResultByPlanningID(ExerciseResult exerciseResult, long user_ID, long exercisePlanning_ID)
        {
            using (var scope = _scopeFactory.CreateScope())
            {
                var today           = DateTime.UtcNow;
                var dbContext       = scope.ServiceProvider.GetRequiredService <Context>();
                var exerciseSession = dbContext.ExerciseSessions
                                      .Where(e => e.ExercisePlanning_ID == exercisePlanning_ID && e.Date.Date == today.Date && e.ExercisePlanning.UserExercise.User_ID == user_ID).First();

                exerciseSession.IsComplete = true;
                exerciseSession.Date       = DateTime.Now;
                dbContext.Update(exerciseSession);

                exerciseResult.ExerciseSession = exerciseSession;
                dbContext.Add(exerciseResult);

                dbContext.SaveChanges();
            }
        }
Пример #10
0
        public JudgeResult JudgeExercise(Exercise exercise, ExerciseResult exerciseResult)
        {
            List <ExerciseUnit> exerciseUnits = new List <ExerciseUnit>();
            List <int>          exerciseIndex = new List <int>();
            int errorNum = 0;

            for (int i = 0; i < exercise.ExerciseUnits.Length; i++)
            {
                if (exercise.ExerciseUnits[i].Result == exerciseResult.ExerciseResultUnit[i].Result &&
                    exercise.ExerciseUnits[i].Remainder == exerciseResult.ExerciseResultUnit[i].Remainder)
                {
                }
                else
                {
                    errorNum++;
                    exerciseUnits.Add(exercise.ExerciseUnits[i]);
                    exerciseIndex.Add(i);
                }
            }

            return(new JudgeResult(exercise.TotalNum, errorNum, exercise.StartTime, DateTime.Now, exerciseUnits.ToArray(), exerciseIndex.ToArray()));
        }
        public IActionResult Add([FromBody] ClientExerciseResult clientExerciseResult)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var user_ID     = _jwtHandler.GetUserID(_httpContextAccessor.HttpContext);
            var planning_ID = clientExerciseResult.ExercisePlanning_ID;

            byte[] Recording = Helper.Compress(clientExerciseResult.Result);

            ExerciseResult exerciseResult = new ExerciseResult
            {
                Duration = clientExerciseResult.Duration,
                Score    = clientExerciseResult.Score,
                Result   = Recording,
            };

            _exerciseResultService.AddByPlanningID(exerciseResult, user_ID, planning_ID);

            return(NoContent());
        }
Пример #12
0
        private LabWorkResult AddLabWorkResult(ExerciseResult exerciseResult)
        {
            var exercise = db
                           .Exercises
                           .Include(x => x.LabWork)
                           .FirstOrDefault(x => x.Id == exerciseResult.Exercise.Id);

            if (exercise == null)
            {
                throw new NotSupportedException();
            }

            var labWorkResult = db.LabWorkResults.FirstOrDefault(
                x => x.LabWork.Id == exercise.LabWork.Id &&
                x.Student.Id == exerciseResult.Student.Id);

            if (labWorkResult == null)
            {
                labWorkResult = new LabWorkResult
                {
                    LabWork         = exercise.LabWork,
                    ExerciseResults = new List <ExerciseResult>(),
                    Student         = exerciseResult.Student
                };

                db.LabWorkResults.Add(labWorkResult);
            }
            labWorkResult.ExerciseResults.Add(exerciseResult);

            var mark = labWorkResult.ExerciseResults.Select(x => x.Mark).Sum();

            labWorkResult.Mark = mark;

            //db.SaveChanges();

            return(labWorkResult);
        }
Пример #13
0
        private ExerciseResult AddExerciseResult(Submission submission)
        {
            var previousExerciseResult = db.ExerciseResults.FirstOrDefault(x => x.Exercise.Id == submission.Exercise.Id && x.Student.User.UserName == User.Identity.Name);

            if (previousExerciseResult != null)
            {
                db.ExerciseResults.Remove(previousExerciseResult);
                db.SaveChanges();
            }

            var passedTests = submission.TestResults.Count(x => x.IsPassed);
            var totalTests  = submission.TestResults.Count;
            int mark;

            if (totalTests == 0)
            {
                mark = 0;
            }
            else
            {
                mark = submission.Exercise.Value * passedTests / totalTests;
            }

            var exerciseResult = new ExerciseResult
            {
                Exercise   = submission.Exercise,
                Student    = submission.Student,
                Submission = submission,
                Mark       = mark
            };

            db.ExerciseResults.Add(exerciseResult);
            //db.SaveChanges();

            return(exerciseResult);
        }
 public void AddByPlanningID(ExerciseResult exerciseResult, long user_ID, long exercisePlanning_ID)
 => AddExerciseResultByPlanningID(exerciseResult, user_ID, exercisePlanning_ID);
Пример #15
0
 private void HydrateObject(ExerciseResult result, string accountId)
 {
     this.Result = result;
     this.AccountID = accountId;
 }
Пример #16
0
            public async Task <Unit> Handle(Command request, CancellationToken cancellationToken)
            {
                var currentUserName = _userAccessor.GetCurrentUsername();

                if (currentUserName == null)
                {
                    throw new RestException(HttpStatusCode.Unauthorized, new { Role = "Brak uprawnień" });
                }

                var currentUser = await _userManager.FindByNameAsync(currentUserName);

                if (currentUser == null)
                {
                    throw new RestException(HttpStatusCode.Unauthorized, new { Role = "Brak uprawnień" });
                }

                if (currentUser.Role != Role.Student)
                {
                    throw new RestException(HttpStatusCode.Unauthorized, new { Role = "Tylko Student może rozwiązywać zadania" });
                }

                var exercise = await _context.Exercises.Where(x => x.Id == request.Id).FirstOrDefaultAsync();

                var tests = await _context.CorrectnessTests
                            .Where(x => x.ExerciseId == exercise.Id)
                            .Include(x => x.Inputs)
                            .Include(x => x.Outputs)
                            .ToListAsync();

                if (exercise == null)
                {
                    throw new RestException(HttpStatusCode.Unauthorized, new { Exercise = "Nie znaleziono zadania" });
                }

                var correctnessTestsResults = new List <CorrectnessTestResult>();

                foreach (var test in tests)
                {
                    var submission = ConvertToSubmission(request.Code,
                                                         exercise.ProgrammingLanguage,
                                                         test.Inputs.Select(x => x.Content).ToArray(),
                                                         test.Outputs.Select(x => x.Content).ToArray());

                    var response = await _apiCompiler.SendSubmission(submission);

                    var result = new CorrectnessTestResult()
                    {
                        CorrectnessTestId = test.Id,
                        Memory            = response.memory ?? 0,
                        CompileOutput     = response.compile_output,
                        Error             = response.stderr,
                        Message           = response.message,
                        Status            = response.status.description,
                        Time = response.time ?? "0  ",
                    };
                    correctnessTestsResults.Add(result);
                }

                var exerciseResult = new ExerciseResult()
                {
                    Code      = request.Code,
                    StudentId = currentUser.Id,
                    GroupId   = request.GroupId,
                    CorrectnessTestResults = correctnessTestsResults,
                };

                await _context.ExerciseResults.AddAsync(exerciseResult);

                var success = await _context.SaveChangesAsync() > 0;

                if (success)
                {
                    return(Unit.Value);
                }

                throw new Exception("Problem podczas zapisu");
            }
Пример #17
0
 public void Execute(object param)
 {
     word.State = State.Learning;
     Result = ExerciseResult.Repeat;
 }
Пример #18
0
        protected void Submit_Prac(object sender, EventArgs e)
        {
            //if (!IsPostBack)
            {
                Debug.WriteLine("Submit_Prac_Start");
                TextBox txt;
                //HtmlGenericControl p = new HtmlGenericControl("p");

                ExerciseResult ExerciseResult = new ExerciseResult()
                {
                    ExerciseResultUnit = new ExerciseResultUnit[num]
                };

                for (int i = 0; i < num; i++)
                {
                    txt = exercise_frame.FindControl("result" + i.ToString()) as TextBox;
                    ExerciseResult.ExerciseResultUnit[i].Remainder = 0;
                    if (Regex.IsMatch(txt.Text, @"^[_0-9]{1,20}$"))
                    {
                        ExerciseResult.ExerciseResultUnit[i].Result = Convert.ToInt32(txt.Text);
                    }
                    else
                    {
                        ExerciseResult.ExerciseResultUnit[i].Result = -1;
                    }
                }

                if (Type == "D")
                {
                    for (int i = 0; i < num; i++)
                    {
                        txt = exercise_frame.FindControl("remainder" + i.ToString()) as TextBox;
                        if (Regex.IsMatch(txt.Text, @"^[_0-9]{1,20}$"))
                        {
                            ExerciseResult.ExerciseResultUnit[i].Remainder = Convert.ToInt32(txt.Text);
                        }
                        else
                        {
                            ExerciseResult.ExerciseResultUnit[i].Remainder = -1;
                        }
                    }
                }
                CalculateOnlineJudge.Entity.User user = new CalculateOnlineJudge.Entity.User(Convert.ToInt32(UserId), Username);
                var judgeResult = ExerciseLogic.JudgeExercise(ExerciseOR.Result, ExerciseResult, user);
                if (judgeResult.IsSuccess)
                {
                    Label2.Text = judgeResult.Prompt;
                    for (int i = 0; i < num; i++)
                    {
                        Label jdglabel;
                        jdglabel      = exercise_frame.FindControl("dynalabel" + i.ToString()) as Label;
                        jdglabel.Text = "√";
                    }
                    for (int i = 0; i < judgeResult.Result.ErrorExerciseIndex.Length; i++)
                    {
                        Label jdglabel;
                        jdglabel      = exercise_frame.FindControl("dynalabel" + judgeResult.Result.ErrorExerciseIndex[i].ToString()) as Label;
                        jdglabel.Text = "×";
                    }


                    //Label3.Text = judgeResult.Result.TotalNum.ToString();
                    Label4.Text = "共答对: " + (judgeResult.Result.TotalNum - judgeResult.Result.ErrorNum).ToString() + "题";
                }
                else
                {
                    MessaegBox("结果异常异常");
                }
                Button1_Practice.Visible = false;
            }
        }
Пример #19
0
 public IndivoExerciseResult(ExerciseResult result, string accountId)
 {
     HydrateObject(result, accountId);
 }