public async Task <IActionResult> View(int pid, [FromServices] IProblemStore probs) { var prob = await Store.FindAsync(pid); if (prob == null || prob.AllowSubmit == false) { return(NotFound()); } var fileInfo = probs.GetFile(prob, "view.html"); var view = await fileInfo.ReadAsync(); if (string.IsNullOrEmpty(view)) { StatusMessage = "Error no descriptions avaliable now."; return(RedirectToAction(nameof(List))); } ViewData["Content"] = view; ViewData["Id"] = pid; ViewData["Source"] = prob.Source; ViewData["Tag"] = prob.TagName; ViewData["ReadId"] = prob.ProblemId; var uid = int.Parse(User.GetUserId() ?? "-100"); return(View()); }
public async Task <IActionResult> Problemset(string prob, [FromServices] IProblemStore probs) { if (TooEarly && !ViewData.ContainsKey("IsJury")) { return(NotFound()); } var problem = Problems.Find(prob); if (problem == null) { return(NotFound()); } var viewFile = probs.GetFile(problem, "view.html"); var view = await viewFile.ReadAsync(); if (string.IsNullOrEmpty(view)) { return(NotFound()); } ViewData["Content"] = view; return(View("ProblemView")); }
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 KattisExportProvider( IProblemStore store, ISubmissionStore submissions, IExecutableStore execs, ITestcaseStore tcs, IMarkdownService markdown, IStaticFileRepository io2) { Store = store; StaticFile = io2; Markdown = markdown; Submissions = submissions; Executables = execs; Testcases = tcs; }
public DataImportProvider( IProblemStore store, ILanguageStore languages, IExecutableStore executables, ISubmissionStore submissions, ILogger <DataImportProvider> logger, IStaticFileRepository io2) { Logger = logger; Store = store; Languages = languages; Executables = executables; Submissions = submissions; LogBuffer = new StringBuilder(); StaticFiles = io2; }
public KattisImportProvider( IProblemStore store, ILanguageStore languages, IExecutableStore executables, ISubmissionStore submissions, ILogger <KattisImportProvider> logger, IMarkdownService markdownService, IStaticFileRepository io2) { Logger = logger; Store = store; Languages = languages; Executables = executables; Submissions = submissions; LogBuffer = new StringBuilder(); Markdown = markdownService; StaticFiles = io2; }
public ProblemsetStore(DbContextAccessor context, IProblemStore problem) { Context = context; Parent = problem; }
public static IFileInfo GetFile(this IProblemStore that, ContestProblem problem, string fileName) => that.GetFile(problem.ProblemId, fileName);
public async Task <ActionResult <int> > InternalError( [FromForm] InternalErrorModel model, [FromServices] IInternalErrorStore store, [FromServices] ILanguageStore langs, [FromServices] IProblemStore probs) { if (!ModelState.IsValid) { return(BadRequest()); } var toDisable = model.disabled.AsJson <InternalErrorDisable>(); var kind = toDisable.kind; var ie = await store.CreateAsync( new InternalError { JudgehostLog = model.judgehostlog, JudgingId = model.judgingid, ContestId = model.cid, Description = model.description, Disabled = model.disabled, Status = InternalErrorStatus.Open, Time = DateTimeOffset.Now, }); if (kind == "language") { var langid = toDisable.langid; await langs.ToggleJudgeAsync(langid, false); Telemetry.TrackDependency( dependencyTypeName: "Language", dependencyName: langid, data: model.description, startTime: DateTimeOffset.Now, duration: TimeSpan.Zero, success: false); } else if (kind == "judgehost") { var hostname = toDisable.hostname; await Judgehosts.ToggleAsync(hostname, false); Telemetry.TrackDependency( dependencyTypeName: "JudgeHost", dependencyName: hostname, data: model.description, startTime: DateTimeOffset.Now, duration: TimeSpan.Zero, success: false); } else if (kind == "problem") { var probid = toDisable.probid.Value; await probs.ToggleJudgeAsync(probid, false); Telemetry.TrackDependency( dependencyTypeName: "Problem", dependencyName: $"p{probid}", data: model.description, startTime: DateTimeOffset.Now, duration: TimeSpan.Zero, success: false); } else { Telemetry.TrackDependency( dependencyTypeName: "Unresolved", dependencyName: kind, data: model.description, startTime: DateTimeOffset.Now, duration: TimeSpan.Zero, success: false); } if (model.judgingid.HasValue) { var(j, pid, cid, uid, time) = await Judgings.FindAsync(model.judgingid.Value); await ReturnToQueue(j, cid, pid, uid, time); } await HttpContext.AuditAsync("added", $"{ie.ErrorId}", $"for {kind}"); return(ie.ErrorId); }
public ProblemsController(UserManager <User> um, IProblemStore db) { UserManager = um; Store = db; }