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)); }
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); } }
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); }