private NFLStatsUpdate(IHubConnectionContext<dynamic> clients) { Clients = clients; _playersStats.Clear(); //try an isLive bool, pull currentweek schedule using (var db = new FF()) { var currentWeekSchedule = db.NFLGame.Where(g => Convert.ToInt16(g.Week) == currentWeekServ && g.Year == currentYear); //Compare DateTime t1,DateTime t2, Less than zero t1 is earlier than t2.Zero t1 is the same as t2.Greater than zero t1 is later than t2. foreach (var game in currentWeekSchedule) { var UTCNFLgametime = TimeZoneInfo.ConvertTimeToUtc(game.DateEST); if ((DateTime.Compare(DateTime.UtcNow, UTCNFLgametime)) < 0) { } //game earlier than local time else { } //game later } livePlayerList = db.NFLPlayer.ToList(); } foreach (NFLPlayer n in livePlayerList) { //Creating a new StatsYearWeek to track Stats with and connect with NFLPlayer StatsYearWeek s = new StatsYearWeek(); SetSYWToZero(s); //Remember im doing this live not for stupid class demo, so ill need to make statid off of player s.PlayerID = n.id; s.Year = currentYear; //passed in from where? s.Week = currentWeekServ; //passed in from where? s.currentPts = 0; string statID = (s.Year.ToString() + s.Week.ToString() + s.PlayerID).ToString(); //YearWeekPlayerID is StatID s.id = Convert.ToInt32(statID); liveStatsList.Add(s); //list _playersStats.TryAdd(s.id, s); //dict } livePlayerList.Clear(); //empty list //make a list of players that got updated and send to updatePlayer? //livePlayerList.ForEach(player => _players.TryAdd(player.id, player)); r = new ReadJSONDatafromNFL("2015101200_gtd.json", "2015101200"); r2 = new ReadJSONDatafromNFL("2015101108_gtd.json", "2015101108"); /***** * NOTE- For stupid demo I have to null/comment out stats in ReadJSON *****/ r.QuickParseAfterLive(); r2.QuickParseAfterLive(); //if timer needed //_timer = new Timer(UpdatePlayerStats, null, _updateInterval, _updateInterval); }
public ActionResult Scoreboard(int TeamID) { if (CurrentWeek > 13) CurrentWeek = 13; else { using (var dbsetting = new FF()) { var g = dbsetting.Settings.Find(1); CurrentWeek = g.CurrentWeek; } } //FillWeekScoreboard(int TeamID, int? numWeek) var currentWeek = FillWeekScoreboard(TeamID, CurrentWeek); //signalr asp.net tutorial if (currentWeek == null) throw new NullReferenceException("currentWeek is null, which means games arent in the db for that week"); return View(currentWeek); //compiler stop bitching }
//uses PlayersIDS to get List NFLPlayer objects //in-Ienum<int> PlayersID out-List<StatsYearWeek> public List<StatsYearWeek> GetAllStatsFromPlayersID(IEnumerable<int> PlayersID) { List<StatsYearWeek> PlayersOnTeamCol = new List<StatsYearWeek>(); using (var FFContext = new FF()) { foreach (var playerID in PlayersID) { StatsYearWeek st = new StatsYearWeek(); //changed to StatsYearWeek, key changed, need to update to new key //old key- PlayerID, new key- Year+week+playerid int SYWID = ConvertPlayerIDToSYWID(playerID); //ID conversion if (_playersStats.TryGetValue(SYWID, out st)) //from stats dict created in init PlayersOnTeamCol.Add(st); else throw new Exception("PlayeronTeam in DB, not found pulling from statsdict created in init"); } } return PlayersOnTeamCol; }
//Uses TeamController function to getallplayersIDonteam with teamID //In-TeamID using FFTEAMNFLPLAYER Out-ints of NFLPlayersID on teamID public List<int> GetAllPlayersIDOnTeam(int TeamID) { List<int> FindPlayersOnTeam; using (var FFContext = new FF()) { //pulling from NFLPlayerTeam DB, which are not NFLPlayer. var temp = (from p in FFContext.FFTeamNFLPlayer where p.TeamID == TeamID select p.PlayerID); FindPlayersOnTeam = temp.ToList(); } return FindPlayersOnTeam; }
//could do this is GetAllPlayersonTeam but want to split up due to home/away (2teams) easier to debug public int GetAwayTeamIDFromGameID(int GameID) { FFGame currentGame; using (var FFContext = new FF()) { currentGame = FFContext.FFGameDB.Find(GameID); } return (int)currentGame.VisTeamID; }
public void EndWeek() { using (var db = new FF()) { var game = db.FFGameDB.Find(gameID); FFLeague League = db.FFLeagueDB.Find(game.FFLeagueID); //RunLive updates score in ffgamedb var allGamesInCurrWeek = db.FFGameDB.Where(x => x.Week == currentWeekServ).ToList(); foreach (FFGame g in allGamesInCurrWeek) { int homeID; int awayID; FFTeam HomeTeam; FFTeam VisTeam; //pull teams if null if (g.HomeTeam != null) { homeID = (int)g.HomeTeamID; HomeTeam = db.FFTeamDB.Find(g.HomeTeamID); if (g.HScore == null) { g.HScore = 0; } } else throw new Exception("FFGame Hometeam null"); if (g.VisTeam != null) { awayID = (int)g.VisTeamID; VisTeam = db.FFTeamDB.Find(g.VisTeamID); if (g.VScore == null) { g.VScore = 0; } } else throw new Exception("FFGame Visteam null"); //these shouldn't work foreach (NFLPlayer p in g.HomeTeam.Players) { g.HScore += p.currentPts; } foreach (NFLPlayer p in g.VisTeam.Players) { g.VScore += p.currentPts; } db.Entry(HomeTeam).State = System.Data.Entity.EntityState.Unchanged; db.Entry(VisTeam).State = System.Data.Entity.EntityState.Unchanged; //win/loss if (g.HScore > g.VScore) { //HomeTeam Won g.HomeTeam.Win += 1; g.VisTeam.Lose += 1; } else if (g.VScore > g.HScore) { //VisTeam Won g.HomeTeam.Lose += 1; g.VisTeam.Win += 1; } else { //Tie g.HomeTeam.Tie += 1; g.VisTeam.Tie += 1; } g.HomeTeam.FPTotal += (decimal)g.HScore; g.VisTeam.FPTotal += (decimal)g.VScore; //delete temp proj, add currentWeek to db and update db.SaveChanges(); } var sett = db.Settings.Find(1); db.Entry(sett).State = System.Data.Entity.EntityState.Unchanged; sett.CurrentWeek++; currentWeekServ = sett.CurrentWeek; db.SaveChanges(); //Check this dont think need it //Clients.All.OnDisconnected(true); } }
private void tempsavetodb() { using (var db = new FF()) { var game = db.FFGameDB.Find(gameID); db.Entry(game).State = System.Data.Entity.EntityState.Unchanged; decimal total = new decimal(); foreach (var h in _homePlayers) total += h.Value.currentPts; game.HScore = total; total = 0; foreach (var a in _awayPlayers) total += a.Value.currentPts; game.VScore = total; foreach (var n in _playersStats) db.NFLPlayerStats.Add(n.Value); db.SaveChanges(); } }
public void DeserializePlayerStats(JObject homeStats, string homeTeam, JObject awayStats, string awayTeam) { //This is the names of the two different properties in the JSON JObject homePassing = (JObject)homeStats["passing"]; JObject awayPassing = (JObject)awayStats["passing"]; //Need something of all stats subcategories strings //List<string> StatsChildren = new List<string>(new string[] { "passing", "rushing", "receiving", "fumbles", "kicking" }); Dictionary<string, string> StatsChildren = new Dictionary<string, string> { {"passing", "PassingStats"}, {"rushing", "RushingStats"}, {"receiving", "ReceivingStats"}, {"fumbles", "FumbleStats"}, {"kicking", "KickingStats"} }; //playerIDKeys.AddRange(awayPassing.Properties().Select(p => p.Name).ToList()); Dictionary<string, JObject> JObjectHomeAway = new Dictionary<string, JObject>(); JObjectHomeAway.Add("homeStats", homeStats); JObjectHomeAway.Add("awayStats", awayStats); List<string> playerIDStringKeys = new List<string>(); List<NFLPlayer> PlayerList = new List<NFLPlayer>(); //List of made NFL Players using (var db = new FF()) { //goes by passing, rushing, rec, etc. goes by home/away player foreach (KeyValuePair<string, string> child in StatsChildren) { foreach (KeyValuePair<string, JObject> objName in JObjectHomeAway) { JObject statsJObj = objName.Value; //passed in from dict, is either the homeStats or awayStats jObject string objPropertyName = objName.Key; JObject getIDs = (JObject)statsJObj[child.Key]; playerIDStringKeys.AddRange(getIDs.Properties().Select(p => p.Name).ToList()); foreach (string playerID in playerIDStringKeys) { /*PsC - Create list of players Get PlayerID of player about to be added Compare to List of players If Found*/ NFLPlayer NFLFoundPlayer = null; string s = RemoveSpecialCharacters(playerID); //converts string to int, need int for the key, need string to search JOBject int playerIDInt = Convert.ToInt32(s); //going through the list of already made players and pulling the player if the id's match //if found add stats according to child (pass,rec, rush, etc) //if not found, create player and copy material if (PlayerList.Count() != 0) { NFLFoundPlayer = PlayerList.Find(x => x.id == playerIDInt); } //Player not found if null, so create and fill in player info if (NFLFoundPlayer == null) { NFLFoundPlayer = new NFLPlayer(); NFLFoundPlayer.id = playerIDInt; //PlayerID in int format NFLFoundPlayer.id_nflformat = playerID; //PlayerID in NFL string format //Using homeStats and awayStats as property names., jObj is home or awayStats jObject NFLFoundPlayer.name = statsJObj[child.Key][playerID]["name"].ToString(); if (objPropertyName == "homeStats") { NFLFoundPlayer.team = homeTeam; } else if (objPropertyName == "awayStats") { NFLFoundPlayer.team = awayTeam; } else { NFLFoundPlayer.team = "XXX"; } } else { } //Finds the correct type of stats with the playerId and puts it into a JOnject var statsPullJSON = statsJObj[child.Key][playerID]; //takes pulled stats and adds them to the FoundPlayer //if (child.Key == "passing") { // NFLFoundPlayer.PassingStats = null;//(PassingGameStats)statsPullJSON.ToObject(typeof(PassingGameStats)); //} //else if (child.Key == "rushing") { // NFLFoundPlayer.RushingStats = null;// (RushingGameStats)statsPullJSON.ToObject(typeof(RushingGameStats)); //} //else if (child.Key == "receiving") { // NFLFoundPlayer.ReceivingStats = null;// (ReceivingGameStats)statsPullJSON.ToObject(typeof(ReceivingGameStats)); //} //else if (child.Key == "fumbles") { // NFLFoundPlayer.FumbleStats = null;// (FumbleGameStats)statsPullJSON.ToObject(typeof(FumbleGameStats)); //} //else if (child.Key == "kicking") { // NFLFoundPlayer.KickingStats = null;// (KickingGameStats)statsPullJSON.ToObject(typeof(KickingGameStats)); //} //else { //throw exception //} //add in NFLPlayer to Playerlist and DB, sep function? var dbaddorupdate = PlayerList.Find(x => x.id == NFLFoundPlayer.id); if (dbaddorupdate == null) { PlayerList.Add(NFLFoundPlayer); } //checking to see if found in db if not add //Fix this sometime not sure of better way var dbcheck = db.NFLPlayer.Find(NFLFoundPlayer.id); if (dbcheck == null) db.NFLPlayer.Add(NFLFoundPlayer); else db.Entry(NFLFoundPlayer).State = EntityState.Modified; db.SaveChanges(); //empty keys for next iteration } playerIDStringKeys.Clear(); } } } }