public static List <PlayersAchievements> GetPlayersWithAchievements() { List <PlayersAchievements> players = new List <PlayersAchievements>(); if (HttpContext.Current.Cache[DataAccess.PlayersAchievementsCacheName] == null) { using (TrambambuleDBContextDataContext context = new TrambambuleDBContextDataContext()) { foreach (Player p in DataAccess.GetPlayers()) { var achievements = (from ac in context.AchievementPlayer join a in context.Achievements on ac.AchievementId equals a.Id where ac.PlayerId == p.Id && ac.LevelOfAchievement >= 1 select new AchievementWithCurrentLevel(a, ac.LevelOfAchievement)).ToList(); PlayersAchievements pa = new PlayersAchievements(p, achievements); players.Add(pa); } } HttpContext.Current.Cache.Insert(DataAccess.PlayersAchievementsCacheName, players, null, DateTime.Now.AddSeconds(DataAccess.CacheTimeInSeconds), TimeSpan.Zero); } else { players = (List <PlayersAchievements>)HttpContext.Current.Cache[DataAccess.PlayersAchievementsCacheName]; } return(players); }
protected void gvPlayerResults_RowDataBound(object sender, GridViewRowEventArgs e) { e.Row.Cells[0].Visible = false; if (e.Row.RowType == DataControlRowType.DataRow) { Player p = DataAccess.GetPlayer(Server.HtmlDecode(e.Row.Cells[2].Text)); if (p != null) { e.Row.Cells[2].Text = Server.HtmlDecode(PlayerHelper.GetPlayerNameLink(p)); } if (playersAchievements == null) { playersAchievements = DataAccess.GetPlayersWithAchievements(); } PlayersAchievements pa = playersAchievements.FirstOrDefault(w => w.Player.Id == p.Id); if (pa != null) { List <AchievementWithCurrentLevel> achievements = pa.Achievements; if (achievements.Any()) { StringBuilder sb = new StringBuilder("<div class=\"achievementsIcons\">"); for (int i = 0; i < pa.Achievements.Count; i++) { if (i > 0 && i % 4 == 0) { sb.Append("</div><div class=\"achievementsIcons\">"); } AchievementWithCurrentLevel awcl = pa.Achievements[i]; string src = ""; string label = "Poziom {0}: {1}"; switch (awcl.Level) { case 1: src = awcl.Achievement.Level1Icon; label = string.Format(label, Common.GetAchievementsLevelName(1), awcl.Achievement.Level1Label); break; case 2: src = awcl.Achievement.Level2Icon; label = string.Format(label, Common.GetAchievementsLevelName(2), awcl.Achievement.Level2Label); break; case 3: src = awcl.Achievement.Level3Icon; label = string.Format(label, Common.GetAchievementsLevelName(3), awcl.Achievement.Level3Label); break; } sb.AppendFormat("<img src=\"{0}\" alt=\"{1}\" title=\"{1}\" height=\"19px\" width=\"19px\" />", src, label); } if (!sb.ToString().EndsWith("</div>")) { sb.Append("</div>"); } e.Row.Cells[9].Text = sb.ToString(); } else { e.Row.Cells[9].Text = "Brak"; } } else { e.Row.Cells[9].Text = "Brak"; } if (Session["UserBasicStatsPlayer"] != null) { Player player = (Player)Session["UserBasicStatsPlayer"]; if (e.Row.Cells[0].Text == player.Id.ToString()) { e.Row.Font.Bold = true; } } int balance = -1; if (int.TryParse(e.Row.Cells[6].Text, out balance)) { if (balance > 0) { e.Row.Cells[6].Text = "+" + balance.ToString(); } } int pointsChange = -1; if (int.TryParse(e.Row.Cells[8].Text, out pointsChange)) { if (pointsChange > 0) { e.Row.Cells[8].Text = "+" + pointsChange.ToString(); } } } }