Пример #1
0
        public TeamDetailsInfo GetTeam(int teamId)
        {
            var matches = this.GetTeamMatches(teamId);
            var players = this.GetTeamPlayers(teamId);

            var query = this.Context.MatchesLineUp
                        .Where(x => x.TeamId == teamId)
                        .Select(x => new
            {
                x.TeamId,
                x.Team.Name,
                x.YellowCard,
                x.ManOfTheMatch
            }).AsEnumerable();

            var team = query.GroupBy(x => new { x.TeamId, x.Name },
                                     (key, gr) => new TeamDetailsInfo
            {
                Id            = key.TeamId,
                Name          = key.Name,
                YellowCards   = gr.Count(y => y.YellowCard).ToString(),
                ManOfTheMatch = gr.Count(mm => mm.ManOfTheMatch).ToString(),
                BestGame      = matches.OrderByDescending(i => MatchResultHelper.Diff(i.ScoreInfo, key.TeamId))
                                .ThenByDescending(i => i.ScoreInfo.Sum(g => g.FullTimeScore)).First(),
                Losses  = matches.Count(i => MatchResultHelper.Diff(i.ScoreInfo, key.TeamId) < 0).ToString(),
                Draws   = matches.Count(i => MatchResultHelper.Diff(i.ScoreInfo, key.TeamId) == 0).ToString(),
                Wins    = matches.Count(i => MatchResultHelper.Diff(i.ScoreInfo, key.TeamId) > 0).ToString(),
                Goals   = matches.Sum(m => m.ScoreInfo.First(x => x.TeamId == teamId).FullTimeScore).ToString(),
                Players = players
            }).Single();

            return(team);
        }