Exemplo n.º 1
0
        public void NhlTableGeneration(Match match)
        {
            match.AwayTeam = GetTeamById(match.AwayTeamId);
            match.HomeTeam = GetTeamById(match.HomeTeamId);

            match.SeasonId = GetCurrentSeason().SeasonId;
            var sqlQuery = $"Insert into Matches (SeasonId, HomeTeamId, AwayTeamId, HomeTeamScore, AwayTeamScore, Result, Date) Values ({match.SeasonId}, {match.HomeTeamId}, {match.AwayTeamId}, {match.HomeTeamScore}, {match.AwayTeamScore}, {(int)match.Result}, '{match.Date}')";
            var command  = DbQuery.CreateCommand(sqlQuery, ConnectionString);

            DbQuery.ExecuteCommand(command);

            Team winningTeam;
            Team losingTeam;

            int winnersGoals;
            int losersGoals;

            if (match.AwayTeamScore > match.HomeTeamScore)
            {
                winningTeam = match.AwayTeam;
                winningTeam.MatchesAway.Add(match);
                winnersGoals = match.AwayTeamScore;

                losingTeam = match.HomeTeam;
                losingTeam.MatchesHome.Add(match);
                losersGoals = match.HomeTeamScore;
            }
            else
            {
                winningTeam = match.HomeTeam;
                winningTeam.MatchesHome.Add(match);
                winnersGoals = match.HomeTeamScore;

                losingTeam = match.AwayTeam;
                losingTeam.MatchesAway.Add(match);
                losersGoals = match.AwayTeamScore;
            }

            var currentSeason = GetCurrentSeason();
            //if (currentSeason.Standings.Count == 0)
            //{
            //    CreateStandings();
            //}

            var winStat  = winningTeam.Standings.SingleOrDefault(x => x.Season.SeasonId == currentSeason.SeasonId);
            var loseStat = losingTeam.Standings.SingleOrDefault(x => x.Season.SeasonId == currentSeason.SeasonId);

            //var winStat = (from s in GetStandingsByTeamId(winningTeam.TeamId) where s.Season.IsCurrent == true select s).FirstOrDefault();
            //var loseStat = (from s in GetStandingsByTeamId(losingTeam.TeamId) where s.Season.IsCurrent == true select s).FirstOrDefault();

            winStat.Team          = winningTeam;
            loseStat.Team         = losingTeam;
            winStat.GamesPlayed  += 1;
            loseStat.GamesPlayed += 1;

            switch (match.Result)
            {
            case TypeOfResult.FT:
                FulltimeCounter(match, winStat, loseStat, winnersGoals, losersGoals);
                break;

            case TypeOfResult.OT:
                OvertimeCounter(match, winStat, loseStat, winnersGoals, losersGoals);
                break;

            case TypeOfResult.SO:
                ShootoutCounter(match, winStat, loseStat, winnersGoals, losersGoals);
                break;
            }

            command.CommandText = StandingsQuery(winStat);
            DbQuery.ExecuteCommand(command);
            command.CommandText = StandingsQuery(loseStat);
            DbQuery.ExecuteCommand(command);
        }