protected void Page_LoadComplete(object sender, EventArgs e)
        {
            if (Session["UserBasicStatsPlayer"] == null)
            {
                if (Request.QueryString["userId"] != null && Request.QueryString["userId"] != "")
                {
                    int.TryParse(Request.QueryString["userId"], out selectedUserId);
                }
            }
            else
            {
                selectedUserId = ((Player)Session["UserBasicStatsPlayer"]).Id;
            }

            List <AchievementsWithPlayers> awpList = new List <AchievementsWithPlayers>();

            if (Cache[DataAccess.AllAchievementsCacheName] == null)
            {
                using (TrambambuleDBContextDataContext context = new TrambambuleDBContextDataContext())
                {
                    var achievements = context.Achievements.ToList();
                    foreach (Achievement achievement in achievements)
                    {
                        var players = (from ap in context.AchievementPlayer
                                       join p in context.Players
                                       on ap.PlayerId equals p.Id
                                       where ap.AchievementId == achievement.Id &&
                                       ap.LevelOfAchievement > 0
                                       select new PlayerWithLevelOfAchievement(p, ap.LevelOfAchievement, ap.ToNextLevelLabel)).ToList();

                        AchievementsWithPlayers awp = new AchievementsWithPlayers(achievement, players);
                        awpList.Add(awp);
                    }
                }

                Cache.Insert(DataAccess.AllAchievementsCacheName, awpList, null, DateTime.Now.AddSeconds(DataAccess.CacheTimeInSeconds), TimeSpan.Zero);
            }
            else
            {
                awpList = (List <AchievementsWithPlayers>)HttpContext.Current.Cache[DataAccess.AllAchievementsCacheName];
            }

            if (awpList.Count > 0)
            {
                repAchievements.DataSource = awpList;
                repAchievements.DataBind();
            }
        }
        protected void repAchievements_ItemBound(object sender, RepeaterItemEventArgs args)
        {
            var item = args.Item;

            if (item != null)
            {
                if (item.ItemType == ListItemType.AlternatingItem || item.ItemType == ListItemType.Item)
                {
                    AchievementsWithPlayers awp = (AchievementsWithPlayers)item.DataItem;
                    if (awp.Players != null && awp.Players.Count > 0)
                    {
                        currentAchievement = awp.Achievement;
                        PlaceHolder phNoResult = (PlaceHolder)item.FindControl("phNoResults");
                        if (phNoResult != null)
                        {
                            phNoResult.Visible = false;
                        }

                        Repeater repPlayers = (Repeater)item.FindControl("repPlayers");
                        if (repPlayers != null)
                        {
                            repPlayers.DataSource = awp.Players;
                            repPlayers.DataBind();
                        }
                    }
                    else
                    {
                        PlaceHolder phPlayers = (PlaceHolder)item.FindControl("phPlayers");
                        if (phPlayers != null)
                        {
                            phPlayers.Visible = false;
                        }
                    }
                }
            }
        }