예제 #1
0
        public List <PlayerGameSummaryViewModel> GetPlayerGameSummary(string playerName, string serverName, int lastGameId, string heroUnitTypeId)
        {
            if (heroUnitTypeId == "NONE")
            {
                heroUnitTypeId = "";
            }
            //Get player total summary first
            PlayerStatSummaryData summaryData = _playerStatDal.GetPlayerSummary(playerName, serverName);

            if (summaryData == null)
            {
                return(null);
            }
            return(GetPlayerGameSummary(summaryData.PlayerId, lastGameId, heroUnitTypeId));
        }
예제 #2
0
        public PlayerStatSummaryData GetPlayerSummary(string playerName, string serverName)
        {
            using (frsDatabase db = frsDatabase.Create())
            {
                PlayerStatSummaryData summaryData = (
                    from playerStat in db.playerstat
                    join player in db.player on playerStat.FK_PlayerID equals player.PlayerID
                    join server in db.server on player.FK_ServerID equals server.ServerID
                    join playerHeroStat in db.playerherostat on player.PlayerID equals playerHeroStat.FK_PlayerID
                    where playerName == player.PlayerName &&
                    serverName == server.ServerName
                    group playerHeroStat by new
                {
                    player.PlayerID,
                    player.PlayerName,
                    playerStat.Win,
                    playerStat.Loss
                }
                    into g
                    select new PlayerStatSummaryData()
                {
                    PlayerId = g.Key.PlayerID,
                    PlayerName = g.Key.PlayerName,
                    Win = g.Key.Win,
                    Loss = g.Key.Loss,
                    TotalPlayerKills = g.Sum(x => x.TotalHeroKills),
                    TotalPlayerDeaths = g.Sum(x => x.TotalHeroDeaths),
                    TotalPlayerAssists = g.Sum(x => x.TotalHeroAssists),
                    TotalPlayerGameCount = g.Sum(x => x.HeroPlayCount)
                }).FirstOrDefault();

                if (summaryData == null)
                {
                    return(null);
                }

                DateTime lastGamePlayed = (
                    from game in db.game
                    join gameDetail in db.gameplayerdetail on game.GameID equals gameDetail.FK_GameID
                    where gameDetail.FK_PlayerID == summaryData.PlayerId
                    orderby game.PlayedDate descending
                    select game.PlayedDate
                    ).First();

                summaryData.LastGamePlayed = lastGamePlayed;
                return(summaryData);
            }
        }
예제 #3
0
        public PlayerStatsPageViewModel GetPlayerStatSummary(string playerName, string serverName, int lastGameId)
        {
            PlayerStatsPageViewModel vm = new PlayerStatsPageViewModel
            {
                UserName = playerName,
                Server   = serverName
            };
            //Get player total summary first
            PlayerStatSummaryData summaryData = _playerStatDal.GetPlayerSummary(playerName, serverName);

            if (summaryData == null)
            {
                vm.HasFoundUser = false;
                return(vm);
            }

            vm.UserName           = summaryData.PlayerName;
            vm.HasFoundUser       = true;
            vm.Wins               = summaryData.Win;
            vm.Losses             = summaryData.Loss;
            vm.WLPercent          = $"{(vm.Wins*1.0/(vm.Wins + vm.Losses)):0.0%}";
            vm.LastPlayedDateTime = summaryData.LastGamePlayed;
            double avgPlayerKills   = (summaryData.TotalPlayerKills * 1.0 / summaryData.TotalPlayerGameCount);
            double avgPlayerDeaths  = (summaryData.TotalPlayerDeaths * 1.0 / summaryData.TotalPlayerGameCount);
            double avgPlayerAssists = (summaryData.TotalPlayerAssists * 1.0 / summaryData.TotalPlayerGameCount);

            vm.AveragePlayerKills   = avgPlayerKills.ToString("0.0");
            vm.AveragePlayerDeaths  = avgPlayerDeaths.ToString("0.0");
            vm.AveragePlayerAssists = avgPlayerAssists.ToString("0.0");
            vm.AveragePlayerKDA     =
                ((avgPlayerKills + avgPlayerAssists) / avgPlayerDeaths)
                .ToString("0.00");


            //Get player hero summary
            List <PlayerHeroStatSummaryData> heroStatSummaryData =
                _playerStatDal.GetPlayerHeroSummary(summaryData.PlayerId);
            List <PlayerHeroStatsViewModel> vmHeroStats = new List <PlayerHeroStatsViewModel>();

            foreach (PlayerHeroStatSummaryData heroSummary in heroStatSummaryData)
            {
                PlayerHeroStatsViewModel vmHero = new PlayerHeroStatsViewModel
                {
                    HeroImageURL  = ContentURL.GetHeroIconURL(heroSummary.HeroUnitTypeID),
                    HeroName      = heroSummary.HeroName,
                    HeroWins      = heroSummary.Wins,
                    HeroLosses    = heroSummary.Losses,
                    HeroWLPercent = $"{(heroSummary.Wins*1.0/(heroSummary.Wins + heroSummary.Losses)):0.0%}"
                };
                double avgHeroKills   = (heroSummary.HeroTotalKills * 1.0 / heroSummary.HeroTotalPlayCount);
                double avgHeroDeaths  = (heroSummary.HeroTotalDeaths * 1.0 / heroSummary.HeroTotalPlayCount);
                double avgHeroAssists = (heroSummary.HeroTotalAssists * 1.0 / heroSummary.HeroTotalPlayCount);
                vmHero.HeroAverageKills   = avgHeroKills.ToString("0.0");
                vmHero.HeroAverageDeaths  = avgHeroDeaths.ToString("0.0");
                vmHero.HeroAverageAssists = avgHeroAssists.ToString("0.0");
                vmHero.HeroAverageKDA     = ((avgHeroKills + avgHeroAssists) / avgHeroDeaths).ToString("0.00");

                double heroKDA = ((avgHeroKills + avgHeroAssists) / avgHeroDeaths);
                vmHero.HeroAverageKDA = heroKDA.ToString("0.00");
                vmHero.HeroKDAColor   = CSSColorizer.GetKDAColor(heroKDA);

                vmHeroStats.Add(vmHero);
            }

            vm.PlayerHeroStatSummaryData = vmHeroStats;
            vm.PlayerGameSummaryData     = GetPlayerGameSummary(summaryData.PlayerId, lastGameId, "");
            vm.LastGameID = vm.PlayerGameSummaryData.Min(x => x.GameID);

            vm.SearchableServantData = _servantSearchDal.GetSearchableServants();
            return(vm);
        }