public async Task <IActionResult> Updates( [FromServices] IJudgehostStore jh, [FromServices] IInternalErrorStore ie) { var judgehosts = await jh.GetJudgeStatusAsync(); var internal_error = await ie.GetJudgeStatusAsync(); return(Json(new { judgehosts, internal_error })); }
public InternalErrorsController(IInternalErrorStore store) => Store = store;
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); }