public static decimal CalculateTeamStrength(sakilaEntities4 db, int teamId, string homeOrAway, int competitionId, DateTime date) { var marketValue = db.team.First(x => x.TeamID == teamId).MarketValue; var seasonalBalance = PointsCalculator.GetTeamBalance(db, teamId, competitionId, 50, date); var seasonalPointsPace = PointsCalculator.CalculatePointPace(seasonalBalance); var latestBalance = PointsCalculator.GetTeamBalance(db, teamId, competitionId, 3, date); var latestPointsPace = PointsCalculator.CalculatePointPace(latestBalance); var homeOrAwayBalance = new TeamBalance(); if (homeOrAway == "Home") { homeOrAwayBalance = PointsCalculator.GetTeamBalanceHome(db, teamId, competitionId, 50, date); } else { homeOrAwayBalance = PointsCalculator.GetTeamBalanceAway(db, teamId, competitionId, 50, date); } var homeOrAwayPointsPace = PointsCalculator.CalculatePointPace(homeOrAwayBalance); return(CalculateTeamStrength(marketValue.Value, seasonalPointsPace, latestPointsPace, homeOrAwayPointsPace)); }
public static decimal CalculatePointPace(TeamBalance balance) { var games = balance.Win + balance.Lost + balance.Draw; var totalPoints = balance.Win * 3 + balance.Draw; if (games == 0) { return(0); } return(Math.Round((decimal)totalPoints / games, 2)); }
public TeamOverallBalance(team team, int competitionId, bool isHometeam, List <competitionmatch> relevantMatches) { TeamSeasonalBalance = PointsCalculator.GetTeamBalance(relevantMatches, team.TeamID, competitionId); TeamLastGamesBalance = PointsCalculator.GetTeamBalance(relevantMatches, team.TeamID, competitionId, 3); if (isHometeam) { TeamHomeOrAwayBalance = PointsCalculator.GetTeamBalanceHome(relevantMatches, team.TeamID, competitionId); } else { TeamHomeOrAwayBalance = PointsCalculator.GetTeamBalanceAway(relevantMatches, team.TeamID, competitionId); } }