Ejemplo n.º 1
0
        public IEnumerable <Head2HeadRecord> GetHead2HeadRecords(
            [FromRoute(Name = "player")] string playerName,
            [FromRoute(Name = "season")] string seasonName)
        {
            var player = PlayerHandler.GetPlayerByName(playerName);
            var season = SeasonHandler.GetSeason(seasonName);

            if (player == null || season == null)
            {
                return(new Head2HeadRecord[0]);
            }

            var games = GameHandler
                        .GetGamesByPlayer(playerName, SortOrder.Descending)
                        .FindAll(g => season.IsActive(g.Created));

            var ratings = RatingHandler.GetRatingsByPlayerAndSeason(player, season)
                          .Where(pr => pr.GameId != null)
                          .ToDictionary(pr => pr.GameId);

            return(games
                   .SelectMany(g => g.Scores.Where(gs => gs.Player.Name != playerName))
                   .GroupBy(gs => gs.Player) // group by opponent
                   .Select(g => new Head2HeadRecord
            {
                Opponent = g.Key.Name,
                Wins = g.Count(gs => gs.Loss),                                          // player's wins are losses for opponent
                Losses = g.Count(gs => gs.Win),                                         // player's losses are wins for opponent
                RatingChange = Math.Round(g.Sum(gs => ratings[gs.GameId].RatingChange)) // summing player's rating changes
            })
                   .OrderBy(h2h => h2h.Opponent));
        }
Ejemplo n.º 2
0
        private void btn_ViewDraw_Click(object sender, EventArgs e)
        {
            SeasonHandler.SelectDraw(txt_SeasonName.Text);
            EDSL_Draw drawGUI = new EDSL_Draw(cbo_Division.Text);

            drawGUI.Show();
        }
Ejemplo n.º 3
0
 private void btn_ViewSeasonDates_Click(object sender, EventArgs e)
 {
     season = SeasonHandler.ViewSeasonDates(data_Grid_View_SeasonDates, txt_SeasonName.Text);
     if (season != null)
     {
         btn_SelectDates.Enabled = true;
     }
 }
Ejemplo n.º 4
0
 public IEnumerable <string> GetStartedSeasonsByPlayer([FromRoute(Name = "player")] string playerName)
 {
     return(SeasonHandler
            .GetStartedSeasonsByPlayer(DateTimeOffset.UtcNow, playerName)
            .OrderBy(s => s.StartDate)
            .ThenByDescending(s => s.EndDate)
            .Select(s => s.Name));
 }
Ejemplo n.º 5
0
 public IEnumerable <string> GetStartedSeasons()
 {
     return(SeasonHandler
            .GetStartedSeasons(DateTimeOffset.UtcNow)
            .OrderBy(s => s.StartDate)
            .ThenByDescending(s => s.EndDate)
            .Select(s => s.Name));
 }
Ejemplo n.º 6
0
 private void btn_NewDates_Click(object sender, EventArgs e)
 {
     season = SeasonHandler.GenerateSeasonDates(txt_SeasonName.Text, date_Picker_StartDate.Value,
                                                data_Grid_View_SeasonDates, Convert.ToInt32(num_Rounds.Value));
     if (season != null)
     {
         btn_SelectDates.Enabled = true;
     }
 }
Ejemplo n.º 7
0
        public void RefreshGrid()
        {
            season = DAFunctions.ReadSeason(seasonName);
            SeasonHandler.FillGridd(grid, season);

            grid.Columns[1].Width = 200;
            grid.Controls.Add(dtp);
            dtp.Visible              = false;
            dtp.Format               = DateTimePickerFormat.Long;
            dtp.TextChanged         += new EventHandler(dtp_TextChange);
            grid.Columns[2].Selected = false;
        }
Ejemplo n.º 8
0
 private void btn_CreateDraw_Click(object sender, EventArgs e)
 {
     if (txt_SeasonName.Text == "" || cbo_Division.Text == "")
     {
         MessageBox.Show("Please Select Season & Division to Create a Draw");
     }
     else
     {
         SeasonHandler.CreateDivisionDraw(txt_SeasonName.Text, cbo_Division.Text);
         MessageBox.Show("Season Draw Created for " + cbo_Division.Text);
     }
 }
Ejemplo n.º 9
0
        static bool AddSeasonIfNotExists(string name, DateTimeOffset startDate, DateTimeOffset endDate)
        {
            if (SeasonHandler.GetSeason(name) != null)
            {
                Console.WriteLine($"Season {name} already exists");
                return(false);
            }

            Console.WriteLine($"Add {name} season from {startDate} to {endDate}");
            SeasonHandler.AddSeason(new Season
            {
                Name      = name,
                StartDate = startDate,
                EndDate   = endDate
            });

            return(true);
        }
Ejemplo n.º 10
0
        public static void CalculateNewRatings(Game game)
        {
            // fetch players from database
            var winningPlayer = PlayerHandler.GetPlayerById(game.WinningGameScore.PlayerId);
            var losingPlayer  = PlayerHandler.GetPlayerById(game.LosingGameScore.PlayerId);

            // fetch active seasons
            var activeSeasons = SeasonHandler.GetActiveSeasons(game.Created);

            foreach (var season in activeSeasons)
            {
                var winningPlayerSeason = GetOrCreatePlayerSeason(winningPlayer, season);
                var losingPlayerSeason  = GetOrCreatePlayerSeason(losingPlayer, season);

                // convert to Elo.Lib.Players and calculate new ratings
                var winner = winningPlayerSeason.ToEloLibPlayer();
                var loser  = losingPlayerSeason.ToEloLibPlayer();
                winner.WinsAgainst(loser);

                // update current ratings
                winningPlayerSeason.RatingChange = winner.Rating - winningPlayerSeason.Rating;
                winningPlayerSeason.Rating       = winner.Rating;
                ++winningPlayerSeason.Wins;
                winningPlayerSeason.CurrentStreak = Math.Max(winningPlayerSeason.CurrentStreak + 1, 1);

                losingPlayerSeason.RatingChange = loser.Rating - losingPlayerSeason.Rating;
                losingPlayerSeason.Rating       = loser.Rating;
                ++losingPlayerSeason.Losses;
                losingPlayerSeason.CurrentStreak = Math.Min(losingPlayerSeason.CurrentStreak - 1, -1);

                // add new ratings
                var winningPlayerRating = winningPlayerSeason.CreatePlayerRating(game.Id);
                var losingPlayerRating  = losingPlayerSeason.CreatePlayerRating(game.Id);

                // update database
                PlayerHandler.UpdatePlayerSeasons(winningPlayerSeason, losingPlayerSeason);
                RatingHandler.AddRatings(winningPlayerRating, losingPlayerRating);
            }
        }
Ejemplo n.º 11
0
 private void btn_SaveSeasonDates_Click(object sender, EventArgs e)
 {
     SeasonHandler.SaveSeasonDates();
     MessageBox.Show("Season Dates have been Saved");
 }
Ejemplo n.º 12
0
        private void GetDraw()
        {
            DAFunctions.GetDraw(SeasonHandler.SelectDraw(cbo_SelectSeason.Text));

            rounds = DAFunctions.draw;
        }