public IActionResult IndexTeams() { ScoreOverviewViewModel vm = GetTopScores(false); int displayNumber = 50; vm.Title = $"Top {displayNumber} Teams"; return(View(vm)); }
public IActionResult Index(bool sortOnAverage) { ScoreOverviewViewModel vm = GetTopScores(sortOnAverage); int displayNumber = 50; vm.Title = $"Top {displayNumber} Venues"; if (sortOnAverage) { vm.Title = $"{vm.Title} - Average per team"; } vm.SortOnAverage = sortOnAverage; return(View(vm)); }
private ScoreOverviewViewModel GetTopScores(bool sortOnAverage) { ScoreOverviewViewModel vm = new ScoreOverviewViewModel(); var teamScores = _context.Team.Select(tt => new TeamScoreViewModel { Venue = tt.Venue.Name, Team = tt.Name, Score = Convert.ToInt32(tt.Scores.Where(s => s.Status == "Done").Sum(s => (((decimal)s.Challenge.Points) * (s.HelpUsed ? 0.5m : 1m)))) } ) .Where(t => t.Score > 0) .OrderByDescending(o => o.Score).Take(50) .ToList(); vm.TeamScores = teamScores; List <VenueScoreViewModel> venueScores = _context.Team.Select(t => new VenueScoreViewModel { Venue = t.Venue.Name, Score = Convert.ToInt32(t.Scores.Where(s => s.Status == "Done").Sum(s => ((s.Challenge.Points) * (s.HelpUsed ? 0.5m : 1m)))) } ) .GroupBy(x => x.Venue) .Select(x => new VenueScoreViewModel { Venue = x.Key, Score = x.Sum(s => s.Score), nrTeams = x.Count(), avgScore = (x.Sum(s => s.Score) / x.Count()) } ) .Where(t => t.Score > 0) .ToList(); if (sortOnAverage) { vm.Title = vm.Title + "(Average score per Team)"; vm.VenueScores = venueScores.OrderByDescending(x => x.avgScore).ToList(); } else { vm.VenueScores = venueScores.OrderByDescending(x => x.Score).ToList(); } return(vm); }
public IActionResult Venues() { ScoreOverviewViewModel vm = new ScoreOverviewViewModel(); var venueScores = _context.Team.Select(t => new VenueScoreViewModel { Venue = t.Venue.Name, Score = Convert.ToInt32(t.Scores.Where(s => s.Status == "Done").Sum(s => ((s.Challenge.Points) * (s.HelpUsed ? 0.5m : 1m)))) } ) .GroupBy(x => x.Venue) .Select(x => new VenueScoreViewModel { Venue = x.Key, Score = x.Sum(s => s.Score) } ) .Where(t => t.Score > 0) .OrderByDescending(o => o.Score) .ToList(); vm.VenueScores = venueScores; return(View(vm)); }