Ejemplo n.º 1
0
        public async Task PushSolutionJudge(int solutionId)
        {
            SolutionPushModel pushModel = await _db.Solutions
                                          .ProjectTo <SolutionPushModel>()
                                          .FirstOrDefaultAsync(x => x.Id == solutionId);

            JudgeHub.Judge(pushModel);
        }
Ejemplo n.º 2
0
        public async Task <ActionResult> Create(SolutionCreateModel model)
        {
            if (ModelState.IsValid)
            {
                var solution = Mapper.Map <Solution>(model);
                _db.Solutions.Add(solution);
                await _db.SaveChangesAsync();

                var judgeModel = await _db.Solutions
                                 .ProjectTo <SolutionPushModel>()
                                 .FirstOrDefaultAsync(x => x.Id == solution.Id);

                JudgeHub.Judge(judgeModel);

                return(RedirectToAction("Index"));
            }

            return(View(model));
        }
Ejemplo n.º 3
0
        public async Task <ActionResult> ReJudge(int id)
        {
            // check access.
            var acl = await _db.Solutions
                      .Where(x => x.Id == id)
                      .Select(x => new
            {
                AuthorId          = x.CreateUserId,
                QuestionCreatorId = x.Question.CreateUserId
            })
                      .FirstAsync();

            if (!User.IsUserOrRole(acl.QuestionCreatorId, SystemRoles.QuestionAdmin))
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            // act.
            await _db.Solutions
            .Where(x => x.Id == id)
            .UpdateAsync(s => new Solution {
                State = SolutionState.Queuing
            });

            await _db.SolutionLocks
            .Where(x => x.SolutionId == id)
            .DeleteAsync();

            var judgeModel = await _db.Solutions
                             .ProjectTo <SolutionPushModel>()
                             .FirstOrDefaultAsync(x => x.Id == id);

            SolutionHub.PushChange(judgeModel.Id, SolutionState.Queuing, 0, 0.0f);
            JudgeHub.Judge(judgeModel);

            return(new EmptyResult());
        }