コード例 #1
0
ファイル: WebsiteService.cs プロジェクト: bojobiscuit/BojoBox
 private static int[] GetSkaterStats(SkaterSeasonFullDto dto)
 {
     return(new int[]
     {
         dto.GamesPlayed,
         dto.Goals,
         dto.Assists,
         dto.Points,
         dto.PlusMinus,
         dto.PenaltyMinutes,
         dto.PenaltyMajors,
         dto.Hits,
         dto.HitsTaken,
         dto.Shots,
         dto.OwnShotsBlocked,
         dto.OwnShotsMissed,
         dto.ShotsBlocked,
         dto.MinutesPlayed,
         dto.PPGoals,
         dto.PPAssists,
         dto.PPPoints,
         dto.PPShots,
         dto.PPMinutes,
         dto.PKGoals,
         dto.PKAssists,
         dto.PKPoints,
         dto.PKShots,
         dto.PKMinutes,
         dto.GameWinningGoals,
         dto.GameTyingGoals,
         dto.FaceoffWins,
         dto.FaceoffsTotal,
         dto.EmptyNetGoals,
         dto.HatTricks,
         dto.PenaltyShotGoals,
         dto.PenaltyShotAttempts,
         dto.FightsWon,
         dto.FightsLost,
         dto.FightsDraw,
     });
 }
コード例 #2
0
ファイル: WebsiteService.cs プロジェクト: bojobiscuit/BojoBox
        public StatTableDto GetPlayerSkaterTable(int skaterId, 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 skater    = GetSkater(skaterId);

                statTableDto.HeaderText = skater.Name;

                var skaterQuery = db.SkaterSeasons
                                  .Include(a => a.Skater)
                                  .Include(a => a.Team)
                                  .Include(a => a.League)
                                  .Where(a => a.SkaterId == skater.Id);

                bool isPlayoffs = CheckIfPlayoffs(cleanParameters.SeasonType.Value);
                skaterQuery = skaterQuery.Where(a => a.isPlayoffs == isPlayoffs);

                if (cleanParameters.League > 0)
                {
                    skaterQuery = skaterQuery.Where(a => a.LeagueId == leagueDto.Id);
                }

                int teamCount = skaterQuery.Where(a => a.Team != null).Select(a => a.Team.Id).Distinct().Count();

                statTableDto.Teams = skaterQuery.Select(a => a.Team).Where(a => a != null).DistinctBy(a => a.Id).Select(a => TeamDto.Create(a)).ToList();

                if (cleanParameters.Team > 0)
                {
                    skaterQuery = skaterQuery.Where(a => a.TeamId == cleanParameters.Team);
                }
                else
                {
                    skaterQuery = skaterQuery.Where(a => a.SubtotalForId == null);
                }

                List <SkaterSeasonFullDto> skaterSeasonDtos = skaterQuery.Select(a => SkaterSeasonFullDto.Create(a)).ToList();

                int i = 1;
                List <PlayerTableRow> rows = new List <PlayerTableRow>();
                foreach (var dto in skaterSeasonDtos)
                {
                    PlayerTableRow row = new PlayerTableRow();
                    row.Player = dto.Skater;
                    row.Rank   = i++;
                    row.Season = dto.Season;
                    row.Team   = dto.Team;
                    row.Stats  = GetSkaterStats(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     = "skater";
            statTableDto.StatParameters = cleanParameters;
            return(statTableDto);
        }
コード例 #3
0
ファイル: WebsiteService.cs プロジェクト: bojobiscuit/BojoBox
        public StatTableDto GetSeasonSkaterTable(StatParametersDto paramDto)
        {
            StatTableDto      statTableDto    = new StatTableDto();
            StatParametersDto cleanParameters = CleanSeasonParameters(paramDto);

            cleanParameters.Col = cleanParameters.Col ?? 3;

            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 skaterSeasonQuery = db.SkaterSeasons
                                        .Where(a => a.LeagueId == leagueDto.Id);

                if (teamDto != null)
                {
                    int?franchiseId = null;
                    if (teamDto.FranchiseId.HasValue)
                    {
                        franchiseId = db.Franchises.FirstOrDefault(a => a.Id == teamDto.FranchiseId).Id;
                    }

                    if (franchiseId.HasValue)
                    {
                        skaterSeasonQuery = skaterSeasonQuery.Include(a => a.Team).Where(a => a.Team.FranchiseId == franchiseId);
                    }
                    else
                    {
                        skaterSeasonQuery = skaterSeasonQuery.Where(a => a.TeamId == teamDto.Id);
                    }
                }
                else
                {
                    skaterSeasonQuery = skaterSeasonQuery.Where(a => a.SubtotalForId == null);
                }

                switch (cleanParameters.SeasonType)
                {
                case 1: skaterSeasonQuery = skaterSeasonQuery.Where(a => !a.isPlayoffs); break;

                case 2: skaterSeasonQuery = skaterSeasonQuery.Where(a => a.isPlayoffs); break;
                }

                if (cleanParameters.Era > 0)
                {
                    switch (cleanParameters.Era)
                    {
                    case 1: skaterSeasonQuery = skaterSeasonQuery.Where(a => a.Season >= 12); break;

                    case 2: skaterSeasonQuery = skaterSeasonQuery.Where(a => a.Season <= 11 && a.Season >= 9); break;

                    case 3: skaterSeasonQuery = skaterSeasonQuery.Where(a => a.Season <= 8); break;
                    }
                }

                if (cleanParameters.Season > 0)
                {
                    skaterSeasonQuery = skaterSeasonQuery.Where(a => a.Season == cleanParameters.Season);
                }

                IQueryable <IdStatPair> idStatPairs = GetIdStatPairs(cleanParameters.Col, skaterSeasonQuery);

                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 skaterSeasonDtos = db.SkaterSeasons
                                       .Include(a => a.Team)
                                       .Include(a => a.Skater)
                                       .Where(a => selectedIds.Contains(a.Id))
                                       .Select(a => SkaterSeasonFullDto.Create(a))
                                       .ToList();

                List <PlayerTableRow> rows = new List <PlayerTableRow>();
                foreach (var dto in skaterSeasonDtos)
                {
                    PlayerTableRow row = new PlayerTableRow();
                    row.Player = dto.Skater;
                    row.Season = dto.Season;
                    row.Team   = dto.Team;
                    row.Stats  = GetSkaterStats(dto);
                    rows.Add(row);
                }

                statTableDto.PlayerRows = rows.OrderByDescending(a => a.Stats.ElementAt(cleanParameters.Col.Value)).ThenByDescending(a => a.Stats.ElementAt(13));
                AddRanks(statTableDto.PlayerRows, 1 + (cleanParameters.Page.Value * pageSize));
            }

            statTableDto.DisplayType    = "season";
            statTableDto.PlayerType     = "skater";
            statTableDto.StatParameters = cleanParameters;
            return(statTableDto);
        }