예제 #1
0
        public async Task <List <TeamStat> > GetTeamStatsResultsAsync()
        {
            //  Get all the data sources for ranking data
            var rankingDataSource = await _wpbService.GetRankingDataSources();

            var statData = new List <TeamStat>();

            foreach (var result in rankingDataSource)
            {
                var rankStat = ParseDataSource.ParseRankingSource(result, result.ClassNameNode);
                foreach (var stat in rankStat)
                {
                    try
                    {
                        var team = await _wpbService.GetTeamByTeamName(stat.TeamName);

                        if (team != null)
                        {
                            var newStat = new TeamStat()
                            {
                                TeamName         = team.TeamName,
                                TeamId           = team.Id,
                                TeamCode         = team.TeamCode,
                                SubDivisionId    = team.SubDivisionId,
                                Position         = stat.Position,
                                GamesPlayed      = stat.GamesPlayed,
                                GamesWon         = stat.GamesWon,
                                GamesLost        = stat.GamesLost,
                                BasketsFor       = stat.BasketsFor,
                                BasketsAganist   = stat.BasketsAganist,
                                PointsDifference = stat.PointsDifference,
                                Points           = stat.Points,
                                WinPercentage    = StatisticsCalculator.WinPercentage(stat.GamesWon, stat.GamesPlayed).ToString(),
                                LossPercentage   = StatisticsCalculator.LossPercentage(stat.GamesLost, stat.GamesPlayed).ToString(),
                                BasketsPerGame   = StatisticsCalculator.BasketsPerGame(stat.BasketsFor, stat.GamesPlayed).ToString(),
                                WinLossPercent   = StatisticsCalculator.WinLossPercentage(stat.GamesWon, stat.GamesLost).ToString(),
                                WinsOver500      = StatisticsCalculator.WinsOver50(stat.GamesWon, stat.GamesLost).ToString(),
                                WPyth            = StatisticsCalculator.WPyth(stat.BasketsFor, stat.BasketsAganist).ToString(),
                            };
                            statData.Add(newStat);
                        }
                        else
                        {
                            throw new System.ArgumentException(
                                      "Detected null values in either team variable!");
                        }
                    }
                    catch (Exception err)
                    {
                        var msg = err.ToString();
                    }
                }
            }

            return(statData);
        }
예제 #2
0
        //  Run once only
        //  Run on 17/12/2018

        /*public async Task AddDivisionsAsync()
         * {
         *
         *  var dataSources = new List<Division>()
         *  {
         *      new Division()
         *      {
         *
         *          DivisionName = "NL First Division 18/19",
         *          DivisionCode = "DIV1",
         *      },
         *      new Division()
         *      {
         *          DivisionName = "NL Second Division 18/19",
         *          DivisionCode = "DIV2"
         *      },
         *      new Division()
         *      {
         *          DivisionName = "NL Third Division 18/19",
         *          DivisionCode = "DIV3",
         *      }
         *  };
         *
         *  foreach (var item in dataSources)
         *  {
         *      await _wpbService.CreateDivisionAsync(item);
         *  }
         * }
         *
         * /// <summary>
         * /// Only need to run this function once
         * /// RUN COMPLETE
         * /// </summary>
         * /// <returns></returns>
         * public async Task GetFixturesDataAsync()
         * {
         *  //  Get all the fixtures dataSources
         *  var fixturesDataSource = await _wpbService.GetFixtureDataSources();
         *
         *  foreach (var src in fixturesDataSource)
         *  {
         *      var fixturesResults =
         *          ParseDataSource.ParseFixturesDataSource(src, src.ClassNameNode);
         *
         *      foreach (var ftr in fixturesResults)
         *      {
         *          try
         *          {
         *              //  get Home team details
         *              var teamHome = await _wpbService.GetTeamByTeamName(ftr.FixtureHomeTeamName);
         *              var teamAway = await _wpbService.GetTeamByTeamName(ftr.FixtureAwayTeamName);
         *
         *              if (teamHome != null && teamAway != null)
         *              {
         *                  var newFixture = new Fixture()
         *                  {
         *                      FixtureDate = ftr.FixtureDate,
         *                      HomeTeamId = teamHome.Id,
         *                      HomeTeamName = teamHome.TeamName,
         *                      HomeTeamCode = teamHome.TeamCode,
         *                      AwayTeamId = teamAway.Id,
         *                      AwayTeamName = teamAway.TeamName,
         *                      AwayTeamCode = teamAway.TeamCode,
         *                      //  already have the subdivision in both Home or Away team
         *                      SubDivisionId = teamHome.SubDivisionId
         *                  };
         *
         *                  //  Check for null values!!
         *                  await _wpbService.CreateFixtureAsync(newFixture);
         *              }
         *              else
         *              {
         *                  throw new System.ArgumentException(
         *                      "Detected null values in either teamHome, teamAway or subDivision variable!");
         *              }
         *          }
         *          catch (Exception err)
         *          {
         *              var msg = err.ToString();
         *          }
         *      }
         *  }
         *
         * }
         */

        public async Task GetMatchResultsAsync()
        {
            //  Get all the data sources for results
            var resultsDataSource = await _wpbService.GetAllResultDataSourceAsync();

            foreach (var result in resultsDataSource)
            {
                var matchResults =
                    ParseDataSource.ParseResultDataSource(result, result.ClassNameNode);

                foreach (var game in matchResults)
                {
                    try
                    {
                        var teamHome = await _wpbService.GetTeamByTeamName(game.HomeTeamName);

                        var teamAway = await _wpbService.GetTeamByTeamName(game.AwayTeamName);

                        if (teamHome != null && teamAway != null)
                        {
                            var winningTeam   = (game.WinningTeamName == teamHome.TeamName) ? teamHome : teamAway;
                            var encodedResult = EncodeGameResult(teamHome.TeamName, teamAway.TeamName, result.TimeStamp);

                            var newResult = new GameResult()
                            {
                                TimeStamp       = game.TimeStamp,
                                HomeTeamId      = teamHome.Id,
                                HomeTeamName    = teamHome.TeamName,
                                HomeTeamCode    = teamHome.TeamCode,
                                AwayTeamId      = teamAway.Id,
                                AwayTeamName    = teamAway.TeamName,
                                AwayTeamCode    = teamAway.TeamCode,
                                Score           = game.Score,
                                WinningTeamName = winningTeam.TeamName,
                                WinningTeamCode = winningTeam.TeamCode,
                                //  already have the subdivision in both Home or Away team
                                SubDivisionId = teamHome.SubDivisionId,
                                EncodedResult = encodedResult
                            };

                            var resultExist = await _wpbService.GameResultExistAsync(newResult.EncodedResult);

                            //  only add if not in db
                            if (resultExist == false)
                            {
                                await _wpbService.CreateGameResultAsync(newResult);
                            }
                        }
                        else
                        {
                            throw new System.ArgumentException(
                                      "Detected null values in either teamHome, teamAway or subDivision variable!");
                        }
                    }
                    catch (Exception err)
                    {
                        var msg = err.ToString();
                    }
                }
            }

            //  add new report tracker object
            var newReportRun = new ReportTracker()
            {
                ReportTypeCode = ModelHelpers.REPORT_RSLT
            };
            await _wpbService.CreateReportHistory(newReportRun);
        }