예제 #1
0
        public IHttpActionResult All(int take)
        {
            if (take <= 0)
            {
                ModelState.AddModelError("Take", "Invalid request!");

                return(BadRequest(ModelState));
            }

            AllMatchesQuery                  query         = new AllMatchesQuery(take);
            IEnumerable <MatchResult>        matches       = queryDispatcher.Dispatch <AllMatchesQuery, IEnumerable <MatchResult> >(query);
            IEnumerable <MatchResponseModel> responseModel = Mapper.Map <IEnumerable <MatchResponseModel> >(matches);

            return(Ok(responseModel));
        }
예제 #2
0
        public IEnumerable <MatchResult> Handle(AllMatchesQuery query)
        {
            IEnumerable <Match> matches = matchesCache.All(_ => true).OrderBy(x => x.Type).Take(query.Take);

            EntitiesByIdQuery <Tournament> tournamentsQuery = new EntitiesByIdQuery <Tournament>(matches.Select(x => x.TournamentId).Distinct());
            IEnumerable <Tournament>       tournaments      = tournamentsHandler.Handle(tournamentsQuery);

            TeamsByIdsQuery    teamsQuery = new TeamsByIdsQuery(matches.Select(x => x.HomeTeamId), matches.Select(x => x.AwayTeamId));
            IEnumerable <Team> teams      = teamsHandler.Handle(teamsQuery);

            ICollection <MatchResult> matchResults = new List <MatchResult>();

            foreach (var match in matches)
            {
                MatchResult matchResult = Mapper.Map <MatchResult>(match);
                matchResult.HomeTeam   = teams.First(x => x.Id == match.HomeTeamId).Name;
                matchResult.AwayTeam   = teams.First(x => x.Id == match.AwayTeamId).Name;
                matchResult.Tournament = tournaments.First(x => x.Id == match.TournamentId).Name;

                matchResults.Add(matchResult);
            }

            return(matchResults);
        }