public override bool TakeAction()
        {
            var cache   = new ShareCacheStruct <UserRanking>();
            var ranking = cache.Find(m => m.UserName == UserName);

            if (ranking == null)
            {
                var user = new GameUser()
                {
                    UserId = (int)cache.GetNextNo(), NickName = UserName
                };
                new PersonalCacheStruct <GameUser>().Add(user);
                ranking          = new UserRanking();
                ranking.UserID   = user.UserId;
                ranking.UserName = UserName;
                ranking.Score    = Score;
                if (!cache.Add(ranking))
                {
                    ErrorCode = Language.Instance.ErrorCode;
                    ErrorInfo = string.Format("add fail, UserID {0} is exist.", ranking.UserID);
                    return(false);
                }
            }
            else
            {
                ranking.UserName = UserName;
                ranking.Score    = Score;
            }
            return(true);
        }
Exemple #2
0
        void UserRankingProcess(GameUser gu)
        {
            var cache        = new ShareCacheStruct <UserRanking>();
            var cacheRanking = cache.FindKey(gu.UserId);

            if (cacheRanking != null)
            {
                if (gu.Score > cacheRanking.Score)
                {
                    cacheRanking.ModifyLocked(() =>
                    {
                        cacheRanking.Score = gu.Score;
                    });
                }
            }
            else
            {
                // 只有>某个值的时候才加。保证10w数据即可。
                if (gu.Score >= RankingScore.limitScoreAdd)
                {
                    UserRanking ur = new UserRanking();
                    ur.UserID   = gu.UserId;
                    ur.Score    = gu.Score;
                    ur.UserName = gu.NickName;
                    cache.Add(ur);
                }
            }
        }
        public static bool saveRatinginDB(int ratingSubmit, int?star, string emailVomUser)
        {
            UserRanking userranking = new UserRanking();

            try
            {
                using (var db = new CardGame_v2Entities())
                {
                    userranking.pack_id = ratingSubmit;
                    userranking.rating  = (short)star;

                    User aktuellerUser = DAL.Logic.UserManager.GetUserByEmail(emailVomUser);

                    userranking.user_id = aktuellerUser.ID;

                    db.UserRanking.Add(userranking);
                    db.SaveChanges();
                }
            }
            catch (Exception)
            {
                return(false);
            }


            return(true);
        }
Exemple #4
0
 void doAdd_black(string parm)
 {
     string[] usridStr = parm.Split(',');
     for (int i = 0; i < usridStr.Length; ++i)
     {
         try
         {
             int         UserId     = int.Parse(usridStr[i]);
             var         cache      = new ShareCacheStruct <UserRanking>();
             UserRanking ur         = cache.FindKey(UserId);
             var         personal   = new PersonalCacheStruct <GameUser>();
             GameUser    gu         = personal.FindKey(UserId.ToString());
             var         blackCache = new ShareCacheStruct <BlackListData>();
             if (ur != null && gu != null)
             {
                 blackCache.AddOrUpdate(UR2BLD(gu));
                 ConsoleLog.showNotifyInfo("add to black list id:" + UserId);
             }
             else
             {
                 ConsoleLog.showErrorInfo(0, "not find userRanking id:" + UserId);
             }
         }
         catch (System.Exception e)
         {
             ConsoleLog.showErrorInfo(0, "black list exception:" + e.Message);
         }
     }
 }
        public IEnumerable <UserRanking> GetRanking()
        {
            String asd = Configuration.GetConnectionString("DevConnection");

            using (var conn = new SqlConnection(asd))
            {
                SqlCommand cmd = new SqlCommand("Ranking", conn);

                cmd.CommandType = CommandType.StoredProcedure;

                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(dt);

                foreach (DataRow dr in dt.Rows)
                {
                    UserRanking obj = new UserRanking();

                    obj.rank    = Int32.Parse(dr["Rank"].ToString());
                    obj.name    = dr["Name"].ToString();
                    obj.surname = dr["Surname"].ToString();
                    obj.points  = Int32.Parse(dr["Points"].ToString());
                    obj.image   = dr["ImageB"].ToString();
                    RankingGet.Add(obj);
                }
            }


            return(RankingGet);//new string[] { "value1", "value2" };
        }
Exemple #6
0
 void doAdd_black(string parm)
 {
     string[] usridStr = parm.Split(',');
     for (int i = 0; i < usridStr.Length; ++i)
     {
         try
         {
             int index = int.Parse(usridStr[i]);
             var cache = new ShareCacheStruct <UserRanking>();
             List <UserRanking> lst = RankingFactorNew.Singleton().get <UserRanking>(typeof(RankingScore).ToString());
             UserRanking        ur  = null;
             if (lst != null && lst.Count > index)
             {
                 ur = lst[index];
             }
             var blackCache = new ShareCacheStruct <BlackListData>();
             if (ur != null)
             {
                 blackCache.Add(UR2BLD(ur));
                 ConsoleLog.showNotifyInfo("add to black list id:" + UserId);
             }
             else
             {
                 ConsoleLog.showErrorInfo(0, "not find userRanking id:" + UserId);
             }
         }
         catch (System.Exception e)
         {
             ConsoleLog.showErrorInfo(0, "black list exception:" + e.Message);
         }
     }
 }
Exemple #7
0
        Response1001Pack cbFunc(object obj)
        {
            List <object> objList = obj as List <object>;

            if (objList.Count != 2)
            {
                return(null);
            }
            List <UserRanking> rankingList = objList[1] as List <UserRanking>;

            // save to ....where....
            var shareCache = new ShareCacheStruct <HistoryUserRanking>();
            int num        = (int)shareCache.GetNextNo();
            var saveData   = new HistoryUserRanking();

            saveData.ID = num;
            // get data
            if (rankingList.Count >= 3)
            {
                UserRanking first  = rankingList[0];
                UserRanking second = rankingList[1];
                UserRanking thrid  = rankingList[2];

                saveData.Items.Add(first);
                saveData.Items.Add(second);
                saveData.Items.Add(thrid);
            }
            shareCache.Add(saveData);

            return(null);
        }
        private void AddUserRanking(string title, DateTime releaseDate, int rank)
        {
            using (TopTenRightNowContext context = new TopTenRightNowContext())
            {
                Movie movie = AppCache.EntityCache.GetMovieByTitleAndRelease(title, releaseDate);
                if (movie == null)
                {
                    movie = new Movie()
                    {
                        Title          = title,
                        ReleaseDate    = releaseDate,
                        RankingWeight  = WeightFromRank(rank),
                        LastRankedTime = DateTime.Now
                    };

                    context.Movies.Add(movie);
                }

                UserRanking ranking = new UserRanking()
                {
                    MovieId       = movie.MovieId,
                    RankingWeight = WeightFromRank(rank),
                    RankedTime    = DateTime.Now
                };

                context.UserRankings.Add(ranking);
                context.SaveChanges();
            }
        }
Exemple #9
0
        public override bool TakeAction()
        {
            var cache   = new ShareCacheStruct <UserRanking>();
            var ranking = cache.Find(m => m.UserName == requestPack.UserName);

            if (ranking == null)
            {
                var user = new GameUser()
                {
                    UserId = (int)cache.GetNextNo(), NickName = requestPack.UserName
                };
                new PersonalCacheStruct <GameUser>().Add(user);
                ranking          = new UserRanking();
                ranking.UserID   = user.UserId;
                ranking.UserName = requestPack.UserName;
                ranking.Score    = requestPack.Score;
                cache.Add(ranking);
            }
            else
            {
                ranking.UserName = requestPack.UserName;
                ranking.Score    = requestPack.Score;
            }
            return(true);
        }
Exemple #10
0
        bool cbFuncRankingTotal(List <UserRankingTotal> rankingList)
        {
            if (null == rankingList || rankingList.Count == 0)
            {
                return(false);
            }
            // self
            UserRanking      ur      = new UserRanking();
            var              cache   = new ShareCacheStruct <UserRankingTotal>();
            UserRankingTotal selfURT = new UserRankingTotal();
            UserRankingTotal findURT = cache.FindKey(requestPack.UserID);
            int              selfPos = rankingList.FindIndex((o) =>
            {
                if (o.UserID == requestPack.UserID)
                {
                    return(true);
                }
                return(false);
            });

            if (findURT == null)
            {
                selfURT.UserID = requestPack.UserID;
                selfURT.Total  = -1;
            }
            else
            {
                selfURT.UserID = findURT.UserID;
                selfURT.Total  = findURT.Total;
            }

            selfPos = formatPos(selfPos);
            responsePack.ItemsExScore.Add(new RankData()
            {
                pos = selfPos, UserName = selfPos + "," + selfURT.Total, Score = selfURT.Total, UserID = selfURT.UserID
            });

            int maxSend     = GameConfigMgr.Instance().getInt("rank_send_num_total", 10);
            var personCache = new PersonalCacheStruct <GameUser>();
            var person      = personCache.FindKey(selfURT.UserID.ToString());

            for (int i = 0; i < rankingList.Count; ++i)
            {
                if (i >= maxSend)
                {
                    break;
                }
                person = personCache.FindKey(rankingList[i].UserID.ToString());
                if (null == person)
                {
                    continue;
                }
                responsePack.ItemsExScore.Add(new RankData()
                {
                    pos = formatPos(i), UserName = person.NickName, Score = rankingList[i].Total, UserID = rankingList[i].UserID
                });
            }

            return(true);
        }
Exemple #11
0
        string processModify(string parm)
        {
            string info = "";

            string[] p           = parm.Split(',');
            string   modifyWhich = p[0];
            int      index       = int.Parse(p[1]) - 1;
            int      score       = int.Parse(p[2]);

            if ("ranking" == modifyWhich)
            {
                UserRanking ur = RankingFactorNew.Singleton().getRankingData <UserRanking, RankingScore>(index);
                if (null == ur)
                {
                    info = "要修改的数据不存在";
                }
                else
                {
                    var         cache = new ShareCacheStruct <UserRanking>();
                    UserRanking theUR = cache.FindKey(ur.UserID);
                    theUR.ModifyLocked(() =>
                    {
                        theUR.Score = score;
                    });

                    info = "修改数据成功";
                }
            }
            return(info);
        }
Exemple #12
0
        string processAdd(string parm)
        {
            string info = "";

            string[] p        = parm.Split(',');
            string   addWhich = p[0];
            string   name     = p[1];
            int      score    = int.Parse(p[2]);

            if ("ranking" == addWhich)
            {
                var cache   = new PersonalCacheStruct <GameUser>();
                var urCache = new ShareCacheStruct <UserRanking>();

                var gu = new GameUser();
                gu.UserId   = (int)cache.GetNextNo();
                gu.NickName = name;
                gu.Score    = score;
                gu.Identify = "identify_" + name;
                var ur = new UserRanking();
                ur.UserID   = gu.UserId;
                ur.UserName = name;
                ur.Score    = score;

                cache.Add(gu);
                urCache.Add(ur);
                info = "增加排行榜数据成功";
            }
            return(info);
        }
Exemple #13
0
        UserRanking copy(UserRanking ur)
        {
            UserRanking newUr = new UserRanking();

            newUr.UserID = ur.UserID;
            newUr.Score  = ur.Score;
            return(newUr);
        }
Exemple #14
0
        BlackListData UR2BLD(UserRanking ur)
        {
            BlackListData bd = new BlackListData();

            bd.UserID   = ur.UserID;
            bd.UserName = ur.UserName;
            bd.Score    = ur.Score;
            return(bd);
        }
Exemple #15
0
        private int compareTo(UserRanking x, UserRanking y)
        {
            int result = y.Score - x.Score;

            if (result == 0)
            {
                result = y.UserID - x.UserID;
            }
            return(result);
        }
        public async Task UpsertRanking(UserRanking ranking)
        {
            bool rankingExists = await Context.UserRankings.AnyAsync(r => r.UserId == ranking.UserId);

            if (rankingExists)
            {
                UpdateRanking(ranking);
            }
            else
            {
                await AddRanking(ranking);
            }
        }
Exemple #17
0
 void doAdd_delById(string parm)
 {
     string[] ids = parm.Split(',');
     for (int i = 0; i < ids.Length; ++i)
     {
         var         urCache = new ShareCacheStruct <UserRanking>();
         int         id      = int.Parse(ids[i]);
         UserRanking ur      = urCache.FindKey(id);
         if (ur != null)
         {
             urCache.Delete(ur);             // delete form cache and redis.
         }
     }
     RankingFactorNew.Singleton().Refresh <UserRanking>(typeof(RankingScore).ToString());
 }
Exemple #18
0
        void getFake()
        {
            ConsoleLog.showNotifyInfo("get fake begin");
            fakeLst = new List <UserRanking>();
            int   num                = GameConfigMgr.Instance().getInt("rank_send_num", 10);
            float percent            = GameConfigMgr.Instance().getInt("rankclear_perscent", 1) / 100.0f;
            int   reduceScore        = GameConfigMgr.Instance().getInt("rank_score_redice", 1);
            List <UserRanking> urlst = RankingFactorNew.Singleton().get <UserRanking>(typeof(RankingScore).ToString());

            if (null == urlst)
            {
                TraceLog.WriteError("getFake()");
                ConsoleLog.showErrorInfo(0, "getFake()");
                return;
            }
            var rankCache = new ShareCacheStruct <UserRanking>();
            var userCache = new PersonalCacheStruct <GameUser>();

            for (int i = 0; i < urlst.Count; ++i)
            {
                if (i > num)
                {
                    break;
                }
                UserRanking ur = urlst[i];
                if (ur.Score > reduceScore)
                {
                    ur.Score = (int)((float)urlst[i].Score * percent);
                    UserRanking cacheUR = rankCache.FindKey(ur.UserID);
                    if (null != cacheUR)
                    {
                        cacheUR.ModifyLocked(() => { cacheUR.Score = ur.Score; });
                    }
                    GameUser cacheGU = userCache.FindKey(ur.UserID.ToString());
                    if (null != cacheGU)
                    {
                        cacheGU.ModifyLocked(() => { cacheGU.Score = ur.Score; });
                    }
                }
                fakeLst.Add(copy(ur));
            }
            ConsoleLog.showNotifyInfo("getFake:" + fakeLst.Count);
            ConsoleLog.showNotifyInfo("get fake end");
        }
Exemple #19
0
        public override bool TakeAction()
        {
            var cache   = new ShareCacheStruct <UserRanking>();
            var ranking = cache.Find(m => m.UserName == UserName);

            if (ranking == null)
            {
                ranking          = new UserRanking();
                ranking.UserID   = (int)cache.GetNextNo();
                ranking.UserName = UserName;
                ranking.Score    = Score;
                cache.Add(ranking);
            }
            else
            {
                ranking.UserName = UserName;
                ranking.Score    = Score;
            }
            return(true);
        }
Exemple #20
0
        void doAdd_delByIndex(string parm)
        {
            string[] p            = parm.Split(',');
            int      rankingIndex = int.Parse(p[0]) - 1;

            UserRanking ur = RankingFactorNew.Singleton().getRankingData <UserRanking, RankingScore>(rankingIndex);

            if (null != ur)
            {
                var cache = new ShareCacheStruct <UserRanking>();
                cache.Delete(ur);

                var      cachePersonal = new PersonalCacheStruct <GameUser>();
                GameUser gu            = cachePersonal.FindKey(ur.UserID.ToString());

                var           black = new ShareCacheStruct <BlackListData>();
                BlackListData bld   = UR2BLD(gu);
                black.AddOrUpdate(bld);
            }
            processSort("ranking");
        }
Exemple #21
0
        string processDelete(string parm)
        {
            string info = "";

            string[] p            = parm.Split(',');
            string   deleteWhitch = p[0];
            int      deleteIndex  = int.Parse(p[1]) - 1;

            if ("ranking" == deleteWhitch)
            {
                UserRanking ur = RankingFactorNew.Singleton().getRankingData <UserRanking, RankingScore>(deleteIndex);
                if (ur == null)
                {
                    info = "没有找到要删除的数据";
                }
                else
                {
                    var cache = new ShareCacheStruct <UserRanking>();
                    cache.Delete(ur);
                    info = "删除数据成功";
                }
            }
            return(info);
        }
Exemple #22
0
        static bool addRankingReward(List <UserRanking> rankingList)
        {
            if (null == rankingList)
            {
                ConsoleLog.showErrorInfo(135, "addRankingReward:Error");
                TraceLog.WriteError("Error : addRankingReward");
                return(false);
            }
            int scoreNum = GameConfigMgr.Instance().getInt("rankclear_scoreNum", 20);
            int DemoNum  = GameConfigMgr.Instance().getInt("rankclear_dimondNum", 10000);

            int max = Math.Max(scoreNum, DemoNum);
            // get Score accounding to Ranking
            var totalCache  = new ShareCacheStruct <UserRankingTotal>();
            var personCache = new PersonalCacheStruct <GameUser>();

            for (int i = 0; i < rankingList.Count; ++i)
            {
                if (i < DemoNum)
                {
                    UserRanking      ur    = rankingList[i];
                    int              score = getScore(i);
                    UserRankingTotal urt   = totalCache.FindKey(ur.UserID);
                    if (null == urt)
                    {
                        UserRankingTotal newUrt = new UserRankingTotal();
                        newUrt.UserID = ur.UserID;
                        newUrt.Total  = score;
                        totalCache.Add(newUrt);
                    }
                    else
                    {
                        urt.ModifyLocked(() =>
                        {
                            urt.Total += score;
                        });
                    }
                }
                int      UserId = rankingList[i].UserID;
                GameUser gu     = personCache.FindKey(UserId.ToString());
                if (i < DemoNum)
                {
                    if (null != gu)
                    {
                        gu.ModifyLocked(() =>
                        {
                            gu.Diamond  += getDiamond(i);
                            gu.theTotal += getScore(i);
                        });
                    }
                }

                if (null != gu)
                {
                    gu.ModifyLocked(() =>
                    {
                        gu.preRanking = i + 1;
                    });
                }
            }

            return(true);
        }
Exemple #23
0
        bool cbFuncDuang(object obj)
        {
            List <UserRanking> objList     = obj as List <UserRanking>;
            List <UserRanking> rankingList = null;

            if (null == objList)
            {
                return(false);
            }
            else
            {
                rankingList = objList;
            }

            if (null == rankingList || rankingList.Count == 0)
            {
                return(false);
            }

            int         selfScore = requestPack.PageIndex;
            UserRanking ur        = new UserRanking();

            ur.Score = selfScore;
            int pos = rankingList.BinarySearch(ur, new comp());
            int h, l, maxPaiHangNum;

            maxPaiHangNum = objList.Count;

            //self
            pos = formatPos(pos);
            h   = rankingList[0].Score;
            l   = rankingList[rankingList.Count - 1].Score > selfScore ? selfScore : rankingList[rankingList.Count - 1].Score;
            responsePack.hightScore  = h;
            responsePack.lowScore    = l;
            responsePack.totalPlayer = rankingList.Count;
            responsePack.youPos      = pos + 1;
            RankData self = null;

            if (requestPack.UserID > 0)
            {
                self = new RankData()
                {
                    pos = responsePack.youPos, UserName = "******", Score = selfScore, UserID = requestPack.UserID
                };
                responsePack.Items.Add(self);
            }

            string sendIndex = GameConfigMgr.Instance().getString("rank_send_num_index", "1,2,3,500,1000,2000,5000,10000,20000,30000");

            string[] sendS = sendIndex.Split(',');
            for (int i = 0; i < sendS.Length; ++i)
            {
                int index = int.Parse(sendS[i]) - 1;
                if (index < 0 || index > rankingList.Count - 1)
                {
                    continue;
                }
                if (requestPack.UserID == rankingList[index].UserID)
                {
                    if (index + 1 < responsePack.youPos)
                    {
                        responsePack.youPos = index + 1;
                    }
                    foreach (var v in responsePack.Items)
                    {
                        if (v.UserID == requestPack.UserID)
                        {
                            v.pos = index + 1;
                            break;
                        }
                    }
                    continue;
                }
                RankData rd = new RankData();
                rd.Score    = rankingList[index].Score;
                rd.UserName = rankingList[index].UserName;
                rd.UserID   = rankingList[index].UserID;
                rd.pos      = formatPos(index + 1);
                responsePack.Items.Add(rd);
            }
            //responsePack.Items.Sort(new compRD());
            return(true);
        }
Exemple #24
0
        bool cbFunc8self8(object obj)
        {
            List <UserRanking> objList     = obj as List <UserRanking>;
            List <UserRanking> rankingList = null;

            if (null == objList)
            {
                return(true);
            }
            else
            {
                rankingList = objList;
            }

            if (null == rankingList || rankingList.Count == 0)
            {
                return(true);
            }

            int         selfScore = requestPack.PageIndex;
            UserRanking ur = new UserRanking(); ur.Score = selfScore;
            int         pos = rankingList.BinarySearch(ur, new comp());
            int         h, l, maxPaiHangNum;

            maxPaiHangNum = objList.Count;

            //self
            responsePack.Items.Add(new RankData()
            {
                UserName = "", Score = int.MaxValue
            });
            h = rankingList[0].Score;
            l = rankingList[rankingList.Count - 1].Score > selfScore ? selfScore : rankingList[rankingList.Count - 1].Score;

            int maxSend = GameConfigMgr.Instance().getInt("rank_send_num", 10);

            if (maxSend > rankingList.Count)
            {
                maxSend = 20;
            }

            if (pos < 0)
            {
                pos = ~pos;
            }

            int theNumOf3 = (maxSend - 3);
            int half      = theNumOf3 / 2;

            int begin = pos - half;
            int end   = pos + half;

            if (begin < 0)
            {
                begin = 0;
                end   = maxSend;
            }

            if (end > rankingList.Count)
            {
                end   = rankingList.Count;
                begin = end - theNumOf3;
                if (begin < 0)
                {
                    begin = 0;
                    ConsoleLog.showErrorInfo(0, "Action1001,begin<0.UserID:" + requestPack.UserID);
                }
                if (pos == rankingList.Count)
                {
                    begin += 1;
                }
            }

            int cnt = Math.Min(begin, 3);

            for (int i = 0; i < cnt; ++i)
            {
                if (rankingList[i].UserID == requestPack.UserID)
                {
                    continue;
                }
                RankData rd = new RankData();
                rd.Score    = rankingList[i].Score;
                rd.UserName = rankingList[i].UserName;
                rd.UserID   = rankingList[i].UserID;
                responsePack.Items.Add(rd);
            }

            for (int i = begin; i < end; ++i)
            {
                if (rankingList[i].UserID == requestPack.UserID)
                {
                    continue;
                }
                RankData rd = new RankData();
                rd.Score    = rankingList[i].Score;
                rd.UserName = rankingList[i].UserName;
                rd.UserID   = rankingList[i].UserID;
                responsePack.Items.Add(rd);
            }

            RankData self = new RankData();

            self.UserID   = requestPack.UserID;
            self.UserName = "******";
            self.Score    = selfScore;
            responsePack.Items.Add(self);
            responsePack.Items.Sort(new compRD());

            if (pos < 0)
            {
                pos = ~pos;
                if (pos + 1 > 99999)
                {
                    pos = 99998;
                }
            }
            if (pos >= 99999)
            {
                pos = 99998;
            }
            if (begin >= 99999)
            {
                begin = 99998 - maxSend;
            }
            if (end >= 99999)
            {
                end = 99998;
            }
            responsePack.Items[0].UserName = h + "," + l + "," + rankingList.Count + "," + pos + "," + begin + "," + end; // ��߷֣���ͷ֣��������Լ�����
            //ConsoleLog.showNotifyInfo(responsePack.Items[0].UserName);
            return(true);
        }
Exemple #25
0
        public ViewResult UserRanking()
        {
            string cachename = "userranking";

            if (User.Identity.IsAuthenticated)
            {
                cachename += User.Identity.Name.ToLower();
            }
            UserRanking model = _cache.Get <UserRanking>(cachename);

            if (model == null)
            {
                model = new UserRanking();
                var exp = _udb.Database.SqlQuery <RankTuple>(@"Select u.username as Name, u.experience as Value, Rank() over 
                    (Order by u.experience desc) as Ranking 
                    from UserProfile as u");

                var sign = _udb.Database.SqlQuery <RankTuple>(@"Select u.username as Name, u.ConsecutiveSign as Value, Rank() over 
                    (Order by u.ConsecutiveSign desc) as Ranking 
                    from UserProfile as u");

                var blogs = _db.Database.SqlQuery <RankTuple>(@"with t as (select Author as Name, Count(BlogID) as Value 
                    from Blogs group by Author) 
                    select t.Name, t.Value, Rank() over (order by t.Value desc) as Ranking from t");

                var posts = _db.Database.SqlQuery <RankTuple>(@"with t as(
                 select nt.Name, sum(counts) as Value from
                 ((
	                select Author as Name, Count(PostID) as counts from posts
	                group by Author
                 ) union
                 (
	                select Author as Name, Count(ReplyID) as counts from replies
	                group by Author
                 )) as nt
                 group by nt.Name
                 ) select t.Name, t.Value, Rank() over (order by t.Value desc) as Ranking from t");

                model.Exp  = exp.Take(10).ToList();
                model.Blog = blogs.Take(10).ToList();
                model.Sign = sign.Take(10).ToList();
                model.Post = posts.Take(10).ToList();
                if (User.Identity.IsAuthenticated)
                {
                    var myexp = exp.AsQueryable().SingleOrDefault(r => r.Name == User.Identity.Name);
                    if (myexp != null)
                    {
                        model.MyExp = new Tuple <int, long>(myexp.Value, myexp.Ranking);
                    }
                    myexp = sign.SingleOrDefault(r => r.Name.ToLower() == User.Identity.Name.ToLower());
                    if (myexp != null)
                    {
                        model.MySign = new Tuple <int, long>(myexp.Value, myexp.Ranking);
                    }

                    myexp = blogs.SingleOrDefault(r => r.Name.ToLower() == User.Identity.Name.ToLower());
                    if (myexp != null)
                    {
                        model.MyBlog = new Tuple <int, long>(myexp.Value, myexp.Ranking);
                    }
                    myexp = posts.SingleOrDefault(r => r.Name.ToLower() == User.Identity.Name.ToLower());
                    if (myexp != null)
                    {
                        model.MyPost = new Tuple <int, long>(myexp.Value, myexp.Ranking);
                    }
                }
                model.rankdate = DateTime.Now;
                _cache.Set(cachename, model, new TimeSpan(1, 0, 0));
            }
            return(View(model));
        }
 public void UpdateRanking(UserRanking ranking)
 {
     Context.UserRankings.Update(ranking);
 }
 public async Task AddRanking(UserRanking ranking)
 {
     await Context.UserRankings.AddAsync(ranking);
 }