private static int[] GetGoalieStats(GoalieSeasonFullDto dto) { return(new int[] { dto.GamesPlayed, dto.Wins, dto.Losses, dto.OvertimeLosses, dto.Minutes, dto.PenaltyMinutes, dto.Shutouts, dto.GoalsAgainst, dto.ShotsAgainst, dto.Assists, dto.EmptyGoalAgainst, dto.PenaltyShotSaves, dto.PenaltyShotAttempts, dto.Starts, dto.Backups, }); }
public StatTableDto GetPlayerGoalieTable(int goalieId, StatParametersDto paramDto) { StatTableDto statTableDto = new StatTableDto(); StatParametersDto cleanParameters = CleanPlayerParameters(paramDto); using (db = new BojoBoxContext()) { LeagueDto leagueDto = GetLeague(cleanParameters.League.Value); TeamDto teamDto = GetTeam(cleanParameters.Team.Value); PlayerDto goalieDto = GetGoalie(goalieId); statTableDto.HeaderText = goalieDto.Name; var goalieSeasonsQuery = db.GoalieSeasons .Include(a => a.Goalie) .Include(a => a.Team) .Include(a => a.League) .Where(a => a.GoalieId == goalieDto.Id); bool isPlayoffs = CheckIfPlayoffs(cleanParameters.SeasonType.Value); goalieSeasonsQuery = goalieSeasonsQuery.Where(a => a.isPlayoffs == isPlayoffs); if (cleanParameters.League > 0) { goalieSeasonsQuery = goalieSeasonsQuery.Where(a => a.LeagueId == leagueDto.Id); } int teamCount = goalieSeasonsQuery.Where(a => a.Team != null).Select(a => a.Team.Id).Distinct().Count(); statTableDto.Teams = goalieSeasonsQuery.Select(a => a.Team).Where(a => a != null).DistinctBy(a => a.Id).Select(a => TeamDto.Create(a)).ToList(); if (cleanParameters.Team > 0) { goalieSeasonsQuery = goalieSeasonsQuery.Where(a => a.TeamId == cleanParameters.Team); } else { goalieSeasonsQuery = goalieSeasonsQuery.Where(a => a.SubtotalForId == null); } List <GoalieSeasonFullDto> goalieSeasonDtos = goalieSeasonsQuery.Select(a => GoalieSeasonFullDto.Create(a)).ToList(); int i = 1; List <PlayerTableRow> rows = new List <PlayerTableRow>(); foreach (var dto in goalieSeasonDtos) { PlayerTableRow row = new PlayerTableRow(); row.Player = dto.Goalie; row.Rank = i++; row.Season = dto.Season; row.Team = dto.Team; row.Stats = GetGoalieStats(dto); rows.Add(row); } if (cleanParameters.Col == null) { rows = rows.OrderByDescending(a => a.Season).ToList(); } else { rows = rows.OrderByDescending(a => a.Stats.ElementAt(cleanParameters.Col.Value)).ThenByDescending(a => a.Stats.ElementAt(13)).ToList(); } statTableDto.PlayerRows = rows; List <int> totals = new List <int>(); if (rows.Any()) { totals = GetTotals(rows); totals.Insert(0, teamCount); totals.Insert(0, rows.Count()); } statTableDto.Totals = totals; } statTableDto.DisplayType = "player"; statTableDto.PlayerType = "goalie"; statTableDto.StatParameters = cleanParameters; return(statTableDto); }
public StatTableDto GetSeasonGoalieTable(StatParametersDto paramDto) { StatTableDto statTableDto = new StatTableDto(); StatParametersDto cleanParameters = CleanSeasonParameters(paramDto); cleanParameters.Col = cleanParameters.Col ?? 1; using (db = new BojoBoxContext()) { LeagueDto leagueDto = GetLeague(cleanParameters.League.Value); TeamDto teamDto = GetTeam(cleanParameters.Team.Value); statTableDto.Teams = GetTeamParameters(leagueDto.Id); statTableDto.Seasons = GetSeasonParameters(leagueDto.Id, cleanParameters.SeasonType == 2); statTableDto.HeaderText = leagueDto.Acronym + " - Season Stats"; var goalieSeasonQuery = db.GoalieSeasons .Where(a => a.LeagueId == leagueDto.Id); if (teamDto != null) { goalieSeasonQuery = goalieSeasonQuery.Where(a => a.TeamId == teamDto.Id); } else { goalieSeasonQuery = goalieSeasonQuery.Where(a => a.SubtotalForId == null); } switch (cleanParameters.SeasonType) { case 1: goalieSeasonQuery = goalieSeasonQuery.Where(a => !a.isPlayoffs); break; case 2: goalieSeasonQuery = goalieSeasonQuery.Where(a => a.isPlayoffs); break; } if (cleanParameters.Era > 0) { switch (cleanParameters.Era) { case 1: goalieSeasonQuery = goalieSeasonQuery.Where(a => a.Season >= 12); break; case 2: goalieSeasonQuery = goalieSeasonQuery.Where(a => a.Season <= 11 && a.Season >= 9); break; case 3: goalieSeasonQuery = goalieSeasonQuery.Where(a => a.Season <= 8); break; } } if (cleanParameters.Season > 0) { goalieSeasonQuery = goalieSeasonQuery.Where(a => a.Season == cleanParameters.Season); } var idStatPairs = GetIdStatPairs(cleanParameters.Col, goalieSeasonQuery); idStatPairs = idStatPairs.OrderByDescending(a => a.Stat); // TODO: Check if to sort ascending int pageSize = 20; statTableDto.PageCount = GetPageCount(cleanParameters, idStatPairs); int[] selectedIds = idStatPairs.Select(b => b.Id).Skip(cleanParameters.Page.Value * pageSize).Take(pageSize).ToArray(); var goalieSeasonDtos = db.GoalieSeasons .Include(a => a.Team) .Include(a => a.Goalie) .Where(a => selectedIds.Contains(a.Id)) .Select(a => GoalieSeasonFullDto.Create(a)) .ToList(); List <PlayerTableRow> rows = new List <PlayerTableRow>(); foreach (var dto in goalieSeasonDtos) { PlayerTableRow row = new PlayerTableRow(); row.Player = dto.Goalie; row.Season = dto.Season; row.Team = dto.Team; row.Stats = GetGoalieStats(dto); rows.Add(row); } statTableDto.PlayerRows = rows.OrderByDescending(a => a.Stats.ElementAt(cleanParameters.Col.Value)).ThenByDescending(a => a.Stats.ElementAt(4)); AddRanks(statTableDto.PlayerRows, 1 + (cleanParameters.Page.Value * pageSize)); } statTableDto.DisplayType = "season"; statTableDto.PlayerType = "goalie"; statTableDto.StatParameters = cleanParameters; return(statTableDto); }