using Newtonsoft.Json; using Newtonsoft.Json.Linq; using ssgrestserver.request; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; namespace ssgrestserver { class 공지CRUD : ARequestObject, INeedKeyRequest { string mRequestURL = "/mfront/mobile/broadtalkNotice?"; DBManager mDB = DBManager.getInstance(); public void setNeedKeys() { mNeedKeyList.Add("seqGFrameNo"); mNeedKeyList.Add("noticeAction"); mNeedKeyList.Add("vriNoticeNo"); mNeedKeyList.Add("content"); mNeedKeyList.Add("nickName"); mNeedKeyList.Add("insertDate"); mNeedKeyList.Add("보낸사람"); } protected override string startUpdateWork() { mIsSendTypeGet = false; string bufURLDataString = ""; //mAccessableDictionary = DataCenter.getInstance().getData(DataCenter.관리중인데이터들배열.CRUD데이터); string bufFrameNumber = mRequestParameterKVPairList["seqGFrameNo"]; string bufNoticeNumber = mRequestParameterKVPairList["vriNoticeNo"]; if (mRequestParameterKVPairList["noticeAction"] == "S") { DataSet bufDataSet = mDB.sendSelectQuery( $"select * from ssgCRUD where seqGFrameNo='{bufFrameNumber}' and vriNoticeNo='{bufNoticeNumber}'" ); if (bufDataSet.Tables[0].Rows.Count != 0) { //return JsonConvert.SerializeObject(bufDataSet.Tables[0]["payload"]); return JObject.Parse(bufDataSet.Tables[0].Rows[0]["payload"].ToString()).ToString(Newtonsoft.Json.Formatting.None); } else { return "조회되지 않는 S 요청인의 정보(보낸프레임번호에 데이터가 없음)"; } /* if (mAccessableDictionary.ContainsKey(mRequestParameterKVPairList["seqGFrameNo"])) { return mAccessableDictionary[mRequestParameterKVPairList["seqGFrameNo"]].ToString(Newtonsoft.Json.Formatting.None); } else { return "조회되지 않는 S 요청인의 정보(보낸프레임번호에 데이터가 없음)"; }*/ } else { foreach (KeyValuePair item in mRequestParameterKVPairList) { //bufURLDataString += item.Key + @"=" + item.Value + @"&"; if (item.Key == "content") { bufURLDataString += item.Key + @"=" + DataCenter.getInstance().interpritURL(item.Value) + @"&"; } else { bufURLDataString += item.Key + @"=" + item.Value + @"&"; } } bufURLDataString = bufURLDataString.Substring(0, bufURLDataString.Length - 1); JObject receiveData = JObject.Parse(httpRequest(mRequestURL + bufURLDataString)); receiveData.Add("조회시간", DateTime.Now.ToString()); // receiveData.Add("보낸사람", mRequestParameterKVPairList["보낸사람"]); //if (!mAccessableDictionary.ContainsKey(mRequestParameterKVPairList["seqGFrameNo"])) //{ //mAccessableDictionary.Add(mRequestParameterKVPairList["seqGFrameNo"], new JObject()); //} //요청이 제거였을경우 그동안 관리해온 인자값을 제거하고 서버의 상태를 리턴. if (mRequestParameterKVPairList["noticeAction"] == "D" && receiveData["message"].ToString() == "SUCCESS") { mDB.sendInsertQuery($"Delete From ssgCRUD where seqGFrameNo='{bufFrameNumber}' and vriNoticeNo='{bufNoticeNumber}'"); //if (mAccessableDictionary.ContainsKey(mRequestParameterKVPairList["seqGFrameNo"])) //{ // mAccessableDictionary.Remove(mRequestParameterKVPairList["seqGFrameNo"]); // return receiveData.ToString(); //} //else //{ // return "조회되지 않는 D 요청인의 정보(보낸프레임번호에 데이터가 없음)"; //} return receiveData.ToString(); } foreach (var item in mRequestParameterKVPairList) { if (receiveData.ContainsKey(item.Key)) { if (item.Key == "content") { receiveData[item.Key] = DataCenter.getInstance().interpritURL(item.Value, true); } else { receiveData[item.Key] = item.Value; } } else { if (item.Key == "content") { receiveData.Add(item.Key, DataCenter.getInstance().interpritURL(item.Value, true)); } else { receiveData.Add(item.Key, item.Value); } } } //mAccessableDictionary[mRequestParameterKVPairList["seqGFrameNo"]] = receiveData; string bufPayload = receiveData.ToString(Newtonsoft.Json.Formatting.None).Replace("'", "''"); mDB.sendInsertQuery( //$"insert into ssgCRUD (seqGFrameNo, vriNoticeNo, payload) VALUES ('{bufFrameNumber}','{bufNoticeNumber}', '{bufPayload}') " //+ $" ON CONFLICT(seqGFrameNo, vriNoticeNo) DO UPDATE SET payload='{bufPayload}';"); $"replace into ssgCRUD (seqGFrameNo, vriNoticeNo, payload) VALUES ('{bufFrameNumber}','{bufNoticeNumber}', '{bufPayload}') " ); return receiveData.ToString(Newtonsoft.Json.Formatting.None); } } } }