Example #1
0
        public static string BuildBoxScoresLast5MinUrl(BoxScoresLast5MinDTO oLast5MinDTO)
        {
            oLast5MinDTO.Source = "BasketballReference";
            string BbrferTeam = SqlFunctions.TeamLookupTeamNameByTeamNameInDatabase(oLast5MinDTO.GameDate, oLast5MinDTO.LeagueName, oLast5MinDTO.Source, oLast5MinDTO.Team).Trim();

            return($"https://www.basketball-reference.com/boxscores/pbp/{oLast5MinDTO.GameDate.ToString("yyyyMMdd")}0{BbrferTeam}.html");
        }
Example #2
0
        static void populateBoxScoreLast5MinDTOValues(List <string> ocValues, object DTO)
        {
            BoxScoresLast5MinDTO oLast5MinDTO = (BoxScoresLast5MinDTO)DTO;

            ocValues.Add(oLast5MinDTO.LeagueName.ToString());
            ocValues.Add(oLast5MinDTO.GameDate.ToString());
            ocValues.Add(oLast5MinDTO.RotNum.ToString());
            ocValues.Add(oLast5MinDTO.Team.ToString());
            ocValues.Add(oLast5MinDTO.Opp.ToString());
            ocValues.Add(oLast5MinDTO.Venue.ToString());
            ocValues.Add(oLast5MinDTO.Q4Last5MinScore.ToString());
            ocValues.Add(oLast5MinDTO.Q4Last1MinScore.ToString());
            ocValues.Add(oLast5MinDTO.Q4Score.ToString());
            ocValues.Add(oLast5MinDTO.Q4Last1MinScoreUs.ToString());
            ocValues.Add(oLast5MinDTO.Q4Last1MinScoreOp.ToString());
            ocValues.Add(oLast5MinDTO.Q4Last1MinWinningTeam.ToString());
            ocValues.Add(oLast5MinDTO.Q4Last1MinUsPt1.ToString());
            ocValues.Add(oLast5MinDTO.Q4Last1MinUsPt2.ToString());
            ocValues.Add(oLast5MinDTO.Q4Last1MinUsPt3.ToString());
            ocValues.Add(oLast5MinDTO.Q4Last1MinOpPt1.ToString());
            ocValues.Add(oLast5MinDTO.Q4Last1MinOpPt2.ToString());
            ocValues.Add(oLast5MinDTO.Q4Last1MinOpPt3.ToString());
            ocValues.Add(oLast5MinDTO.Source.ToString());
            ocValues.Add(oLast5MinDTO.LoadDate.ToString());
        }
Example #3
0
 static void populateAwayBoxScoreLast5MinDTOValues(BoxScoresLast5MinDTO oHomeDTO, BoxScoresLast5MinDTO oAwayDTO)
 {
     //  Populate AWAY L5Min - reverse HOME info to AWAY info
     oAwayDTO.LeagueName            = oHomeDTO.LeagueName;
     oAwayDTO.GameDate              = oHomeDTO.GameDate;
     oAwayDTO.RotNum                = oHomeDTO.Venue == "Home" ? --oHomeDTO.RotNum : ++oHomeDTO.RotNum;
     oAwayDTO.Team                  = oHomeDTO.Opp;
     oAwayDTO.Opp                   = oHomeDTO.Team;
     oAwayDTO.Venue                 = oHomeDTO.Venue == "Home" ? "Away" : "Home";
     oAwayDTO.Q4Last5MinScore       = oHomeDTO.Q4Last5MinScore;
     oAwayDTO.Q4Last1MinScore       = oHomeDTO.Q4Last1MinScore;
     oAwayDTO.Q4Score               = oHomeDTO.Q4Score;
     oAwayDTO.Q4Last1MinScoreUs     = oHomeDTO.Q4Last1MinScoreOp;
     oAwayDTO.Q4Last1MinScoreOp     = oHomeDTO.Q4Last1MinScoreUs;
     oAwayDTO.Q4Last1MinWinningTeam = oHomeDTO.Q4Last1MinWinningTeam;
     // Move OP info to US & Vise versa
     oAwayDTO.Q4Last1MinUsPt1 = oHomeDTO.Q4Last1MinOpPt1;
     oAwayDTO.Q4Last1MinUsPt2 = oHomeDTO.Q4Last1MinOpPt2;
     oAwayDTO.Q4Last1MinUsPt3 = oHomeDTO.Q4Last1MinOpPt3;
     oAwayDTO.Q4Last1MinOpPt1 = oHomeDTO.Q4Last1MinUsPt1;
     oAwayDTO.Q4Last1MinOpPt2 = oHomeDTO.Q4Last1MinUsPt2;
     oAwayDTO.Q4Last1MinOpPt3 = oHomeDTO.Q4Last1MinUsPt3;
     oAwayDTO.Source          = oHomeDTO.Source;
     oAwayDTO.LoadDate        = oHomeDTO.LoadDate;
 }
Example #4
0
        public static void InsertAwayHomeRowsBoxScoresLast5Min(BoxScoresLast5MinDTO oLast5MinDTOHome)
        {
            string url = Bball.DAL.Parsing.BoxScoresLast5Min.BuildBoxScoresLast5MinUrl(oLast5MinDTOHome); // Get Bb-ref Play by Play url

            Bball.DAL.Parsing.BoxScoresLast5Min oLast5Min = new Bball.DAL.Parsing.BoxScoresLast5Min(url);
            oLast5Min.ParseBoxScoresLast5Min(oLast5MinDTOHome);
            InsertBoxScoresLast5Min(oLast5MinDTOHome); // Insert Home

            BoxScoresLast5MinDTO oLast5MinDTOAway = new BoxScoresLast5MinDTO();

            populateAwayBoxScoreLast5MinDTOValues(oLast5MinDTOHome, oLast5MinDTOAway);
            InsertBoxScoresLast5Min(oLast5MinDTOAway); // Insert Away
        }
Example #5
0
        public void ParseBoxScoresLast5Min(BoxScoresLast5MinDTO oLast5Min)
        {
            _oLast5Min = oLast5Min;
            HtmlParser oPage = new HtmlParser(_html);

            oPage.FindTagByString("Start of 4th quarter");
            if (oPage.ReturnCode != 0)
            {
                throw new Exception("ParseBoxScoresLast5Min - Start of 4th quarter Not Found");
            }

            oPage.FindTagByTagname("tr");
            if (oPage.ReturnCode != 0)
            {
                throw new Exception("ParseBoxScoresLast5Min - Initial TR Not Found");
            }
            parseTR(oPage.HtmlInner);

            while (otrTDs.TimeInSeconds > 300) // Get next TR savTime until Time< 5:00 / 300 seconds
            {
                oLast5Min.Q4Last5MinScore = otrTDs.AwayScore + otrTDs.HomeScore;
                oPage.FindTagByTagname("tr");
                if (oPage.ReturnCode != 0)
                {
                    throw new Exception("ParseBoxScoresLast5Min - Get next TR savTime until Time< 5 mins Not Found");
                }
                parseTR(oPage.HtmlInner);
            } // while

            while (otrTDs.TimeInSeconds > 60) // Get next TR savTime until Time< 1 min / 60 seconds
            {
                oLast5Min.Q4Last1MinScore       = otrTDs.AwayScore + otrTDs.HomeScore;
                oLast5Min.Q4Last1MinWinningTeam = otrTDs.AwayScore > otrTDs.HomeScore ? oLast5Min.Opp : oLast5Min.Team;
                oLast5Min.Q4Last1MinScoreUs     = (double)otrTDs.HomeScore;
                oLast5Min.Q4Last1MinScoreOp     = (double)otrTDs.AwayScore;

                oPage.FindTagByTagname("tr");
                if (oPage.ReturnCode != 0)
                {
                    throw new Exception("ParseBoxScoresLast5Min - Get next TR savTime until Time< 1 min Not Found");
                }
                parseTR(oPage.HtmlInner);
            } // while


            while (otrTDs.TimeInSeconds > 0) // Get next TR savTime until Time = 0  seconds
            {
                oLast5Min.Q4Score = otrTDs.AwayScore + otrTDs.HomeScore;
                if (otrTDs.AwayPoints > 0)
                {
                    switch (otrTDs.AwayPoints)
                    {
                    case 1:
                        oLast5Min.Q4Last1MinOpPt1++;
                        break;

                    case 2:
                        oLast5Min.Q4Last1MinOpPt2++;
                        break;

                    case 3:
                        oLast5Min.Q4Last1MinOpPt3++;
                        break;
                    }
                }
                if (otrTDs.HomePoints > 0)
                {
                    switch (otrTDs.HomePoints)
                    {
                    case 1:
                        oLast5Min.Q4Last1MinUsPt1++;
                        break;

                    case 2:
                        oLast5Min.Q4Last1MinUsPt2++;
                        break;

                    case 3:
                        oLast5Min.Q4Last1MinUsPt3++;
                        break;
                    }
                }
                oPage.FindTagByTagname("tr");
                if (oPage.ReturnCode != 0)
                {
                    throw new Exception("ParseBoxScoresLast5Min - Get next TR savTime until Time< 5:00 Not Found");
                }
                parseTR(oPage.HtmlInner);
            } // while Time > 0
        }     // ParseBoxScoresLast5Min
Example #6
0
 static void InsertBoxScoresLast5Min(BoxScoresLast5MinDTO oBoxScoresLast5MinDTO)
 => InsertRowPrep(BoxScoresLast5MinTable, BoxScoresLast5MinColumns, oBoxScoresLast5MinDTO, populateBoxScoreLast5MinDTOValues);
Example #7
0
        public int LoadBoxScore(DateTime GameDate) // Return NumOfMatchups
        {
            /*
             *
             * */
            DateTime LoadDateTime     = DateTime.Now;
            string   _strLoadDateTime = LoadDateTime.ToString();

            SortedList <string, CoversDTO> ocRotation = new SortedList <string, CoversDTO>();

            RotationDO.PopulateRotation(ocRotation, _oSeasonInfo.GameDate, _oLeagueDTO, _ConnectionString, _strLoadDateTime);
            if (ocRotation.Count == 0)
            {
                return(0);                      // No Games for GameDate
            }
            foreach (var matchup in ocRotation)
            {
                CoversDTO oCoversDTO = matchup.Value;
                // 1) Get BoxScore from Covers
                CoversBoxscore oCoversBoxscore = new CoversBoxscore(GameDate, _oLeagueDTO, oCoversDTO);
                oCoversBoxscore.GetBoxscore(); // Get BoxScore from Covers
                if (oCoversBoxscore.ReturnCode != 0)
                {
                    // kdtodo log error
                    continue;
                }
                string[] arVenue = new string[] { "Away", "Home" };
                for (int i = 0; i < 2; i++)
                {
                    try
                    {
                        // Write Away & Home rows to BoxScores
                        BoxScoresDTO BoxScoresDTO = new BoxScoresDTO();
                        oCoversBoxscore.PopulateBoxScoresDTO(BoxScoresDTO, arVenue[i], _oSeasonInfo.oSeasonInfoDTO.Season, _oSeasonInfo.oSeasonInfoDTO.SubSeason, LoadDateTime
                                                             , oCoversBoxscore.LoadTimeSecound, "Covers");
                        Bball.DAL.Tables.BoxScoreDO.InsertBoxScores(BoxScoresDTO);
                    }
                    catch (Exception ex)
                    {
                        string msg = $"BoxScore Load Error - "
                                     + $"{_oLeagueDTO.LeagueName}: {GameDate}  {oCoversDTO.RotNum}:{arVenue[i]}  {oCoversDTO.TeamAway}-{oCoversDTO.TeamHome} "
                                     + "\n" + oCoversDTO.Url;
                        throw new Exception(SysDAL.DALfunctions.StackTraceFormat(msg, ex, ""));
                    }
                }

                // Write Last 5 Minutes stats
                BoxScoresLast5MinDTO oLast5MinDTOHome = new BoxScoresLast5MinDTO()
                {
                    LeagueName = oCoversDTO.LeagueName
                    , GameDate = oCoversDTO.GameDate
                    , RotNum   = oCoversDTO.RotNum + 1
                    , Team     = oCoversDTO.TeamHome
                    , Opp      = oCoversDTO.TeamAway
                    , Venue    = "Home"
                    , LoadDate = LoadDateTime
                };
                try
                {
                    //Bball.DAL.Tables.
                    BoxScoreDO.InsertAwayHomeRowsBoxScoresLast5Min(oLast5MinDTOHome);
                }
                catch (Exception ex)
                {
                    string msg = $"BoxScoreL5Min Load Error - "
                                 + $"{_oLeagueDTO.LeagueName}: {GameDate}  {oCoversDTO.RotNum}:  {oCoversDTO.TeamAway}-{oCoversDTO.TeamHome} "
                                 + "\n" + Bball.DAL.Parsing.BoxScoresLast5Min.BuildBoxScoresLast5MinUrl(oLast5MinDTOHome);
                    // throw new Exception(SysDAL.DALfunctions.StackTraceFormat(msg, ex, ""));
                    //Trace.Trace.Log(SysDAL.DALfunctions.StackTraceFormat(msg, ex, ""));
                }
            } // foreach

            AdjustmentsDO oAdjustments = new AdjustmentsDO(GameDate, _oLeagueDTO.LeagueName, _ConnectionString);

            oAdjustments.ProcessDailyAdjustments(GameDate, _oLeagueDTO.LeagueName);

            return(ocRotation.Count); // return NumOfMatchups
        } // LoadBoxScore