public IList <TeamRankingViewModel> GetTeamRankingOfGroup(string group) { var resultList = new List <TeamRankingViewModel>(); var teams = new Dictionary <long, TeamRankingViewModel>(); var groupMatches = _context.Match.Include("Team1").Include("Team2") .Where(m => m.Team1.Group == group && m.Team2.Group == group && m.Type == EnumMatchType.Group).ToList(); foreach (Match match in groupMatches) { var team1 = teams.GetValueOrDefault(match.Team1.Id); if (team1 == null) { team1 = new TeamRankingViewModel(_mapper.Map <TeamViewModel>(match.Team1)); } var team2 = teams.GetValueOrDefault(match.Team2.Id); if (team2 == null) { team2 = new TeamRankingViewModel(_mapper.Map <TeamViewModel>(match.Team2)); } if (match.ScoreTeam1 != null && match.ScoreTeam2 != null) { if (match.ScoreTeam1 > match.ScoreTeam2) { team1.Win++; team2.Loose++; team1.Score = team1.Score + 3; } else if (match.ScoreTeam1 < match.ScoreTeam2) { team1.Loose++; team2.Win++; team2.Score = team2.Score + 3; } else { team1.Draw++; team2.Draw++; team1.Score++; team2.Score++; } team1.GoalAverage = team1.GoalAverage + (int)match.ScoreTeam1 - (int)match.ScoreTeam2; team2.GoalAverage = team2.GoalAverage + (int)match.ScoreTeam2 - (int)match.ScoreTeam1; } AddOrUpdateValue(teams, team1); AddOrUpdateValue(teams, team2); } return(teams.Values.OrderByDescending(r => r.Score).ThenByDescending(r => r.GoalAverage).ToList()); }
private static void AddOrUpdateValue(Dictionary <long, TeamRankingViewModel> dictionnary, TeamRankingViewModel value) { if (dictionnary.ContainsKey(value.Team.Id)) { dictionnary[value.Team.Id] = value; } else { dictionnary.Add(value.Team.Id, value); } }