private static void PutPlayer(long playerId) { var connectionString = ConfigurationManager.ConnectionStrings["Main"].ConnectionString; var provider = new DbProvider(connectionString); var player = provider.GetPlayer(playerId, true); player.Calculate(provider.GetWn8ExpectedValues(player.Plataform)); var putter = new Putter("http://localhost:6094/", ConfigurationManager.AppSettings["ApiAdminKey"]); putter.Put(player); var ks = new KeyStore(connectionString); var savedPlayer = ks.GetPlayer(playerId); }
public ActionResult Recent(string clanName, long playerId) { var getter = HttpRuntime.Cache.Get("FileGetter", GlobalHelper.CacheMinutes, () => new FileGetter(GlobalHelper.DataFolder)); var clan = getter.GetClan(clanName); if (clan == null) { return(new HttpStatusCodeResult(HttpStatusCode.NotFound, $"Can't find the clan [{clanName}] on this server.")); } var player = clan.Get(playerId); if (player == null) { return(new HttpStatusCodeResult(HttpStatusCode.NotFound, $"Can't find a player with id {clanName} on this server.")); } string url; switch (player.Origin) { case PlayerDataOrigin.WotStatConsole: url = GetWoTStatConsoleRecentUrl(player); break; case PlayerDataOrigin.WotInfo: url = GetWoTInfoRecentUrl(player); break; default: url = GetDefaultRecentUrl(player); break; } if (GlobalHelper.UseExternalPlayerPage) { return(Redirect(url)); } try { var connectionString = ConfigurationManager.ConnectionStrings["Store"].ConnectionString; var db = new KeyStore(connectionString); var fullPlayer = db.GetPlayer(playerId); if (fullPlayer == null) { Log.Warn($"Recent({clanName}, {playerId}): fullPlayer == null"); return(Redirect(url)); } var wn8ExpectedValues = getter.GetTanksWN8ReferenceValues(); if (wn8ExpectedValues == null) { Log.Error($"Recent({clanName}, {playerId}): wn8ExpectedValues == null"); return(Redirect(url)); } var moes = getter.GetTanksMoe(); if (fullPlayer.Performance == null) { Log.Error($"Recent({clanName}, {playerId}): fullPlayer.Performance == null"); return(Redirect(url)); } if (fullPlayer.Performance.All == null) { Log.Error($"Recent({clanName}, {playerId}): fullPlayer.Performance.All == null"); return(Redirect(url)); } if (fullPlayer.Performance.Month == null) { Log.Error($"Recent({clanName}, {playerId}): fullPlayer.Performance.Month == null"); return(Redirect(url)); } if (fullPlayer.Performance.Week == null) { Log.Error($"Recent({clanName}, {playerId}): fullPlayer.Performance.Week == null"); return(Redirect(url)); } fullPlayer.Calculate(wn8ExpectedValues); var model = new PlayerPage { Clan = clan, Player = fullPlayer, Wn8ExpectedValues = wn8ExpectedValues, MoEs = moes, ExternalUrl = url, WoTStatConsoleOverallUrl = GetWoTStatConsoleOverallUrl(player), WotStatConsoleRecentUrl = GetWoTStatConsoleRecentUrl(player), WotStatConsoleHistoryUrl = GetWoTStatConsoleHistoryUrl(player), WotStatConsoleClanUrl = GetWotStatConsoleClan(clan), WoTInfoOverallUrl = GetWoTInfoOverallUrl(player), WoTInfoRecentUrl = GetWoTInfoRecentUrl(player), WoTInfoHistoryUrl = GetWoTInfoHistoryUrl(player), WoTConsoleRuOverallUrl = GetWoTConsoleRuOverallUrl(player), WotConsoleRuClanUrl = GetWotConsoleRuClanUrl(clan), WoTStarsOverallUrl = GetWoTStarsOverallUrl(player), WoTStarsClanUrl = GetWoTStarsClanUrl(clan), }; return(View(model)); } catch (Exception ex) { Log.Error($"Recent({clanName}, {playerId})", ex); return(Redirect(url)); } }
public ActionResult Overall(string clanName, long playerId) { var getter = HttpRuntime.Cache.Get("FileGetter", GlobalHelper.CacheMinutes, () => new FileGetter(GlobalHelper.DataFolder)); var clan = getter.GetClan(clanName); if (clan == null) { return(new HttpStatusCodeResult(HttpStatusCode.NotFound, $"Can't find the clan [{clanName}] on this server.")); } var player = clan.Get(playerId); if (player == null) { return(new HttpStatusCodeResult(HttpStatusCode.NotFound, $"Can't find a player with id {playerId} on the clan [{clanName}].")); } string url; switch (player.Origin) { case PlayerDataOrigin.WotStatConsole: url = GetWoTStatConsoleOverallUrl(player); break; case PlayerDataOrigin.WotInfo: url = GetWoTInfoOverallUrl(player); break; default: url = GetDefaultOverallUrl(player); break; } if (GlobalHelper.UseExternalPlayerPage) { return(Redirect(url)); } try { var connectionString = ConfigurationManager.ConnectionStrings["Store"].ConnectionString; var db = new KeyStore(connectionString); var fullPlayer = db.GetPlayer(playerId); if (fullPlayer == null) { Log.Warn($"Overall({clanName}, {playerId}): fullPlayer == null"); return(Redirect(url)); } var wn8ExpectedValues = getter.GetTanksWN8ReferenceValues(); if (wn8ExpectedValues == null) { Log.Error($"Overall({clanName}, {playerId}): wn8ExpectedValues == null"); return(Redirect(url)); } var moes = getter.GetTanksMoe(); if (fullPlayer.Performance == null) { Log.Warn($"Overall({clanName}, {playerId}): fullPlayer.Performance == null"); return(Redirect(url)); } if (fullPlayer.Performance.All == null) { Log.Error($"Overall({clanName}, {playerId}): fullPlayer.Performance.All == null"); return(Redirect(url)); } if (fullPlayer.Performance.Month == null) { Log.Error($"Overall({clanName}, {playerId}): fullPlayer.Performance.Month == null"); return(Redirect(url)); } if (fullPlayer.Performance.Week == null) { Log.Error($"Overall({clanName}, {playerId}): fullPlayer.Performance.Week == null"); return(Redirect(url)); } fullPlayer.Calculate(wn8ExpectedValues); var allLeaderBoard = getter.GetTankLeaders().ToArray(); var onLeaderboard = allLeaderBoard.Where(l => l.PlayerId == playerId).ToArray(); var onLeaderBoardTanks = new HashSet <long>(onLeaderboard.Select(l => l.TankId)); var worstLeaders = allLeaderBoard.Where(l => l.Order == 25 && fullPlayer.HasTank(l.TankId) && !onLeaderBoardTanks.Contains(l.TankId)).ToDictionary(l => l.TankId); var leaderIfPlayABattle = fullPlayer.Performance.All.Values .Where(t => (t.Tier >= 5) && (t.Battles >= t.Tier * 10) && (worstLeaders.ContainsKey(t.TankId)) && (t.TotalDamagePerBattle > worstLeaders[t.TankId].TotalDamage) && (t.LastBattleAge.TotalDays > 28 * 3)) .OrderByDescending(t => t.Tier).ThenBy(t => t.LastBattle).ToArray(); var leaderIfFewMoreGames = fullPlayer.Performance.All.Values .Where(t => (t.Tier >= 5) && (t.Battles >= (t.Tier * 10) - 10) && (t.Battles < (t.Tier * 10)) && (worstLeaders.ContainsKey(t.TankId)) && (t.TotalDamagePerBattle > worstLeaders[t.TankId].TotalDamage) && (t.LastBattleAge.TotalDays <= 28 * 3)) .OrderByDescending(t => t.Tier).ThenBy(t => t.LastBattle).ToArray(); var leaderIfFewMoreDamage = fullPlayer.Performance.All.Values .Where(t => (t.Tier >= 5) && (t.Battles >= (t.Tier * 10)) && (worstLeaders.ContainsKey(t.TankId)) && (t.TotalDamagePerBattle * 1.05 > worstLeaders[t.TankId].TotalDamage) && (t.TotalDamagePerBattle < worstLeaders[t.TankId].TotalDamage) && (t.LastBattleAge.TotalDays <= 28 * 3)) .OrderByDescending(t => t.Tier).ThenBy(t => t.LastBattle).ToArray(); var leaderOnNextUpdate = fullPlayer.Performance.All.Values .Where(t => (t.Tier >= 5) && (t.Battles >= (t.Tier * 10)) && (worstLeaders.ContainsKey(t.TankId)) && (t.TotalDamagePerBattle > worstLeaders[t.TankId].TotalDamage) && (t.LastBattleAge.TotalDays <= 28 * 3)) .OrderByDescending(t => t.Tier).ThenBy(t => t.LastBattle).ToArray(); var model = new PlayerPage { Clan = clan, Player = fullPlayer, Wn8ExpectedValues = wn8ExpectedValues, MoEs = moes, OnLeaderboard = onLeaderboard, LeaderIfPlayABattle = leaderIfPlayABattle, LeaderIfFewMoreGames = leaderIfFewMoreGames, LeaderIfFewMoreDamage = leaderIfFewMoreDamage, LeaderOnNextUpdate = leaderOnNextUpdate, ExternalUrl = url, WoTStatConsoleOverallUrl = GetWoTStatConsoleOverallUrl(player), WotStatConsoleRecentUrl = GetWoTStatConsoleRecentUrl(player), WotStatConsoleHistoryUrl = GetWoTStatConsoleHistoryUrl(player), WotStatConsoleClanUrl = GetWotStatConsoleClan(clan), WoTInfoOverallUrl = GetWoTInfoOverallUrl(player), WoTInfoRecentUrl = GetWoTInfoRecentUrl(player), WoTInfoHistoryUrl = GetWoTInfoHistoryUrl(player), WoTConsoleRuOverallUrl = GetWoTConsoleRuOverallUrl(player), WotConsoleRuClanUrl = GetWotConsoleRuClanUrl(clan), WoTStarsOverallUrl = GetWoTStarsOverallUrl(player), WoTStarsClanUrl = GetWoTStarsClanUrl(clan), }; return(View(model)); } catch (Exception ex) { Log.Error($"Overall({clanName}, {playerId})", ex); return(Redirect(url)); } }