Esempio n. 1
0
        public WebOK sp_runPublicHandGame(int gameID, string gameFlag_right1, string memberNick_right
                                          , string gameMemo_right, int whoWinner)
        {
            WebOK resultValue           = new WebOK();
            int   spError               = -1;
            List <DBREQ_PARAM> dbParams = new List <DBREQ_PARAM>();

            dbParams.Add(new DBREQ_PARAM("gameID", DbType.Int32, gameID));
            dbParams.Add(new DBREQ_PARAM("gameFlag_right1", DbType.String, gameFlag_right1));
            dbParams.Add(new DBREQ_PARAM("memberNick_right", DbType.String, memberNick_right));
            dbParams.Add(new DBREQ_PARAM("gameMemo_right", DbType.String, gameMemo_right));
            dbParams.Add(new DBREQ_PARAM("whoWinner", DbType.Int32, whoWinner));
            DataTable result = RunSP("sp_runPublicHandGame", CreateDB(), dbParams);

            spError = result.Rows[0].Field <int>("Result");
            if (spError == 0)
            {
                resultValue.statusCode = 200;
            }
            else
            {
                resultValue.statusCode = spError;
            }
            return(resultValue);
        }
Esempio n. 2
0
        public WebOK sp_RunPublicQHoldem(int gameID, int joinerGameData, string commCardData, string joinerMemo, int whoWinner, string creatorHandStr, string joinerHandStr,
                                         string joinerNick, string joinerAvatar)
        {
            WebOK resultValue           = new WebOK();
            int   spError               = -1;
            List <DBREQ_PARAM> dbParams = new List <DBREQ_PARAM>();

            dbParams.Add(new DBREQ_PARAM("gameID", DbType.Int32, gameID));
            dbParams.Add(new DBREQ_PARAM("joinerGameData", DbType.Int32, joinerGameData));
            dbParams.Add(new DBREQ_PARAM("joinerMemo", DbType.String, joinerMemo));
            dbParams.Add(new DBREQ_PARAM("commCardData", DbType.String, commCardData));
            dbParams.Add(new DBREQ_PARAM("whoWinner", DbType.Int32, whoWinner));
            dbParams.Add(new DBREQ_PARAM("creatorHandStr", DbType.String, creatorHandStr));
            dbParams.Add(new DBREQ_PARAM("joinerHandStr", DbType.String, joinerHandStr));
            dbParams.Add(new DBREQ_PARAM("joinerNick", DbType.String, joinerNick));
            dbParams.Add(new DBREQ_PARAM("joinerAvatar", DbType.String, joinerAvatar));


            DataTable result = RunSP("sp_RunPublicQHoldem", CreateDB(), dbParams);

            spError = result.Rows[0].Field <int>("Result");
            if (spError == 0)
            {
                resultValue.statusCode = 200;
            }
            else
            {
                resultValue.statusCode = spError;
            }
            return(resultValue);
        }
Esempio n. 3
0
        public WebOK sp_RunIndianHoldem(int gameID, string joinerGameData, string joinerMemo, string joinerAuthToken, int whoWinner, int gameAction,
                                        string creatorHandStr, string joinerHandStr, string userIP)
        {
            WebOK resultValue           = new WebOK();
            int   spError               = -1;
            List <DBREQ_PARAM> dbParams = new List <DBREQ_PARAM>();

            dbParams.Add(new DBREQ_PARAM("gameID", DbType.Int32, gameID));
            dbParams.Add(new DBREQ_PARAM("joinerGameData", DbType.String, joinerGameData));
            dbParams.Add(new DBREQ_PARAM("joinerMemo", DbType.String, joinerMemo));
            dbParams.Add(new DBREQ_PARAM("joinerAuthToken", DbType.String, joinerAuthToken));
            dbParams.Add(new DBREQ_PARAM("whoWinner", DbType.Int32, whoWinner));
            dbParams.Add(new DBREQ_PARAM("gameAction", DbType.Int32, gameAction));
            dbParams.Add(new DBREQ_PARAM("creatorHandStr", DbType.String, creatorHandStr));
            dbParams.Add(new DBREQ_PARAM("joinerHandStr", DbType.String, joinerHandStr));
            dbParams.Add(new DBREQ_PARAM("userIP", DbType.String, userIP));


            DataTable result = RunSP("sp_RunIndianHoldem", CreateDB(), dbParams);

            spError = result.Rows[0].Field <int>("Result");
            if (spError == 0)
            {
                resultValue.statusCode = 200;
            }
            else
            {
                resultValue.statusCode = spError;
            }
            return(resultValue);
        }
Esempio n. 4
0
        public WebOK sp_EdtIndianHoldem(int gameID, int gameAction, string creatorAuthToken)
        {
            WebOK resultValue           = new WebOK();
            int   spError               = -1;
            List <DBREQ_PARAM> dbParams = new List <DBREQ_PARAM>();

            dbParams.Add(new DBREQ_PARAM("gameID", DbType.Int32, gameID));
            dbParams.Add(new DBREQ_PARAM("gameAction", DbType.Int32, gameAction));
            dbParams.Add(new DBREQ_PARAM("creatorAuthToken", DbType.String, creatorAuthToken));
            DataTable result = RunSP("sp_EdtIndianHoldem", CreateDB(), dbParams);

            spError = result.Rows[0].Field <int>("Result");
            if (spError == 0)
            {
                resultValue.statusCode = 200;
            }
            else
            {
                resultValue.statusCode = spError;
            }
            return(resultValue);
        }
Esempio n. 5
0
        //가위바위보게임
        public WebOK sp_creategame(int mainType, int gameType, string gameTitle, string gameMemo_left, int gameCount
                                   , int gameMoneyAmount, string gameFlag_left1, int appendtime, string creatorAuthToken)
        {
            WebOK resultValue = new WebOK();
            int   spError     = -1;

            //Default Value for Reserved..
            int                authType  = 0;
            int                gameState = 0;
            string             gameToken = "NAN";
            List <DBREQ_PARAM> dbParams  = new List <DBREQ_PARAM>();

            dbParams.Add(new DBREQ_PARAM("mainType", DbType.Int32, mainType));
            dbParams.Add(new DBREQ_PARAM("gameType", DbType.Int32, gameType));
            dbParams.Add(new DBREQ_PARAM("authType", DbType.Int32, authType));
            dbParams.Add(new DBREQ_PARAM("gameState", DbType.Int32, gameState));
            dbParams.Add(new DBREQ_PARAM("gameTitle", DbType.String, gameTitle));
            dbParams.Add(new DBREQ_PARAM("gameMemo_left", DbType.String, gameMemo_left));
            dbParams.Add(new DBREQ_PARAM("gameToken", DbType.String, gameToken));
            dbParams.Add(new DBREQ_PARAM("gameCount", DbType.Int32, gameCount));
            dbParams.Add(new DBREQ_PARAM("gameMoneyAmount", DbType.Int32, gameMoneyAmount));
            dbParams.Add(new DBREQ_PARAM("gameFlag_left1", DbType.String, gameFlag_left1));
            dbParams.Add(new DBREQ_PARAM("addendtime", DbType.Int32, appendtime));
            dbParams.Add(new DBREQ_PARAM("creatorAuthToken", DbType.String, creatorAuthToken));
            DataTable result = RunSP("sp_creategame", CreateDB(), dbParams);

            spError = result.Rows[0].Field <int>("Result");
            if (spError == 0)
            {
                resultValue.statusCode = 200;
            }
            else
            {
                resultValue.statusCode = spError;
            }
            return(resultValue);
        }
Esempio n. 6
0
        public GameController()
        {
            parentSpace = "/api/game";
            dbhandler   = new DBGameHandler(ConfigurationManager.AppSettings.Get("ConectionDBString"));

            Post[parentSpace + "/tabbonus", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                string playerAuthToken = (string)payload["playerAuthToken"];

                BonusOK info = null;

                Task t = Task.Run(() => {
                    info = dbhandler.sp_tabbonus(playerAuthToken);
                });
                await t;

                if (info == null)
                {
                    return(new WebException("rungame failed", 401));
                }

                if (info.statusCode != 200)
                {
                    return(new WebException("rungame failed", info.statusCode));
                }

                return(info);
            };

            Post[parentSpace + "/daybonus", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                string playerAuthToken = (string)payload["playerAuthToken"];

                BonusOK info = null;
                Task    t    = Task.Run(() => {
                    info = dbhandler.sp_daybonus(playerAuthToken);
                });
                await t;

                if (info == null)
                {
                    return(new WebException("rungame failed", 401));
                }

                if (info.statusCode != 200)
                {
                    return(new WebException("rungame failed", info.statusCode));
                }

                return(info);
            };

            //가위바위보게임
            Post[parentSpace + "/creategame", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int    mainType         = (int)payload["mainType"];
                int    gameType         = (int)payload["gameType"];
                string gameTitle        = (string)payload["gameTitle"];
                string gameMemo_left    = (string)payload["gameMemo_left"];
                int    gameCount        = (int)payload["gameCount"];
                int    gameMoneyAmount  = (int)payload["gameMoneyAmount"];
                string gameFlag_left1   = (string)payload["gameFlag_left1"];
                int    appendtime       = (int)payload["appendtime"];
                string creatorAuthToken = (string)payload["creatorAuthToken"];

                if (mainType == 0)
                {
                    if (gameCount > 5 || gameCount < 1)
                    {
                        return(new WebException("gameCount Limit", 10));
                    }

                    if (gameMoneyAmount > 1000 || gameMoneyAmount < 1)
                    {
                        return(new WebException("gameMoneyAmount Limit", 11));
                    }
                }
                else
                {
                    if (gameCount > 20 || gameCount < 1)
                    {
                        return(new WebException("gameCount Limit", 20));
                    }

                    if (gameMoneyAmount > 1000000000 || gameMoneyAmount < 1)
                    {
                        return(new WebException("gameMoneyAmount Limit", 11));
                    }
                }

                WebOK info = null;
                Task  t    = Task.Run(() => {
                    info = dbhandler.sp_creategame(mainType, gameType, gameTitle, gameMemo_left, gameCount,
                                                   gameMoneyAmount, gameFlag_left1, appendtime, creatorAuthToken);
                });
                await t;

                if (info == null)
                {
                    return(new WebException("creategame failed", 401));
                }
                return(info.ToString());
            };

            Post[parentSpace + "/rungame", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int      gameID          = (int)payload["gameID"];
                string   gameFlag_right1 = (string)payload["gameFlag_right1"];
                string   playerAuthToken = (string)payload["playerAuthToken"];
                string   gameMemo_right  = (string)payload["gameMemo_right"];
                GameInfo gameInfo        = dbhandler.getGameInfo(0, gameID);

                string result1 = "", result2 = "";
                int    whoWinner = GameReferee.GetWinner(gameInfo.gameType, gameInfo.gameData, gameFlag_right1, ref result1, ref result2);
                WebOK  info      = null;

                string userIp = Request.UserHostAddress;

                Task t = Task.Run(() => {
                    info = dbhandler.sp_rungame(gameID, gameFlag_right1, playerAuthToken, gameMemo_right, whoWinner, userIp);
                });
                await t;

                if (info == null)
                {
                    return(new WebException("rungame failed", 401));
                }

                if (info.statusCode != 200)
                {
                    return(new WebException("rungame failed", info.statusCode));
                }

                GameResult gameResult = new GameResult();
                gameResult.whoWinner       = whoWinner;
                gameResult.gameFlag_left1  = gameInfo.gameData;
                gameResult.gameFlag_right1 = gameFlag_right1;
                gameResult.gameMoneyAmount = gameInfo.gameMoneyAmount;

                return(gameResult);
            };

            Post[parentSpace + "/runpublichandgame", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int      gameID           = (int)payload["gameID"];
                string   gameFlag_right1  = (string)payload["gameFlag_right1"];
                string   memberNick_right = (string)payload["memberNick_right"];
                string   gameMemo_right   = (string)payload["gameMemo_right"];
                GameInfo gameInfo         = null;
                Task     t = Task.Run(() => {
                    gameInfo = dbhandler.getGameInfo(0, gameID);
                });
                await t;
                if (gameInfo == null)
                {
                    return(new WebException("rungame failed", 401));
                }

                string result1 = "", result2 = "";
                int    whoWinner = GameReferee.GetWinner(gameInfo.gameType, gameInfo.gameData, gameFlag_right1, ref result1, ref result2);
                WebOK  info      = null;
                Task   t2        = Task.Run(() => {
                    info = dbhandler.sp_runPublicHandGame(gameID, gameFlag_right1, memberNick_right, gameMemo_right, whoWinner);
                });
                await t2;

                if (info == null)
                {
                    return(new WebException("rungame failed", 401));
                }

                if (info.statusCode != 200)
                {
                    return(new WebException("rungame failed", info.statusCode));
                }

                GameResult gameResult = new GameResult();
                gameResult.whoWinner       = whoWinner;
                gameResult.gameFlag_left1  = gameInfo.gameData;
                gameResult.gameFlag_right1 = gameFlag_right1;
                gameResult.gameMoneyAmount = gameInfo.gameMoneyAmount;

                return(gameResult);
            };

            //인디언홀덤
            Post[parentSpace + "/createIndianHoldem", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int    mainType  = (int)payload["mainType"];
                string gameTitle = (string)payload["gameTitle"];
                //string gameData = (string)payload["gameData"];
                int    gameCount        = (int)payload["gameCount"];
                int    gameMoneyAmount  = (int)payload["gameMoneyAmount"];
                string creatorAuthToken = (string)payload["creatorAuthToken"];

                //Get Card
                string gameData = GameReferee.GetIndianGameCard(null);

                if (mainType == 0)
                {
                    if (gameCount > 5 || gameCount < 1)
                    {
                        return(new WebException("gameCount Limit", 10));
                    }

                    if (gameMoneyAmount > 1000 || gameMoneyAmount < 1)
                    {
                        return(new WebException("gameMoneyAmount Limit", 11));
                    }
                }
                else
                {
                    if (gameCount > 20 || gameCount < 1)
                    {
                        return(new WebException("gameCount Limit", 10));
                    }

                    if (gameMoneyAmount > 1000000 || gameMoneyAmount < 1)
                    {
                        return(new WebException("gameMoneyAmount Limit", 11));
                    }
                }

                GameInfo info = null;
                Task     t    = Task.Run(() => {
                    info = dbhandler.sp_CreateIndianHoldem(mainType, gameTitle, gameData, gameCount, gameMoneyAmount, creatorAuthToken);
                });
                await t;
                if (info == null)
                {
                    return(new WebException("creategame failed", 401));
                }

                return(info);
            };

            Post[parentSpace + "/editIndianHoldem", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int    gameAction       = (int)payload["gameAction"]; // 0:half 1:call 2:double
                string creatorAuthToken = (string)payload["creatorAuthToken"];
                int    gameID           = (int)payload["gameID"];

                WebOK info = null;
                Task  t    = Task.Run(() => {
                    info = dbhandler.sp_EdtIndianHoldem(gameID, gameAction, creatorAuthToken);
                });
                await t;
                if (info == null)
                {
                    return(new WebException("rungame failed", 401));
                }

                if (info.statusCode != 200)
                {
                    return(new WebException("rungame failed", info.statusCode));
                }
                return(info);
            };

            Post[parentSpace + "/runIndianHoldem", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int gameID = (int)payload["gameID"];
                //string joinerGameData = (string)payload["joinerGameData"];
                string joinerMemo      = (string)payload["joinerMemo"];
                string joinerAuthToken = (string)payload["joinerAuthToken"];
                int    gameAction      = (int)payload["gameAction"];

                GameInfo gameInfo = dbhandler.getGameInfo(1, gameID);

                string joinerGameData = GameReferee.GetIndianGameCard(gameInfo.gameData);

                string joinerHandStr = "";
                string cratorHandStr = "";

                int whoWinner = GameReferee.GetWinner(gameInfo.gameType, gameInfo.gameData, joinerGameData, ref cratorHandStr, ref joinerHandStr);
                //Super Fold
                if (gameAction == 2)
                {
                    if (whoWinner == 1)
                    {
                        whoWinner = 2;
                    }
                    else if (whoWinner == 2)
                    {
                        whoWinner = 1;
                    }
                }

                string userIp = Request.UserHostAddress;

                WebOK info = null;
                Task  t    = Task.Run(() => {
                    info = dbhandler.sp_RunIndianHoldem(gameID, joinerGameData, joinerMemo, joinerAuthToken, whoWinner, gameAction, cratorHandStr, joinerHandStr, userIp);
                });
                await t;
                if (info == null)
                {
                    return(new WebException("rungame failed", 401));
                }

                if (info.statusCode != 200)
                {
                    return(new WebException("rungame failed", info.statusCode));
                }

                GameResult gameResult = new GameResult();
                gameResult.whoWinner       = whoWinner;
                gameResult.gameFlag_left1  = gameInfo.gameData;
                gameResult.gameFlag_right1 = joinerGameData;

                int fixGameMoneyAmount = gameInfo.gameMoneyAmount;
                if (gameAction == 0)
                {
                    fixGameMoneyAmount = fixGameMoneyAmount / 2;
                }
                gameResult.gameMoneyAmount = fixGameMoneyAmount;
                gameResult.result_left     = cratorHandStr;
                gameResult.result_right    = joinerHandStr;

                return(gameResult);
            };

            //Todo:Remove(네이밍 잘못함)
            Post[parentSpace + "/runIndpublicianHoldem", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int gameID = (int)payload["gameID"];
                //string joinerGameData = (string)payload["joinerGameData"];
                string joinerMemo   = (string)payload["joinerMemo"];
                int    gameAction   = (int)payload["gameAction"];
                string joinerNick   = (string)payload["joinerNick"];
                string joinerAvatar = (string)payload["joinerAvatar"];

                GameInfo gameInfo = dbhandler.getGameInfo(1, gameID);

                string joinerGameData = GameReferee.GetIndianGameCard(gameInfo.gameData);

                string joinerHandStr = "";
                string cratorHandStr = "";

                int whoWinner = GameReferee.GetWinner(gameInfo.gameType, gameInfo.gameData, joinerGameData, ref cratorHandStr, ref joinerHandStr);
                //Super Fold
                if (gameAction == 2)
                {
                    if (whoWinner == 1)
                    {
                        whoWinner = 2;
                    }
                    else if (whoWinner == 2)
                    {
                        whoWinner = 1;
                    }
                }

                WebOK info = null;
                Task  t    = Task.Run(() => {
                    //sp_RunPublicIndianHoldem
                    info = dbhandler.sp_RunPublicIndianHoldem(gameID, joinerGameData, joinerMemo, whoWinner, gameAction, cratorHandStr, joinerHandStr, joinerNick, joinerAvatar);
                });
                await t;
                if (info == null)
                {
                    return(new WebException("rungame failed", 401));
                }

                if (info.statusCode != 200)
                {
                    return(new WebException("rungame failed", info.statusCode));
                }

                GameResult gameResult = new GameResult();
                gameResult.whoWinner       = whoWinner;
                gameResult.gameFlag_left1  = gameInfo.gameData;
                gameResult.gameFlag_right1 = joinerGameData;

                int fixGameMoneyAmount = gameInfo.gameMoneyAmount;
                if (gameAction == 0)
                {
                    fixGameMoneyAmount = fixGameMoneyAmount / 2;
                }
                gameResult.gameMoneyAmount = fixGameMoneyAmount;
                gameResult.result_left     = cratorHandStr;
                gameResult.result_right    = joinerHandStr;

                return(gameResult);
            };

            Post[parentSpace + "/runPublicIndianHoldem", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int gameID = (int)payload["gameID"];
                //string joinerGameData = (string)payload["joinerGameData"];
                string joinerMemo   = (string)payload["joinerMemo"];
                int    gameAction   = (int)payload["gameAction"];
                string joinerNick   = (string)payload["joinerNick"];
                string joinerAvatar = (string)payload["joinerAvatar"];

                GameInfo gameInfo = dbhandler.getGameInfo(1, gameID);

                string joinerGameData = GameReferee.GetIndianGameCard(gameInfo.gameData);

                string joinerHandStr = "";
                string cratorHandStr = "";

                int whoWinner = GameReferee.GetWinner(gameInfo.gameType, gameInfo.gameData, joinerGameData, ref cratorHandStr, ref joinerHandStr);
                //Super Fold
                if (gameAction == 2)
                {
                    if (whoWinner == 1)
                    {
                        whoWinner = 2;
                    }
                    else if (whoWinner == 2)
                    {
                        whoWinner = 1;
                    }
                }

                WebOK info = null;
                Task  t    = Task.Run(() => {
                    //sp_RunPublicIndianHoldem
                    info = dbhandler.sp_RunPublicIndianHoldem(gameID, joinerGameData, joinerMemo, whoWinner, gameAction, cratorHandStr, joinerHandStr, joinerNick, joinerAvatar);
                });
                await t;
                if (info == null)
                {
                    return(new WebException("rungame failed", 401));
                }

                if (info.statusCode != 200)
                {
                    return(new WebException("rungame failed", info.statusCode));
                }

                GameResult gameResult = new GameResult();
                gameResult.whoWinner       = whoWinner;
                gameResult.gameFlag_left1  = gameInfo.gameData;
                gameResult.gameFlag_right1 = joinerGameData;

                int fixGameMoneyAmount = gameInfo.gameMoneyAmount;
                if (gameAction == 0)
                {
                    fixGameMoneyAmount = fixGameMoneyAmount / 2;
                }
                gameResult.gameMoneyAmount = fixGameMoneyAmount;
                gameResult.result_left     = cratorHandStr;
                gameResult.result_right    = joinerHandStr;

                return(gameResult);
            };

            //QHoldem
            Post[parentSpace + "/getPokerCards", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int    cardCnt = (int)payload["cardCnt"];
                string result  = GameReferee.GetPokerCard(cardCnt, null);
                return(result);
            };

            Post[parentSpace + "/createQHoldem", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int    mainType         = (int)payload["mainType"];
                string gameTitle        = (string)payload["gameTitle"];
                string gameData         = (string)payload["gameData"];
                int    gameCount        = (int)payload["gameCount"];
                int    gameMoneyAmount  = (int)payload["gameMoneyAmount"];
                string creatorAuthToken = (string)payload["creatorAuthToken"];
                //Get Card
                //string gameData = GameReferee.GetIndianGameCard(null);
                if (mainType == 0)
                {
                    if (gameCount > 5 || gameCount < 1)
                    {
                        return(new WebException("gameCount Limit", 10));
                    }

                    if (gameMoneyAmount > 1000 || gameMoneyAmount < 1)
                    {
                        return(new WebException("gameMoneyAmount Limit", 11));
                    }
                }
                else
                {
                    if (gameCount > 20 || gameCount < 1)
                    {
                        return(new WebException("gameCount Limit", 10));
                    }

                    if (gameMoneyAmount > 1000000 || gameMoneyAmount < 1)
                    {
                        return(new WebException("gameMoneyAmount Limit", 11));
                    }
                }

                GameInfo info = null;
                Task     t    = Task.Run(() => {
                    info = dbhandler.sp_CreateQHoldem(mainType, gameTitle, gameData, gameCount, gameMoneyAmount, creatorAuthToken);
                });
                await t;
                if (info == null)
                {
                    return(new WebException("creategame failed", 401));
                }

                return(info);
            };

            Post[parentSpace + "/runQHoldem", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int    gameID          = (int)payload["gameID"];
                int    joinerGameData  = (int)payload["joinerGameData"];
                string joinerMemo      = (string)payload["joinerMemo"];
                string joinerAuthToken = (string)payload["joinerAuthToken"];


                GameInfo gameInfo     = dbhandler.getGameInfo((int)eGameType.QHoldem, gameID);
                int      delPos       = gameInfo.gameData.IndexOf('-');
                string   commCardData = GameReferee.GetPokerCard(5, gameInfo.gameData.Remove(delPos, 1));

                string[] userCardInfo = gameInfo.gameData.Split('-');   //"1:2-3:4"

                string pulishCards = "";
                string myCards     = "";

                pulishCards = commCardData + ":" + userCardInfo[0] + "-" + userCardInfo[0];
                myCards     = commCardData + ":" + userCardInfo[1] + "-" + userCardInfo[1];

                string cratorHandStr = "";
                string joinerHandStr = "";

                int whoWinner = GameReferee.GetWinner(gameInfo.gameType, pulishCards, myCards, ref cratorHandStr, ref joinerHandStr);

                if (joinerGameData == 0)
                {
                    if (whoWinner == 1)
                    {
                        whoWinner = 2;
                    }
                    else if (whoWinner == 2)
                    {
                        whoWinner = 1;
                    }
                }

                WebOK info = null;
                Task  t    = Task.Run(() => {
                    info = dbhandler.sp_RunQHoldem(gameID, joinerGameData, commCardData, joinerMemo, joinerAuthToken, whoWinner, cratorHandStr, joinerHandStr);
                });
                await t;
                if (info == null)
                {
                    return(new WebException("rungame failed", 401));
                }

                if (info.statusCode != 200)
                {
                    return(new WebException("rungame failed", info.statusCode));
                }

                GameResult gameResult = new GameResult();
                gameResult.whoWinner       = whoWinner;
                gameResult.gameFlag_left1  = pulishCards;
                gameResult.gameFlag_right1 = myCards;

                gameResult.gameMoneyAmount = gameInfo.gameMoneyAmount;
                gameResult.result_left     = cratorHandStr;
                gameResult.result_right    = joinerHandStr;

                return(gameResult);
            };

            Post[parentSpace + "/runPublicQHoldem", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int    gameID         = (int)payload["gameID"];
                int    joinerGameData = (int)payload["joinerGameData"];
                string joinerMemo     = (string)payload["joinerMemo"];
                string joinerNick     = (string)payload["joinerNick"];
                string joinerAvatar   = (string)payload["joinerAvatar"];


                GameInfo gameInfo     = dbhandler.getGameInfo((int)eGameType.QHoldem, gameID);
                int      delPos       = gameInfo.gameData.IndexOf('-');
                string   commCardData = GameReferee.GetPokerCard(5, gameInfo.gameData.Remove(delPos, 1));

                string[] userCardInfo = gameInfo.gameData.Split('-');   //"1:2-3:4"

                string pulishCards = "";
                string myCards     = "";

                pulishCards = commCardData + ":" + userCardInfo[0] + "-" + userCardInfo[0];
                myCards     = commCardData + ":" + userCardInfo[1] + "-" + userCardInfo[1];

                string cratorHandStr = "";
                string joinerHandStr = "";

                int whoWinner = GameReferee.GetWinner(gameInfo.gameType, pulishCards, myCards, ref cratorHandStr, ref joinerHandStr);

                if (joinerGameData == 0)
                {
                    if (whoWinner == 1)
                    {
                        whoWinner = 2;
                    }
                    else if (whoWinner == 2)
                    {
                        whoWinner = 1;
                    }
                }

                WebOK info = null;
                Task  t    = Task.Run(() => {
                    info = dbhandler.sp_RunPublicQHoldem(gameID, joinerGameData, commCardData, joinerMemo, whoWinner, cratorHandStr, joinerHandStr, joinerNick, joinerAvatar);
                });
                await t;
                if (info == null)
                {
                    return(new WebException("rungame failed", 401));
                }

                if (info.statusCode != 200)
                {
                    return(new WebException("rungame failed", info.statusCode));
                }

                GameResult gameResult = new GameResult();
                gameResult.whoWinner       = whoWinner;
                gameResult.gameFlag_left1  = pulishCards;
                gameResult.gameFlag_right1 = myCards;

                gameResult.gameMoneyAmount = gameInfo.gameMoneyAmount;
                gameResult.result_left     = cratorHandStr;
                gameResult.result_right    = joinerHandStr;

                return(gameResult);
            };
        }
Esempio n. 7
0
        public InfomationController()
        {
            parentSpace = "/api/info";
            dbhandler   = new DBInfomationHandler(ConfigurationManager.AppSettings.Get("ConectionDBString"));

            Get["Event/{id}", true] = async(parameters, ct) =>
            {
                FBSahareModel model = new FBSahareModel();
                model.appid    = "588833947973720";
                model.pageID   = parameters.id;
                model.pageUrl  = "http://game.webnori.com/Event/" + parameters.id;
                model.pageImg  = "http://game.webnori.com/img/event/" + parameters.id + "/fbshare.jpg";
                model.popupurl = string.Format("https://www.facebook.com/sharer/sharer.php?u={0}&amp;src=sdkpreparse", model.pageUrl);

                string pageName = string.Format("views/event/page_{0}", parameters.id);
                return(View[pageName, model]);
            };


            Get["/PublicDetail/{id}", true] = async(parameters, ct) => {
                FBSahareModel model = new FBSahareModel();
                model.pageID   = int.Parse(parameters.id);
                model.appid    = "588833947973720";
                model.langcode = "ko_KR";
                model.langfile = string.Format("/js/lang/ko_KR.js");

                List <HandGameListInfo> gameList1 = new List <HandGameListInfo>();
                Task t = Task.Run(() => {
                    gameList1 = dbhandler.GetHandGameList(0, 5, 1, model.pageID, 0);
                });
                await t;

                List <HandGameListInfoCompleted> gameList2 = new List <HandGameListInfoCompleted>();

                Task t2 = Task.Run(() => {
                    gameList2 = dbhandler.GetHandGameListCompleted(0, 5, 1, model.pageID, 0);
                });
                await t2;

                if (gameList1.Count > 0)
                {
                    model.pageTitle   = gameList1[0].memberNick_left + " 의 가위바위보게임";
                    model.pageContent = gameList1[0].gameMemo_left;
                }
                if (gameList2.Count > 0)
                {
                    model.pageTitle   = gameList2[0].memberNick_left + " 의 가위바위보게임";
                    model.pageContent = gameList2[0].gameMemo_left;
                }

                model.pageUrl  = "http://game.webnori.com/PublicDetail/" + parameters.id;
                model.pageImg  = "http://game.webnori.com/img/share_handimg.png";
                model.popupurl = string.Format("https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fgame.webnori.com%2FPublicDetail%2F{0}&amp;src=sdkpreparse", model.pageID);

                return(View["views/HandGameShareDetail.html", model]);
                //return View["public/index.html", model];
            };

            Get["/PublicIholdemDetail/{id}", true] = async(parameters, ct) => {
                FBSahareModel model = new FBSahareModel();
                model.pageID   = int.Parse(parameters.id);
                model.appid    = "588833947973720";
                model.langcode = "ko_KR";
                model.langfile = string.Format("/js/lang/ko_KR.js");

                List <IndianHoldemListInfo> gameList1 = new List <IndianHoldemListInfo>();
                Task t = Task.Run(() => {
                    gameList1 = dbhandler.GetIndianHoldemGameList(0, 5, 1, 0, model.pageID, 0);
                });
                await t;

                List <IndianHoldemListInfo> gameList2 = new List <IndianHoldemListInfo>();

                Task t2 = Task.Run(() => {
                    gameList2 = dbhandler.GetIndianHoldemGameList(0, 5, 1, 1, model.pageID, 0);
                });
                await t2;

                if (gameList1.Count > 0)
                {
                    model.pageTitle   = gameList1[0].creatorNick + " 의 인디언홀덤 게임";
                    model.pageContent = gameList1[0].gameTitle;
                }
                if (gameList2.Count > 0)
                {
                    model.pageTitle   = gameList2[0].creatorNick + " 의 인디언홀덤 게임";
                    model.pageContent = gameList2[0].gameTitle;
                }

                model.pageUrl  = "http://game.webnori.com/PublicIholdemDetail/" + parameters.id;
                model.pageImg  = "http://game.webnori.com/img/share_iholdem.png";
                model.popupurl = string.Format("https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fgame.webnori.com%2FPublicIholdemDetail%2F{0}&amp;src=sdkpreparse", model.pageID);

                return(View["views/IHoldemGameShareDetail.html", model]);
                //return View["public/index.html", model];
            };

            Get["/PublicDetail/{id}/{langID}", true] = async(parameters, ct) => {
                FBSahareModel model = new FBSahareModel();
                model.pageID = int.Parse(parameters.id);
                model.appid  = "588833947973720";

                model.langcode = parameters.langID;
                model.langfile = string.Format("/js/lang/{0}.js", parameters.langID);

                List <HandGameListInfo> gameList1 = new List <HandGameListInfo>();
                Task t = Task.Run(() => {
                    gameList1 = dbhandler.GetHandGameList(0, 5, 1, model.pageID, 0);
                });
                await t;

                List <HandGameListInfoCompleted> gameList2 = new List <HandGameListInfoCompleted>();

                Task t2 = Task.Run(() => {
                    gameList2 = dbhandler.GetHandGameListCompleted(0, 5, 1, model.pageID, 0);
                });
                await t2;

                string titleEnd = "";
                switch (model.langcode.ToLower())
                {
                case "en_en":
                    titleEnd = "'s Rock Paper Scissors Game";
                    break;

                case "ko_kr":
                    titleEnd = "의 가위바위보게임 게임";
                    break;
                }

                if (gameList1.Count > 0)
                {
                    model.pageTitle   = gameList1[0].memberNick_left + titleEnd;
                    model.pageContent = gameList1[0].gameMemo_left;
                }
                if (gameList2.Count > 0)
                {
                    model.pageTitle   = gameList2[0].memberNick_left + titleEnd;
                    model.pageContent = gameList2[0].gameMemo_left;
                }

                model.pageUrl  = "http://game.webnori.com/PublicDetail/" + parameters.id + "/" + parameters.langID;
                model.pageImg  = "http://game.webnori.com/img/share_handimg.png";
                model.popupurl = string.Format("https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fgame.webnori.com%2FPublicDetail%2F{0}%2F{1}&amp;src=sdkpreparse", model.pageID, parameters.langID);

                return(View["views/HandGameShareDetail.html", model]);
                //return View["public/index.html", model];
            };

            Get["/PublicIholdemDetail/{id}/{langID}", true] = async(parameters, ct) => {
                FBSahareModel model = new FBSahareModel();
                model.pageID   = int.Parse(parameters.id);
                model.appid    = "588833947973720";
                model.langcode = parameters.langID;
                model.langfile = string.Format("/js/lang/{0}.js", parameters.langID);

                List <IndianHoldemListInfo> gameList1 = new List <IndianHoldemListInfo>();
                Task t = Task.Run(() => {
                    gameList1 = dbhandler.GetIndianHoldemGameList(0, 5, 1, 0, model.pageID, 0);
                });
                await t;

                List <IndianHoldemListInfo> gameList2 = new List <IndianHoldemListInfo>();

                Task t2 = Task.Run(() => {
                    gameList2 = dbhandler.GetIndianHoldemGameList(0, 5, 1, 1, model.pageID, 0);
                });
                await t2;

                string titleEnd = "";
                switch (model.langcode.ToLower())
                {
                case "en_en":
                    titleEnd = "'s IndianHodem Game";
                    break;

                case "ko_kr":
                    titleEnd = "의 인디언홀덤 게임";
                    break;
                }

                if (gameList1.Count > 0)
                {
                    model.pageTitle   = gameList1[0].creatorNick + titleEnd;
                    model.pageContent = gameList1[0].gameTitle;
                }
                if (gameList2.Count > 0)
                {
                    model.pageTitle   = gameList2[0].creatorNick + titleEnd;
                    model.pageContent = gameList2[0].gameTitle;
                }

                model.pageUrl  = "http://game.webnori.com/PublicIholdemDetail/" + parameters.id + "/" + parameters.langID;
                model.pageImg  = "http://game.webnori.com/img/share_iholdem.png";
                model.popupurl = string.Format("https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fgame.webnori.com%2FPublicIholdemDetail%2F{0}%2F{1}&amp;src=sdkpreparse", model.pageID, parameters.langID);

                return(View["views/IHoldemGameShareDetail.html", model]);
                //return View["public/index.html", model];
            };

            Get["/PublicQHoldemDetail/{id}/{langID}", true] = async(parameters, ct) => {
                FBSahareModel model = new FBSahareModel();
                model.pageID   = int.Parse(parameters.id);
                model.appid    = "588833947973720";
                model.langcode = parameters.langID;
                model.langfile = string.Format("/js/lang/{0}.js", parameters.langID);

                List <QHoldemListInfo> gameList1 = new List <QHoldemListInfo>();
                Task t = Task.Run(() => {
                    gameList1 = dbhandler.GetQHoldemGameList(0, 5, 1, 0, model.pageID, 0);
                });
                await t;

                List <QHoldemListInfo> gameList2 = new List <QHoldemListInfo>();

                Task t2 = Task.Run(() => {
                    gameList2 = dbhandler.GetQHoldemGameList(0, 5, 1, 1, model.pageID, 0);
                });
                await t2;

                string titleEnd = "";
                switch (model.langcode.ToLower())
                {
                case "en_en":
                    titleEnd = "'s Hodelm hand Game";
                    break;

                case "ko_kr":
                    titleEnd = "의 홀덤 핸드게임";
                    break;
                }

                if (gameList1.Count > 0)
                {
                    model.pageTitle   = gameList1[0].creatorNick + titleEnd;
                    model.pageContent = gameList1[0].gameTitle;
                }
                if (gameList2.Count > 0)
                {
                    model.pageTitle   = gameList2[0].creatorNick + titleEnd;
                    model.pageContent = gameList2[0].gameTitle;
                }

                model.pageUrl  = "http://game.webnori.com/PublicQHoldemDetail/" + parameters.id + "/" + parameters.langID;
                model.pageImg  = "http://game.webnori.com/img/share_qholdem.png";
                model.popupurl = string.Format("https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fgame.webnori.com%2FPublicQHoldemDetail%2F{0}%2F{1}&amp;src=sdkpreparse", model.pageID, parameters.langID);

                return(View["views/QHoldemGameShareDetail.html", model]);
                //return View["public/index.html", model];
            };

            Post[parentSpace + "/me", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                string   authToken = (string)payload["authtoken"];
                UserInfo info      = null;
                Task     t         = Task.Run(() => {
                    info = dbhandler.sp_userinfo(authToken);
                });
                await  t;
                string argMonth  = string.Format("{0}-{1:D2}-01", DateTime.Now.Year, DateTime.Now.Month);
                int    earnPoint = 0;
                Task   t2        = Task.Run(() => {
                    earnPoint = dbhandler.sp_earnpoint("", info.MemberID, argMonth);
                });

                await t2;

                info.MonthPoint = earnPoint;
                if (info == null)
                {
                    return(new WebException("Login failed", 401));
                }
                return(info);
            };

            Post[parentSpace + "/avatar/getlist", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                string             authToken         = (string)payload["authtoken"];
                List <AvartarInfo> avarTartList      = new List <AvartarInfo>();

                UserInfo info = null;
                Task     t    = Task.Run(() => {
                    info = dbhandler.sp_userinfo(authToken);
                });
                await t;
                if (info == null)
                {
                    return(new WebException("check auth failed", 401));
                }

                for (int idx = 1; idx < 71; idx++)
                {
                    string imgUrl = string.Format("/img/avatar/default/avartar_{0:00}.png", idx);
                    int    itemNo = idx;
                    avarTartList.Add(new AvartarInfo(itemNo, imgUrl));
                }
                return(avarTartList);
            };

            Post[parentSpace + "/avatar/set", true] = async(parameters, ct) =>
            {
                WebOK result = new WebOK();
                IDictionary <string, object> payload = GetPayLoad();
                string authToken = (string)payload["authtoken"];
                int    itemNo    = (int)payload["itemNo"];
                string imgUrl    = string.Format("/img/avatar/default/avartar_{0:00}.png", itemNo);

                List <AvartarInfo> avarTartList = new List <AvartarInfo>();

                UserInfo info = null;
                Task     t    = Task.Run(() => {
                    info = dbhandler.sp_userinfo(authToken);
                });
                await t;
                if (info == null)
                {
                    return(new WebException("check auth failed", 401));
                }


                Task taskUpdateAvatar = Task.Run(() => {
                    string sqltext = string.Format("update tblmember set picurl='{0}' where memberID={1};", imgUrl, info.MemberID);
                    dbhandler.RunSQL(sqltext, false);
                });

                await taskUpdateAvatar;

                return(result);
            };

            Post[parentSpace + "/user", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int      userNo = (int)payload["userNo"];
                UserInfo info   = null;
                Task     t      = Task.Run(() => {
                    info = dbhandler.sp_userinfo("NAN", userNo);
                });
                await t;

                info.GamePoint = 0;
                info.CoinCount = 0;
                if (info == null)
                {
                    return(new WebException("Login failed", 401));
                }
                return(info.ToString());
            };

            Post[parentSpace + "/game/playlist", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int startidx = (int)payload["startidx"];
                int endidx   = (int)payload["endidx"];

                List <HandGameListInfo> gameList2 = new List <HandGameListInfo>();
                Task t = Task.Run(() => {
                    gameList2 = dbhandler.GetHandGameList(startidx, endidx);
                });
                await t;

                List <HandGamePlayList> gameList   = new List <HandGamePlayList>();
                List <HandGameListInfo> detailList = new List <HandGameListInfo>();
                int curGameID            = 0;
                HandGamePlayList addData = new HandGamePlayList();
                foreach (HandGameListInfo dbdata in gameList2)
                {
                    //New Header
                    if (curGameID != dbdata.gameID)
                    {
                        addData        = new HandGamePlayList();
                        detailList     = new List <HandGameListInfo>();
                        addData.header = dbdata;
                        addData.list   = detailList;
                        curGameID      = dbdata.gameID;
                        gameList.Add(addData);
                    }

                    if (curGameID == dbdata.gameID)
                    {
                        if (dbdata.subGameID > -1)
                        {
                            addData.list.Add(dbdata);
                        }
                    }
                }

                return(gameList);
            };

            Post[parentSpace + "/game/completelist", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int startidx = (int)payload["startidx"];
                int endidx   = (int)payload["endidx"];

                //List<GameListInfoCompleted> gameList2 = dbhandler.GetGameListCompleted(startidx, endidx);
                List <HandGameListInfoCompleted> gameList2 = new List <HandGameListInfoCompleted>();
                Task t = Task.Run(() => {
                    gameList2 = dbhandler.GetHandGameListCompleted(startidx, endidx);
                });
                await t;

                List <HandGamePlayCompletedList> gameList   = new List <HandGamePlayCompletedList>();
                List <HandGameListInfoCompleted> detailList = new List <HandGameListInfoCompleted>();
                int curGameID = 0;
                HandGamePlayCompletedList addData = new HandGamePlayCompletedList();
                foreach (HandGameListInfoCompleted dbdata in gameList2)
                {
                    //New Header
                    if (curGameID != dbdata.gameID)
                    {
                        addData        = new HandGamePlayCompletedList();
                        detailList     = new List <HandGameListInfoCompleted>();
                        addData.header = dbdata;
                        addData.list   = detailList;
                        curGameID      = dbdata.gameID;
                        gameList.Add(addData);
                    }

                    if (curGameID == dbdata.gameID)
                    {
                        if (dbdata.subGameID > -1)
                        {
                            addData.list.Add(dbdata);
                        }
                    }
                }
                return(gameList);
            };

            Post[parentSpace + "/game/handplaylist", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int startidx  = (int)payload["startidx"];
                int endidx    = (int)payload["endidx"];
                int mainType  = (int)payload["mainType"];
                int gameID    = (int)payload["gameID"];
                int creatorID = (int)payload["creatorID"];

                List <HandGameListInfo> gameList2 = new List <HandGameListInfo>();
                Task t = Task.Run(() => {
                    gameList2 = dbhandler.GetHandGameList(startidx, endidx, mainType, gameID, creatorID);
                });
                await t;

                List <HandGamePlayList> gameList   = new List <HandGamePlayList>();
                List <HandGameListInfo> detailList = new List <HandGameListInfo>();
                int curGameID            = 0;
                HandGamePlayList addData = new HandGamePlayList();
                foreach (HandGameListInfo dbdata in gameList2)
                {
                    //New Header
                    if (curGameID != dbdata.gameID)
                    {
                        addData        = new HandGamePlayList();
                        detailList     = new List <HandGameListInfo>();
                        addData.header = dbdata;
                        addData.list   = detailList;
                        curGameID      = dbdata.gameID;
                        gameList.Add(addData);
                    }

                    if (curGameID == dbdata.gameID)
                    {
                        if (dbdata.subGameID > -1)
                        {
                            addData.list.Add(dbdata);
                        }
                    }
                }

                return(gameList);
            };

            Post[parentSpace + "/game/handcompletelist", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int startidx  = (int)payload["startidx"];
                int endidx    = (int)payload["endidx"];
                int mainType  = (int)payload["mainType"];
                int gameID    = (int)payload["gameID"];
                int creatorID = (int)payload["creatorID"];

                //List<GameListInfoCompleted> gameList2 = dbhandler.GetGameListCompleted(startidx, endidx);
                List <HandGameListInfoCompleted> gameList2 = new List <HandGameListInfoCompleted>();
                Task t = Task.Run(() => {
                    gameList2 = dbhandler.GetHandGameListCompleted(startidx, endidx, mainType, gameID, creatorID);
                });
                await t;


                List <HandGamePlayCompletedList> gameList   = new List <HandGamePlayCompletedList>();
                List <HandGameListInfoCompleted> detailList = new List <HandGameListInfoCompleted>();
                int curGameID = 0;
                HandGamePlayCompletedList addData = new HandGamePlayCompletedList();
                foreach (HandGameListInfoCompleted dbdata in gameList2)
                {
                    //New Header
                    if (curGameID != dbdata.gameID)
                    {
                        addData        = new HandGamePlayCompletedList();
                        detailList     = new List <HandGameListInfoCompleted>();
                        addData.header = dbdata;
                        addData.list   = detailList;
                        curGameID      = dbdata.gameID;
                        gameList.Add(addData);
                    }

                    if (curGameID == dbdata.gameID)
                    {
                        if (dbdata.subGameID > -1)
                        {
                            addData.list.Add(dbdata);
                        }
                    }
                }
                return(gameList);
            };
            //GetQHoldemGameList
            Post[parentSpace + "/game/indianholdemlist", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int startidx  = (int)payload["startidx"];
                int endidx    = (int)payload["endidx"];
                int mainType  = (int)payload["mainType"];
                int gameState = (int)payload["gameState"];
                int gameID    = (int)payload["gameID"];
                int creatorID = (int)payload["creatorID"];

                List <IndianHoldemListInfo> gameList2 = new List <IndianHoldemListInfo>();
                Task t = Task.Run(() => {
                    gameList2 = dbhandler.GetIndianHoldemGameList(startidx, endidx, mainType, gameState, gameID, creatorID);
                });
                await t;

                List <IndianHoldemListInfoList> gameList   = new List <IndianHoldemListInfoList>();
                List <IndianHoldemListInfo>     detailList = new List <IndianHoldemListInfo>();
                int curGameID = 0;
                IndianHoldemListInfoList addData = new IndianHoldemListInfoList();
                foreach (IndianHoldemListInfo dbdata in gameList2)
                {
                    //New Header
                    if (curGameID != dbdata.gameID)
                    {
                        addData        = new IndianHoldemListInfoList();
                        detailList     = new List <IndianHoldemListInfo>();
                        addData.header = dbdata;
                        addData.list   = detailList;
                        curGameID      = dbdata.gameID;
                        gameList.Add(addData);
                    }

                    if (curGameID == dbdata.gameID)
                    {
                        if (dbdata.subGameID > -1)
                        {
                            addData.list.Add(dbdata);
                        }
                    }
                }

                return(gameList);
            };

            Post[parentSpace + "/game/QHoldemlist", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int startidx  = (int)payload["startidx"];
                int endidx    = (int)payload["endidx"];
                int mainType  = (int)payload["mainType"];
                int gameState = (int)payload["gameState"];
                int gameID    = (int)payload["gameID"];
                int creatorID = (int)payload["creatorID"];

                List <QHoldemListInfo> gameList2 = new List <QHoldemListInfo>();
                Task t = Task.Run(() => {
                    gameList2 = dbhandler.GetQHoldemGameList(startidx, endidx, mainType, gameState, gameID, creatorID);
                });
                await t;

                List <QHoldemListInfoList> gameList   = new List <QHoldemListInfoList>();
                List <QHoldemListInfo>     detailList = new List <QHoldemListInfo>();
                int curGameID = 0;
                QHoldemListInfoList addData = new QHoldemListInfoList();
                foreach (QHoldemListInfo dbdata in gameList2)
                {
                    //New Header
                    if (curGameID != dbdata.gameID)
                    {
                        addData        = new QHoldemListInfoList();
                        detailList     = new List <QHoldemListInfo>();
                        addData.header = dbdata;
                        addData.list   = detailList;
                        curGameID      = dbdata.gameID;
                        gameList.Add(addData);
                    }

                    if (curGameID == dbdata.gameID)
                    {
                        if (dbdata.subGameID > -1)
                        {
                            addData.list.Add(dbdata);
                        }
                    }
                }
                return(gameList);
            };

            Post[parentSpace + "/earnpoint/rank", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                string monthData = string.Format("{0}-{1:D2}-01", DateTime.Now.Year, DateTime.Now.Month);
                int    gameType  = (int)payload["gameType"];

                RankListInfoList resultValue = new RankListInfoList();
                resultValue.currentMonth = string.Format("{0}-{1}", DateTime.Now.Year, DateTime.Now.Month);
                Task t = Task.Run(() => {
                    resultValue.list = dbhandler.sp_earnpointList(monthData, gameType);
                });
                await t;

                return(resultValue);
            };

            Post[parentSpace + "/adver/getlist", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                string           authToken           = (string)payload["authtoken"];
                List <AdverInfo> adverList           = new List <AdverInfo>();
                Task             t = Task.Run(() => {
                    adverList = dbhandler.GetAdverList();
                });
                await t;
                return(adverList);
            };
        }