partial void UpdatePlayers(Players instance);
partial void DeletePlayers(Players instance);
partial void InsertPlayers(Players instance);
private void detach_Players(Players entity) { this.SendPropertyChanging(); entity.Position = null; }
private void attach_Players(Players entity) { this.SendPropertyChanging(); entity.Position = this; }
private static Players InsertPlayerById(NPGGFFLDataContext context, int playerId, Games game) { var playerExists = context.Players.Where(p => p.PlayerId == playerId).FirstOrDefault(); if (playerExists == null) { var url = string.Format("{0}/{1}", PLAYER_URL, playerId.ToString()); var html = HelperMethods.LoadHtmlFromUrl(url); CQ dom = new CQ(html, HtmlParsingMode.Document); var playerName = string.Empty; var position = string.Empty; var team = string.Empty; try { playerName = dom["div[class*='mod-split-menu']"].First().Find("a[class*='btn-split-btn']").First().Html().Trim(); position = dom["div[class*='player-bio']"].Find("ul[class*='general-info']").Find("li").First().Html().Split(' ')[1].Trim(); team = dom["ul[class*='general-info']"].Find("a[href*='/team/']").Attr("href").Split('/')[7].Trim(); } catch { } Players player = new Players(); player.PlayerId = playerId; player.Name = playerName; var playerTeam = context.Teams.Where(t => t.Abbreviation.ToUpper().Equals(team.ToUpper())).FirstOrDefault(); if (playerTeam != null) { player.TeamId = playerTeam.TeamId; } else { player.TeamId = 35; //no team } player.PositionId = InsertPositionByName(context, position).PositionId; context.Players.InsertOnSubmit(player); context.SubmitChanges(); return context.Players.Where(p => p.PlayerId == playerId).FirstOrDefault(); } else if (playerExists.TeamId != game.HomeTeamId && playerExists.TeamId != game.AwayTeamId) { var url = string.Format("{0}/{1}", PLAYER_URL, playerId.ToString()); var html = HelperMethods.LoadHtmlFromUrl(url); CQ dom = new CQ(html, HtmlParsingMode.Document); var playerName = string.Empty; var position = string.Empty; var team = string.Empty; try { playerName = dom["div[class*='mod-split-menu']"].First().Find("a[class*='btn-split-btn']").First().Html().Trim(); position = dom["div[class*='player-bio']"].Find("ul[class*='general-info']").Find("li").First().Html().Split(' ')[1].Trim(); team = dom["ul[class*='general-info']"].Find("a[href*='/team/']").Attr("href").Split('/')[7].Trim(); } catch { } var playerTeam = context.Teams.Where(t => t.Abbreviation.ToUpper().Equals(team.ToUpper())).FirstOrDefault(); if (playerTeam != null) { playerExists.TeamId = playerTeam.TeamId; } else { playerExists.TeamId = 35; //no team } context.SubmitChanges(); return playerExists; } else { return playerExists; } }
public static void UpdateStatsPlayByPlay(Games game, NPGGFFLDataContext context) { var startDtm = DateTime.Now; var gameId = game.GameId; var url = string.Format("{0}{1}", LIVE_URL, string.Format("?gameId={0}", gameId.ToString())); var html = HelperMethods.LoadHtmlFromUrl(url); CQ dom = new CQ(html, HtmlParsingMode.Document); if (dom["#gamepackage-play-by-play:contains('No Drives')"].Length == 0) { #region Update Two Point Conversions Dictionary<int, int> twoPointConversionPlayerList = new Dictionary<int, int>(); var twoPointConversionRows = dom["div[class*='headline']:contains('TWO-POINT')"]; foreach (var tpcr in twoPointConversionRows) { var tpcrHTML = tpcr.Cq().Html(); if (tpcrHTML.Contains("ATTEMPT SUCCEEDS")) { var tpcStart = tpcrHTML.IndexOf("TWO-POINT CONVERSION ATTEMPT.") + 29; var tpcEnd = tpcrHTML.IndexOf("ATTEMPT SUCCEEDS"); var twoPointText = tpcrHTML.Substring(tpcStart, tpcEnd - tpcStart); var splitIntoWords = twoPointText.Split(' '); foreach (var word in splitIntoWords.Where(w => w.Contains("."))) { var findPlayer = context.Players.Where(p => p.PlayerStats.Where(ps => ps.PlayerId == p.PlayerId && ps.GameId == gameId).Count() != 0 && p.Name.Substring(0, 1).ToUpper() == word.Split('.')[0].Trim().ToUpper() && p.Name.ToUpper().Contains(word.Split('.')[1].Trim().ToUpper())); if (findPlayer.Count() > 1) { var bestMatch = new Players(); var shortestDistance = 100; foreach (var fp in findPlayer) { if (HelperMethods.LevenshteinDistance.Compute(fp.Name.ToUpper(), word.ToUpper()) < shortestDistance) { shortestDistance = HelperMethods.LevenshteinDistance.Compute(fp.Name.ToUpper(), word.ToUpper()); bestMatch = fp; } } if (!twoPointConversionPlayerList.ContainsKey(bestMatch.PlayerId)) { twoPointConversionPlayerList.Add(bestMatch.PlayerId, 1); } else { twoPointConversionPlayerList[bestMatch.PlayerId]++; } } else if (findPlayer.Count() == 1) { if (!twoPointConversionPlayerList.ContainsKey(findPlayer.First().PlayerId)) { twoPointConversionPlayerList.Add(findPlayer.First().PlayerId, 1); } else { twoPointConversionPlayerList[findPlayer.First().PlayerId]++; } } } } } foreach (var tpc in twoPointConversionPlayerList) { var playerStats = context.PlayerStats.Where(ps => ps.PlayerId == tpc.Key && ps.GameId == gameId).FirstOrDefault(); if (playerStats != null) { playerStats.TwoPointConversions = tpc.Value; context.SubmitChanges(); } } #endregion #region Update Safeties FindSafeties(context, gameId); #endregion #region Update Game Progress var gameStatus = dom["div[class*='game-status']"].Has("span:contains('Final')"); if (gameStatus.Length > 0) { game.IsFinal = 1; context.SubmitChanges(); } else { var timeRemaining = dom["span[class*='game-time']"].Html(); game.GameTimeRemaining = timeRemaining; context.SubmitChanges(); } #endregion } Console.WriteLine("Update Stats Play By Play took " + (DateTime.Now - startDtm).TotalSeconds); }