using System; using System.Collections.Generic; using System.Web; using System.Web.Services; using System.Configuration; using System.IO; using System.Web.Caching; using System.Collections; using System.Text; using CacheMgr; using System.Xml; using System.Diagnostics; using System.Data; using System.Linq; using Axpert_Object; using System.Threading; using ASBExt; using System.Text.RegularExpressions; using Ionic.Zip; using System.Web.UI.WebControls; using Newtonsoft.Json; using System.Globalization; using Newtonsoft.Json.Linq; using System.Net; using System.Web.Script.Serialization; using System.Web.Configuration; using AxInterface; namespace ASB { /// /// Summary description for WebService /// [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.Web.Script.Services.ScriptService] // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. // [System.Web.Script.Services.ScriptService] public class WebService : System.Web.Services.WebService { Util.Util utils = new Util.Util(); public string strFillDepPName = string.Empty; public ArrayList arrFillList = new ArrayList(); AxpertDotNet ads = new AxpertDotNet(); public string axpert = "Axpert\\"; public const string DATA = "data"; LogFile.Log logobj = new LogFile.Log(); Util.Util utilObj = new Util.Util(); CacheMgr.CacheManager cm = new CacheMgr.CacheManager(string.Empty); ASBExt.WebServiceExt asbExt = new ASBExt.WebServiceExt(); string project = string.Empty; string user = string.Empty; string AxRole = string.Empty; string sessionid = string.Empty; string transid = string.Empty; string ivname = string.Empty; public const int capacity = 10; List allUrls = new List(capacity); List allUrlsIdx = new List(capacity); ExecTrace ObjExecTr = ExecTrace.Instance; //Since the change theme is done in javascript, on postback the selected theme has to be saved in session. //Hence this function acts as a wrapper to update the theme in session and continue to update the db. [WebMethod(EnableSession = true)] public string UpdateTheme(string theme, string trace) { string inputXML = string.Empty; string result = string.Empty; if (trace != "♦♦GetChoicestoUpdateAppearance♦") return utilObj.ErrorMsgToJson("Invalid trace value."); bool themevalid = utilObj.IsChar(theme); if (!themevalid) { return utilObj.ErrorMsgToJson("Theme Invalid"); } else { if (HttpContext.Current.Session["project"] == null) return utilObj.SESSTIMEOUT; HttpContext.Current.Session["themeColor"] = theme; GetGlobalVars(); inputXML = ""; inputXML += "Update axusers SET webskin='" + theme + "' where username='" + user + "'"; inputXML += HttpContext.Current.Session["axApps"].ToString() + HttpContext.Current.Application["axProps"].ToString() + HttpContext.Current.Session["axGlobalVars"].ToString() + HttpContext.Current.Session["axUserVars"].ToString() + ""; string iXML = GetTraceString(inputXML); if (iXML != string.Empty) inputXML = iXML; result = asbExt.CallGetChoiceWebService("", inputXML); return result; } } [WebMethod(EnableSession = true)] public string SaveDataXML(ArrayList fldArray, ArrayList fldDbRowNo, ArrayList fldValueArray, ArrayList fldDeletedArray, ArrayList deletedFldArrayValues, string files, string rid, string delRows, string changedRows, string key) { string requestProcess_logtime = string.Empty; ObjExecTr.SetCurrentTime(); DateTime sTime1 = DateTime.Now; if (HttpContext.Current.Session["project"] == null) return utilObj.SESSTIMEOUT; TStructData tstData = (TStructData)Session[key]; if (tstData == null) return Constants.DUPLICATESESS; if (tstData.transID != "temps") { if (Util.Util.CheckCrossScriptingInString(String.Join(",", fldValueArray.ToArray()))) { return Constants.MALICIOUSNPUTDETECTED; } } string result = string.Empty; DateTime eTime1 = DateTime.Now; Util.Util.DeletedraftRediskeys(tstData.transid); result = tstData.CallSaveDataWS(tstData, fldArray, fldDbRowNo, fldValueArray, fldDeletedArray, deletedFldArrayValues, files, rid, delRows, changedRows); requestProcess_logtime += result.Split('♠')[0]; result = result.Split('♠')[1]; DateTime sTime2 = DateTime.Now; if (!result.StartsWith(Constants.ERROR)) { if (tstData.transid.ToLower() == "axglo") Session["AxInternalRefresh"] = "true"; if (tstData.IsDraftObj && HttpContext.Current.Session["AxEnableDraftSave"] != null && HttpContext.Current.Session["AxEnableDraftSave"].ToString() == "true") { user = HttpContext.Current.Session["user"].ToString(); utilObj.DeleteDraft(user + "-" + tstData.transid, user); } } DateTime eTime2 = DateTime.Now; if (tstData.logTimeTaken) tstData.strServerTime = (tstData.webTime1 + (eTime1.Subtract(sTime1).TotalMilliseconds)) + "," + tstData.asbTime + "," + (tstData.webTime2 + (eTime2.Subtract(sTime2).TotalMilliseconds)); requestProcess_logtime += ObjExecTr.RequestProcessTime("Response", result); string serverprocesstime = ObjExecTr.TotalServerElapsTime(); result = serverprocesstime + "*♠*" + requestProcess_logtime + "*♠*" + result; return result; } [WebMethod()] public void RemoveNewFiles(string f, string sid) { string ScriptsPath = HttpContext.Current.Application["ScriptsPath"].ToString(); if ((!string.IsNullOrEmpty(f))) { //Create a Folder DirectoryInfo di = new DirectoryInfo(ScriptsPath + axpert + sid); //' Determine whether the directory exists. if (di.Exists) { string outputPath = null; outputPath = ScriptsPath + axpert + sid + "\\" + f; //' Delete a file File.Delete(outputPath); } } } [WebMethod(EnableSession = true)] private string GetTraceString(string currentXml) { string traceVal = string.Empty; string errlog = string.Empty; traceVal = currentXml; if (currentXml.Contains("_#") == true) { currentXml = currentXml.Replace("_#", "~"); } string filename = string.Empty; int sindex = currentXml.IndexOf("♦♦"); int eindex = currentXml.LastIndexOf("♦"); if (sindex != -1 && eindex != -1) { filename = currentXml.Substring(sindex + 2, eindex - sindex - 2); sessionid = HttpContext.Current.Session["nsessionid"].ToString(); errlog = logobj.CreateLog("Executing Action", sessionid, filename, "new"); traceVal = currentXml.Replace("♦♦" + filename + "♦", errlog); } if (traceVal.Contains("~") == true) { traceVal = traceVal.Replace("~", "_#"); } if (traceVal != null && traceVal != "")// Reddy { if (traceVal.TrimStart().StartsWith(""; DateTime eTime1 = DateTime.Now; result = tstData.CallDeleteDataWS(s); if (result.ToLower().Contains("success") && utilObj.isRealTimeCacEnabled(transid, tstData.tstStrObj)) result = result + "*#*" + utilObj.GetAxRelations(tstData.transid); DateTime sTime2 = DateTime.Now; if (utilObj.IsFileInCache(tstData.transid, rid)) utilObj.DeleteFromCache(result, rid, tstData.transid); DateTime eTime2 = DateTime.Now; if (tstData.logTimeTaken) tstData.strServerTime = (tstData.webTime1 + (eTime1.Subtract(sTime1).TotalMilliseconds)) + "," + tstData.asbTime + "," + (tstData.webTime2 + (eTime2.Subtract(sTime2).TotalMilliseconds)); return result; } [WebMethod(EnableSession = true)] public string DeleteRowWS(ArrayList fldArray, ArrayList fldDbRowNo, ArrayList fldValueArray, ArrayList fldDeletedArray, string ArrActionLog, string s, string key, string dcNo) { if (HttpContext.Current.Session["project"] == null) return utilObj.SESSTIMEOUT; TStructData tstData = (TStructData)Session[key]; if (Util.Util.CheckCrossScriptingInString(String.Join(",", fldValueArray.ToArray()))) { return Constants.MALICIOUSNPUTDETECTED; } if (tstData == null) return Constants.DUPLICATESESS; sessionid = HttpContext.Current.Session["nsessionid"].ToString(); string result = string.Empty; logobj.CreateActionLog(ArrActionLog, sessionid, "ActionLog", ""); string errorLog = logobj.CreateLog("Delete row webservice", sessionid, "DeleteRow-" + tstData.transid, "new"); result = tstData.CallDeleteRowWS(tstData, fldArray, fldDbRowNo, fldValueArray, fldDeletedArray, s, dcNo); //TStructDef tstObj = utilObj.GetTstructDefObj("GetStructure", tstData.transid); tstData.JsonToArray(result, tstData.tstStrObj, "", "DeleteRow"); return result; } [WebMethod(EnableSession = true)] public string DeleteRowPerfWS(ArrayList fldArray, ArrayList fldDbRowNo, ArrayList fldValueArray, ArrayList fldDeletedArray, string ArrActionLog, string s, string key, string dcNo) { if (HttpContext.Current.Session["project"] == null) return utilObj.SESSTIMEOUT; TStructData tstData = (TStructData)Session[key]; if (tstData == null) return Constants.DUPLICATESESS; if (tstData.transID != "temps") { if (Util.Util.CheckCrossScriptingInString(String.Join(",", fldValueArray.ToArray()))) { return Constants.MALICIOUSNPUTDETECTED; } } sessionid = HttpContext.Current.Session["nsessionid"].ToString(); string result = string.Empty; logobj.CreateActionLog(ArrActionLog, sessionid, "ActionLog", ""); string errorLog = logobj.CreateLog("Delete row webservice", sessionid, "DeleteRow-" + tstData.transid, "new"); result = tstData.CallDeleteRowPerfWS(tstData, fldArray, fldDbRowNo, fldValueArray, fldDeletedArray, s, dcNo); tstData.JsonToArray(result, tstData.tstStrObj, "", "DeleteRow"); return result; } [WebMethod(EnableSession = true)] public string AddRowWS(ArrayList fldArray, ArrayList fldDbRowNo, ArrayList fldValueArray, ArrayList fldDeletedArray, string s, string dcNo, string key) { if (HttpContext.Current.Session["project"] == null) return utilObj.SESSTIMEOUT; if (Util.Util.CheckCrossScriptingInString(String.Join(",", fldValueArray.ToArray()))) { return Constants.MALICIOUSNPUTDETECTED; } TStructData tstData = (TStructData)Session[key]; if (tstData == null) return Constants.DUPLICATESESS; sessionid = HttpContext.Current.Session["nsessionid"].ToString(); string result = string.Empty; string errorLog = logobj.CreateLog("Add row webservice", sessionid, "AddRow-" + tstData.transid, "new"); result = tstData.CallAddRowWS(tstData, fldArray, fldDbRowNo, fldValueArray, fldDeletedArray, s, dcNo); //TStructDef tstObj = utilObj.GetTstructDefObj("GetStructure", tstData.transid); tstData.JsonToArray(result, tstData.tstStrObj, "", "AddRow"); return result; } [WebMethod(EnableSession = true)] public string AddRowPerfWS(ArrayList fldArray, ArrayList fldDbRowNo, ArrayList fldValueArray, ArrayList fldDeletedArray, string s, string dcNo, string key, bool isFromScript = false) { string requestProcess_logtime = string.Empty; ObjExecTr.SetCurrentTime(); if (HttpContext.Current.Session["project"] == null) return utilObj.SESSTIMEOUT; if (Util.Util.CheckCrossScriptingInString(String.Join(",", fldValueArray.ToArray()))) { return Constants.MALICIOUSNPUTDETECTED; } TStructData tstData = (TStructData)Session[key]; if (tstData == null) return Constants.DUPLICATESESS; sessionid = HttpContext.Current.Session["nsessionid"].ToString(); string result = string.Empty; string errorLog = logobj.CreateLog("Add row webservice", sessionid, "AddRow-" + tstData.transid, "new"); result = tstData.CallAddRowPerfWS(tstData, fldArray, fldDbRowNo, fldValueArray, fldDeletedArray, s, dcNo); requestProcess_logtime += result.Split('♠')[0]; result = result.Split('♠')[1]; //TStructDef tstObj = utilObj.GetTstructDefObj("GetStructure", tstData.transid); bool isValidRow = true; try { if (isFromScript && result != "") { string jsonResult = result.Replace("*$*", "♦"); jsonResult = jsonResult.Replace("\\", ";bkslh"); string[] resval = jsonResult.Split('♦'); for (int j = 0; j < resval.Length; j++) { JArray Data = null; try { JObject tData = JObject.Parse(resval[j]); Data = (JArray)tData["data"]; } catch (Exception exe) { } for (int m = 0; m < Data.Count; m++) { Dictionary values = JsonConvert.DeserializeObject>(Data[m].ToString()); string fName = values["n"]; string fValue = values["v"]; if (fName.ToLower() == "validrow" + dcNo && fValue != "" && fValue.ToLower() == "f") { isValidRow = false; result = "Not a valid value!"; break; } } } } } catch (Exception ex) { isValidRow = true; } if (isValidRow) tstData.JsonToArray(result, tstData.tstStrObj, "", "AddRow"); requestProcess_logtime += ObjExecTr.RequestProcessTime("Response", result); string serverprocesstime = ObjExecTr.TotalServerElapsTime(); result = serverprocesstime + "*♠*" + requestProcess_logtime + "*♠*" + result; return result; } [WebMethod(EnableSession = true)] public string CreatePDF(string s, string key) { if (HttpContext.Current.Session["project"] == null) return utilObj.SESSTIMEOUT; TStructData tstData = (TStructData)Session[key]; if (tstData == null) return Constants.DUPLICATESESS; //s = s + HttpContext.Current.Session["axApps"].ToString() + HttpContext.Current.Application["axProps"].ToString() + HttpContext.Current.Session["axGlobalVars"].ToString() + HttpContext.Current.Session["axUserVars"].ToString() + ""; string result = string.Empty; result = tstData.CallCreatePDFWS(s); return result; } [WebMethod(EnableSession = true)] public string CreateFastReportPDF(ArrayList fldArray, ArrayList fldDbRowNo, ArrayList fldValueArray, ArrayList fldDeletedArray, string s, string key) { if (HttpContext.Current.Session["project"] == null) return utilObj.SESSTIMEOUT; if (Util.Util.CheckCrossScriptingInString(String.Join(",", fldValueArray.ToArray()))) { return Constants.MALICIOUSNPUTDETECTED; } TStructData tstData = (TStructData)Session[key]; if (tstData == null) return Constants.DUPLICATESESS; tstData.GetFieldValueXml(fldArray, fldDbRowNo, fldValueArray, fldDeletedArray, "-1", "false", "ALL", ""); s += "" + tstData.fldValueXml + tstData.memVarsData + ""; //s += HttpContext.Current.Session["axApps"].ToString() + HttpContext.Current.Application["axProps"].ToString() + HttpContext.Current.Session["axGlobalVars"].ToString() + HttpContext.Current.Session["axUserVars"].ToString() + ""; string result = string.Empty; result = tstData.CallCreateFastPDFWS(s); return result; } [WebMethod(EnableSession = true)] public string CallActionWS(ArrayList fldArray, ArrayList fldDbRowNo, ArrayList fldValueArray, ArrayList fldDeletedArray, ArrayList deletedFldArrayValues, string ArrActionLog, string visibleDcs, string s, string f, string source, string delRows, string changedRows, string key, string files = "", bool isScript = false) { string requestProcess_logtime = string.Empty; ObjExecTr.SetCurrentTime(); if (HttpContext.Current.Session["project"] == null) return utilObj.SESSTIMEOUT; if (Util.Util.CheckCrossScriptingInString(String.Join(",", fldValueArray.ToArray()))) { return Constants.MALICIOUSNPUTDETECTED; } string result = string.Empty; string ires = string.Empty; string filename = string.Empty; IviewData objIview = new IviewData(); GetGlobalVars(); if (!utilObj.IsAlphaNumUnd(key)) return utilObj.ErrorMsgToJson("Invalid parameter."); if (!utilObj.IsParamArrayList(fldArray, fldDbRowNo, fldValueArray, fldDeletedArray)) return utilObj.ErrorMsgToJson("Invalid parameter."); if (source != "t" && source != "i") return utilObj.ErrorMsgToJson("Invalid parameter."); if (source != "t") { string news = GetTraceString(s); if (news != string.Empty) { if (news.Contains("_#") && news.Contains("")) { string[] splitNews = news.Split(new[] { "" }, StringSplitOptions.None); if (splitNews[1] != string.Empty) { splitNews[1] = splitNews[1].Replace("_#", "~"); news = String.Join("", splitNews); } } s = news; } string data = string.Empty; if ((!string.IsNullOrEmpty(f))) { if (File.Exists(f)) data = File.ReadAllText(f); utilObj.UploadFiles(f, sessionid); } if (key != "") { objIview = (IviewData)HttpContext.Current.Session[key]; if (objIview == null) return Constants.DUPLICATESESS; } //ires = objIview.StructureXml; s = s + HttpContext.Current.Session["axApps"].ToString() + HttpContext.Current.Application["axProps"].ToString() + HttpContext.Current.Session["axGlobalVars"].ToString() + HttpContext.Current.Session["axUserVars"].ToString() + ""; if (isScript) { filename = "Script-" + transid; logobj.CreateLog("Call to RemoteDoScript Web Service", sessionid, filename, string.Empty); result = asbExt.callRemoteDoScriptWS("", s, ires, asbExt.asbAction.Timeout); } else { filename = "Action-" + transid; logobj.CreateLog("Call to RemoteDoAction Web Service", sessionid, filename, string.Empty); result = asbExt.CallRemoteDoActionWS("", s, ires, asbExt.asbAction.Timeout); } requestProcess_logtime += result.Split('♠')[0]; result = result.Split('♠')[1]; logobj.CreateLog("End Time : " + DateTime.Now.ToString(), sessionid, filename, string.Empty); } else { string data = string.Empty; if ((!string.IsNullOrEmpty(f))) { if (File.Exists(f)) data = File.ReadAllText(f); utilObj.UploadFiles(f, sessionid); } TStructData tstData = (TStructData)Session[key]; if (tstData == null) return Constants.DUPLICATESESS; if (tstData != null) { Util.Util.DeletedraftRediskeys(tstData.transid); logobj.CreateActionLog(ArrActionLog, sessionid, "ActionLog", ""); string calledFrom = ArrActionLog.StartsWith("CallAction-axpbutton_") ? "axpbutton" : "false"; result = tstData.CallActionWS(tstData, fldArray, fldDbRowNo, fldValueArray, fldDeletedArray, deletedFldArrayValues, s, f, source, delRows, changedRows, calledFrom: calledFrom, files: new StringBuilder(files), isScript: isScript); requestProcess_logtime += result.Split('♠')[0]; result = result.Split('♠')[1]; tstData.JsonToArray(result, tstData.tstStrObj, "", "Action"); string AxRelKeys = string.Empty; if (Session["AxRelKeys"] != null) { AxRelKeys = "*#*" + Session["AxRelKeys"].ToString(); Session["AxRelKeys"] = null; } result = result + "*♠*" + tstData.GetVisibleFormatGridsHtml(tstData.tstStrObj, visibleDcs) + AxRelKeys; } else result = "{\"error\":[{\"msg\":\"Error: Please reload the page and try again.\"}]}"; } requestProcess_logtime += ObjExecTr.RequestProcessTime("Response", result); string serverprocesstime = ObjExecTr.TotalServerElapsTime(); result = serverprocesstime + "*♠*" + requestProcess_logtime + "*♠*" + result; return result; } [WebMethod(EnableSession = true)] public string ViewAttachment(string s, string key) { if (HttpContext.Current.Session["project"] == null) return utilObj.SESSTIMEOUT; sessionid = HttpContext.Current.Session["nsessionid"].ToString(); TStructData tstData = (TStructData)Session[key]; if (tstData == null) return Constants.DUPLICATESESS; transid = tstData.transid; string errorLog = logobj.CreateLog("Get Structure object from cache for view attachment.", sessionid, "GetStructXml-", "new"); s = GetTraceString(s); //TStructDef tstObj = utilObj.GetTstructDefObj(errorLog, transid); TStructDef tstObj = tstData.tstStrObj; string result = string.Empty; s = s + HttpContext.Current.Session["axApps"].ToString() + HttpContext.Current.Application["axProps"].ToString() + HttpContext.Current.Session["axGlobalVars"].ToString() + HttpContext.Current.Session["axUserVars"].ToString() + ""; result = tstData.CallViewAttachWS(s, tstObj.structRes); return result; } [WebMethod(EnableSession = true)] public string RemoveAttachment(string s, string key) { if (HttpContext.Current.Session["project"] == null) return utilObj.SESSTIMEOUT; sessionid = HttpContext.Current.Session["nsessionid"].ToString(); TStructData tstData = (TStructData)Session[key]; if (tstData == null) return Constants.DUPLICATESESS; if (transid == "") transid = tstData.transid; string result = string.Empty; //s = s + HttpContext.Current.Session["axApps"].ToString() + HttpContext.Current.Application["axProps"].ToString() + HttpContext.Current.Session["axGlobalVars"].ToString() + HttpContext.Current.Session["axUserVars"].ToString() + ""; string errorLog = logobj.CreateLog("Get Structure object from cache for view attachment.", sessionid, "GetStructXml-", "new"); //TStructDef tstObj = utilObj.GetTstructDefObj(errorLog, transid); TStructDef tstObj = tstData.tstStrObj; result = tstData.CallRemoveAttachWS(s, tstObj.structRes); return result; } //NOTE: webservice needs to be released in new dll [WebMethod(EnableSession = true)] public string DeleteIviewRow(string recIds, string transid, string s) { if (HttpContext.Current.Session["project"] == null) return utilObj.SESSTIMEOUT; string news = GetTraceString(s); if (news != string.Empty) s = news; string result = string.Empty; s = s + HttpContext.Current.Session["axApps"].ToString() + HttpContext.Current.Application["axProps"].ToString() + HttpContext.Current.Session["axGlobalVars"].ToString() + HttpContext.Current.Session["axUserVars"].ToString() + ""; result = asbExt.CallDeleteIVRowWS("", s); if (result.ToLower().Contains("done") && utilObj.isRealTimeCacEnabled(transid, null)) result = result + "*#*" + utilObj.GetAxRelations(transid); utilObj.DeleteRecordsFromCache(result, recIds, transid); return result; } [WebMethod(EnableSession = true)] public string GetDepFlds(ArrayList fldArray, ArrayList fldDbRowNo, ArrayList fldValueArray, ArrayList fldDeletedArray, string ArrActionLog, string visibleDcs, string s, string tid, string key, string frameNo, string rowNo, string fieldName, string subGridInfo, string parentInfo) { string requestProcess_logtime = string.Empty; DateTime sTime1 = DateTime.Now; if (HttpContext.Current.Session["project"] == null) return utilObj.SESSTIMEOUT; if (Util.Util.CheckCrossScriptingInString(String.Join(",", fldValueArray.ToArray()))) { return Constants.MALICIOUSNPUTDETECTED; } TStructData tstData = (TStructData)Session[key]; if (tstData == null) return Constants.DUPLICATESESS; string result = string.Empty; GetGlobalVars(); logobj.CreateActionLog(ArrActionLog, sessionid, "ActionLog", ""); tstData.SetSubGridRows(subGridInfo); tstData.AxActiveDc = frameNo; DateTime eTime1 = DateTime.Now; result = tstData.CallGetDepFldWS(tstData, fldArray, fldDbRowNo, fldValueArray, fldDeletedArray, s, frameNo, rowNo, fieldName, subGridInfo, parentInfo); requestProcess_logtime += result.Split('♠')[0]; result = result.Split('♠')[1]; DateTime sTime2 = DateTime.Now; //TStructDef tstObj = utilObj.GetTstructDefObj("Get structure object", tid); TStructDef tstObj = tstData.tstStrObj; if (result != "") { try { if (tstObj.IsDcGrid(Convert.ToInt32(frameNo))) tstData.JsonToArray(result, tstObj, "", "GetDepPerf"); else tstData.JsonToArray(result, tstObj, "", "GetDep"); } catch (Exception ex) { } } tstData.AxActiveDc = string.Empty; result = result + "*♠*" + tstData.GetVisibleFormatGridsHtml(tstObj, visibleDcs); DateTime eTime2 = DateTime.Now; if (tstData.logTimeTaken) tstData.strServerTime = (tstData.webTime1 + (eTime1.Subtract(sTime1).TotalMilliseconds)) + "," + tstData.asbTime + "," + (tstData.webTime2 + (eTime2.Subtract(sTime2).TotalMilliseconds)); requestProcess_logtime += ObjExecTr.RequestProcessTime("Response", result); string serverprocesstime = ObjExecTr.TotalServerElapsTime(); result = serverprocesstime + "*♠*" + requestProcess_logtime + "*♠*" + result; return result; } [WebMethod(EnableSession = true)] public string GetDepFldsPerf(ArrayList fldArray, ArrayList fldDbRowNo, ArrayList fldValueArray, ArrayList fldDeletedArray, ArrayList RegVarFldList, string ArrActionLog, string visibleDcs, string s, string tid, string key, string frameNo, string rowNo, string perfDepFldName, string fieldName, string subGridInfo, string parentInfo) { string requestProcess_logtime = string.Empty; ObjExecTr.SetCurrentTime(); DateTime sTime1 = DateTime.Now; if (HttpContext.Current.Session["project"] == null) return utilObj.SESSTIMEOUT; if (Util.Util.CheckCrossScriptingInString(String.Join(",", fldValueArray.ToArray()))) { return Constants.MALICIOUSNPUTDETECTED; } TStructData tstData = (TStructData)Session[key]; if (tstData == null) return Constants.DUPLICATESESS; string result = string.Empty; GetGlobalVars(); logobj.CreateActionLog(ArrActionLog, sessionid, "ActionLog", ""); tstData.SetSubGridRows(subGridInfo); tstData.AxActiveDc = frameNo; DateTime eTime1 = DateTime.Now; result = tstData.CallGetDepFldPerfWS(tstData, fldArray, fldDbRowNo, fldValueArray, fldDeletedArray, RegVarFldList, s, frameNo, rowNo, perfDepFldName, fieldName, subGridInfo, parentInfo); requestProcess_logtime += result.Split('♠')[0]; result = result.Split('♠')[1]; DateTime sTime2 = DateTime.Now; //TStructDef tstObj = utilObj.GetTstructDefObj("Get structure object", tid); TStructDef tstObj = tstData.tstStrObj; if (result != "") { try { if (tstObj.IsDcGrid(Convert.ToInt32(frameNo))) tstData.JsonToArray(result, tstObj, "", "GetDepPerf"); else tstData.JsonToArray(result, tstObj, "", "GetDep"); } catch (Exception ex) { } } tstData.AxActiveDc = string.Empty; result = result + "*♠*" + tstData.GetVisibleFormatGridsHtml(tstObj, visibleDcs); DateTime eTime2 = DateTime.Now; if (tstData.logTimeTaken) tstData.strServerTime = (tstData.webTime1 + (eTime1.Subtract(sTime1).TotalMilliseconds)) + "," + tstData.asbTime + "," + (tstData.webTime2 + (eTime2.Subtract(sTime2).TotalMilliseconds)); requestProcess_logtime += ObjExecTr.RequestProcessTime("Response", result); string serverprocesstime = ObjExecTr.TotalServerElapsTime(); result = serverprocesstime + "*♠*" + requestProcess_logtime + "*♠*" + result; return result; } [WebMethod(EnableSession = true)] public string GetRapidDepFlds(ArrayList fldArray, ArrayList fldDbRowNo, ArrayList fldValueArray, ArrayList fldDeletedArray, string ArrActionLog, string visibleDcs, string s, string tid, string key, string frameNo, string rowNo, string fieldName, string subGridInfo, string parentInfo) { DateTime sTime1 = DateTime.Now; if (HttpContext.Current.Session["project"] == null) return utilObj.SESSTIMEOUT; if (Util.Util.CheckCrossScriptingInString(String.Join(",", fldValueArray.ToArray()))) { return Constants.MALICIOUSNPUTDETECTED; } TStructData tstData = (TStructData)Session[key]; if (tstData == null) return Constants.DUPLICATESESS; string result = string.Empty; GetGlobalVars(); tstData.SetSubGridRows(subGridInfo); tstData.AxActiveDc = frameNo; DateTime eTime1 = DateTime.Now; result = tstData.CallGetRapidDepFldWS(tstData, fldArray, fldDbRowNo, fldValueArray, fldDeletedArray, s, frameNo, rowNo, fieldName, subGridInfo, parentInfo); DateTime sTime2 = DateTime.Now; TStructDef tstObj = tstData.tstStrObj; if (result != "") { try { if (tstObj.IsDcGrid(Convert.ToInt32(frameNo))) tstData.JsonToArray(result, tstObj, "", "GetDepPerf"); else tstData.JsonToArray(result, tstObj, "", "GetDep"); } catch (Exception ex) { } } tstData.AxActiveDc = string.Empty; result = result + "*♠*" + tstData.GetVisibleFormatGridsHtml(tstObj, visibleDcs); DateTime eTime2 = DateTime.Now; if (tstData.logTimeTaken) tstData.strServerTime = (tstData.webTime1 + (eTime1.Subtract(sTime1).TotalMilliseconds)) + "," + tstData.asbTime + "," + (tstData.webTime2 + (eTime2.Subtract(sTime2).TotalMilliseconds)); return result; } [WebMethod(EnableSession = true)] public string GetSearchResult(ArrayList fldArray, ArrayList fldDbRowNo, ArrayList fldValueArray, ArrayList fldDeletedArray, string fldName, string fldValue, string pageNo, string pageSize, string key, string frameNo, string activerow, string parentInfo, string subGridInfo, string includeDcs) { if (HttpContext.Current.Session["project"] == null) return utilObj.SESSTIMEOUT; if (Util.Util.CheckCrossScriptingInString(String.Join(",", fldValueArray.ToArray()))) { return Constants.MALICIOUSNPUTDETECTED; } GetGlobalVars(); string result = ""; TStructData tstData = (TStructData)Session[key]; if (tstData == null) return Constants.DUPLICATESESS; transid = tstData.transid; string errorLog = logobj.CreateLog("Get Structure object from cache for picklist.", sessionid, "PickList-" + transid, "new"); errorLog = logobj.CreateLog("Get picklist search result.", sessionid, "GetPickListData-" + transid, "new"); string activePRow = string.Empty; string activePDc = string.Empty; if (parentInfo != string.Empty) { int idx = parentInfo.IndexOf("~"); if (idx != -1) { activePDc = parentInfo.Substring(0, idx); activePRow = parentInfo.Substring(idx + 1); } } string iXml = string.Empty; iXml += ""; result = tstData.GetPickListResult(fldArray, fldDbRowNo, fldValueArray, fldDeletedArray, iXml, tstData.tstStrObj.structRes, fldName, frameNo, parentInfo, subGridInfo, activerow, includeDcs); return result; } [WebMethod(EnableSession = true)] public string CallLoadDcData(ArrayList fldArray, ArrayList fldDbRowNo, ArrayList fldValueArray, ArrayList fldDeletedArray, string ArrActionLog, string iXml, string dcNo, Boolean isFillGrid, string isDisable, string key) { DateTime sTime1 = DateTime.Now; if (HttpContext.Current.Session["project"] == null) return utilObj.SESSTIMEOUT; if (Util.Util.CheckCrossScriptingInString(String.Join(",", fldValueArray.ToArray()))) { return Constants.MALICIOUSNPUTDETECTED; } string result = string.Empty; string tabHTML = string.Empty; TStructData tstData = (TStructData)Session[key]; if (tstData == null) return Constants.DUPLICATESESS; transid = tstData.transid; GetGlobalVars(); logobj.CreateActionLog(ArrActionLog, sessionid, "ActionLog", ""); string errorLog = logobj.CreateLog("Get Structure object from cache for dc info.", sessionid, "GetTabData-" + dcNo, "new"); //TStructDef strObj = utilObj.GetTstructDefObj(errorLog, transid); TStructDef strObj = tstData.tstStrObj; string isRapidCall = "false"; if ((Session["RapidTsTruct"] != null && Session["RapidTsTruct"].ToString() == "true") && (HttpContext.Current.Session["AxIsPerfCode"] != null && HttpContext.Current.Session["AxIsPerfCode"].ToString().ToLower() == "true")) isRapidCall = "true"; DateTime eTime1 = DateTime.Now; string isDraft = string.IsNullOrEmpty(tstData.TabDcStatus) ? "no" : tstData.GetCurrTabStatus(dcNo); if (isDraft == "yes") { result = tstData.GetTabDCJson(dcNo); } else if (isRapidCall != "true") result = tstData.LoadComboValues(tstData, fldArray, fldDbRowNo, fldValueArray, fldDeletedArray, iXml, dcNo); else tstData.GetFieldValueXml(fldArray, fldDbRowNo, fldValueArray, fldDeletedArray, "-1", "LoadTab", "NG", dcNo); DateTime sTime2 = DateTime.Now; if (result != "") tstData.JsonToArray(result, strObj, dcNo, "LoadTab"); //The return string will contain the MasterRow fields, json string for dependent dc's of the tab dc(excluding the json for tab dc and its sub grid if any), //and the html for tab dc and its sub grid html if any. //AJH000011 //if (isFillGrid) strObj.IsFillGridCall = true; string temptabHTML = strObj.GetTabDcHTML(Convert.ToInt32(dcNo), tstData, isDisable); Boolean designMode = false; if (HttpContext.Current.Session[transid + "IsDesignMode"] != null && HttpContext.Current.Session[transid + "IsDesignMode"].ToString() != string.Empty) designMode = Convert.ToBoolean(HttpContext.Current.Session[transid + "IsDesignMode"]); FDW fdwObj = FDW.Instance; bool isRedisConnected = fdwObj.IsConnected; if (designMode && HttpContext.Current.Session["Axp_DesignJson"] != null && HttpContext.Current.Session["Axp_DesignJson"].ToString() != "") strObj.axdesignJObject = tstData.tstStrObj.getDesignObjectFromJson(Session["Axp_DesignJson"].ToString()); string tempDcDesignJson = string.Empty; try { //tempDcDesignJson = strObj.axdesignJson. Dc curDc = tstData.tstStrObj.axdesignJObject.dcs.FirstOrDefault(elm => elm.dc_id == dcNo.ToString()); tempDcDesignJson = new JavaScriptSerializer().Serialize(curDc); } catch (Exception ex) { } string tabjson = ""; bool isDcGrid = tstData.IsDcGrid(dcNo, strObj); if ((tstData.recordid != "0" || result != "") && isDcGrid) { tabjson = tstData.tabJson.ToString(); tabHTML = tstData.AxDepArrays.ToString() + "*♦*" + tstData.GetMasterRowFlds() + "*♠*" + tabjson + "*♠*" + temptabHTML + "*♠*" + tempDcDesignJson; } else tabHTML = tstData.AxDepArrays.ToString() + "*♦*" + tstData.GetMasterRowFlds() + "*♠*" + tabjson + "*♠*" + temptabHTML + "*♠*" + tempDcDesignJson + "*♠*~false"; //if (isFillGrid) strObj.IsFillGridCall = false; //to update design json from tab to object string schemaName = string.Empty; if (HttpContext.Current.Session["dbuser"] != null) schemaName = HttpContext.Current.Session["dbuser"].ToString(); string fdKey = Constants.REDISTSTRUCT; if (HttpContext.Current.Session["MobileView"] != null && HttpContext.Current.Session["MobileView"].ToString() == "True") fdKey = Constants.REDISTSTRUCTMOB; //FDW fdwObj = FDW.Instance; fdwObj.SaveInRedisServer(utilObj.GetRedisServerkey(fdKey, transid), strObj, Constants.REDISTSTRUCT, schemaName); tstData.tstStrObj = strObj; Session[key] = (TStructData)tstData; DateTime eTime2 = DateTime.Now; if (tstData.logTimeTaken) tstData.strServerTime = (tstData.webTime1 + (eTime1.Subtract(sTime1).TotalMilliseconds)) + "," + tstData.asbTime + "," + (tstData.webTime2 + (eTime2.Subtract(sTime2).TotalMilliseconds)); return tabHTML; } [WebMethod(EnableSession = true)] public string GetFillGridData(string paramXml, ArrayList fldArray, ArrayList fldDbRowNo, ArrayList fldValueArray, ArrayList fldDeletedArray, string dcNo, string fgName, string transid, string src, string key, string exprResult) { string requestProcess_logtime = string.Empty; ObjExecTr.SetCurrentTime(); if (HttpContext.Current.Session["project"] == null) return utilObj.SESSTIMEOUT; if (Util.Util.CheckCrossScriptingInString(String.Join(",", fldValueArray.ToArray()))) { return Constants.MALICIOUSNPUTDETECTED; } string result = string.Empty; GetGlobalVars(); TStructData tstData = (TStructData)Session[key]; if (tstData == null) return Constants.DUPLICATESESS; TStructDef strObj = tstData.tstStrObj; string errorLog = logobj.CreateLog("Get FillGird values result.", sessionid, "GetFillGridValues-" + transid, "new"); string iXml = ""; iXml += paramXml; result = tstData.CallMsFillGrid(tstData, fldArray, fldDbRowNo, fldValueArray, fldDeletedArray, dcNo, iXml, paramXml, fgName); requestProcess_logtime += result.Split('♠')[0]; result = result.Split('♠')[1]; if (result != string.Empty && !result.StartsWith(Constants.ERROR)) { result = tstData.ConstructFillGrid(result, dcNo, fgName, strObj, tstData, src, exprResult); } requestProcess_logtime += ObjExecTr.RequestProcessTime("Response", result); string serverprocesstime = ObjExecTr.TotalServerElapsTime(); result = serverprocesstime + "*♠♠*" + requestProcess_logtime + "*♠♠*" + result; return result; } [WebMethod(EnableSession = true)] public string GetFastFillGridData(string dcNo, string fgName, string transid, string src, string key, string exprResult) { string requestProcess_logtime = string.Empty; ObjExecTr.SetCurrentTime(); if (HttpContext.Current.Session["project"] == null) return utilObj.SESSTIMEOUT; string result = string.Empty; GetGlobalVars(); TStructData tstData = (TStructData)Session[key]; if (tstData == null) return Constants.DUPLICATESESS; TStructDef strObj = tstData.tstStrObj; string errorLog = logobj.CreateLog("Get FillGird values result.", sessionid, "GetFillGridValues-" + transid, "new"); string iXml = ""; FDR fObj = (FDR)HttpContext.Current.Session["FDR"]; //result = fObj.GetFastFillGridXML(utilObj.GetTstructDefObj("GetFastAjaxData", tstData.transid), fgName, dcNo); result = fObj.GetFastFillGridXML(tstData.tstStrObj, fgName, dcNo); if (result != string.Empty && !result.StartsWith(Constants.ERROR)) { result = tstData.ConstructFillGrid(result, dcNo, fgName, strObj, tstData, src, exprResult); } requestProcess_logtime += ObjExecTr.RequestProcessTime("Response", result); string serverprocesstime = ObjExecTr.TotalServerElapsTime(); result = serverprocesstime + "*♠*" + requestProcess_logtime + "*♠*" + result; return result; } [WebMethod(EnableSession = true)] public string ExecuteFormatFill(string transid, string frameNo, string selection, string key) { if (HttpContext.Current.Session["project"] == null) return utilObj.SESSTIMEOUT; GetGlobalVars(); TStructData tstData = (TStructData)Session[key]; if (tstData == null) return Constants.DUPLICATESESS; //TStructDef tstObj = utilObj.GetTstructDefObj("GetStructure", transid); TStructDef tstObj = tstData.tstStrObj; TStructDef.DcStruct dc = (TStructDef.DcStruct)tstObj.dcs[Convert.ToInt32(frameNo) - 1]; string fileName = "GetFormatFillGrid" + transid; string dcHTML = string.Empty; string errorLog = logobj.CreateLog("GetFormatFillGrid.", sessionid, fileName, "new"); dcHTML = tstObj.GetFormatHtmlForGroups(selection, tstData, "false"); return dcHTML; } [WebMethod(EnableSession = true)] public string ExecuteAction(ArrayList fldArray, ArrayList fldDbRowNo, ArrayList fldValueArray, ArrayList fldDeletedArray, string ArrActionLog, string rid, string transid, string frameNo, string s, string selection, string delRows, string changedRows, string key) { if (HttpContext.Current.Session["project"] == null) return utilObj.SESSTIMEOUT; if (Util.Util.CheckCrossScriptingInString(String.Join(",", fldValueArray.ToArray()))) { return Constants.MALICIOUSNPUTDETECTED; } GetGlobalVars(); TStructData tstData = (TStructData)Session[key]; if (tstData == null) return Constants.DUPLICATESESS; //TStructDef tstObj = utilObj.GetTstructDefObj("GetStructure", transid); TStructDef tstObj = tstData.tstStrObj; TStructDef.DcStruct dc = (TStructDef.DcStruct)tstObj.dcs[Convert.ToInt32(frameNo) - 1]; string fileName = "GetFormatFillGrid" + transid; logobj.CreateActionLog(ArrActionLog, sessionid, "ActionLog", ""); string errorLog = logobj.CreateLog("GetFormatFillGrid.", sessionid, fileName, "new"); string actions = dc.Action; string dcHTML = string.Empty; ArrayList deletedFldArrayValues = new ArrayList(); if (actions != "") { string[] strActions = actions.Split(','); string result = string.Empty; transid = tstData.transid; for (int i = 0; i < strActions.Length; i++) { if (strActions[i].ToString() == string.Empty) continue; string Ixml = ""; Ixml = ""; Ixml += s; result = tstData.CallActionWS(tstData, fldArray, fldDbRowNo, fldValueArray, fldDeletedArray, deletedFldArrayValues, Ixml, "", "t", delRows, changedRows, frameNo: frameNo); if (result != "") tstData.JsonToArray(result, tstObj, frameNo, "ExecAction"); tstData.oldRowNos.Clear(); tstData.newRowNos.Clear(); } dcHTML = tstData.tabJson.ToString() + "*♠*" + tstObj.GetTabDcHTML(Convert.ToInt32(frameNo), tstData, "false"); } return dcHTML; } [WebMethod(EnableSession = true)] public string DoGetFillGrid(ArrayList fldArray, ArrayList fldDbRowNo, ArrayList fldValueArray, ArrayList fldDeletedArray, string frameNo, string fgName, string s, string key) { string requestProcess_logtime = string.Empty; ObjExecTr.SetCurrentTime(); DateTime sTime1 = DateTime.Now; if (HttpContext.Current.Session["project"] == null) return utilObj.SESSTIMEOUT; if (Util.Util.CheckCrossScriptingInString(String.Join(",", fldValueArray.ToArray()))) { return Constants.MALICIOUSNPUTDETECTED; } GetGlobalVars(); string dcHTML = string.Empty; TStructData tstData = (TStructData)Session[key]; if (tstData == null) return Constants.DUPLICATESESS; transid = tstData.transid; string fileName = "DoFillGrid-" + transid; string errorLog = logobj.CreateLog("GetFillGridValues.", sessionid, fileName, "new"); string Ixml = ""; Ixml = ""; Ixml += s; TStructDef strObj = tstData.tstStrObj; string result = string.Empty; DateTime eTime1 = DateTime.Now; result = tstData.CallGetFillGridWS(tstData, fldArray, fldDbRowNo, fldValueArray, fldDeletedArray, frameNo, Ixml); requestProcess_logtime += result.Split('♠')[0]; result = result.Split('♠')[1]; DateTime sTime2 = DateTime.Now; if (result != "") tstData.JsonToArray(result, strObj, frameNo, "FillGridMS"); strObj.IsFillGridCall = true; dcHTML = tstData.tabJson.ToString() + "*♠*" + strObj.GetTabDcHTML(Convert.ToInt32(frameNo), tstData, "false"); strObj.IsFillGridCall = false; DateTime eTime2 = DateTime.Now; if (tstData.logTimeTaken) tstData.strServerTime = (tstData.webTime1 + (eTime1.Subtract(sTime1).TotalMilliseconds)) + "," + tstData.asbTime + "," + (tstData.webTime2 + (eTime2.Subtract(sTime2).TotalMilliseconds)); requestProcess_logtime += ObjExecTr.RequestProcessTime("Response", dcHTML); string serverprocesstime = ObjExecTr.TotalServerElapsTime(); dcHTML = serverprocesstime + "*♠♠*" + requestProcess_logtime + "*♠♠*" + dcHTML; return dcHTML; } [WebMethod(EnableSession = true)] public string DoGetFillGridNonMS(ArrayList fldArray, ArrayList fldDbRowNo, ArrayList fldValueArray, ArrayList fldDeletedArray, string frameNo, string fgName, string key) { string requestProcess_logtime = string.Empty; ObjExecTr.SetCurrentTime(); DateTime sTime1 = DateTime.Now; if (HttpContext.Current.Session["project"] == null) return utilObj.SESSTIMEOUT; if (Util.Util.CheckCrossScriptingInString(String.Join(",", fldValueArray.ToArray()))) { return Constants.MALICIOUSNPUTDETECTED; } GetGlobalVars(); TStructData tstData = (TStructData)Session[key]; if (tstData == null) return Constants.DUPLICATESESS; string fileName = "DoFillGridAutoValues" + tstData.transid; string errorLog = logobj.CreateLog("DoFillGridValues.", sessionid, fileName, "new"); string iXml = ""; string result = string.Empty; transid = tstData.transid; DateTime eTime1 = DateTime.Now; result = tstData.CallGetFillGridWS(tstData, fldArray, fldDbRowNo, fldValueArray, fldDeletedArray, frameNo, iXml); requestProcess_logtime += result.Split('♠')[0]; result = result.Split('♠')[1]; DateTime sTime2 = DateTime.Now; TStructDef strObj = tstData.tstStrObj; if (result != "") tstData.JsonToArray(result, strObj, frameNo, "FillGridNMS"); strObj.IsFillGridCall = true; result = tstData.tabJson.ToString() + "*♠*" + strObj.GetTabDcHTML(Convert.ToInt32(frameNo), tstData, "false"); strObj.IsFillGridCall = false; DateTime eTime2 = DateTime.Now; if (tstData.logTimeTaken) tstData.strServerTime = (tstData.webTime1 + (eTime1.Subtract(sTime1).TotalMilliseconds)) + "," + tstData.asbTime + "," + (tstData.webTime2 + (eTime2.Subtract(sTime2).TotalMilliseconds)); requestProcess_logtime += ObjExecTr.RequestProcessTime("Response", result); string serverprocesstime = ObjExecTr.TotalServerElapsTime(); result = serverprocesstime + "*♠♠*" + requestProcess_logtime + "*♠♠*" + result; return result; } [WebMethod(EnableSession = true)] public string GetSubGridDropdown(ArrayList fldArray, ArrayList fldDbRowNo, ArrayList fldValueArray, ArrayList fldDeletedArray, string frameNo, string key, string recordid, int parRowNo, string parDcNo, int popRowNo) { string result = string.Empty; if (Util.Util.CheckCrossScriptingInString(String.Join(",", fldValueArray.ToArray()))) { return Constants.MALICIOUSNPUTDETECTED; } GetGlobalVars(); TStructData tstData = (TStructData)Session[key]; if (tstData == null) return Constants.DUPLICATESESS; transid = tstData.transid; string errorLog = logobj.CreateLog("Calling GetSubGrid dropdown.", sessionid, "GetSubGridDDL", "new"); string iXml = ""; result = tstData.GetSubGridCombos(fldArray, fldDbRowNo, fldValueArray, fldDeletedArray, iXml, frameNo, parDcNo, popRowNo, parRowNo); return result; } //[WebMethod()] //public string SaveTstXml(string message) //{ // string ScriptsPath = HttpContext.Current.Application["ScriptsPath"].ToString(); // return "Hi" + message; //} [WebMethod(EnableSession = true)] public string RefreshDc(ArrayList fldArray, ArrayList fldDbRowNo, ArrayList fldValueArray, ArrayList fldDeletedArray, string frameNo, string key, string recordid, string includeDcs) { string result = string.Empty; if (Util.Util.CheckCrossScriptingInString(String.Join(",", fldValueArray.ToArray()))) { return Constants.MALICIOUSNPUTDETECTED; } GetGlobalVars(); TStructData tstData = (TStructData)Session[key]; if (tstData == null) return Constants.DUPLICATESESS; transid = tstData.transid; string errorLog = logobj.CreateLog("Calling Refresh Dc.", sessionid, "RefreshDc-" + frameNo, "new"); string iXml = ""; result = tstData.CallRefreshDc(fldArray, fldDbRowNo, fldValueArray, fldDeletedArray, iXml, frameNo, includeDcs); tstData.JsonToArray(result, tstData.tstStrObj, "", "RefreshDc"); return result; } [WebMethod(EnableSession = true)] public string ProcessWFActionChanges(ArrayList fldArray, ArrayList fldDbRowNo, ArrayList fldValueArray, ArrayList fldDeletedArray, string files, string rid, string inputXml, string key) { if (HttpContext.Current.Session["project"] == null) return utilObj.SESSTIMEOUT; if (Util.Util.CheckCrossScriptingInString(String.Join(",", fldValueArray.ToArray()))) { return Constants.MALICIOUSNPUTDETECTED; } inputXml = GetTraceString(inputXml); TStructData tstData = (TStructData)Session[key]; if (tstData == null) return Constants.DUPLICATESESS; string result = string.Empty; if (tstData != null) { result = tstData.CallWorkFlowActionWS(tstData, fldArray, fldDbRowNo, fldValueArray, fldDeletedArray, files, rid, inputXml); } return result; } [WebMethod(EnableSession = true)] public string ProcessWFAction(string s) { if (HttpContext.Current.Session["project"] == null) return utilObj.SESSTIMEOUT; string news = GetTraceString(s); if (news != string.Empty) s = news; string result = null; s = s + HttpContext.Current.Session["axApps"].ToString() + HttpContext.Current.Application["axProps"].ToString() + HttpContext.Current.Session["axGlobalVars"].ToString() + HttpContext.Current.Session["axUserVars"].ToString() + ""; result = asbExt.CallWorkFlowActionWS("", s); return result; } [WebMethod(EnableSession = true)] public string GetDependParamsValues(string s, string IVkey) { if (HttpContext.Current.Session["project"] == null) return utilObj.SESSTIMEOUT; IviewData objIview = new IviewData(); string iStructure = string.Empty; try { objIview = (IviewData)HttpContext.Current.Session[IVkey]; if (objIview == null) return Constants.DUPLICATESESS; iStructure = objIview.StructureXml; } catch (Exception ex) { iStructure = string.Empty; } string news = GetTraceString(s); if (news != string.Empty) s = news; s = s + HttpContext.Current.Session["axApps"].ToString() + HttpContext.Current.Application["axProps"].ToString() + HttpContext.Current.Session["axGlobalVars"].ToString() + HttpContext.Current.Session["axUserVars"].ToString() + ""; string result = null; //Call service ASBExt.WebServiceExt objWebServiceExt = new ASBExt.WebServiceExt(); result = objWebServiceExt.CallGetDependParamsValuesWS(transid, s, iStructure, objIview.WebServiceTimeout); UpdateFilterParamXML(result, objIview.IName); return result; } private void UpdateFilterParamXML(string result, string iName) { Dictionary CurDepFields = new Dictionary(); Dictionary PreDepFields = new Dictionary(); try { if (Session["FilterParamResXML" + iName] != null) { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(result); string[] depParams = xmlDoc.DocumentElement.Attributes["depparams"].Value.ToString().Split(','); foreach (var depParam in depParams) { XmlNode field = xmlDoc.SelectSingleNode("//" + depParam + "/response"); if (field != null) CurDepFields.Add(depParam, field.InnerXml); } if (Session["UpdateParamsCollection"] == null) { Session["UpdateParamsCollection"] = CurDepFields; } else { PreDepFields = (Dictionary)Session["UpdateParamsCollection"]; //PreDepFields.Union(CurDepFields); ; foreach (KeyValuePair kvp in CurDepFields) { PreDepFields[kvp.Key] = kvp.Value; } Session["UpdateParamsCollection"] = PreDepFields; } } } catch (Exception ex) { result = "error:" + ex.Message; } } [WebMethod(EnableSession = true)] public string ClearCache() { string result = string.Empty; result = utilObj.ClearApplicationCache(); return result; } [WebMethod(EnableSession = true)] public string GetAddGroupsHtml(ArrayList fldArray, ArrayList fldDbRowNo, ArrayList fldValueArray, ArrayList fldDeletedArray, string dcNo, string transid, string key) { if (HttpContext.Current.Session["project"] == null) return utilObj.SESSTIMEOUT; if (Util.Util.CheckCrossScriptingInString(String.Join(",", fldValueArray.ToArray()))) { return Constants.MALICIOUSNPUTDETECTED; } TStructData tstData = (TStructData)Session[key]; if (tstData == null) return Constants.DUPLICATESESS; //TStructDef strObj = utilObj.GetTstructDefObj("GetAddGroupHtml", transid); TStructDef strObj = tstData.tstStrObj; TStructDef.DcStruct dc = (TStructDef.DcStruct)strObj.dcs[Convert.ToInt32(dcNo) - 1]; string fgHTML = string.Empty; tstData.GetFieldValueXml(fldArray, fldDbRowNo, fldValueArray, fldDeletedArray, "-1", "false", "ALL", ""); string mapCol = string.Empty; if (dc.Action != "") { string result = strObj.ExecuteSql(dc.Sql, tstData, Convert.ToInt32(dcNo)); fgHTML = tstData.ConstructFormatFillGrid(result, strObj, dcNo, "fill"); } else if (dc.KeyColValues.Count > 0 || dc.Sql != "") { ArrayList groups = new ArrayList(); groups = strObj.GetGroups(Convert.ToInt32(dcNo), tstData); string colWidth = strObj.GetColumnWidth(dcNo, dc.KeyColumn); if (dc.MapParentCol != string.Empty) mapCol = dc.MapParentCol; else mapCol = dc.KeyColumn; string headRow = "" + dc.KeyColumn + ""; string rowHtml = ""; for (int i = 0; i < groups.Count; i++) { if (tstData.IsDupKeyColValue(mapCol, dcNo, groups[i].ToString())) { rowHtml += ""; } else rowHtml += ""; rowHtml += "" + groups[i].ToString() + ""; } fgHTML = "
" + headRow + "" + rowHtml + "
"; fgHTML += "
"; } return fgHTML; } [WebMethod(EnableSession = true)] public string GetNewGroupsHtml(int dcNo, string transid, string selectedGroups, string lastRowNo, string key) { if (HttpContext.Current.Session["project"] == null) return utilObj.SESSTIMEOUT; TStructData tstData = (TStructData)Session[key]; if (tstData == null) return Constants.DUPLICATESESS; //TStructDef strObj = utilObj.GetTstructDefObj("GetAddGroupHtml", transid); TStructDef strObj = tstData.tstStrObj; ArrayList groups = new ArrayList(); string[] strGroups = selectedGroups.Split('¿'); for (int i = 0; i < strGroups.Length; i++) { groups.Add(strGroups[i].ToString()); } string grpHtml = strObj.GetGroupRowHtml(dcNo, groups, lastRowNo, tstData); return grpHtml; } [WebMethod(EnableSession = true)] public void DeleteTstDataObj(string key) { HttpContext.Current.Session.Remove(key); GC.Collect(); GC.WaitForPendingFinalizers(); } [WebMethod(EnableSession = true)] public void DeleteIviewDataObj(string key) { HttpContext.Current.Session.Remove(key); GC.Collect(); GC.WaitForPendingFinalizers(); } [WebMethod(EnableSession = true)] public string GetSessionValue(string key) { string returnString = string.Empty; try { returnString = HttpContext.Current.Session[key].ToString(); } catch (Exception ex) { } return returnString; } [WebMethod(EnableSession = true)] public string CreateFastReportDoc(ArrayList fldArray, ArrayList fldDbRowNo, ArrayList fldValueArray, ArrayList fldDeletedArray, string tid, string selectedDoc, string rid, string key) { if (Util.Util.CheckCrossScriptingInString(String.Join(",", fldValueArray.ToArray()))) { return Constants.MALICIOUSNPUTDETECTED; } GetGlobalVars(); TStructData tstData = (TStructData)Session[key]; if (tstData == null) return Constants.DUPLICATESESS; string docName = rid + selectedDoc; string iXml = string.Empty; string errorLog = string.Empty; errorLog = logobj.CreateLog("Calling CreateFastReport", sessionid, "CreateFastReportWord-" + tid, "new"); iXml = ""; tstData.GetFieldValueXml(fldArray, fldDbRowNo, fldValueArray, fldDeletedArray, "-1", "false", "ALL", ""); iXml += tstData.fldValueXml + tstData.memVarsData + ""; //iXml = iXml + HttpContext.Current.Session["axApps"].ToString() + HttpContext.Current.Application["axProps"].ToString() + HttpContext.Current.Session["axGlobalVars"].ToString() + HttpContext.Current.Session["axUserVars"].ToString() + ""; string result = string.Empty; result = tstData.CallCreateFastPDFWS(iXml); return result; } [WebMethod(EnableSession = true)] public string AddPrintDoc(string tid, string selectedDoc, string rid, string key, string docType) { string result = string.Empty; TStructData tstData = (TStructData)Session[key]; if (tstData == null) return Constants.DUPLICATESESS; bool tidvalid = utilObj.IsTransIdValid(tid); bool ridvalid = utilObj.IsNumber(rid); bool docnamevalid = utilObj.IsDocName(selectedDoc); if (!tidvalid || !ridvalid || !docnamevalid) { string errMsg = string.Empty; if (!tidvalid) errMsg = "Invalid Transaction Id"; else if (!ridvalid) errMsg = "Invalid Record Id"; else if (!docnamevalid) errMsg = "Invalid Document Name"; return utilObj.ErrorMsgToJson(errMsg); } else { GetGlobalVars(); string errorLog = string.Empty; errorLog = logobj.CreateLog("Adding Print tasks", sessionid, "InsertPrintJob-" + tid, "new"); string iXml = string.Empty; string docName = utilObj.GetDocName(selectedDoc, tid, key); string[] docNameStr = docName.Split('♣'); string printDocName = docNameStr[0].ToString().Substring(0, docNameStr[0].ToString().IndexOf(".")); string type = string.Empty; if (docType == "doc") type = "A"; else type = "F"; iXml = ""; //The print doc will be stored as 'print doc name + "_" + axprintfield value + "_" + transid ' and will be stored at 'axpert' folder in the scripts path. iXml += " Insert into Axprinting values('" + tid + "','" + rid + "','" + selectedDoc + "','" + utilObj.ScriptsPath + "axpert\\" + sessionid + "','" + printDocName + "','InProgress','" + type + "')"; iXml += Session["axApps"].ToString() + Application["axProps"].ToString() + HttpContext.Current.Session["axGlobalVars"].ToString() + HttpContext.Current.Session["axUserVars"].ToString() + ""; string ires = string.Empty; ires = asbExt.CallGetChoiceWS(tid, iXml); ArrayList printDocs; if (ires == "done") { if (Session["printingDocs"] != null) printDocs = (ArrayList)Session["printingDocs"]; else printDocs = new ArrayList(); //The file name format to store in session - "filename_axprintfile/datetime_tid♣tstcaption¿requested on~status " printDocs.Add(docName + "~" + Constants.PROGRESS); Session["printingDocs"] = printDocs; } return result; } } [WebMethod(EnableSession = true)] public string GetPrintDocsHtml() { ArrayList printDocs; string result = string.Empty; string res = utilObj.GetPrintDocStatus(); if (res == utilObj.SESSTIMEOUT) return res; printDocs = utilObj.GetDocsFromSession(); result = utilObj.GetPrintCount(printDocs) + "♣" + utilObj.GetPrintDocsHTML(printDocs); return result; } [WebMethod(EnableSession = true)] public string RefreshPrintCount() { ArrayList printDocs; string result = string.Empty; printDocs = utilObj.GetDocsFromSession(); result = utilObj.GetPrintCount(printDocs); return result; } [WebMethod(EnableSession = true)] public string RemoveDoc(string fileName) { string result = string.Empty; ArrayList printDocs = utilObj.GetDocsFromSession(); string status = utilObj.DeleteDocFromSession(fileName, printDocs); if (status == utilObj.SESSTIMEOUT) return status; GetGlobalVars(); string tid = fileName.Substring(fileName.LastIndexOf("_") + 1, fileName.IndexOf(".") - (fileName.LastIndexOf("_") + 1)); string errorLog = logobj.CreateLog("Get choices to delete print doc", sessionid, "DeletePrintDoc-" + tid, "new"); bool tidvalid = utilObj.IsTransIdValid(tid); bool filenamevalid = utilObj.IsDocName(fileName); if ((!tidvalid) || (!filenamevalid)) { string errmsg = string.Empty; if (!tidvalid) errmsg = "Invalid TransistationID "; else if (!filenamevalid) errmsg = "Invalid FileName"; return utilObj.ErrorMsgToJson(errmsg); } else { string iXml = ""; //The print doc will be stored as 'print doc name + "_" + axprintfield value + "_" + transid ' and will be stored at 'axpert' folder in the scripts path. iXml += " delete from Axprinting where transid='" + tid + "' and filename='" + fileName + "'"; iXml += Session["axApps"].ToString() + Application["axProps"].ToString() + HttpContext.Current.Session["axGlobalVars"].ToString() + HttpContext.Current.Session["axUserVars"].ToString() + ""; //The result from CallGetChoice is ignored since it deletes if records are aavailable. result = asbExt.CallGetChoiceWS(tid, iXml); result = utilObj.GetPrintCount(printDocs); } return result; } [WebMethod(EnableSession = true)] public ArrayList GetPrintDocs(string tid) { GetGlobalVars(); ArrayList printDocs = new ArrayList(); string result = string.Empty; string errorLog = string.Empty; string newTid = null; newTid = "t" + tid.ToLower(); string dbTimesql = null; errorLog = logobj.CreateLog("Get Print Docs", sessionid, "GetPrintDocs-" + tid, "new"); //dbTimesql = "select distinct caption,name,printdoctype from prints where lower(sname) = '" + newTid + "' and blobno=1 order by caption"; //dbTimesql += Session["axApps"].ToString() + Application["axProps"].ToString() + ""; string dbTimeres = null; dbTimesql = ""; dbTimesql += Session["axApps"].ToString() + Application["axProps"].ToString() + HttpContext.Current.Session["axGlobalVars"].ToString() + HttpContext.Current.Session["axUserVars"].ToString() + ""; dbTimeres = asbExt.CallGetPrintDocList(tid, dbTimesql); dbTimeres.ToUpper(); XmlDocument xmlDoc = new XmlDocument(); XmlNodeList xmlNodes = default(XmlNodeList); ArrayList arrDDlItems = new ArrayList(); printDocs.Add("-- Select --♣-- Select --"); xmlDoc.LoadXml(dbTimeres.ToString()); xmlNodes = xmlDoc.SelectNodes("//root"); foreach (XmlNode productNode in xmlNodes[0]) { if (productNode.Name != "transid") { if (productNode.Attributes["source"] != null) printDocs.Add(productNode.Attributes["source"].Value + "♣" + productNode.ChildNodes[0].InnerText); } } return printDocs; } [WebMethod(EnableSession = true)] public string UpdateDocStatus() { return utilObj.GetPrintDocStatus(); } [WebMethod(EnableSession = true)] public string UpdateTraceStatus(string status) { HttpContext.Current.Session["AxTrace"] = status; return "done"; } [WebMethod(EnableSession = true)] public string AppendRowToDataObj(ArrayList fldArray, ArrayList fldDbRowNo, ArrayList fldValueArray, ArrayList fldDeletedArray, string ArrActionLog, string key) { if (Util.Util.CheckCrossScriptingInString(String.Join(",", fldValueArray.ToArray()))) { return Constants.MALICIOUSNPUTDETECTED; } string result = string.Empty; GetGlobalVars(); logobj.CreateActionLog(ArrActionLog, sessionid, "ActionLog", ""); TStructData tstData = (TStructData)Session[key]; if (tstData == null) return Constants.DUPLICATESESS; tstData.GetFieldValueXml(fldArray, fldDbRowNo, fldValueArray, fldDeletedArray, "-1", "UpdateNewRow", "ALL", ""); return result; } private void GetGlobalVars() { project = HttpContext.Current.Session["project"].ToString(); sessionid = HttpContext.Current.Session["nsessionid"].ToString(); user = HttpContext.Current.Session["user"].ToString(); AxRole = HttpContext.Current.Session["AxRole"].ToString(); } #region Save As Draft [WebMethod(EnableSession = true)] public string SaveAsDraft(ArrayList fldArray, ArrayList fldDbRowNo, ArrayList fldValueArray, ArrayList fldDeletedArray, string transid, string key, string tabDCStatusStr) { if (Util.Util.CheckCrossScriptingInString(String.Join(",", fldValueArray.ToArray()))) { return Constants.MALICIOUSNPUTDETECTED; } GetGlobalVars(); string result = string.Empty; TStructData tstData = (TStructData)Session[key]; if (tstData == null) return Constants.DUPLICATESESS; tstData.UpdateDataList(fldArray, fldDbRowNo, fldValueArray, fldDeletedArray); tstData.TabDcStatus = tabDCStatusStr; int fldIdx = tstData.tstStrObj.GetFieldIndex("axp_draft_name"); string custVal = string.Empty; if (custVal == string.Empty) custVal = tstData.tstStrObj.tstCaption; //custVal = custVal.Replace('-', '♠'); try { Session["DraftHTML"] = Constants.DRAFT_REFRESH; if (!utilObj.SaveAsDraft(transid, key, user, custVal)) result = "error:"; } catch (Exception ex) { result = "error:" + ex.Message; } return result; } [WebMethod(EnableSession = true)] public string GetDraftsFromRedis(string transid, string caption) { string drafts = string.Empty; string userId = string.Empty; if (HttpContext.Current.Session["username"] != null) { userId = HttpContext.Current.Session["username"].ToString(); try { drafts = utilObj.GetDraftsMarkUp(transid, userId, caption); } catch (Exception ex) { drafts = Constants.EX_DRAFT_HTML; } } else { drafts = Constants.EX_DRAFT_HTML; } return drafts; } [WebMethod(EnableSession = true)] public string DeleteDraft(string draftId) { GetGlobalVars(); string result = string.Empty; result = utilObj.DeleteDraft(draftId, user); return result; } #endregion //AddToDataCache [WebMethod(EnableSession = true)] public string AddToDataCache(string html, string key, string jsArrays, string recId) { GetGlobalVars(); string result = string.Empty; TStructData tstData = (TStructData)Session[key]; if (tstData == null) return Constants.DUPLICATESESS; tstData.recordid = recId; tstData.recordID = recId; tstData.ires = string.Empty; tstData.result = string.Empty; tstData.tabJson = new StringBuilder(); HttpContext.Current.Session[key] = tstData; string dirPath = utilObj.CachePath + "datacache\\" + tstData.transid + "\\" + recId; try { utilObj.SaveInDataCache(tstData.transid, key); utilObj.WriteToFile(dirPath, recId + "-html", html); utilObj.WriteToFile(dirPath, recId + "-js", jsArrays); result = recId; } catch (Exception ex) { result = "error:" + ex.Message; logobj.CreateLog(ex.StackTrace.ToString(), sessionid, "Exception-SaveHtml" + transid, ""); } return result; } [WebMethod(EnableSession = true)] public string RefreshField(string frameNo, string rowNo, string fieldName) { string result = string.Empty; //Needs to be implemented. return result; } #region TStruct Navigation [WebMethod(EnableSession = true)] public string GetRecord(string nxtprv, string recordId, string transactionId, string columnName, int dataRowIndex, bool isParentIview) { return utilObj.GetNavigationRecord(nxtprv, recordId, transactionId, columnName, dataRowIndex, isParentIview); } [WebMethod(EnableSession = true)] public bool SessionHasValue(string transactionId, int dataRowIndex, string columnName, bool isParentIview) { if (isParentIview) { if (dataRowIndex >= 0 && !string.IsNullOrEmpty(columnName) && Session["iNavigationInfoTable"] != null) return true; else return false; } else { if (dataRowIndex >= 0 && !string.IsNullOrEmpty(columnName) && columnName != "recordid" && Session["navigationInfoTable"] != null) return true; else if (Session["lstRecordIds"] != null && Session["recordTransId"] != null && Session["recordTransId"].ToString() == transactionId) return true; else return false; } } [WebMethod(EnableSession = true)] public void ClearNavigationSession() { utilObj.ClearSession(); } #endregion #region Back Forward Button [WebMethod(EnableSession = true)] public string NavigateBackForwardButton(string buttonName) { if ((buttonName.GetType() != typeof(string)) || (!(buttonName == "back" || buttonName == "forward"))) return String.Empty; string rul = HttpContext.Current.Request.UrlReferrer.ToString().ToLower(); //if (!(rul.Contains("iview.aspx") || rul.Contains("tstructdesign.aspx") || rul.Contains("listiview.aspx") || rul.Contains("ivtoivload.aspx") || rul.Contains("tstruct.aspx") || rul.Contains("ivtstload.aspx") || rul.Contains("err.aspx") || rul.Contains("cpwd.aspx") || rul.Contains("ParamsTstruct.aspx"))) //return string.Empty; utilObj.ClearSession(); int urlIndex = -1; if (Session["allUrls"] != null) allUrls = (List)Session["allUrls"]; if (Session["urlIndex"] != null) urlIndex = (int)Session["urlIndex"]; bool fromHyperLink = false; if (HttpContext.Current.Session["AxFromHypLink"] != null) { if (HttpContext.Current.Session["AxFromHypLink"].ToString() == "true") { fromHyperLink = true; HttpContext.Current.Session["AxFromHypLink"] = "false"; } } Session["enableBackButton"] = true; Session["enableForwardButton"] = true; Session["backForwBtnPressed"] = true; if (urlIndex != -1 && allUrls.Count > urlIndex) { string newUrl = string.Empty; //If the url is a iview with hyperlink urls if (allUrls[urlIndex].ToString().IndexOf('♣') != -1) { newUrl = GetPrevNavUrl(urlIndex); Session["allUrls"] = allUrls; } else { if (buttonName == "back" && !fromHyperLink) urlIndex = urlIndex - 1; else if (buttonName == "forward") urlIndex = urlIndex + 1; if (urlIndex != -1) { if (allUrls[urlIndex].ToString().IndexOf('♣') != -1) { newUrl = GetPrevNavUrl1(urlIndex); if (allUrls[urlIndex + 1].ToString().Contains("tstructdesign.aspx") || allUrls[urlIndex + 1].ToString().Contains("listIview.aspx") || allUrls[urlIndex + 1].ToString().Contains("axp_IsSaveUrl=true") || allUrls[urlIndex + 1].ToString().Contains("tstruct.aspx")) { allUrls.RemoveAt(urlIndex + 1); Session["allUrls"] = allUrls; } } else { if (allUrls.Count() <= urlIndex + 1 && fromHyperLink) { urlIndex = urlIndex - 1; newUrl = allUrls[urlIndex].ToString(); allUrls.RemoveAt(urlIndex); } else { newUrl = allUrls[urlIndex].ToString(); allUrls.RemoveAt(urlIndex + 1); } Session["allUrls"] = allUrls; } Session["urlIndex"] = urlIndex; } } return newUrl; } return string.Empty; } private string GetPrevNavUrl1(int urlIndex) { string newUrl = string.Empty; string[] newUrls = allUrls[urlIndex].Split('♣'); newUrl = newUrls[newUrls.Length - 1].ToString(); return newUrl; } private string GetPrevNavUrl(int urlIndex) { string newUrl = string.Empty; string[] newUrls = allUrls[urlIndex].Split('♣'); string updUrl = string.Empty; for (int i = 0; i < newUrls.Length - 1; i++) { if (i == newUrls.Length - 2) { newUrl = newUrls[i].ToString(); } if (updUrl == string.Empty) updUrl = newUrls[i].ToString(); else updUrl += "♣" + newUrls[i].ToString(); } allUrls[urlIndex] = updUrl; return newUrl; } #endregion [WebMethod(EnableSession = true)] public void CreateTimeLog(string clientStartTime, string clientTime1, string clientTime2, string asbTot, string asbDb, string serviceName, string dataKey) { GetGlobalVars(); string path = utilObj.ScriptsPath + "\\log\\" + sessionid; string serverTime = string.Empty; TStructData tstData = (TStructData)Session[dataKey]; if (tstData != null) serverTime = tstData.strServerTime; //Sid,tid,rid,Service,start time,cl1,wt1,asb,wt2 ,cl2, ASBTot, ASBDB string logData = sessionid + "," + tstData.transID + "," + tstData.recordid + "," + serviceName + "," + clientStartTime + "," + clientTime1 + "," + serverTime + "," + clientTime2 + "," + asbTot + "," + asbDb; utilObj.WriteToFileExt(path, "Timetaken", logData); } // iview caching : on unload deletes all existing cached iview files. [WebMethod(EnableSession = true)] public void DeleteIviewCacheFiles(string iName) { if (Session["project"] == null) return; string ScriptsPath = HttpContext.Current.Application["ScriptsPath"].ToString(); sessionid = HttpContext.Current.Session["nsessionid"].ToString(); string path = ScriptsPath + "axpert\\" + sessionid + "\\" + iName; DirectoryInfo di = new DirectoryInfo(path); if (di.Exists) { try { //utilObj.DeleteIviewFiles(path); } catch (Exception ex) { logobj.CreateLog("Exception while Creating session id folder in DeleteIviewCacheFiles" + ex.StackTrace + "------Path-" + ScriptsPath, HttpContext.Current.Session["nsessionid"].ToString(), "Exception", "new"); } } } [WebMethod(EnableSession = true)] public string TestMailSettings(string smptpHost, string smptpPort, string smptpUser, string smptpPassword) { string errorLog = logobj.CreateLog("Smptp Mail Settings", sessionid, "SmptpMailsettings", "new"); string result = string.Empty; try { string iXml = string.Empty; string tstType = "tstruct"; string tstName = "Axpert Properties"; string authMail = "false"; string userMailfrom = string.Empty; if (HttpContext.Current.Session["AxEmailId"] != null && HttpContext.Current.Session["AxEmailId"].ToString() != string.Empty) userMailfrom = HttpContext.Current.Session["AxEmailId"].ToString(); if (userMailfrom != string.Empty && userMailfrom != "") { XmlDocument xDoc = new XmlDocument(); xDoc.LoadXml(HttpContext.Current.Session["axGlobalVars"].ToString()); if (xDoc != null) { var auth = xDoc.SelectSingleNode("transparent_mailauth"); if (auth != null) { authMail = auth.Value.ToString(); } } iXml = " "; iXml += ""; result = asbExt.CallTestMailSettings(iXml); } else result = "Logged in user email is not set"; } catch (Exception ex) { } return result; } [WebMethod(EnableSession = true)] public void UnlockTStructRecord(string transId, string recordId, bool unlockByAdmin = false) { GetGlobalVars(); Session["axp_lockonrecid"] = null; string errorLog = logobj.CreateLog("Unlocking the record", sessionid, "UnlockRecord", "new"); string iXml = string.Empty; iXml = ""; iXml += Session["axApps"].ToString() + Application["axProps"].ToString() + HttpContext.Current.Session["axGlobalVars"].ToString() + HttpContext.Current.Session["axUserVars"].ToString() + ""; string result = string.Empty; result = asbExt.CallUnlockTStructRecord(iXml); } [WebMethod(EnableSession = true)] public void SignOut() { try { GetGlobalVars(); } catch (Exception ex) { } try { if (project != "") { CallUnlockTstructRecord(); string AxCloudDB = string.Empty; if (Session["AxCloudDB"] != null) AxCloudDB = Session["AxCloudDB"].ToString(); string errorLog = logobj.CreateLog("Calling Signout ws", sessionid, "Signout", "new"); string iXml = string.Empty; string Svrlic_redis = string.Empty; if (Session["Svrlic_redis"] != null) Svrlic_redis = Session["Svrlic_redis"].ToString(); iXml = ""; if (Session["axApps"] != null) iXml += Session["axApps"].ToString() + Application["axProps"].ToString(); else if (project != "" && Application[project + "-axApps"] != null) iXml += Application[project + "-axApps"].ToString() + Application["axProps"].ToString(); iXml += ""; utilObj.RemoveLoggedUserDetails(project, sessionid); utilObj.DeleteKeepAliveWebKey(); utilObj.SaveExecutionText(); utilObj.DeleteUnwantedKeys(); utilObj.TempAttaServerFiles(); string result = string.Empty; utilObj.delALLNotificiationKeyfromRedis(); result = asbExt.CallLogoutWS("Signout", iXml); //utilObj.RemoveLoggedUserDetails(project, sessionid); string scriptsPath = HttpContext.Current.Application["ScriptsPath"].ToString(); scriptsPath = scriptsPath + "Axpert\\" + sessionid; if (Directory.Exists(scriptsPath) && sessionid != "") { try { Directory.Delete(scriptsPath, true); } catch (Exception Ex) { //Do nothing } } if (AxCloudDB != string.Empty) Application["AxCloudDB"] = AxCloudDB; } } catch (Exception ex) { utilObj.KillSession(); } } private void CallUnlockTstructRecord() { if (Session["axp_lockonrecid"] != null && (Session["axp_isLockOnRead"] != null && Session["axp_isLockOnRead"].ToString() == "true")) { string errorLog = logobj.CreateLog("Calling Unlock Tstruct ws", sessionid, "Unlock", "new"); try { string[] recLockDetails = Session["axp_lockonrecid"].ToString().Split('~'); logobj.CreateLog("Transid=" + recLockDetails[0].ToString() + ", Recid=" + recLockDetails[1].ToString(), sessionid, "Unlock", ""); UnlockTStructRecord(recLockDetails[0].ToString(), recLockDetails[1].ToString()); } catch (Exception ex) { logobj.CreateLog("Exception in Unlock tstruct-" + ex.Message, sessionid, "Unlock", ""); } } } [WebMethod(EnableSession = true)] public string GetRecordId(string transId, string param) { param = "" + param + ""; GetGlobalVars(); string errorLog = logobj.CreateLog("Calling get recordid ws", sessionid, "getrecid", "new"); string iXml = string.Empty; iXml = ""; iXml += param + Session["axApps"].ToString() + Application["axProps"].ToString() + HttpContext.Current.Session["axGlobalVars"].ToString() + HttpContext.Current.Session["axUserVars"].ToString() + ""; string result = string.Empty; result = asbExt.CallGetRecordIdWS(transId, iXml); if (result != null) result = result.Split('♠')[1]; return result; } [WebMethod(EnableSession = true)] public void SaveIntUser(string name, string org, string email, string mob, string partner) { string result = string.Empty; string qry = null; qry = "insert into intusers values('" + name + "','" + org + "','" + email + "','" + mob + "','" + partner + "')"; result = ads.GetChoices(qry, false); if (result != "done") { } } [WebMethod(EnableSession = true)] public string GetNextStagPage(string key, string tableNo) { int tableNumber = Convert.ToInt32(tableNo); IviewData iviewObj = (IviewData)HttpContext.Current.Session[key]; if (iviewObj == null) return Constants.DUPLICATESESS; DataTable dt = new DataTable(); try { dt = iviewObj.StagTables[tableNumber]; } catch (Exception ex) { return ex.Message; } dt = SetIviewHyperLinks(dt, iviewObj); dt = iviewObj.GetVisibleColsData(dt); if (iviewObj.IsPerfXml) { foreach (DataColumn dc in dt.Columns) { dc.ColumnMapping = MappingType.Element; } } DataSet ds = new DataSet(); ds.Tables.Add(dt); return ds.GetXml(); } [WebMethod(EnableSession = true)] public string GetAllPages(string key, string tableNo) { int tableNumber = Convert.ToInt32(tableNo); int totalNoOfRows = (int)Session["iv_noofpages"]; IviewData iviewObj = (IviewData)HttpContext.Current.Session[key]; if (iviewObj == null) return Constants.DUPLICATESESS; DataTable dtTable = new DataTable(); DataSet ds = new DataSet(); for (int totalCount = tableNumber; totalCount < iviewObj.StagTables.Count; totalCount++) { DataTable dt = iviewObj.StagTables[totalCount]; dtTable.Merge(dt); dt.Clear(); } dtTable = SetIviewHyperLinks(dtTable, iviewObj); dtTable = iviewObj.GetVisibleColsData(dtTable); if (iviewObj.IsPerfXml) { foreach (DataColumn dc in dtTable.Columns) { dc.ColumnMapping = MappingType.Element; } } ds.Tables.Add(dtTable); return ds.GetXml(); } private DataTable SetIviewHyperLinks(DataTable dt, IviewData iviewObj) { for (int rIndx = 0; rIndx < dt.Rows.Count; rIndx++) { string rowIndex = rIndx.ToString(); DataRowView drv = dt.DefaultView[rIndx]; DataTable tmpDt = drv.Row.Table.Copy(); try { DataRow dRow = iviewObj.GetHyperLinks(dt.Rows[rIndx], rowIndex, iviewObj, rIndx, tmpDt); for (int cIndx = 0; cIndx < dRow.ItemArray.Length; cIndx++) { if (string.IsNullOrEmpty(dRow[cIndx].ToString())) dt.Rows[rIndx][cIndx] = string.Empty; else dt.Rows[rIndx][cIndx] = dRow[cIndx]; } } catch (Exception ex) { string errorLog = string.Empty; string errMessage = ex.Message; errorLog = logobj.CreateLog("IView HyperLinks - " + errMessage, sessionid, "IViewHyperLinks", "new"); } dt.AcceptChanges(); } return dt; } [WebMethod(EnableSession = true)] public string SetActionIvParams(string url, string paramStr, string iviewName) { //HttpContext.Current.Session["AxActionParams" + iviewName] = paramStr; // HttpContext.Current.Session["IviewNavigationData-" + iviewName] = paramStr; this.SetIviewNavigationData(paramStr, iviewName); return url; } [WebMethod(EnableSession = true)] public object SetExportParams(string url, string paramStr, string iviewName) { HttpContext.Current.Session["AxIvExportParams-" + iviewName] = paramStr; return new { url, paramStr, iviewName }; } [WebMethod(EnableSession = true)] public bool SetIviewNavigationData(string paramStr, string iviewName) { bool returnSuccess = false; string username = HttpContext.Current.Session["username"].ToString(); string schemaName = string.Empty; if (HttpContext.Current.Session["dbuser"] != null) schemaName = HttpContext.Current.Session["dbuser"].ToString(); Util.Util util = new Util.Util(); FDR fObj = (FDR)HttpContext.Current.Session["FDR"]; if (fObj == null) { fObj = new FDR(); HttpContext.Current.Session["FDR"] = fObj; } JObject jObj = new JObject(); if (fObj.IsConnected) { try { jObj = JObject.Parse(fObj.StringFromRedis(util.GetRedisServerkey(Constants.IviewNavigationData, iviewName), schemaName)); } catch (Exception ex) { } } FDW objFDW = FDW.Instance; if (objFDW.IsConnected) { jObj[username] = paramStr; returnSuccess = objFDW.SaveInRedisServerDT(util.GetRedisServerkey(Constants.IviewNavigationData, iviewName), jObj, "", schemaName); } else { HttpContext.Current.Session["IviewNavigationData-" + iviewName] = paramStr; returnSuccess = true; } return returnSuccess; } [WebMethod(EnableSession = true)] public string GetIviewNavigationData(string iviewName) { string returnString = string.Empty; string username = HttpContext.Current.Session["username"].ToString(); string schemaName = string.Empty; if (HttpContext.Current.Session["dbuser"] != null) schemaName = HttpContext.Current.Session["dbuser"].ToString(); Util.Util util = new Util.Util(); FDR fObj = (FDR)HttpContext.Current.Session["FDR"]; if (fObj == null) { fObj = new FDR(); HttpContext.Current.Session["FDR"] = fObj; } if (fObj.IsConnected) { //returnString = fObj.StringFromRedis(util.GetRedisServerkey(Constants.IviewNavigationData, iviewName), schemaName); JObject jObj = new JObject(); try { jObj = JObject.Parse(fObj.StringFromRedis(util.GetRedisServerkey(Constants.IviewNavigationData, iviewName), schemaName)); returnString = jObj[username].ToString(); } catch (Exception ex) { } } else if (HttpContext.Current.Session["IviewNavigationData-" + iviewName] != null) { returnString = HttpContext.Current.Session["IviewNavigationData-" + iviewName].ToString(); } //if (returnString == string.Empty) { // returnString = "{}"; //} return returnString; } [WebMethod(EnableSession = true)] public void GetAxpString() { string result = string.Empty; string trace = "false"; string errorLog = string.Empty; if (ConfigurationManager.AppSettings["LoginTrace"] != null) trace = ConfigurationManager.AppSettings["LoginTrace"].ToString().ToLower(); errorLog = logobj.CreateLog("Calling GetAxpString-", "logAxpString", "GetAxpString", "new", trace); result = asbExt.CallAxpString(); logobj.CreateLog(result, "logAxpString", "GetAxpString", "", trace); if (result != string.Empty) { XmlDocument xmlDoc = new XmlDocument(); try { xmlDoc.LoadXml(result); } catch (Exception ex) { } XmlNode resultNode = null; resultNode = xmlDoc.SelectSingleNode("//result"); if (resultNode != null) { foreach (XmlNode childNode in resultNode.ChildNodes) { if (childNode.Name == "macid") Application["AxpString1"] = childNode.InnerText; else if (childNode.Name == "licfile") Application["AxpString2"] = childNode.InnerText; } } XmlNode errNode = null; errNode = xmlDoc.SelectSingleNode("//e"); if (errNode != null) Application["AxpString1"] = errNode.OuterXml; } } public void SetServerLicense() { try { string redisIp = string.Empty; string redisPwd = string.Empty; string scrPath = string.Empty; if (HttpContext.Current.Application["ScriptsPath"] != null) scrPath = HttpContext.Current.Application["ScriptsPath"].ToString(); if (ConfigurationManager.AppSettings["axpLic_RedisIp"] != null) redisIp = ConfigurationManager.AppSettings["axpLic_RedisIp"].ToString(); if (ConfigurationManager.AppSettings["axpLic_RedisPass"] != null) redisPwd = ConfigurationManager.AppSettings["axpLic_RedisPass"].ToString(); if (redisIp != string.Empty) { string rlicConn = utils.GetServerLicDetails(redisIp, redisPwd); switch (rlicConn) { case "notConnected": logobj.CreateLog("SetServerLicense: Redis Connection details for Axpert license is not proper. Please contact your support person.", "", "SetServerLicense", "new", "true"); break; case "keyNotMatch": logobj.CreateLog("SetServerLicense: Redis IP for Axpert license should be set as 127.0.0.1. Please contact your support person.", "", "SetServerLicense", "new", "true"); break; case "keyNotExists": string[] filePaths = Directory.GetFiles(@scrPath, "*-axpertsrvr.lic"); if (filePaths.Count() > 0) { string licFileName = filePaths[0].Split('\\').Last(); string result = string.Empty; if (redisPwd != string.Empty) redisPwd = utils.EncryptPWD(redisPwd); string strInpt = redisIp + "~" + redisPwd + "," + licFileName; result = asbExt.CallServerLicense(strInpt); if (result != "done") logobj.CreateLog("SetServerLicense: Result:" + result, "", "SetServerLicense", "new", "true"); } else logobj.CreateLog("SetServerLicense: Server license file not exists in the script folder. please activate server license or if already activated copy lic file in current script folder.", "", "SetServerLicense", "new", "true"); break; } } } catch (Exception ex) { logobj.CreateLog("SetServerLicense -" + ex.Message, "", "SetServerLicense", "new", "true"); } } [WebMethod(EnableSession = true)] public string GetParams(string iViewname) { if (iViewname != "") { WebServiceExt objWebServiceExt = new WebServiceExt(); string fileName = "openiview-" + iViewname; string errLog = logobj.CreateLog("Call to GetParams Web Service", Session["nsessionid"].ToString(), fileName, ""); string iXml = string.Empty; iXml = ""; iXml += HttpContext.Current.Session["axApps"].ToString() + HttpContext.Current.Application["axProps"].ToString() + HttpContext.Current.Session["axGlobalVars"].ToString() + HttpContext.Current.Session["axUserVars"].ToString() + ""; string ires = string.Empty; IviewData objIview = new IviewData(); objIview.WebServiceTimeout = objWebServiceExt.asbIview.Timeout; ires = objWebServiceExt.CallGetParamsWS(iViewname, iXml, objIview); if (ires != null) ires = ires.Split('♠')[1]; if (ires == "" || ires.Contains("Disconnected because you have logged into another session.") || ires.Contains("error")) { return ires; } return ConstructParamsHtml(ires); } else return "invalid Iview"; //return ires; } [WebMethod(EnableSession = true)] public string GetContactInfo() { string result = string.Empty; if (HttpContext.Current.Session["project"] != null) { result = Session["m_contactinfo"].ToString(); } return result; } private string ConstructParamsHtml(string result) { StringBuilder strJsArrays = new StringBuilder(); StringBuilder strParamDetails = new StringBuilder(); ArrayList iviewParamValues = new ArrayList(); ArrayList iviewParams = new ArrayList(); bool isSqlFld = false; string clientCulture = null; IviewData objIview = new IviewData(); string _xmlString = ""; StringBuilder paramHtml = new StringBuilder(); result = _xmlString + result; // logobj.CreateLog("Loading and setting parameters components", sid, fileName, string.Empty); string parameterName = string.Empty; string paramCaption = string.Empty; string paramType = string.Empty; string paramHidden = string.Empty; string paramMOE = string.Empty; string paramValue = string.Empty; string paramSql = string.Empty; string paramDepStr = string.Empty; Boolean unHideParams = false; string expr = string.Empty; string vExpr = string.Empty; int tabIndex = 0; XmlDocument xmlDoc = new XmlDocument(); XmlNodeList productNodes = default(XmlNodeList); XmlNodeList baseDataNodes = default(XmlNodeList); // StringBuilder strJsArrays = new StringBuilder(); int iCnt = 0; int fldNo = 0; int dpCnt = 0; try { xmlDoc.LoadXml(result); } catch (XmlException ex) { // Response.Redirect(util.ERRPATH + ex.Message); } productNodes = xmlDoc.SelectNodes("//root"); bool showParam = false; if (productNodes[0].Attributes["showparams"] != null && productNodes[0].Attributes["showparams"].Value != string.Empty) showParam = Convert.ToBoolean(productNodes[0].Attributes["showparams"].Value); string ivCaption = xmlDoc.SelectSingleNode("root").Attributes["caption"].Value; ivCaption = ivCaption.Replace("&&", "&"); string lblHeading = ivCaption; objIview.IviewCaption = ivCaption; bool paramsBound = true; string Paramsids = string.Empty; //string Paramsids = "