private static Nhl_Games_Summary MapHtmlRowToModel(HtmlNode row, NhlSeasonType nhlSeasonType) { HtmlNodeCollection tdNodes = row.SelectNodes(@"./td"); Nhl_Games_Summary model = new Nhl_Games_Summary(); model.NhlSeasonType = nhlSeasonType; model.Date = Convert.ToDateTime(tdNodes[0].InnerText.Replace("'", "/")); model.Year = NhlModelHelper.GetSeason(model.Date).Item2; model.Visitor = tdNodes[1].InnerText; model.VisitorScore = ConvertStringToInt(tdNodes[2].InnerText); model.Home = tdNodes[3].InnerText; model.HomeScore = ConvertStringToInt(tdNodes[4].InnerText); model.OS = tdNodes[5].InnerText; model.WGoalie = tdNodes[6].InnerText; model.WGoal = tdNodes[7].InnerText; model.VisitorShots = ConvertStringToInt(tdNodes[8].InnerText); model.VisitorPPGF = ConvertStringToInt(tdNodes[9].InnerText); model.VisitorPPOpp = ConvertStringToInt(tdNodes[10].InnerText); model.VisitorPIM = ConvertStringToInt(tdNodes[11].InnerText); model.HomeShots = ConvertStringToInt(tdNodes[12].InnerText); model.HomePPGF = ConvertStringToInt(tdNodes[13].InnerText); model.HomePPOpp = ConvertStringToInt(tdNodes[14].InnerText); model.HomePIM = ConvertStringToInt(tdNodes[15].InnerText); model.Attendance = ConvertStringToInt(tdNodes[16].InnerText.Replace(",", String.Empty)); return(model); }
public static void UpdateSeason([Optional] int year, [Optional] bool forceOverwrite) { year = NhlModelHelper.SetDefaultYear(year); List <Nhl_Games_Rtss> models; using (SportsDataContext db = new SportsDataContext()) { models = (from m in db.Nhl_Games_Rtss_DbSet where m.Year == year select m).ToList(); } // Retrieve the links of the blobs Dictionary <Uri, string> summaryItems = new Dictionary <Uri, string>(); Dictionary <Uri, string> rosterItems = new Dictionary <Uri, string>(); foreach (Nhl_Games_Rtss m in models) { // Game Summary if (Uri.IsWellFormedUriString(m.GameLink, UriKind.Absolute)) { summaryItems.Add(new Uri(m.GameLink), m.Id.ToString()); } // Roster if (Uri.IsWellFormedUriString(m.RosterLink, UriKind.Absolute)) { rosterItems.Add(new Uri(m.RosterLink), m.Id.ToString()); } } HtmlBlob.GetAndStoreHtmlBlobs(HtmlBlobType.NhlGame, summaryItems, forceOverwrite); HtmlBlob.GetAndStoreHtmlBlobs(HtmlBlobType.NhlRoster, rosterItems, forceOverwrite); }
private static Nhl_Games_Rtss MapHtmlRowToModel(HtmlNode row, NhlSeasonType nhlSeasonType) { HtmlNodeCollection tdNodes = row.SelectNodes(@"./td"); Nhl_Games_Rtss model = new Nhl_Games_Rtss(); model.NhlSeasonType = nhlSeasonType; model.Date = Convert.ToDateTime(tdNodes[0].InnerText.Replace("'", "/")); model.Year = NhlModelHelper.GetSeason(model.Date).Item2; model.GameNumber = Convert.ToInt32(tdNodes[1].InnerText); model.Visitor = tdNodes[2].InnerText; model.Home = tdNodes[3].InnerText; model.RosterLink = NhlGamesRtss.ParseLinkFromTd(tdNodes[4]); model.GameLink = NhlGamesRtss.ParseLinkFromTd(tdNodes[5]); model.EventsLink = NhlGamesRtss.ParseLinkFromTd(tdNodes[6]); model.FaceOffsLink = NhlGamesRtss.ParseLinkFromTd(tdNodes[7]); model.PlayByPlayLink = NhlGamesRtss.ParseLinkFromTd(tdNodes[8]); model.ShotsLink = NhlGamesRtss.ParseLinkFromTd(tdNodes[9]); model.HomeToiLink = NhlGamesRtss.ParseLinkFromTd(tdNodes[10]); model.VistorToiLink = NhlGamesRtss.ParseLinkFromTd(tdNodes[11]); model.ShootoutLink = NhlGamesRtss.ParseLinkFromTd(tdNodes[12]); return(model); }
/// <summary> /// Gets a list of all the results in a stat category on fromDate and later /// </summary> /// <remarks> /// This method assumes that rows are sorted in descending order by date (newest to oldest). /// /// year defaults to the current year /// fromDate defaults to DateTime.MinValue /// /// </remarks> protected virtual List <HtmlNode> GetResultsForSeasonType([Optional] int year, NhlSeasonType nhlSeasonType, [Optional] DateTime fromDate) { year = NhlModelHelper.SetDefaultYear(year); List <HtmlNode> results = new List <HtmlNode>(); HtmlNode firstPageTableNode = this.ParseHtmlTableFromPage(year, nhlSeasonType, 1); int numberOfResults = NhlBaseClass.GetResultsCount(firstPageTableNode); if (numberOfResults <= 0) { return(results); } int numberOfPages = NhlBaseClass.GetPageCount(firstPageTableNode); // Handle the first page. Go through each row and add it to the list of results. When we encounter a result with a date earlier than fromDate then we stop. List <HtmlNode> firstPageRows = NhlBaseClass.ParseRowsFromTable(firstPageTableNode); foreach (HtmlNode row in firstPageRows) { DateTime resultDate = this.ParseDateFromHtmlRow(row); if (resultDate < fromDate) { return(results); } else { results.Add(row); } } // Now similar code to handle the rest of the pages. Go through each row, add it to the list, stop when we hit a date prior to fromDate. for (int i = 2; i < numberOfPages + 1; i++) { HtmlNode tableNode = this.ParseHtmlTableFromPage(year, nhlSeasonType, i); List <HtmlNode> rows = NhlBaseClass.ParseRowsFromTable(tableNode); foreach (HtmlNode row in rows) { DateTime resultDate = this.ParseDateFromHtmlRow(row); if (resultDate < fromDate) { return(results); } else { results.Add(row); } } } return(results); }
/// <summary> /// Get the NhlHtmlReportSummaryModels for the specified year /// </summary> private static List <Nhl_Games_Rtss_Summary> GetHtmlSummaryReports([Optional] int year, [Optional] DateTime fromDate) { year = NhlModelHelper.SetDefaultYear(year); List <Nhl_Games_Rtss_Summary> existingModels = new List <Nhl_Games_Rtss_Summary>(); using (SportsDataContext db = new SportsDataContext()) { existingModels = (from m in db.Nhl_Games_Rtss_Summary_DbSet where m.NhlRtssReportModel.Year == year && m.NhlRtssReportModel.Date >= fromDate select m).ToList(); } return(existingModels); }
/// <summary> /// Get the RtssReports for the specified year /// </summary> public static List <Nhl_Games_Rtss> GetRtssReports([Optional] int year, [Optional] DateTime fromDate) { year = NhlModelHelper.SetDefaultYear(year); List <Nhl_Games_Rtss> models; using (SportsDataContext db = new SportsDataContext()) { models = (from m in db.Nhl_Games_Rtss_DbSet where m.Year == year && m.Date >= fromDate select m).ToList(); } return(models); }