You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

891 lines
28 KiB

10 months ago
10 months ago
  1. using Microsoft.SqlServer.Management.Smo;
  2. using Swift.DAL.Common;
  3. using System;
  4. using System.Collections;
  5. using System.Configuration;
  6. using System.Data;
  7. using System.Data.SqlClient;
  8. using System.Text;
  9. using System.Web;
  10. namespace Swift.DAL.SwiftDAL
  11. {
  12. public class RemittanceDao
  13. {
  14. private SqlConnection _connection;
  15. public RemittanceDao()
  16. {
  17. Init();
  18. }
  19. private void Init()
  20. {
  21. _connection = new SqlConnection(GetConnectionString());
  22. }
  23. private void OpenConnection()
  24. {
  25. if (_connection.State == ConnectionState.Open)
  26. _connection.Close();
  27. _connection.Open();
  28. }
  29. private void CloseConnection()
  30. {
  31. if (_connection.State == ConnectionState.Open)
  32. this._connection.Close();
  33. }
  34. private string GetConnectionString()
  35. {
  36. return ConfigurationSettings.AppSettings["RemittanceString"].ToString();
  37. }
  38. public DataSet ExecuteDataset(string sql)
  39. {
  40. var ds = new DataSet();
  41. SqlDataAdapter da;
  42. try
  43. {
  44. OpenConnection();
  45. da = new SqlDataAdapter(sql, _connection);
  46. da.SelectCommand.CommandTimeout = GetCommandTimeOut();
  47. da.Fill(ds);
  48. da.Dispose();
  49. CloseConnection();
  50. }
  51. catch (Exception ex)
  52. {
  53. throw ex;
  54. }
  55. finally
  56. {
  57. da = null;
  58. CloseConnection();
  59. }
  60. return ds;
  61. }
  62. public DataTable ExecuteDataTable(string sql)
  63. {
  64. using (var ds = ExecuteDataset(sql))
  65. {
  66. if (ds == null || ds.Tables.Count == 0)
  67. return null;
  68. return ds.Tables[0];
  69. }
  70. }
  71. public DataRow ExecuteDataRow(string sql)
  72. {
  73. using (var ds = ExecuteDataset(sql))
  74. {
  75. if (ds == null || ds.Tables.Count == 0)
  76. return null;
  77. if (ds.Tables[0].Rows.Count == 0)
  78. return null;
  79. return ds.Tables[0].Rows[0];
  80. }
  81. }
  82. public String GetSingleResult(string sql)
  83. {
  84. try
  85. {
  86. var ds = ExecuteDataset(sql);
  87. if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0)
  88. return "";
  89. return ds.Tables[0].Rows[0][0].ToString();
  90. }
  91. catch (Exception ex)
  92. {
  93. throw ex;
  94. }
  95. finally
  96. {
  97. CloseConnection();
  98. }
  99. }
  100. public String FilterStringForXml(string strVal)
  101. {
  102. var str = FilterQuote(strVal);
  103. if (str.ToLower() == "null")
  104. str = "";
  105. str = "'" + str + "'";
  106. return str;
  107. }
  108. public String FilterString(string strVal)
  109. {
  110. var str = FilterQuote(strVal);
  111. if (str.ToLower() != "null")
  112. str = "'" + str + "'";
  113. return str;
  114. }
  115. public String FilterAmpersand(string strVal)
  116. {
  117. if (string.IsNullOrEmpty(strVal))
  118. {
  119. strVal = "";
  120. }
  121. var str = strVal/*.Trim()*/;
  122. if (!string.IsNullOrEmpty(str))
  123. {
  124. str = str.Replace("&amp", "&");
  125. }
  126. return str;
  127. }
  128. public String FilterStringUnicode(string strVal)
  129. {
  130. var str = FilterQuote(strVal);
  131. if (str.ToLower() != "null")
  132. str = "N'" + str + "'";
  133. return str;
  134. }
  135. public String FilterQuoteNative(string strVal)
  136. {
  137. if (string.IsNullOrEmpty(strVal))
  138. {
  139. strVal = "";
  140. }
  141. var str = Encode(strVal.Trim());
  142. if (!string.IsNullOrEmpty(str))
  143. {
  144. str = str.Replace(";", "");
  145. //str = str.Replace(",", "");
  146. str = str.Replace("--", "");
  147. str = str.Replace("'", "");
  148. str = str.Replace("/*", "");
  149. str = str.Replace("*/", "");
  150. str = str.Replace(" select ", "");
  151. str = str.Replace(" insert ", "");
  152. str = str.Replace(" update ", "");
  153. str = str.Replace(" delete ", "");
  154. str = str.Replace(" drop ", "");
  155. str = str.Replace(" truncate ", "");
  156. str = str.Replace(" create ", "");
  157. str = str.Replace(" begin ", "");
  158. str = str.Replace(" end ", "");
  159. str = str.Replace(" char(", "");
  160. str = str.Replace(" exec ", "");
  161. str = str.Replace(" xp_cmd ", "");
  162. str = str.Replace("<script", "");
  163. }
  164. else
  165. {
  166. str = "null";
  167. }
  168. return str;
  169. }
  170. private string Encode(string strVal)
  171. {
  172. var sb = new StringBuilder(HttpUtility.HtmlEncode(HttpUtility.JavaScriptStringEncode(strVal)));
  173. // Selectively allow <b> and <i>
  174. sb.Replace("&lt;b&gt;", "<b>");
  175. sb.Replace("&lt;/b&gt;", "");
  176. sb.Replace("&lt;i&gt;", "<i>");
  177. sb.Replace("&lt;/i&gt;", "");
  178. return sb.ToString();
  179. }
  180. public String FilterStringNativeTrim(string strVal)
  181. {
  182. var str = FilterQuoteNative(strVal);
  183. if (str.ToLower() != "null")
  184. str = "'" + str + "'";
  185. else
  186. str = "";
  187. return str;
  188. }
  189. public String FilterStringNative(string strVal)
  190. {
  191. var str = FilterQuoteNative(strVal);
  192. if (str.ToLower() != "null")
  193. str = "'" + str + "'";
  194. return str;
  195. }
  196. public string SingleQuoteToDoubleQuote(string strVal)
  197. {
  198. strVal = strVal.Replace("\"", "");
  199. return strVal.Replace("'", "\"");
  200. }
  201. public String FilterQuote(string strVal)
  202. {
  203. if (string.IsNullOrEmpty(strVal))
  204. {
  205. strVal = "";
  206. }
  207. var str = strVal/*.Trim()*/;
  208. if (!string.IsNullOrEmpty(str))
  209. {
  210. str = str.Replace(";", "");
  211. //str = str.Replace(",", "");
  212. str = str.Replace("--", "");
  213. str = str.Replace("'", "");
  214. str = str.Replace("/*", "");
  215. str = str.Replace("*/", "");
  216. str = str.Replace(" select ", "");
  217. str = str.Replace(" insert ", "");
  218. str = str.Replace(" update ", "");
  219. str = str.Replace(" delete ", "");
  220. str = str.Replace(" drop ", "");
  221. str = str.Replace(" truncate ", "");
  222. str = str.Replace(" create ", "");
  223. str = str.Replace(" begin ", "");
  224. str = str.Replace(" end ", "");
  225. str = str.Replace(" char(", "");
  226. str = str.Replace(" exec ", "");
  227. str = str.Replace(" xp_cmd ", "");
  228. str = str.Replace("select ", "");
  229. str = str.Replace("insert ", "");
  230. str = str.Replace("update ", "");
  231. str = str.Replace("delete ", "");
  232. str = str.Replace("drop ", "");
  233. str = str.Replace("truncate ", "");
  234. str = str.Replace("create ", "");
  235. str = str.Replace("begin ", "");
  236. str = str.Replace("end ", "");
  237. str = str.Replace("char(", "");
  238. str = str.Replace("exec ", "");
  239. str = str.Replace("xp_cmd ", "");
  240. str = str.Replace("onmouseover ", "");
  241. str = str.Replace("autofocus ", "");
  242. str = str.Replace("onfocus ", "");
  243. str = str.Replace("onerror ", "");
  244. str = str.Replace("onload ", "");
  245. str = str.Replace("<script", "");
  246. str = str.Replace("</script>", "");
  247. }
  248. else
  249. {
  250. str = "null";
  251. }
  252. return str;
  253. }
  254. public DbResult ParseDbResultV2(string sql)
  255. {
  256. return ParseDbResult(ExecuteDatasetV2(sql).Tables[0]);
  257. }
  258. public DataSet ExecuteDatasetV2(string sql)
  259. {
  260. var ds = new DataSet();
  261. using (var _connection = new SqlConnection(GetConnectionString()))
  262. {
  263. using (var cmd = new SqlCommand(sql, _connection))
  264. {
  265. cmd.CommandTimeout = GetCommandTimeOut();
  266. SqlDataAdapter da;
  267. try
  268. {
  269. //OpenConnection();
  270. da = new SqlDataAdapter(cmd);
  271. da.Fill(ds);
  272. da.Dispose();
  273. //CloseConnection();
  274. }
  275. catch (Exception ex)
  276. {
  277. throw ex;
  278. }
  279. finally
  280. {
  281. da = null;
  282. //cmd.Dispose();
  283. //CloseConnection();
  284. }
  285. }
  286. }
  287. return ds;
  288. }
  289. private int GetCommandTimeOut()
  290. {
  291. int cto = 0;
  292. try
  293. {
  294. int.TryParse(ConfigurationSettings.AppSettings["eto"].ToString(), out cto);
  295. if (cto == 0)
  296. cto = 30;
  297. }
  298. catch (Exception)
  299. {
  300. cto = 30;
  301. }
  302. return cto;
  303. }
  304. public DbResult ParseDbResult(DataTable dt)
  305. {
  306. var res = new DbResult();
  307. if (dt.Rows.Count > 0)
  308. {
  309. res.ErrorCode = dt.Rows[0][0].ToString();
  310. res.Msg = dt.Rows[0][1].ToString();
  311. res.Id = dt.Rows[0][2].ToString();
  312. }
  313. if (dt.Columns.Count > 3)
  314. {
  315. res.Extra = dt.Rows[0][3].ToString();
  316. }
  317. if (dt.Columns.Count > 4)
  318. {
  319. res.Extra2 = dt.Rows[0][4].ToString();
  320. }
  321. if (dt.Columns.Count > 5)
  322. {
  323. res.Extra3 = dt.Rows[0][5].ToString();
  324. }
  325. return res;
  326. }
  327. public DbResult ParseDbResultNew(string sql)
  328. {
  329. return ParseDbResultNew(ExecuteDataset(sql).Tables[0]);
  330. }
  331. public DbResult ParseDbResultNew(DataTable dt)
  332. {
  333. var res = new DbResult();
  334. if (dt.Rows.Count > 0)
  335. {
  336. res.ErrorCode = dt.Rows[0][0].ToString();
  337. res.Msg = dt.Rows[0][1].ToString();
  338. res.Id = dt.Rows[0][2].ToString();
  339. }
  340. if (dt.Columns.Count > 3)
  341. {
  342. res.Extra = dt.Rows[0][3].ToString();
  343. }
  344. if (dt.Columns.Count > 4)
  345. {
  346. res.Extra1 = dt.Rows[0][4].ToString();
  347. }
  348. if (dt.Columns.Count > 5)
  349. {
  350. res.Extra2 = dt.Rows[0][5].ToString();
  351. }
  352. return res;
  353. }
  354. public DbResult ParseDbResult(string sql)
  355. {
  356. return ParseDbResult(ExecuteDataset(sql).Tables[0]);
  357. }
  358. public DbResult ExecuteJob(string jobName)
  359. {
  360. Server server = new Server("10.90.77.61");
  361. server.ConnectionContext.LoginSecure = false;
  362. server.ConnectionContext.Login = "Arjun";
  363. server.ConnectionContext.Password = "@RjUn@jM3rEm!TdB@J@pAn#$Jm3";
  364. server.ConnectionContext.Connect();
  365. //server.JobServer.Jobs["Txn Sync"]?.Start();
  366. var job = server.JobServer.Jobs[jobName];
  367. if (job.CurrentRunStatus.ToString() == "Idle")
  368. {
  369. job.Start();
  370. }
  371. DbResult _resp = new DbResult();
  372. _resp.Msg = (job.CurrentRunStatus.ToString() == "Idle") ? "Job started successfully" : "Job is already running";
  373. _resp.ErrorCode = (job.CurrentRunStatus.ToString() == "Idle") ? "0" : "1"; ;
  374. //Console.WriteLine(job.CurrentRunStatus.ToString()); // Current running status
  375. return _resp;
  376. }
  377. public UserDetails ParseLoginResult(DataTable dt, Location location = null)
  378. {
  379. var res = new UserDetails();
  380. if (dt.Rows.Count > 0)
  381. {
  382. var row = dt.Rows[0];
  383. res.ErrorCode = (row[0] ?? "").ToString();
  384. res.Msg = (row[1] ?? "").ToString();
  385. res.logId = (row["rowId"] ?? "").ToString();
  386. if (res.ErrorCode == "0")
  387. {
  388. res.UserId = (row["UserId"] ?? "").ToString();
  389. res.FullName = (row["fullName"] ?? "").ToString();
  390. res.Address = (row["address"] ?? "").ToString();
  391. res.LastLoginTs = (row["LastLoginTs"] ?? "").ToString();
  392. res.UserAccessLevel = (row["userAccessLevel"] ?? "").ToString();
  393. res.Branch = (row["branchId"] ?? "").ToString();
  394. res.BranchName = (row["BRANCH_NAME"] ?? "").ToString();
  395. res.UserType = (row["UserType"] ?? "").ToString();
  396. res.isForcePwdChanged = (row["isForcePwdChanged"] ?? "").ToString();
  397. res.sessionTimeOut = row["sessionTimeOutPeriod"].ToString();
  398. res.UserUniqueKey = row["UserUniqueKey"].ToString();
  399. res.LoggedInCountry = location.CountryName + " (" + location.CountryCode + ")";
  400. res.LoginAddress = location.Region + ", " + location.City + ", " + location.ZipCode;
  401. }
  402. }
  403. return res;
  404. }
  405. public UserDetails ParseAgentLoginResult(DataTable dt, Location location = null)
  406. {
  407. var res = new UserDetails();
  408. if (dt.Rows.Count > 0)
  409. {
  410. var row = dt.Rows[0];
  411. res.Id = (row["Id"] ?? "").ToString();
  412. res.ErrorCode = (row["ErrorCode"] ?? "").ToString();
  413. res.Msg = (row["Mes"] ?? "").ToString();
  414. res.logId = (row["rowId"] ?? "").ToString();
  415. if (res.ErrorCode == "2")
  416. {
  417. res.AttemptCount = Convert.ToInt16((row["ac"] ?? "0").ToString());
  418. }
  419. if (dt.Columns.Count > 5)
  420. {
  421. res.UserId = (row["UserId"] ?? "").ToString();
  422. res.LastLoginTs = (row["lastLoginTs"] ?? "").ToString();
  423. res.FullName = (row["fullName"] ?? "").ToString();
  424. res.UserAccessLevel = (row["userAccessLevel"] ?? "").ToString();
  425. res.sessionTimeOut = (row["sessionTimeOutPeriod"] ?? "").ToString();
  426. res.Country = (row["country"] ?? "").ToString();
  427. res.CountryId = (row["countryId"] ?? "").ToString();
  428. res.Branch = (row["branch"] ?? "").ToString();
  429. res.BranchName = (row["branchName"] ?? "").ToString();
  430. res.Agent = (row["agent"] ?? "").ToString();
  431. res.AgentName = (row["agentName"] ?? "").ToString();
  432. res.SuperAgent = (row["superAgent"] ?? "").ToString();
  433. res.SuperAgentName = (row["superAgentName"] ?? "").ToString();
  434. res.SettlingAgent = (row["settlingAgent"] ?? "").ToString();
  435. res.MapCodeInt = (row["mapCodeInt"] ?? "").ToString();
  436. res.ParentMapCodeInt = (row["parentMapCodeInt"] ?? "").ToString();
  437. res.MapCodeDom = (row["mapCodeDom"] ?? "").ToString();
  438. res.AgentType = (row["agentType"] ?? "").ToString();
  439. res.IsActAsBranch = (row["isActAsBranch"] ?? "").ToString();
  440. res.FromSendTrnTime = (row["fromSendTrnTime"] ?? "").ToString();
  441. res.ToSendTrnTime = (row["toSendTrnTime"] ?? "").ToString();
  442. res.FromPayTrnTime = (row["fromSendTrnTime"] ?? "").ToString();
  443. res.ToPayTrnTime = (row["toPayTrnTime"] ?? "").ToString();
  444. res.UserType = (row["userType"] ?? "").ToString();
  445. res.IsHeadOffice = (row["isHeadOffice"] ?? "").ToString();
  446. res.AgentLocation = (row["agentLocation"] ?? "").ToString();
  447. res.AgentGrp = (row["agentGrp"] ?? "").ToString();
  448. res.AgentEmail = (row["agentEmail"] ?? "").ToString();
  449. res.AgentPhone = (row["agentPhone"] ?? "").ToString();
  450. res.isForcePwdChanged = (row["isForcePwdChanged"] ?? "").ToString();
  451. res.UserUniqueKey = (row["UserUniqueKey"] ?? "").ToString();
  452. res.LoggedInCountry = location.CountryName + " (" + location.CountryCode + ")";
  453. res.LoginAddress = location.Region + ", " + location.City + ", " + location.ZipCode;
  454. if (row.Table.Columns.Contains("newBranchId"))
  455. {
  456. res.newBranchId = (row["newBranchId"] ?? "").ToString();
  457. }
  458. }
  459. }
  460. return res;
  461. }
  462. #region ParseReportResult
  463. public ReportResult ParseReportResult(DataSet ds, string sql)
  464. {
  465. var res = new ReportResult();
  466. res.Sql = sql;
  467. res.Result = ds;
  468. if (ds == null || ds.Tables.Count == 0)
  469. return res;
  470. var tableCount = ds.Tables.Count;
  471. if (tableCount > 3)
  472. {
  473. res.ReportHead = ds.Tables[tableCount - 1].Rows[0][0].ToString();
  474. }
  475. if (tableCount > 2)
  476. {
  477. var html = new StringBuilder("");
  478. var hasFilters = false;
  479. foreach (DataRow dr in ds.Tables[tableCount - 2].Rows)
  480. {
  481. if (dr[0] != null && !string.IsNullOrEmpty(dr[0].ToString()))
  482. {
  483. html.Append(" | " + dr[0] + "=" + dr[1]);
  484. hasFilters = true;
  485. }
  486. }
  487. res.Filters = hasFilters ? html.ToString().Substring(2) : "";
  488. }
  489. if (tableCount > 1)
  490. {
  491. var pos = tableCount - 3;
  492. if (pos < 1)
  493. pos = 1;
  494. var dbresult = ParseDbResult(ds.Tables[pos]);
  495. res.ErrorCode = dbresult.ErrorCode;
  496. res.Msg = dbresult.Msg;
  497. res.Id = dbresult.Id;
  498. res.ResultSet = ds.Tables[0];
  499. }
  500. return res;
  501. }
  502. public ReportResult ParseReportResult(string sql)
  503. {
  504. var ds = ExecuteDataset(sql);
  505. return ParseReportResult(ds, sql);
  506. }
  507. public ReportResult ParseReportResult(DataSet ds)
  508. {
  509. return ParseReportResult(ds, "");
  510. }
  511. #endregion ParseReportResult
  512. public DataTable GetTable2(string sql)
  513. {
  514. return ExecuteDataset(sql).Tables[1];
  515. }
  516. protected string ParseData(string data)
  517. {
  518. return data.Replace("\"", "").Replace("'", "").Trim();
  519. }
  520. public string AutoSelect(string str1, string str2)
  521. {
  522. if (str1.ToLower() == str2.ToLower())
  523. return "selected=\"selected\"";
  524. return "";
  525. }
  526. protected string ParseDate(string data)
  527. {
  528. data = FilterString(data);
  529. if (data.ToUpper() == "NULL")
  530. return data;
  531. data = data.Replace("'", "");
  532. var dateParts = data.Split('/');
  533. if (dateParts.Length < 3)
  534. return "NULL";
  535. var m = dateParts[0];
  536. var d = dateParts[1];
  537. var y = dateParts[2];
  538. return "'" + y + "-" + (m.Length == 1 ? "0" + m : m) + "-" + (d.Length == 1 ? "0" + d : d) + "'";
  539. }
  540. public DataTable GetTable(string sql)
  541. {
  542. var ds = new DataSet();
  543. SqlDataAdapter da;
  544. try
  545. {
  546. OpenConnection();
  547. da = new SqlDataAdapter(sql, _connection);
  548. da.Fill(ds);
  549. da.Dispose();
  550. CloseConnection();
  551. }
  552. catch (Exception ex)
  553. {
  554. throw ex;
  555. }
  556. finally
  557. {
  558. da = null;
  559. CloseConnection();
  560. }
  561. return ds.Tables[0];
  562. }
  563. public void ExecuteProcedure(string spName, SqlParameter[] param)
  564. {
  565. try
  566. {
  567. OpenConnection();
  568. SqlCommand command = new SqlCommand(spName, _connection);
  569. command.CommandType = CommandType.StoredProcedure;
  570. foreach (SqlParameter p in param)
  571. {
  572. command.Parameters.Add(p);
  573. }
  574. command.ExecuteNonQuery();
  575. }
  576. catch (Exception ex)
  577. {
  578. throw ex;
  579. }
  580. finally
  581. {
  582. CloseConnection();
  583. }
  584. }
  585. public string DataTableToText(ref DataTable dt, string delemeter, Boolean includeColHeader)
  586. {
  587. var sb = new StringBuilder();
  588. var del = "";
  589. var rowcnt = 0;
  590. if (includeColHeader)
  591. {
  592. foreach (DataColumn col in dt.Columns)
  593. {
  594. sb.Append(del);
  595. sb.Append(col.ColumnName);
  596. del = delemeter;
  597. }
  598. rowcnt++;
  599. }
  600. foreach (DataRow row in dt.Rows)
  601. {
  602. if (rowcnt > 0)
  603. {
  604. sb.AppendLine();
  605. }
  606. del = "";
  607. foreach (DataColumn col in dt.Columns)
  608. {
  609. sb.Append(del);
  610. sb.Append(row[col.ColumnName].ToString());
  611. del = delemeter;
  612. }
  613. rowcnt++;
  614. }
  615. return sb.ToString();
  616. }
  617. public string DataTableToText(ref DataTable dt, string delemeter)
  618. {
  619. return DataTableToText(ref dt, delemeter, true);
  620. }
  621. public string DataTableToHTML(ref DataTable dt, Boolean includeColHeader)
  622. {
  623. var sb = new StringBuilder("<table>");
  624. if (includeColHeader)
  625. {
  626. sb.AppendLine("<tr>");
  627. foreach (DataColumn col in dt.Columns)
  628. {
  629. sb.Append("<th>" + col.ColumnName + "</th>");
  630. }
  631. sb.AppendLine("</tr>");
  632. }
  633. foreach (DataRow row in dt.Rows)
  634. {
  635. sb.AppendLine("<tr>");
  636. foreach (DataColumn col in dt.Columns)
  637. {
  638. sb.Append("<td>" + row[col.ColumnName].ToString() + "</td>");
  639. }
  640. sb.AppendLine("</tr>");
  641. }
  642. sb.AppendLine("</table>");
  643. return sb.ToString();
  644. }
  645. public string DataTableToHTML(ref DataTable dt)
  646. {
  647. return DataTableToHTML(ref dt, true);
  648. }
  649. public DbResult TryParseSQL(string sql)
  650. {
  651. var dr = new DbResult();
  652. try
  653. {
  654. OpenConnection();
  655. using (SqlCommand command = new SqlCommand())
  656. {
  657. command.Connection = _connection;
  658. command.CommandType = CommandType.Text;
  659. command.CommandText = "SET NOEXEC ON " + sql + " SET NOEXEC OFF"; ;
  660. command.ExecuteNonQuery();
  661. dr.ErrorCode = "0";
  662. dr.Msg = "Success";
  663. }
  664. return dr;
  665. }
  666. catch (Exception ex)
  667. {
  668. dr.ErrorCode = "1";
  669. dr.Msg = FilterQuote(ex.Message);
  670. return dr;
  671. }
  672. finally
  673. {
  674. CloseConnection();
  675. }
  676. }
  677. public DataTable DecodeLogData(DataTable logTable)
  678. {
  679. var data = GetDataTemplete(logTable);
  680. if (string.IsNullOrWhiteSpace(data))
  681. {
  682. return null;
  683. }
  684. var fieldList = new ArrayList();
  685. fieldList.Add("Table");
  686. fieldList.Add("ChangedDate");
  687. fieldList.Add("ChangedBy");
  688. fieldList.Add("ChangedType");
  689. fieldList.Add("DataID");
  690. var dt = CreateDataTableFromLogData(data, fieldList);
  691. foreach (DataRow row in logTable.Rows)
  692. {
  693. DataRow newRow = dt.NewRow();
  694. newRow["Table"] = row["tableName"].ToString();
  695. newRow["ChangedDate"] = row["createdDate"].ToString();
  696. newRow["ChangedBy"] = row["createdBy"].ToString();
  697. newRow["ChangedType"] = row["logType"].ToString();
  698. newRow["DataID"] = row["dataId"].ToString();
  699. CreateDataRowFromLogData(ref newRow, row["newData"].ToString());
  700. dt.Rows.Add(newRow);
  701. }
  702. return dt;
  703. }
  704. #region Helper
  705. private string GetDataTemplete(DataTable dt)
  706. {
  707. var data = "";
  708. foreach (DataRow row in dt.Rows)
  709. {
  710. data = row["OldData"].ToString();
  711. if (string.IsNullOrWhiteSpace(data))
  712. {
  713. data = row["OldData"].ToString();
  714. }
  715. if (!string.IsNullOrWhiteSpace(data))
  716. {
  717. return data;
  718. }
  719. }
  720. return data;
  721. }
  722. private DataTable CreateDataTableFromLogData(string data, ArrayList defaultFields)
  723. {
  724. var dt = new DataTable();
  725. foreach (var fld in defaultFields)
  726. {
  727. dt.Columns.Add(fld.ToString());
  728. }
  729. var stringSeparators = new[] { "-:::-" };
  730. var dataList = data.Split(stringSeparators, StringSplitOptions.None);
  731. const string seperator = "=";
  732. foreach (var itm in dataList)
  733. {
  734. var seperatorPos = itm.IndexOf(seperator);
  735. if (seperatorPos > -1)
  736. {
  737. var field = itm.Substring(0, seperatorPos - 1).Trim();
  738. dt.Columns.Add(field);
  739. }
  740. }
  741. return dt;
  742. }
  743. private void CreateDataRowFromLogData(ref DataRow row, string data)
  744. {
  745. var stringSeparators = new[] { "-:::-" };
  746. var dataList = data.Split(stringSeparators, StringSplitOptions.None);
  747. const string seperator = "=";
  748. foreach (var itm in dataList)
  749. {
  750. var seperatorPos = itm.IndexOf(seperator);
  751. if (seperatorPos > -1)
  752. {
  753. var field = itm.Substring(0, seperatorPos - 1).Trim();
  754. var value = itm.Substring(seperatorPos + 1).Trim();
  755. row[field] = value;
  756. }
  757. }
  758. }
  759. public DataTable getTable(string sql)
  760. {
  761. return ExecuteDataTable(sql);
  762. }
  763. #endregion Helper
  764. }
  765. }