public async Task <string> GetScoreboard(Activity activity, Match match, CancellationToken cancellationToken)
        {
            var    topOrBottom = match.Groups[1].Value;
            string partition   = "defaultpartition";

            if (MessageLogic.ThingsSlopPhrases.Contains(match.Groups[3].Value))
            {
                partition = "msteams_entity";
            }
            else if (MessageLogic.UsersSlopPhrases.Contains(match.Groups[3].Value))
            {
                partition = "msteams_user";
            }

            ScoreboardModel response = await _db.ExecuteStoredProcedureAsync($"/{_db.GetCollectionUri()}/sprocs/scoreboard", partition, cancellationToken, (topOrBottom == "bottom").ToString().ToLower());

            var sb = new StringBuilder();

            foreach (KarmaModel karma in response.Feed)
            {
                sb.AppendFormat("{0}={1},\n\n ", karma.Entity, karma.Score);
            }

            return(sb.ToString().TrimEnd(',', ' '));
        }
Esempio n. 2
0
 public GymStandingViewModel(
     ScoreboardModel scoreboard,
     ILookup <int, TeamMemberModel> teamMembers)
     : base(scoreboard, true, false)
 {
     TeamMembers = teamMembers;
 }
Esempio n. 3
0
        public ActionResult Stats()
        {
            ViewBag.Message = "A page to contain stats";

            //grab the data
            List <ScoreboardModel> scoreboard = new List <ScoreboardModel>();

            PokerViewModel          viewModel = _pokerService.GetPokerData();
            List <Data.PokerResult> results   = _pokerService.GetResults();
            List <Data.PokerMatch>  matches   = _pokerService.GetMatches();


            //loop through data and map it to model
            foreach (var user in viewModel.Users)
            {
                int totalIncoming  = 0;
                int totalOutgoings = 0;
                int totalWins      = 0;
                var userResults    = results.Where(x => x.PokerUserId == user.Id).ToList();

                foreach (var result in userResults)
                {
                    var currentMatch = matches.Where(x => x.Id == result.PokerMatchId).FirstOrDefault();
                    var matchResults = results.Where(x => x.PokerMatchId == currentMatch.Id);
                    totalOutgoings += currentMatch.BuyIn;

                    //if this user won
                    if (result.Placing == (int)Enums.Placing.First)
                    {
                        totalWins     += 1;
                        totalIncoming += (currentMatch.BuyIn * matchResults.Count());
                        if (!currentMatch.IsWinnerTakesAll)
                        {
                            //second place gets money back
                            totalIncoming -= currentMatch.BuyIn;
                        }
                    }
                }

                ScoreboardModel userScore = new ScoreboardModel();
                userScore.Name           = user.Name;
                userScore.GamesPlayed    = userResults.Count;
                userScore.TotalWins      = totalWins;
                userScore.TotalIncomings = totalIncoming;
                userScore.TotalOutgoings = totalOutgoings;
                userScore.Profit         = totalIncoming - totalOutgoings;
                userScore.TotalLosses    = userResults.Count - totalWins;
                userScore.WinPercentage  = Math.Round((totalWins * 100.0) / userResults.Count);

                scoreboard.Add(userScore);
            }

            viewModel.Scoreboard = scoreboard;

            return(View(viewModel));
        }
Esempio n. 4
0
 public TinyBoard(
     ScoreboardModel scb,
     int teamid,
     Category category,
     Affiliation affiliation)
     : base(scb)
 {
     _row         = scb.Data[teamid];
     _category    = category;
     _affiliation = affiliation;
 }
        public List <Data.PokerMatch> GetScoreboardData()
        {
            ScoreboardModel scoreboard = new ScoreboardModel();

            using (var db = new EFContext())
            {
                var data = from matches in db.PokerMatches
                           join results in db.PokerResults on matches.Id equals results.PokerMatchId
                           join users in db.PokerUsers on results.PokerUserId equals users.Id
                           select matches;

                return(data.ToList());
            };
        }
Esempio n. 6
0
 public ActionResult GetNewScore(ScoreboardModel model)
 {
     try
     {
         ActionType action;
         if (!Enum.TryParse(model.scoreAction, out action))
         {
             throw new Exception("Entered action is not valid.");
         }
         scoreService.GetScoreByAction(model, action);
         return(View("CurrentScoreboared", model));
     }
     catch (Exception ex)
     {
         return(View("Feedback", ex.Message as object));
     }
 }
Esempio n. 7
0
        public TeamHomeViewModel(
            ScoreboardModel scb,
            int teamid,
            IReadOnlyList <Clarification> clars,
            IReadOnlyList <SubmissionViewModel> submits)
            : base(scb)
        {
            var row = scb.Data[teamid];

            RankCache      = row.RankCache;
            ScoreCache     = row.ScoreCache;
            TeamId         = row.TeamId;
            TeamName       = row.TeamName;
            TeamLocation   = row.TeamLocation;
            Affiliation    = scb.Affiliations[row.AffiliationId];
            Category       = scb.Categories[row.CategoryId];
            Clarifications = clars;
            Submissions    = submits;
        }
Esempio n. 8
0
        public static void OnScoreboardUpdate(Object unused)
        {
            List <ScoreboardModel> AllPlayer = new List <ScoreboardModel>();

            foreach (PlayerModel player in Alt.GetAllPlayers())
            {
                TimeSpan PlayTimeSpan       = TimeSpan.FromMinutes(player._Playtime);
                string   NormalizedPlaytime = string.Format("{0:00}:{1:00}", (int)PlayTimeSpan.TotalHours, PlayTimeSpan.Minutes);
                if (player._LoggedIn)
                {
                    ScoreboardModel cplayerModel = new ScoreboardModel
                    {
                        Name     = player.GetVnXName(),
                        Kills    = player._Kills.ToString(),
                        Tode     = player._Deaths.ToString(),
                        Playtime = NormalizedPlaytime,
                        Ping     = player.Ping.ToString(),
                        Streaks  = player._Level.ToString()
                    };
                    AllPlayer.Add(cplayerModel);
                }
                else
                {
                    ScoreboardModel cplayerModel = new ScoreboardModel
                    {
                        Name     = player.Name,
                        Kills    = "-",
                        Tode     = "-",
                        Playtime = "Connecting...",
                        Ping     = "-",
                        Streaks  = "-"
                    };
                    AllPlayer.Add(cplayerModel);
                }
            }
            foreach (PlayerModel player in Alt.GetAllPlayers())
            {
                player.Emit("Scoreboard:Update", JsonConvert.SerializeObject(AllPlayer));
            }
        }
Esempio n. 9
0
        public JuryViewTeamModel(
            Team team,
            Category category,
            Affiliation affiliation,
            IReadOnlyList <TeamMemberModel> members,
            IReadOnlyList <Solution> solutions,
            ScoreboardModel scoreboard)
        {
            Solutions    = solutions;
            Category     = category;
            Affiliation  = affiliation;
            Members      = members;
            Status       = team.Status;
            TeamId       = team.TeamId;
            TeamName     = team.TeamName;
            TeamLocation = team.Location;

            if (scoreboard.Data.ContainsKey(TeamId))
            {
                Board = new TinyBoard(scoreboard, TeamId, category, affiliation);
            }
        }
Esempio n. 10
0
        public ActionResult Index()
        {
            var viewModel = new ScoreboardModel();

            return(View(viewModel));
        }
Esempio n. 11
0
            public async Task <JobStatus> ExecuteAsync(string arguments, Job job, ILogger logger)
            {
                var args    = arguments.AsJson <Models.ScoreboardArguments>();
                var context = await _factory.CreateAsync(args.ContestId, _serviceProvider, true);

                if (context == null)
                {
                    logger.LogError("Unknown contest ID specified.");
                    return(JobStatus.Failed);
                }

                var contest = context.Contest;

                if (!contest.StartTime.HasValue ||
                    contest.RankingStrategy == CcsDefaults.RuleCodeforces ||
                    contest.Feature == CcsDefaults.KindProblemset)
                {
                    logger.LogError("Export constraint failed.");
                    return(JobStatus.Failed);
                }

                logger.LogInformation("Calculating scoreboard...");

                DateTimeOffset?endTime = args.IncludeUpsolving
                    ? DateTimeOffset.Now
                    : (contest.StartTime + contest.EndTime);

                var raw = await RankingSolver.Select(contest)
                          .RefreshCache(
                    _scoreboard,
                    new Events.ScoreboardRefreshEvent(context, endTime));

                var rankCaches  = raw.RankCache.ToDictionary(r => r.TeamId);
                var scoreCaches = raw.ScoreCache.ToLookup(r => r.TeamId);
                var teams1      = await((ITeamContext)context).GetScoreboardRowsAsync();
                var teams       = teams1.ToDictionary(
                    k => k.TeamId,
                    v => v.With(rankCaches.GetValueOrDefault(v.TeamId), scoreCaches[v.TeamId]));

                logger.LogInformation("Loading other things from database...");

                var affs = await context.ListAffiliationsAsync();

                var orgs = await context.ListCategoriesAsync();

                var probs = await context.ListProblemsAsync();

                var scb = new ScoreboardModel(contest.Id, teams, orgs, affs, probs, contest, RankingSolver.Select(contest));

                var board = new FullBoardViewModel(scb, false)
                {
                    FilteredAffiliations = args.FilteredAffiliations?.ToHashSet(),
                    FilteredCategories   = args.FilteredCategories?.ToHashSet(),
                };

                logger.LogInformation("Data loaded.");

                using var workbook     = OpenXmlScoreboard.Create(board, contest.Name);
                using var memoryStream = new MemoryStream();
                workbook.SaveAs(memoryStream);
                memoryStream.Position = 0;

                await _files.SaveOutputAsync(job, memoryStream);

                logger.LogInformation("Export succeeded.");
                return(JobStatus.Finished);
            }
Esempio n. 12
0
 public void GetScoreboard()
 {
     ScoreboardModel scoreboard = new ScoreboardModel();
 }
 public ScoreboardController()
 {
     view = new ScoreboardView(this);
     model = new ScoreboardModel();
 }