/// <summary> /// Updates the tab viewing the year-by-year overview of the player's stats. /// </summary> private void updateYearlyReport() { var psrList = new List<PlayerStatsRow>(); var psCareer = new PlayerStats(new Player(_psr.ID, _psr.TeamF, _psr.LastName, _psr.FirstName, _psr.Position1, _psr.Position2)); string qr = "SELECT * FROM PastPlayerStats WHERE PlayerID = " + _psr.ID + " ORDER BY CAST(\"SOrder\" AS INTEGER)"; DataTable dt = _db.GetDataTable(qr); foreach (DataRow dr in dt.Rows) { var ps = new PlayerStats(); bool isPlayoff = ParseCell.GetBoolean(dr, "isPlayoff"); ps.GetStatsFromDataRow(dr, isPlayoff); Dictionary<string, double> tempMetrics = isPlayoff ? ps.PlMetrics : ps.Metrics; PlayerStats.CalculateRates(isPlayoff ? ps.PlTotals : ps.Totals, ref tempMetrics); string type = isPlayoff ? "Playoffs " + ParseCell.GetString(dr, "SeasonName") : "Season " + ParseCell.GetString(dr, "SeasonName"); var curPSR = new PlayerStatsRow(ps, type, isPlayoff) { TeamFDisplay = ParseCell.GetString(dr, "TeamFin"), TeamSDisplay = ParseCell.GetString(dr, "TeamSta") }; psrList.Add(curPSR); psCareer.AddPlayerStats(ps); } for (int i = 1; i <= _maxSeason; i++) { var displayNames = new Dictionary<int, string>(); SQLiteIO.GetSeasonDisplayNames(MainWindow.CurrentDB, i, ref displayNames); string pT = "Players"; if (i != _maxSeason) { pT += "S" + i; } string q = "select * from " + pT + " where ID = " + _selectedPlayerID; DataTable res = _db.GetDataTable(q); if (res.Rows.Count == 1) { var ps = new PlayerStats(res.Rows[0], MainWindow.TST); PlayerStats.CalculateRates(ps.Totals, ref ps.Metrics); var psr2 = new PlayerStatsRow(ps, "Season " + MainWindow.GetSeasonName(i)); psr2.TeamFDisplay = Misc.GetDisplayName(displayNames, psr2.TeamF); psr2.TeamSDisplay = Misc.GetDisplayName(displayNames, psr2.TeamS); psrList.Add(psr2); psCareer.AddPlayerStats(ps); } pT = "PlayoffPlayers"; if (i != _maxSeason) { pT += "S" + i; } q = "select * from " + pT + " where ID = " + _selectedPlayerID; res = _db.GetDataTable(q); if (res.Rows.Count == 1) { var ps = new PlayerStats(res.Rows[0], MainWindow.TST, true); if (ps.PlTotals[PAbbr.GP] > 0) { PlayerStats.CalculateRates(ps.PlTotals, ref ps.PlMetrics); var psr2 = new PlayerStatsRow(ps, "Playoffs " + MainWindow.GetSeasonName(i), true); psr2.TeamFDisplay = Misc.GetDisplayName(displayNames, psr2.TeamF); psr2.TeamSDisplay = Misc.GetDisplayName(displayNames, psr2.TeamS); psrList.Add(psr2); psCareer.AddPlayerStats(ps, true); } } } PlayerStats.CalculateRates(psCareer.Totals, ref psCareer.Metrics); psrList.Add(new PlayerStatsRow(psCareer, "Career", "Career")); var psrListCollection = new ListCollectionView(psrList); Debug.Assert(psrListCollection.GroupDescriptions != null, "psrListCollection.GroupDescriptions != null"); psrListCollection.GroupDescriptions.Add(new PropertyGroupDescription("Group")); dgvYearly.ItemsSource = psrListCollection; }