public async Task <IViewComponentResult> InvokeAsync(int tournamentID) { var viewModel = new TournamentResultsViewModel { Tournament = await _service.GetTournament(tournamentID) }; return(View(viewModel)); }
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); }
/// <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, }, }, }; }