static void LoadTrainerAndJockeyStats(StarterCollection sc) { var accumulators = new Dictionary<string, StatisticDataAccumulator>(); foreach (var starter in sc) { string key = MakeTrainerJockeyKey(starter.Trainer, starter.Jockey); if(!accumulators.ContainsKey(key)) { accumulators.Add(key, new StatisticDataAccumulator()); } accumulators[key].Add(starter); } foreach (var key in accumulators.Keys) { if(_globalStatsPerTrainerAndJockey.ContainsKey(key)) { _globalStatsPerTrainerAndJockey.Remove(key); } _globalStatsPerTrainerAndJockey.Add(key, FactorStatistic.Make(accumulators[key])); } }
static void LoadJockeyStatsFromDb(string jockeyName) { var starters = new StarterCollection(); starters.LoadStartersForJockey(jockeyName); var globalStats = new StatisticDataAccumulator(); globalStats.Initialize(); starters.ForEach(globalStats.Add); if (_globalStatsPerJockey.ContainsKey(jockeyName)) { _globalStatsPerJockey.Remove(jockeyName); } _globalStatsPerJockey.Add(jockeyName, FactorStatistic.Make(globalStats)); }
void UpdateDisplay() { this.Text = string.Format("Trainer: {0} Factor {1}", _horse.CorrespondingBrisHorse.TrainersFullName, _selectedFactorStatistic.Name); _startersForSpecifiedBitMask = StarterCollection.Make(_allStarters, _selectedFactorStatistic.BitMask); LoadGrid(); _tbTrainerName.Text = _horse.CorrespondingBrisHorse.TrainersFullName; _tbFactorName.Text = _selectedFactorStatistic.Name; _tbMCLWinPercent.Text = string.Format("{0:0.00}", GetWinPercent(RaceType.MCL | RaceType.DIRT | RaceType.TURF)); _tbMSWWinPercent.Text = string.Format("{0:0.00}", GetWinPercent(RaceType.MSW | RaceType.DIRT | RaceType.TURF)); _tbStakesWinPercent.Text = string.Format("{0:0.00}", GetWinPercent(RaceType.STAKES | RaceType.DIRT | RaceType.TURF)); _tbALWWinPercent.Text = string.Format("{0:0.00}", GetWinPercent(RaceType.ALW | RaceType.DIRT | RaceType.TURF)); _tbCLMWinPercent.Text = string.Format("{0:0.00}", GetWinPercent(RaceType.CLM | RaceType.DIRT | RaceType.TURF)); _tbDirtWinPercent.Text = string.Format("{0:0.00}", GetWinPercent(RaceType.MCL | RaceType.MSW | RaceType.STAKES | RaceType.ALW | RaceType.CLM | RaceType.DIRT)); _tbTurfWinPercent.Text = string.Format("{0:0.00}", GetWinPercent(RaceType.MCL | RaceType.MSW | RaceType.STAKES | RaceType.ALW | RaceType.CLM | RaceType.TURF)); LoadSummariesGrid(); }
static void LoadTrainerStatsFromDb(string trainer) { var starters = new StarterCollection(); starters.LoadStartersForTrainer(trainer); LoadTrainerAndJockeyStats(starters); var globalStats = new StatisticDataAccumulator(); globalStats.Initialize(); starters.ForEach(globalStats.Add); if (_globalStatsPerTrainer.ContainsKey(trainer)) { _globalStatsPerTrainer.Remove(trainer); } _globalStatsPerTrainer.Add(trainer, FactorStatistic.Make(globalStats)); StatisticDataAccumulatorCollection.Singleton.ToList().ForEach(acc=>acc.Initialize()); foreach (var starter in starters) { foreach (var accumulator in StatisticDataAccumulatorCollection.Singleton.Where(accumulator => (starter.FactorsFlag & accumulator.BitMask) != 0)) { accumulator.Add(starter); } } _factorStatsPerTrainer.Add(trainer, StatisticDataAccumulatorCollection.Singleton.ToDictionary(accumulator => accumulator.BitMask, accumulator => FactorStatistic.Make(accumulator))); }
private void FactorStatsPerTrainerForm_Load(object sender, EventArgs e) { _allStarters = StarterCollection.Make(_horse.CorrespondingBrisHorse.TrainersFullName, _selectedFactorStatistic.BitMask); UpdateFactorStatsGrid(); UpdateDisplay(); }