public static ScoreBoardDto ToScoreBoardDto( this IMapper mapper, ScoreBoardModel scoreBoardModel) { var scoreBoardDto = mapper.Map < ScoreBoardModel, ScoreBoardDto >(scoreBoardModel); return(scoreBoardDto); }
public void SetScoreboard(ScoreBoardModel sb) { int n = sb.rows.FirstOrDefault()?.problems?.Length ?? 0; var solvedtot = 0; var solved = new int[n]; var inc = new int[n]; var pend = new int[n]; var fb = new int[n]; for (int i = 0; i < n; i++) { fb[i] = int.MaxValue; } foreach (var row in sb.rows) { for (int i = 0; i < n; i++) { var prob = row.problems[i]; if (prob.solved) { solvedtot++; solved[i]++; inc[i]--; fb[i] = Math.Min(fb[i], prob.time); } inc[i] += prob.num_judged; pend[i] += prob.num_pending; } } ScoreBoard = sb; SolvedTotal = solvedtot; Solved = solved; Incorrect = inc; Pending = pend; FirstSolve = fb; LastUpdate = DateTime.Now; }
public async Task StartAsync() { ScoreBoardModel sb = null; ContestModel ct = null; if (File.Exists(_name + ".scoreboard.json")) { var content = await File.ReadAllTextAsync(_name + ".scoreboard.json"); sb = Parse <ScoreBoardModel>(content); Logger.LogInformation(_name + ".scoreboard.json cache loaded from disk."); } if (File.Exists(_name + ".organizations.json")) { var content = await File.ReadAllTextAsync(_name + ".organizations.json"); SetOrganizations(Parse <List <AffiliationModel> >(content) ?? new List <AffiliationModel>()); Logger.LogInformation(_name + ".organizations.json cache loaded from disk."); } if (File.Exists(_name + ".teams.json")) { var content = await File.ReadAllTextAsync(_name + ".teams.json"); SetTeams(Parse <List <TeamModel> >(content) ?? new List <TeamModel>()); Logger.LogInformation(_name + ".teams.json cache loaded from disk."); } if (File.Exists(_name + ".problems.json")) { var content = await File.ReadAllTextAsync(_name + ".problems.json"); Problems = Parse <List <ProblemModel> >(content); Logger.LogInformation(_name + ".problems.json cache loaded from disk."); } if (File.Exists(_name + ".groups.json")) { var content = await File.ReadAllTextAsync(_name + ".groups.json"); SetGroups(Parse <List <Group> >(content)); Logger.LogInformation(_name + ".groups.json cache loaded from disk."); } if (File.Exists(_name + ".contest.json")) { var content = await File.ReadAllTextAsync(_name + ".contest.json"); ct = Parse <ContestModel>(content); Logger.LogInformation(_name + ".contest.json cache loaded from disk."); } sb ??= new ScoreBoardModel { contest_time = "", event_id = "", rows = new List <Row>(), state = new State(), time = DateTime.UnixEpoch }; SetScoreboard(sb); Problems ??= new List <ProblemModel>(); ct ??= new ContestModel { formal_name = "Demo contest", penalty_time = 20, start_time = DateTime.Now.AddDays(-1), end_time = DateTime.Now.AddDays(1), duration = "48:00:00.000", scoreboard_freeze_duration = "1:00:00.000", id = "2", external_id = "demo", name = "Demo contest", shortname = "demo", }; SetContest(ct); }
public IActionResult Scoreboard([FromBody] ScoreBoardModel model) { DataService.Instance.SetScoreboard(model); return(Ok()); }
public IActionResult Scoreboard([FromBody] ScoreBoardModel model) { HttpContext.Holder().SetScoreboard(model); return(Ok()); }