public void TestGetWeeklyPlayerStats() { var wrapper = new Api.ApiWrapper("nfl"); var stats = wrapper.GetWeeklyStatsByPlayer("5479", "2013", 1); }
public void TestFillWeeklyStatsForOffensivePlayers() { var wrapper = new Api.ApiWrapper("nfl"); using (var context = new FantasyContext()) { var players = context.Players.ToList(); var playerStats = context.Stats.ToList(); var noStats = context.NoStats.ToList(); //var years = Enumerable.Range(2001, 13).OrderByDescending(i => i).ToList(); var years = Enumerable.Range(2011, 1).OrderByDescending(i => i).ToList(); var weeks = Enumerable.Range(1, 17).ToList(); var positions = new List <SimplePositionTypes> { SimplePositionTypes.Quarterback, SimplePositionTypes.Runningback, SimplePositionTypes.Receiver, SimplePositionTypes.TightEnd, SimplePositionTypes.Kicker }; var validPlayers = from pl in players join po in positions on pl.PrimaryPosition equals po select pl; foreach (var player in validPlayers) { foreach (var year in years) { foreach (var week in weeks) { var shouldPull = !playerStats.Any(ps => ps.Player.YahooPlayerId == player.YahooPlayerId && ps.Year.Year == year && ps.Week == week) && !noStats.Any(ns => ns.Player == player && ns.Week == week && ns.Year == year); if (!shouldPull) { continue; } var stats = new StatWrapper(); try { stats = wrapper.GetWeeklyStatsByPlayer(player.YahooPlayerId.ToString(), year.ToString(), week); } catch (KeyNotFoundException ex) { var noStat = new NoStats { Player = player, Week = week, Year = year }; context.NoStats.Add(noStat); context.SaveChanges(); continue; } catch { continue; } if (stats.Stats == null) { continue; } if (stats != null) { var simpleStat = new SimpleStats { Player = player, Year = new DateTime(year, 1, 1), Week = week, TeamName = stats.Team ?? "", TeamAbbreviation = stats.TeamAbbr ?? "", Position = player.PrimaryPosition == null ? 0 : player.PrimaryPosition }; foreach (var stat in stats.Stats) { var props = simpleStat.GetType().GetProperties(); foreach (var prop in props) { if (prop.CustomAttributes.Any(p => p.AttributeType == typeof(PlayerMappingAttribute))) { var attr = prop.GetCustomAttributes(typeof(PlayerMappingAttribute), false).FirstOrDefault(); var statId = ((PlayerMappingAttribute)attr).YahooStatId; if (stat.StatDetail.StatId == statId) { if (prop.PropertyType == typeof(int?)) { int nullableValue = 0; int.TryParse(stat.StatDetail.Value, out nullableValue); prop.SetValue(simpleStat, nullableValue); } else { var statValue = Convert.ChangeType(stat.StatDetail.Value, prop.PropertyType); prop.SetValue(simpleStat, statValue); } } } } } context.Stats.Add(simpleStat); context.SaveChanges(); } } } } } }