Beispiel #1
0
        // GET: LeagueTables
        public ActionResult Index()
        {
            List <LeagueTable> results = new List <LeagueTable>();

            LeaguesManagerDbContext dbM = new LeaguesManagerDbContext();
            LeaguesManagerDbContext dbC = new LeaguesManagerDbContext();

            var matches = dbM.Matches
                          .Include(m => m.AwayClubs)
                          .Include(m => m.HomeClubs);

            var clubs = dbC.Clubs
                        .Include(c => c.League)
                        .Include(c => c.Manager)
                        .Include(c => c.Stadium);

            if (clubs.Count() > 0)
            {
                foreach (Club c in clubs)
                {
                    LeagueTable res = new LeagueTable();
                    res.TeamID   = c.ID;
                    res.TeamName = c.Name;

                    var wins   = 0;
                    var losses = 0;
                    var draws  = 0;

                    var goalsFor     = 0;
                    var goalsAgainst = 0;

                    var points = 0;

                    var allTeamMatches = matches
                                         .Where(x => x.HomeTeamID == c.ID || x.AwayTeamID == c.ID);

                    var allTeamHomeMatches = allTeamMatches
                                             .Where(x => x.HomeTeamID == c.ID);
                    var allTeamAwayMatches = allTeamMatches
                                             .Where(x => x.AwayTeamID == c.ID);

                    foreach (Match m in allTeamHomeMatches)
                    {
                        if (m.GoalsScoredHomeTeam > m.GoalsScoredAwayTeam)
                        {
                            wins++;
                            points += 3;
                        }
                        if (m.GoalsScoredHomeTeam < m.GoalsScoredAwayTeam)
                        {
                            losses++;
                        }
                        if (m.GoalsScoredHomeTeam == m.GoalsScoredAwayTeam)
                        {
                            draws++;
                            points += 1;
                        }

                        goalsFor     += m.GoalsScoredHomeTeam;
                        goalsAgainst += m.GoalsScoredAwayTeam;
                    }

                    foreach (Match m in allTeamAwayMatches)
                    {
                        if (m.GoalsScoredAwayTeam > m.GoalsScoredHomeTeam)
                        {
                            wins++;
                            points += 3;
                        }
                        if (m.GoalsScoredAwayTeam < m.GoalsScoredHomeTeam)
                        {
                            losses++;
                        }
                        if (m.GoalsScoredHomeTeam == m.GoalsScoredAwayTeam)
                        {
                            draws++;
                            points += 1;
                        }

                        goalsFor     += m.GoalsScoredAwayTeam;
                        goalsAgainst += m.GoalsScoredHomeTeam;
                    }

                    res.Wins           = wins;
                    res.Losses         = losses;
                    res.Draws          = draws;
                    res.GoalsFor       = goalsFor;
                    res.GoalsAgainst   = goalsAgainst;
                    res.GoalDifference = goalsFor - goalsAgainst;
                    res.Points         = points;

                    results.Add(res);
                }
            }


            return(View(results.OrderByDescending(x => x.Points)
                        .ThenByDescending(x => x.GoalDifference)
                        .ThenByDescending(x => x.GoalsFor)
                        .ThenBy(x => x.GoalsAgainst)));
        }