예제 #1
0
        public LeagueRoundModule()
        {
            Get[SharedRoutes.SeasonAllRounds] = parameters => {
                var seasonId = (int)parameters.seasonId;
                var rounds = leagueRepo.GetCurrentSeasonRounds(seasonId).Select(Mapper.Map<RoundDto>).ToList();
                return Response.AsJson(rounds);
            };

            Get[SharedRoutes.RoundGames] = parameters => {
                var seasonId = (int)parameters.seasonId;
                var roundId = (int)parameters.roundId;
                var gameRoundsDb = leagueRepo.GetAllRoundGames(roundId);
                if (gameRoundsDb.Any(g => g.SeasonRound.LeagueSeasonId != seasonId))
                    return HttpStatusCode.Conflict;
                var games = gameRoundsDb.Select(Mapper.Map<GameDto>).ToList();
                return Response.AsJson(games);
            };

            Get[SharedRoutes.CurrentRoundGames] = parameters => {
                var seasonId = (int)parameters.seasonId;
                var season = leagueRepo.GetLeagueSeasonById(seasonId);
                var currentRound = leagueRepo.GetCurrentSeasonRound(season);
                var gameRoundsDb = leagueRepo.GetAllRoundGames(currentRound.RoundId);
                if (gameRoundsDb.Any(g => g.SeasonRound.LeagueSeasonId != seasonId))
                    return HttpStatusCode.Conflict;
                var games = gameRoundsDb.Select(Mapper.Map<GameDto>).ToList();
                return Response.AsJson(games);
            };

            Get[SharedRoutes.SeasonRoundsTable] = parameters => {
                var seasonId = (int)parameters.seasonId;
                var rounds = leagueRepo.GetCurrentSeasonRounds(seasonId).Select(Mapper.Map<RoundStatsDto>).OrderBy(r => r.RoundNumber).ToList();
                var roundTable = new RoundsTable
                {
                    LeagueSeasonId = seasonId,
                    IsFinished = rounds.Count >= 38,
                    Rounds = rounds,
                    StartDate = rounds.FirstOrDefault()?.StartDate,
                    EndDate = rounds.LastOrDefault()?.EndDate,
                };
                return Response.AsJson(roundTable);
            };

            Get[SharedRoutes.SeasonRoundsStats] = parameters => {
                var seasonId = (int)parameters.seasonId;
                var averageRoundStats = Mapper.Map<SeasonAverageRoundDto>(analysisRepo.GetAverageRoundStats(seasonId));
                return Response.AsJson(averageRoundStats);
            };

        }