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)); }
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); }