Beispiel #1
0
        private void ComputeTeamFormByGame(FootballTeamForm form, Game game)
        {
            bool isHomeGame = game.HomeTeamId == form.TeamId;
            var  total      = game.AwayTeamGoals + game.HomeTeamGoals;

            if (game.Result == GameResult.Draw)
            {
                form.DrawsCount++;
                form.Points += 1;
            }
            else if (game.Result == GameResult.HomeWin)
            {
                form.WinsCount   += isHomeGame ? 1 : 0;
                form.LossesCount += isHomeGame ? 0 : 1;
                form.Points      += isHomeGame ? 3 : 0;
            }
            else
            {
                form.WinsCount   += isHomeGame ? 0 : 1;
                form.LossesCount += isHomeGame ? 1 : 0;
                form.Points      += isHomeGame ? 0 : 3;
            }
            form.GamePlayed++;

            form.Goals        += total;
            form.GoalsFor     += isHomeGame ? game.HomeTeamGoals : game.AwayTeamGoals;
            form.GoalsAgainst += isHomeGame ? game.AwayTeamGoals : game.HomeTeamGoals;

            if (total > 2.5)
            {
                form.GamesOver2_5++;
            }
            else
            {
                form.GamesUnder2_5++;
            }

            if (game.HomeTeamGoals > 0 && game.AwayTeamGoals > 0)
            {
                form.BTTS_Yes++;
            }
            else
            {
                form.BTTS_No++;
            }

            //per game
            form.WinsPercentage   = (double)form.WinsCount / form.GamePlayed;
            form.DrawsPercentage  = (double)form.DrawsCount / form.GamePlayed;
            form.LossesPercentage = (double)form.LossesCount / form.GamePlayed;

            form.GoalsPerGame        = (double)form.Goals / form.GamePlayed;
            form.GoalsForPerGame     = (double)form.GoalsFor / form.GamePlayed;
            form.GoalsAgainstPerGame = (double)form.GoalsAgainst / form.GamePlayed;

            form.LastUpdate = DateTime.Now;
        }
Beispiel #2
0
        public void AddOrUpdateTeamForm(FootballTeamForm teamForm)
        {
            if (Db.Database.Connection.State == System.Data.ConnectionState.Closed)
            {
                Db.Database.Connection.Open();
            }

            var result = (from n in Db.FootballTeamForm
                          where n.TeamId == teamForm.TeamId &&
                          n.TimePeriod == teamForm.TimePeriod &&
                          n.LeagueSeasonId == teamForm.LeagueSeasonId
                          select n).FirstOrDefault();

            if (result == null)
            {
                //add teamForm
                Db.FootballTeamForm.Add(teamForm);
                Db.SaveChanges();

                var repo = new LogRepository();
                repo.WriteLog(Database.SystemData.Severity.Information, "Insert to FootballTeamForm table new record", nameof(AnalysisDataRepository),
                              "localhost", "[teamId = " + teamForm.TeamId + "][LeagueSeasonId = "
                              + teamForm.LeagueSeasonId + "][TimePeriod = " + teamForm.TimePeriod + "]", "");
            }
            else
            {
                //update teamForm
                result.Copy(teamForm);
                Db.SaveChanges();

                var repo = new LogRepository();
                repo.WriteLog(Database.SystemData.Severity.Information, "Update record in FootballTeamForm table", nameof(AnalysisDataRepository),
                              "localhost", "[teamId = " + result.TeamId + "][LeagueSeasonId = "
                              + result.LeagueSeasonId + "][TimePeriod = " + result.TimePeriod + "]", "");
            }

            Db.Database.Connection.Close();
        }
Beispiel #3
0
        private void AnalyzedTeam(LeagueSeasonTeams team)
        {
            var teamsSeasonGames = leagueRepo.GetAllSeasonGames(team.LeagueSeasonId)
                                   .Where(g => g.HomeTeamId == team.FootballTeamId || g.AwayTeamId == team.FootballTeamId);
            var teamForm5 = new FootballTeamForm
            {
                TeamId         = team.FootballTeamId,
                LeagueSeasonId = team.LeagueSeasonId,
                TimePeriod     = TimePeriod.Last5Matches
            };
            var teamForm10 = new FootballTeamForm
            {
                TeamId         = team.FootballTeamId,
                LeagueSeasonId = team.LeagueSeasonId,
                TimePeriod     = TimePeriod.Last10Matches
            };
            var teamFormAll = new FootballTeamForm
            {
                TeamId         = team.FootballTeamId,
                LeagueSeasonId = team.LeagueSeasonId,
                TimePeriod     = TimePeriod.AllMatches
            };

            var teamFormAllHome = new FootballTeamForm
            {
                TeamId         = team.FootballTeamId,
                LeagueSeasonId = team.LeagueSeasonId,
                TimePeriod     = TimePeriod.AllHomeMatches
            };

            var teamFormAllAway = new FootballTeamForm
            {
                TeamId         = team.FootballTeamId,
                LeagueSeasonId = team.LeagueSeasonId,
                TimePeriod     = TimePeriod.AllAwayMatches
            };

            var i = 0;

            foreach (var game in teamsSeasonGames)
            {
                if (game.Result == 0)
                {
                    continue;
                }
                var gameTotal = game.HomeTeamGoals + game.AwayTeamGoals;
                ComputeTeamFormByGame(teamFormAll, game);
                if (i < 5)
                {
                    ComputeTeamFormByGame(teamForm5, game);
                }
                if (i < 10)
                {
                    ComputeTeamFormByGame(teamForm10, game);
                }

                if (game.HomeTeamId == team.FootballTeamId)
                {
                    ComputeTeamFormByGame(teamFormAllHome, game);
                }
                else
                {
                    ComputeTeamFormByGame(teamFormAllAway, game);
                }

                i++;
            }

            analysisRepo.AddOrUpdateTeamForm(teamForm5);
            analysisRepo.AddOrUpdateTeamForm(teamForm10);
            analysisRepo.AddOrUpdateTeamForm(teamFormAll);
            analysisRepo.AddOrUpdateTeamForm(teamFormAllHome);
            analysisRepo.AddOrUpdateTeamForm(teamFormAllAway);
        }