public async Task PushSolutionJudge(int solutionId) { SolutionPushModel pushModel = await _db.Solutions .ProjectTo <SolutionPushModel>() .FirstOrDefaultAsync(x => x.Id == solutionId); JudgeHub.Judge(pushModel); }
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)); }
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()); }