public async Task <IViewComponentResult> InvokeAsync(int tournamentID)
        {
            var viewModel = new TournamentResultsViewModel
            {
                Tournament = await _service.GetTournament(tournamentID)
            };

            return(View(viewModel));
        }
Пример #2
0
        public async Task <TournamentResultsViewModel> GetResults(int tournamentId)
        {
            var tournament = await _dbContext.Tournaments.Include(t => t.Gamblers).ThenInclude(g => g.Gambler)
                             .Include(t => t.Rounds).ThenInclude(r => r.Matches).ThenInclude(m => m.Bets)
                             .FirstAsync(t => t.Id == tournamentId);

            var result = new TournamentResultsViewModel
            {
                TournamentId = tournament.Id
            };

            var gamblers = tournament.Gamblers.Where(g => g.IsActive).Select(g => g.Gambler).Distinct().ToList();

            result.GamblersResults = new List <TournamentGamblerResultsViewModel>(gamblers.Count);

            foreach (var gambler in gamblers)
            {
                var gamblerResult = new TournamentGamblerResultsViewModel
                {
                    GamblerId          = gambler.Id,
                    GamblerDisplayName = gambler.DisplayName,
                    TorunamentId       = tournament.Id
                };

                var finishedMatches = tournament.Rounds.SelectMany(r => r.Matches.Where(m => m.GetResult() != Shared.Enums.MatchResultEnum.Pending));

                var gamblerBets = tournament.Rounds.SelectMany(r => r.Matches.SelectMany(m => m.Bets));

                foreach (var match in finishedMatches)
                {
                    var betForMatch = gamblerBets.FirstOrDefault(b => b.MatchId == match.Id);

                    if (betForMatch == null)
                    {
                        //Gambler could not placed the bet for this macth
                        continue;
                    }

                    gamblerResult.PointsForTypingMatchResult += match.GetResult() == betForMatch.GetResult() ? 1 : 0;

                    if (match.TeamAScore == betForMatch.TeamAScore && match.TeamBScore == betForMatch.TeamBScore)
                    {
                        gamblerResult.PointsForTypingExactMatchScore += 3;
                    }
                }

                result.GamblersResults.Add(gamblerResult);
            }

            result.GamblersResults = result.GamblersResults.OrderByDescending(g => g.GeneralPoints).ToList();

            return(result);
        }
Пример #3
0
        /// <summary>
        /// Renders a view with game results of the specified tournament.
        /// </summary>
        /// <param name="tournamentId">Identifier of the tournament.</param>
        /// <param name="tournamentName">Name of the tournament.</param>
        /// <returns>View with game results of the specified tournament.</returns>
        public ActionResult TournamentResults(int tournamentId, string tournamentName)
        {
            var tournamentResults = new TournamentResultsViewModel {
                Id            = tournamentId,
                Name          = tournamentName,
                GameResults   = _gameService.GetTournamentResults(tournamentId).Select(gr => GameResultViewModel.Map(gr)).ToList(),
                Authorization = _authService.GetAllowedOperations(new List <AuthOperation>
                {
                    AuthOperations.Games.EditResult,
                    AuthOperations.Games.Delete
                })
            };

            return(View(tournamentResults));
        }
        public async Task <IActionResult> GetResults(int id)
        {
            TournamentResultsViewModel result = await _tournamentService.GetResults(id);

            return(Json(result));
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="TournamentResultsViewModelBuilder"/> class
 /// </summary>
 public TournamentResultsViewModelBuilder()
 {
     _tournamentResultsViewModel = new TournamentResultsViewModel()
     {
         Id          = 1,
         Name        = "Name",
         GameResults = new List <GameResultViewModel>
         {
             new GameResultViewModel
             {
                 Id                = 1,
                 HomeTeamId        = 1,
                 AwayTeamId        = 2,
                 HomeTeamName      = "TeamNameA",
                 AwayTeamName      = "TeamNameB",
                 IsTechnicalDefeat = false,
                 GameScore         = new ScoreViewModel(3, 2),
                 SetScores         = new List <ScoreViewModel>
                 {
                     new ScoreViewModel(25, 20),
                     new ScoreViewModel(24, 26),
                     new ScoreViewModel(28, 30),
                     new ScoreViewModel(25, 22),
                     new ScoreViewModel(27, 25),
                 },
                 GameDate       = DateTime.Parse(DATE_A),
                 Round          = 1,
                 TournamentId   = 1,
                 UrlToGameVideo = URL_A,
             },
             new GameResultViewModel
             {
                 Id                = 2,
                 HomeTeamId        = 1,
                 AwayTeamId        = 3,
                 HomeTeamName      = "TeamNameA",
                 AwayTeamName      = "TeamNameC",
                 IsTechnicalDefeat = false,
                 GameScore         = new ScoreViewModel(3, 1),
                 SetScores         = new List <ScoreViewModel>
                 {
                     new ScoreViewModel(26, 28),
                     new ScoreViewModel(25, 15),
                     new ScoreViewModel(25, 21),
                     new ScoreViewModel(29, 27),
                     new ScoreViewModel(),
                 },
                 GameDate       = DateTime.Parse(DATE_B),
                 Round          = 2,
                 TournamentId   = 1,
                 UrlToGameVideo = URL_B,
             },
             new GameResultViewModel
             {
                 Id                = 3,
                 HomeTeamId        = 2,
                 AwayTeamId        = 3,
                 HomeTeamName      = "TeamNameB",
                 AwayTeamName      = "TeamNameC",
                 IsTechnicalDefeat = true,
                 GameScore         = new ScoreViewModel(0, 3),
                 SetScores         = new List <ScoreViewModel>
                 {
                     new ScoreViewModel(0, 25),
                     new ScoreViewModel(0, 25),
                     new ScoreViewModel(0, 25),
                     new ScoreViewModel(),
                     new ScoreViewModel(),
                 },
                 GameDate       = DateTime.Parse(DATE_C),
                 Round          = 3,
                 TournamentId   = 1,
                 UrlToGameVideo = URL_C,
             },
         },
     };
 }