public static void UpdateRosterAnalysisPlayerList(League league, string myTeam, ListView lv, Func <IPlayer, bool> playerPassesFilter) { LeagueConstants lc = LeagueConstants.For(league.FantasyLeague); List <IRoster> baselineTeams = RosterAnalysis.AssignPlayersToTeams(league, p => p.FantasyTeam); RosterAnalysis.AssignStatsAndPoints(baselineTeams, lc.ScoringStatExtractors); IRoster baselineTeam = baselineTeams.Find(t => t.TeamName == myTeam); if (baselineTeam == null) { return; } lv.BeginUpdate(); lv.Items.Clear(); League l = league.Clone(); foreach (IPlayer p in l.AllPlayers) { if (!string.IsNullOrEmpty(p.FantasyTeam) || !playerPassesFilter(p)) { continue; } p.FantasyTeam = baselineTeam.TeamName; List <IRoster> teams = RosterAnalysis.AssignPlayersToTeams(l, pb => pb.FantasyTeam); RosterAnalysis.AssignStatsAndPoints(teams, lc.ScoringStatExtractors); IRoster team = teams.Find(t => t.TeamName == baselineTeam.TeamName); ListViewItem item = new ListViewItem(p.Name); item.Tag = p; item.SubItems.Add(string.Empty); // total delta float totalDelta = 0f; foreach (IStatExtractor extractor in lc.ScoringStatExtractors) { float delta = team.Points[extractor.StatName] - baselineTeam.Points[extractor.StatName]; totalDelta += delta; item.SubItems.Add(delta.ToString()); } item.SubItems[1].Text = totalDelta.ToString(); lv.Items.Add(item); p.FantasyTeam = string.Empty; } lv.EndUpdate(); }
public StatCenter(League league, Func <IPlayer, string> extractTeam) { InitializeComponent(); this.league = league; LeagueConstants lc = LeagueConstants.For(league.FantasyLeague); List <IRoster> teams = RosterAnalysis.AssignPlayersToTeams(league, extractTeam); RosterAnalysis.AssignStatsAndPoints(teams, lc.ScoringStatExtractors); this.lvStats.BeginUpdate(); this.lvPoints.BeginUpdate(); int columnWidth = this.lvPoints.Width / (lc.ScoringStatExtractors.Count + 2); this.AddColumns(this.lvStats, lc.ScoringStatExtractors, columnWidth); this.AddColumns(this.lvPoints, lc.ScoringStatExtractors, columnWidth); this.lvPoints.Columns.Add("Total Points", columnWidth); foreach (IRoster team in teams) { float totalPoints = 0; ListViewItem statsItem = new ListViewItem(team.TeamName); ListViewItem pointsItem = new ListViewItem(team.TeamName); statsItem.Tag = team; pointsItem.Tag = team; foreach (IStatExtractor extractor in lc.ScoringStatExtractors) { statsItem.SubItems.Add(team.Stats.ContainsKey(extractor.StatName) ? team.Stats[extractor.StatName].ToString() : "N/A"); pointsItem.SubItems.Add(team.Points.ContainsKey(extractor.StatName) ? team.Points[extractor.StatName].ToString() : "N/A"); totalPoints += team.Points[extractor.StatName]; } pointsItem.SubItems.Add(totalPoints.ToString()); this.lvStats.Items.Add(statsItem); this.lvPoints.Items.Add(pointsItem); } this.lvStats.EndUpdate(); this.lvPoints.EndUpdate(); }
public static void UpdatePointsPlayerList(League league, ListView lv, Func <IPlayer, bool> playerPassesFilter) { List <IRoster> teams = new List <IRoster>(); foreach (IPlayer player in league.AllPlayers) { if (string.IsNullOrEmpty(player.FantasyTeam) && playerPassesFilter(player)) { Roster r = new Roster(player.Name); r.AllPlayers.Add(player); teams.Add(r); } } LeagueConstants lc = LeagueConstants.For(league.FantasyLeague); RosterAnalysis.AssignStatsAndPoints(teams, lc.ScoringStatExtractors); lv.BeginUpdate(); lv.Items.Clear(); foreach (IRoster team in teams) { float totalPoints = 0; ListViewItem item = new ListViewItem(team.TeamName); item.Tag = team; item.SubItems.Add(string.Empty); // total points foreach (IStatExtractor extractor in lc.ScoringStatExtractors) { item.SubItems.Add(team.Points[extractor.StatName].ToString()); totalPoints += team.Points[extractor.StatName]; } item.SubItems[1].Text = totalPoints.ToString(); lv.Items.Add(item); } lv.EndUpdate(); }