/* * 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()); }
public static void takeTskTest() { inputMessage iptMsg = new inputMessage(); iptMsg.addWay("takeTsk"); iptMsg.addArg("id", "2"); iptMsg.addArg("taker", "nihao"); SQLHandler sql = new SQLHandler(); string output = sql.recvMsg(iptMsg.getString()); Console.WriteLine(output); return; }
public static void finishTskTest() { inputMessage iptMsg = new inputMessage(); iptMsg.addWay("finishTsk"); iptMsg.addArg("name", "shabi"); iptMsg.addArg("id", "1"); SQLHandler sql = new SQLHandler(); string output = sql.recvMsg(iptMsg.getString()); Console.WriteLine(output); return; }
/// <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()); }
public static void JsonObjectTest() { inputMessage iptMsg = new inputMessage(); iptMsg.addWay("searchUsr"); iptMsg.addArg("name", "test"); iptMsg.addArg("pwd", "pwd"); string msg = iptMsg.getString(); Console.WriteLine(msg); inputMessage transMsg = new inputMessage(msg); string way = transMsg.getWay(); string argName = transMsg.getArg("name"); string argPwd = transMsg.getArg("pwd"); Console.WriteLine(string.Format("\n\n name {0} pwd {1} way {2}", argName, argPwd, way)); }
/// <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()); }
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()); } }
/* * 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()); }
/// <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()); }
/* * 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()); } }
/* * 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()); }