Example #1
0
        public string getDetailsTsk(string id_)
        {
            MySqlConnection             sqlConn = GetSqlConn();
            outputMessage               opt     = new outputMessage();
            Dictionary <string, string> result  = new Dictionary <string, string>();

            sqlConn.Open();
            String       strUsr  = "******";
            MySqlCommand instUsr = new MySqlCommand(strUsr, sqlConn);

            instUsr.Parameters.AddWithValue("@id", id_);
            MySqlDataReader sqlRes = instUsr.ExecuteReader();

            while (sqlRes.Read())
            {
                try { result["id"] = (string)sqlRes["id"]; } catch (Exception e) { result["id"] = "None_id"; }
                try { result["title"] = (string)sqlRes["title"]; } catch (Exception e) { result["title"] = "None_title"; }
                try { result["content"] = (string)sqlRes["content"]; } catch (Exception e) { result["content"] = "None_content"; }
                try { result["coin"] = (string)sqlRes["coin"]; } catch (Exception e) { result["content"] = "None_coin"; }
                try { result["exp"] = (string)sqlRes["exp"]; } catch (Exception e) { result["exp"] = "None_exp"; }
                try { result["owner"] = (string)sqlRes["owner"]; } catch (Exception e) { result["owner"] = "None_owner"; }
                try { result["taker"] = (string)sqlRes["taker"]; } catch (Exception e) { result["taker"] = "None_taker"; }
            }
            opt.addResult(result);
            return(opt.getString());
        }
Example #2
0
        /*
         * string addTsk(string msg)
         *
         * input msg is actually a inputMessage(I will do deserialize part):
         * way: "addTsk"
         * argument [it is a dictionary]:
         *  key(string) : value(string)
         *  "title"       : "shabi"
         *  "content"     : "wo si le"
         *  "coin"        : "23"
         *  "owner"       : "woshiibaba"
         *
         * output msg(string)
         *
         * success: True (add Success) / False (add doesn't success)
         * ErrorMessage (if False) : will have the reason why it is false);
         *
         */
        public string addTsk(string msg)
        {
            inputMessage    input   = new inputMessage(msg);
            outputMessage   output  = new outputMessage();
            MySqlConnection sqlConn = GetSqlConn();

            try
            {
                sqlConn.Open();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                output.addErrorMsg("addUsr: Connection between mysql doesn't work correctly");
                output.addSuccess(false);
                return(output.getString());
            }

            string title, content, owner;
            int    coin;

            try
            {
                title   = input.getArg("title");
                content = input.getArg("content");
                coin    = Convert.ToInt32(input.getArg("coin"));
                owner   = input.getArg("owner");
            }
            catch (Exception e)
            {
                output.addErrorMsg("addTsk: Invalid input please re-enter");
                output.addSuccess(false);
                return(output.getString());
            }

            try
            {
                String       strUsr  = "******";
                MySqlCommand instUsr = new MySqlCommand(strUsr, sqlConn);
                instUsr.Parameters.AddWithValue("@title", title);
                instUsr.Parameters.AddWithValue("@content", content);
                instUsr.Parameters.AddWithValue("@coin", coin);
                instUsr.Parameters.AddWithValue("@owner", owner);
                instUsr.ExecuteNonQuery();
                sqlConn.Close();


                output.addSuccess(true);
            }
            catch (Exception ex)
            {
                sqlConn.Close();
                Console.WriteLine("INSERT INTO Tsk may can not work");
                Console.WriteLine(ex.ToString());
                output.addSuccess(false);
                output.addErrorMsg("INSERT INTO Tsk may can not work");
            }
            return(output.getString());
        }
Example #3
0
        /// <summary>
        /// Finish tsk: Delete the Tsk from the TSk DB, and add the coin and exp to the users
        /// </summary>
        /// <param name="msg">inputMessage: getWay = "finishTsk" and arugment: "name","id"(tskid)</param>
        /// <returns>string(outputMessage)</returns>
        public string finishTsk(string msg)
        {
            inputMessage    input   = new inputMessage(msg);
            outputMessage   output  = new outputMessage();
            MySqlConnection sqlConn = GetSqlConn();

            try
            {
                sqlConn.Open();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                output.addErrorMsg("takeTsk: Connection between mysql doesn't work correctly");
                output.addSuccess(false);
                return(output.getString());
            }

            string taker = input.getArg("name");
            string id_   = input.getArg("id");
            int    id    = Convert.ToInt32(id_);
            string owner = getOwner8id(id_);
            string opt   = getDetailsTsk(id_);

            outputMessage optMsg = new outputMessage(opt);
            Dictionary <string, Dictionary <string, string> > resultId = optMsg.getResult();
            string takerNow = resultId["0"]["taker"];

            if (!takerNow.Equals("None_taker"))
            {
                output.addSuccess(false);
                output.addErrorMsg("We have already have someone to take the story");
                return(output.getString());
            }

            Tuple <int, int> CoinExp = getTsk8id(id_);
            int coin = CoinExp.Item1;
            int exp  = CoinExp.Item2;

            addCoin(taker, coin.ToString());
            addCoin(owner, (0 - coin).ToString());
            addExp(taker, exp.ToString());
            deleteTsk(id_);

            output.addSuccess(true);

            return(output.getString());
        }
Example #4
0
        /// <summary>
        ///  Initialize:
        ///  (X) Two databse: (do the check first and then set up the database structure)
        ///  user
        ///  task
        ///  (X) addUsr(String name, String pwd)
        ///  (X) searchUsr(String name, String pwd)
        ///  () addCoin(String name, int coin)
        ///  () addExp(Strig name, int exp)
        ///  () losCoin(String name, int coin)
        ///
        ///  (X) getTsk()
        ///  () addTsk(String title, String content, int coin)
        ///  () deleteTask(String title)
        ///
        /// </summary>
        ///

        public string recvMsg(string msg)
        {
            outputMessage optMessage = new outputMessage();
            inputMessage  iptMessage = new inputMessage(msg);

            string way = iptMessage.getWay();

            switch (way)
            {
            case "addUsr":
                return(addUsr(msg));

            case "searchUsr":
                return(searchUsr(msg));

            case "getallTsk":
                return(getallTsk(msg));

            case "addTsk":
                return(addTsk(msg));

            case "takeTsk":
                return(takeTsk(msg));

            case "finishTsk":
                return(finishTsk(msg));

            case "getAcceptedTsk":
                return(getAcceptedTsk(msg));

            default:
                optMessage.addSuccess(false);
                optMessage.addErrorMsg("unable to match the way");
                break;
            }
            return(optMessage.getString());
        }
Example #5
0
        public void sqlTest()
        {
            Console.WriteLine(">>>>>>>>>>>>>testing    searchUsr>>>>>>>>>>>>>>>\n");
            inputMessage ipt = new inputMessage();

            ipt.addWay("searchUsr");
            ipt.addArg("name", "test");
            ipt.addArg("pwd", "pwd");

            string msg = ipt.getString();
            string opt = recvMsg(msg);

            Console.WriteLine("\n\n" + opt + "\n\n");

            outputMessage optMsg = new outputMessage(opt);

            if (optMsg.getSuccess())
            {
                var result = optMsg.getResult();

                foreach (KeyValuePair <string, Dictionary <string, string> > itr in result)
                {
                    string ans = itr.Key + "\n";

                    foreach (KeyValuePair <string, string> subitr in itr.Value)
                    {
                        ans += subitr.Key + "  " + subitr.Value + "\n";
                    }

                    Console.WriteLine(ans);
                }
            }
            else
            {
                Console.WriteLine("we have some error " + optMsg.getErrorMsg());
            }
        }
Example #6
0
        /*
         * string takeTsk(string msg)
         *
         * input msg is actually a inputMessage(I will do deserialize part):
         * way: "takeTsk"
         * argument [it is a dictionary]:
         *  key(string) : value(string)
         *  "id"        : "XXXX"
         *  "taker"     : "nibaba"
         *
         * output msg(string)
         *
         * success: True (take Success) / False (take doesn't success)
         * ErrorMessage (if False) : will have the reason why it is false);
         */
        public string takeTsk(string msg)
        {
            inputMessage    input   = new inputMessage(msg);
            outputMessage   output  = new outputMessage();
            MySqlConnection sqlConn = GetSqlConn();

            try
            {
                sqlConn.Open();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                output.addErrorMsg("takeTsk: Connection between mysql doesn't work correctly");
                output.addSuccess(false);
                return(output.getString());
            }

            int    id    = Convert.ToInt32(input.getArg("id"));
            string taker = input.getArg("taker");

            string owner = getOwner8id(id.ToString());

            if (owner.Equals(taker))
            {
                output.addSuccess(false);
                output.addErrorMsg("you can not take your own task");
                return(output.getString());
            }

            Console.WriteLine("check the taker");
            string        opt    = getDetailsTsk(input.getArg("id"));
            outputMessage optMsg = new outputMessage(opt);
            Dictionary <string, Dictionary <string, string> > resultId = optMsg.getResult();
            string takerNow = resultId["0"]["taker"];

            if (!takerNow.Equals("None_taker"))
            {
                output.addSuccess(false);
                output.addErrorMsg("We have already have someone to take the story");
                return(output.getString());
            }



            try
            {
                String strUsr = "******";

                MySqlCommand instUsr = new MySqlCommand(strUsr, sqlConn);
                instUsr.Parameters.AddWithValue("@id", id);
                instUsr.Parameters.AddWithValue("@taker", taker);
                instUsr.ExecuteNonQuery();
                sqlConn.Close();

                output.addSuccess(true);
            }
            catch (Exception ex)
            {
                sqlConn.Close();
                Console.WriteLine("UPDATE tsk taker may can not work");
                Console.WriteLine(ex.ToString());
                output.addSuccess(false);
                output.addErrorMsg("UPDATE tsk taker may can not work");
            }
            return(output.getString());
        }
Example #7
0
        /// <summary>
        /// go to find the tasks you have accepted.
        /// Input: argument must have "taker".
        /// Output: Outputmessage, Results are dictionary, each subDictionary is a detailed information for each dictionary
        /// </summary>
        /// <param name="msg"></param>
        /// <returns></returns>
        public string getAcceptedTsk(string msg)
        {
            inputMessage    input   = new inputMessage(msg);
            outputMessage   output  = new outputMessage();
            MySqlConnection sqlConn = GetSqlConn();

            try
            {
                sqlConn.Open();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                output.addErrorMsg("getOwnedTsk: Connection between mysql doesn't work correctly");
                output.addSuccess(false);
                return(output.getString());
            }

            string taker = input.getArg("taker");

            try
            {
                String       strsql  = "SELECT * FROM taker = @taker ;";
                MySqlCommand sqlComm = new MySqlCommand(strsql, sqlConn);
                sqlComm.Parameters.AddWithValue("@taker", taker);

                MySqlDataReader sqlRes = sqlComm.ExecuteReader();

                output.addSuccess(true);

                while (sqlRes.Read())
                {
                    string id      = sqlRes["id"].ToString();
                    string title   = sqlRes["title"].ToString();
                    string content = (string)sqlRes["content"];
                    string owner   = (string)sqlRes["owner"];
                    string coin    = sqlRes["coin"].ToString();
                    string exp     = sqlRes["exp"].ToString();


                    var lst = new Dictionary <string, string>();
                    lst["id"]      = id;
                    lst["title"]   = title;
                    lst["content"] = content;
                    lst["coin"]    = coin;
                    lst["exp"]     = exp;
                    lst["owner"]   = owner;


                    output.addResult(lst);
                }
            }
            catch (Exception ex)
            {
                sqlConn.Close();
                Console.Write("getAcceptedTsk may can not work");
                Console.Write(ex.Message);
                output.addSuccess(false);
                output.addErrorMsg("have problem in getAcceptedTsk");
            }
            return(output.getString());
        }
Example #8
0
        /*
         * string search(string msg)
         *
         * input msg is actually a inputMessage(I will do the serialize part):
         * way: "searchUsr"
         * argument [it is a dictionary]:
         *  key(string) : value(string)
         *  "name"       : "shabi"
         *  "pwd"       : "wo si le"
         *
         *
         * output msg(string)
         * Defining success: there is a user
         *          false  : (1)there is no such a usr (2) the pwd is not correct
         * success: True (search Success) / False (search doesn't success)
         * ErrorMessage (if False) : will have the reason why it is false);
         * lst (if success)  : lst["result"] = a dictionary: {"name":"shabi", "pwd":"zhe shi mi ma", "coin":"#", "exp": "#"}
         *     (False : null):
         */
        public string searchUsr(string msg)
        {
            inputMessage  input  = new inputMessage(msg);
            outputMessage output = new outputMessage();

            string name = "null";
            string pwd  = "null";



            MySqlConnection sqlConn = GetSqlConn();

            try
            {
                sqlConn.Open();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                output.addErrorMsg("addUsr: Connection between mysql doesn't work correctly" + ex.ToString());
                output.addSuccess(false);
                return(output.getString());
            }

            try
            {
                name = input.getArg("name");
                pwd  = input.getArg("pwd");
            }
            catch (Exception ex)
            {
                output.addSuccess(false);
                output.addErrorMsg("name/pwd cannot be empty, Please try again");
                return(output.getString());
            }


            try
            {
                String       strUsr  = "******";
                MySqlCommand findUsr = new MySqlCommand(strUsr, sqlConn);
                findUsr.Parameters.AddWithValue("@name", name);
                MySqlDataReader resUsr = findUsr.ExecuteReader();
                resUsr.Read();
                if (resUsr.HasRows)
                {
                    if (pwd.Equals(resUsr["pwd"]))
                    {
                        var lst = new Dictionary <string, string>();
                        lst.Add("name", resUsr["name"].ToString());
                        lst.Add("pwd", resUsr["pwd"].ToString());
                        lst.Add("coin", resUsr["coin"].ToString());
                        lst.Add("exp", resUsr["exp"].ToString());

                        output.addResult(lst);
                        output.addSuccess(true);
                    }
                    else
                    {
                        output.addSuccess(false);
                        output.addErrorMsg("Wrong password, please try again");
                    }

                    return(output.getString());
                }
                else
                {
                    sqlConn.Close();
                    output.addSuccess(false);
                    output.addErrorMsg("Cannot find the usr, please re-enter");
                    return(output.getString());
                }
            }
            catch (Exception ex)
            {
                sqlConn.Close();

                output.addSuccess(false);
                output.addErrorMsg("searchUsr has some problem, please try again or ask Developer about that");
                return(output.getString());
            }
        }
Example #9
0
        /*
         * string addUsr(string msg)
         * input msg (inputMessage)
         * way: addUsr<getWay()>
         * arg: name (getArg("name"))  / pwd (getArg("pwd"))
         *
         * output outpuMessage(string)
         * success: True (addSuccess) / False (add doesn't success)
         * ErrorMessage (if False) : will have the reason why it is false);
         */
        public string addUsr(string msg)
        {
            inputMessage  input  = new inputMessage(msg);
            outputMessage output = new outputMessage();
            string        name   = input.getArg("name");
            string        pwd    = input.getArg("pwd");

            MySqlConnection sqlConn = GetSqlConn();

            try
            {
                sqlConn.Open();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                output.addErrorMsg("addUsr: Connection between mysql doesn't work correctly");
                output.addSuccess(false);
                return(output.getString());
            }

            Boolean exitCheck = checkUsrExist(name);

            if (exitCheck)
            {
                output.addSuccess(false);
                output.addErrorMsg("Sorry Already Exits");
                return(output.getString());
            }


            try
            {
                String       strUsr  = "******";
                MySqlCommand instUsr = new MySqlCommand(strUsr, sqlConn);
                instUsr.Parameters.AddWithValue("@name", name);
                instUsr.Parameters.AddWithValue("@pwd", pwd);
                instUsr.ExecuteNonQuery();
                sqlConn.Close();
            }
            catch (Exception ex)
            {
                sqlConn.Close();
                Console.WriteLine("INSERT INTO Usr may can not work");
                Console.WriteLine(ex.Message);
                output.addSuccess(false);
                output.addErrorMsg("INSERT INTO Usr may can not work / Invalid input by name , pwd");
                return(output.getString());
            }

            exitCheck = checkUsrExist(name);
            if (!exitCheck)
            {
                output.addSuccess(false);
                output.addErrorMsg("Sorry, Unable to login, please try again");
            }
            else
            {
                output.addSuccess(true);
            }

            return(output.getString());
        }