public async Task <IActionResult> Submission(int cid, int sid, [FromServices] ISubmissionStore submissions) { int teamid = Team.TeamId; var models = await submissions.ListWithJudgingAsync( predicate : s => s.ContestId == cid && s.SubmissionId == sid, selector : (s, j) => new SubmissionViewModel { SubmissionId = s.SubmissionId, Grade = j.TotalScore ?? 0, Language = Languages[s.Language], Time = s.Time, Verdict = j.Status, Problem = Problems.Find(s.ProblemId), CompilerOutput = j.CompileError, SourceCode = s.SourceCode, }); var model = models.SingleOrDefault(); if (model == null) { return(NotFound()); } return(Window(model)); }
public async Task <IActionResult> Home(int cid, [FromServices] ISubmissionStore submits, [FromServices] IClarificationStore clars) { int teamid = Team.TeamId; var board = await FindScoreboardAsync(teamid); ViewBag.Clarifications = await clars.ListAsync(cid, c => (c.Sender == null && c.Recipient == null) || c.Recipient == teamid || c.Sender == teamid); ViewBag.Submissions = await submits.ListWithJudgingAsync( predicate : s => s.ContestId == cid && s.Author == teamid, selector : (s, j) => new SubmissionViewModel { Grade = j.TotalScore ?? 0, Language = Languages[s.Language], SubmissionId = s.SubmissionId, Time = s.Time, Verdict = j.Status, Problem = Problems.Find(s.ProblemId), }); return(View(board)); }
public async Task <IActionResult> ProblemView(string prob, [FromServices] ISubmissionStore submissions, [FromServices] IProblemStore problems) { if (TooEarly && !ViewData.ContainsKey("IsJury")) { return(NotFound()); } var problem = Problems.Find(prob); if (problem == null) { return(NotFound()); } ViewBag.CurrentProblem = problem; var fileInfo = problems.GetFile(problem, "view.html"); var view = await fileInfo.ReadAsync(); if (string.IsNullOrEmpty(view)) { return(NotFound()); } ViewData["Content"] = view; int pid = problem.ProblemId; int tid = Team?.TeamId ?? -1000; int cid = Contest.ContestId; var model = await submissions.ListWithJudgingAsync( s => s.ProblemId == pid && s.Author == tid && s.ContestId == cid); return(View(model)); }
public async Task <IActionResult> Detail(string langid, [FromServices] ISubmissionStore submissions) { var lang = await Store.FindAsync(langid); if (lang is null) { return(NotFound()); } ViewBag.Language = lang; ViewBag.Submissions = await submissions .ListWithJudgingAsync(s => s.Language == langid, limits : 100); return(View()); }
public async Task <IActionResult> Submission(int cid, int sid, [FromServices] ISubmissionStore submissions, [FromServices] IJudgingStore judgings) { if (Team == null) { return(Forbid()); } var models = await submissions.ListWithJudgingAsync( predicate : s => s.SubmissionId == sid && s.ContestId == cid, selector : (s, j) => new SubmissionViewModel { SubmissionId = s.SubmissionId, Verdict = j.Status, Time = s.Time, Problem = Problems.Find(s.ProblemId), CompilerOutput = j.CompileError, Language = Languages[s.Language], SourceCode = s.SourceCode, Grade = j.TotalScore ?? 0, TeamId = s.Author, JudgingId = j.JudgingId, ExecuteMemory = j.ExecuteMemory, ExecuteTime = j.ExecuteTime, }); var model = models.SingleOrDefault(); if (model == null) { return(NotFound()); } Dictionary <int, (int ac, int tot)> substat = ViewBag.TeamStatistics; model.TeamName = (await FindTeamByIdAsync(model.TeamId)).TeamName; if (model.TeamId != Team.TeamId) { if (Contest.StatusAvaliable == 2) { if (substat.GetValueOrDefault(model.Problem.ProblemId).ac == 0) { return(Forbid()); } } else if (Contest.StatusAvaliable == 0) { return(Forbid()); } } var tcs = await judgings.GetDetailsAsync(model.Problem.ProblemId, model.JudgingId); if (!model.Problem.Shared) { tcs = tcs.Where(t => !t.Item2.IsSecret); } ViewBag.Runs = tcs; return(Window(model)); }