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.

243 lines
8.3 KiB

  1. using Swift.DAL.SwiftDAL;
  2. using Swift.web.Component.Grid;
  3. using Swift.web.Component.Grid.gridHelper;
  4. using Swift.web.Library;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Data;
  8. using System.Text;
  9. namespace Swift.web
  10. {
  11. public partial class Download : System.Web.UI.Page
  12. {
  13. private SwiftDao dao = new SwiftDao();
  14. private RemittanceDao remit = new RemittanceDao();
  15. protected void Page_Load(object sender, EventArgs e)
  16. {
  17. if (!IsPostBack)
  18. {
  19. DownloadCsv();
  20. }
  21. }
  22. private void DownloadCsv()
  23. {
  24. var data = "";
  25. var mode = GetStatic.ReadQueryString("mode", "grid").ToLower();
  26. if (mode == "grid")
  27. {
  28. data = GenerateCsvForGrid();
  29. }
  30. else if (mode == "report")
  31. {
  32. data = GenerateCsvForReport();
  33. }
  34. else if (mode.ToLower() == "download")
  35. {
  36. data = GenerateCsv();
  37. }
  38. Response.Clear();
  39. Response.ClearContent();
  40. Response.ClearHeaders();
  41. Response.Buffer = true;
  42. Response.ContentType = "application/vnd.ms-excel";
  43. Response.AddHeader("Content-Disposition", "inline; filename=download.xls");
  44. Response.Charset = "";
  45. Response.Write(data);
  46. Response.End();
  47. }
  48. private string GenerateCsvForGrid()
  49. {
  50. var sql = GetStatic.ReadSession("exportSource", "");
  51. if (string.IsNullOrEmpty(sql))
  52. return "";
  53. var type = GetStatic.ReadQueryString("type", "").ToLower();
  54. var ds = new DataSet();
  55. if (type == "remit")
  56. {
  57. ds = remit.ExecuteDataset(sql);
  58. }
  59. else
  60. {
  61. ds = dao.ExecuteDataset(sql);
  62. }
  63. var columnList = (List<GridColumn>)Session["grid_column"];
  64. if (ds == null || columnList == null)
  65. return "";
  66. var dt = ds.Tables[1];
  67. var html = new StringBuilder("<table width=\"700\" border=\"0\" cellpadding=\"0\" cellspacing=\"1\" >");
  68. html.Append("<tr>");
  69. foreach (var column in columnList)
  70. {
  71. if (column.Description != "")
  72. html.Append("<th Class=\"HeaderStyle\" align=\"left\" nowrap " + ">" + column.Description + "</th>");
  73. }
  74. html.Append("</tr>");
  75. foreach (DataRow dr in dt.Rows)
  76. {
  77. html.Append("<tr>");
  78. foreach (var column in columnList)
  79. {
  80. switch (column.Type.ToUpper())
  81. {
  82. case "M":
  83. html.Append("<td align=\"right\">" + SwiftGrid.FormatData(dr[column.Key].ToString(), "M") + "</td>");
  84. break;
  85. case "D":
  86. html.Append("<td align=\"center\">" + SwiftGrid.FormatData(dr[column.Key].ToString(), "D") + "</td>");
  87. break;
  88. case "DT":
  89. html.Append("<td align=\"center\">" + SwiftGrid.FormatData(dr[column.Key].ToString(), "DT") + "</td>");
  90. break;
  91. case "NOSORT":
  92. if (column.Description.Trim() != "")
  93. html.Append("<td align=\"left\" nowrap>" + dr[column.Key] + "</td>");
  94. break;
  95. case "CHECKBOX":
  96. break;
  97. default:
  98. html.Append("<td align=\"left\">" + dr[column.Key] + "</td>");
  99. break;
  100. }
  101. }
  102. html.Append("</tr>");
  103. }
  104. html.Append("</table>");
  105. return html.ToString();
  106. }
  107. private string GenerateCsvForReport()
  108. {
  109. var sql = GetStatic.ReadSession("sql", "");
  110. if (sql == "")
  111. return "error";
  112. var db = new SwiftDao();
  113. var ds = db.ExecuteDataset(sql);
  114. if (ds == null || ds.Tables.Count == 0)
  115. return "error";
  116. var dt = ds.Tables[0];
  117. var html = new StringBuilder("<table width=\"700\" border=\"1\" cellpadding=\"0\" cellspacing=\"1\" >");
  118. html.Append("<tr>");
  119. for (var i = 0; i < dt.Columns.Count; i++)
  120. {
  121. html.Append("<th Class=\"HeaderStyle\" align=\"left\" nowrap " + ">" + dt.Columns[i].ColumnName + "</th>");
  122. }
  123. html.Append("</tr>");
  124. foreach (DataRow dr in dt.Rows)
  125. {
  126. html.Append("<tr>");
  127. for (var i = 0; i < dt.Columns.Count; i++)
  128. {
  129. html.Append("<td align=\"left\">" + dr[i] + "</td>");
  130. }
  131. html.Append("</tr>");
  132. }
  133. html.Append("</table>");
  134. return html.ToString();
  135. }
  136. private string GenerateCsv()
  137. {
  138. var sql = GetStatic.ReadSession("exportSource", "");
  139. sql = sql.Split(',')[0].Split('=')[0] + "='download'";
  140. if (string.IsNullOrEmpty(sql))
  141. return "";
  142. var type = GetStatic.ReadQueryString("type", "").ToLower();
  143. var ds = new DataSet();
  144. if (type == "remit")
  145. {
  146. ds = remit.ExecuteDataset(sql);
  147. }
  148. else
  149. {
  150. ds = dao.ExecuteDataset(sql);
  151. }
  152. var columnList = (List<GridColumn>)Session["grid_column"];
  153. if (ds == null || columnList == null)
  154. return "";
  155. var dt = ds.Tables[0];
  156. //var html = new StringBuilder("<table width=\"700\" border=\"0\" cellpadding=\"0\" cellspacing=\"1\" >");
  157. var html = new StringBuilder("<table width=\"100%\" border=\"1\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse: collapse;\">");
  158. html.Append("<tr>");
  159. foreach (var column in columnList)
  160. {
  161. if (column.Description != "")
  162. //html.Append("<th Class=\"HeaderStyle\" align=\"left\" nowrap " + ">" + column.Description + "</th>");
  163. html.Append("<th style=\"border: 1px solid black;\">" + column.Description + "</th>"); // Added border style
  164. }
  165. html.Append("</tr>");
  166. foreach (DataRow dr in dt.Rows)
  167. {
  168. html.Append("<tr>");
  169. foreach (var column in columnList)
  170. {
  171. switch (column.Type.ToUpper())
  172. {
  173. case "M":
  174. html.Append("<td align=\"right\" style=\"border: 1px solid black;\">" + SwiftGrid.FormatData(dr[column.Key].ToString(), "M") + "</td>"); // Added border style
  175. break;
  176. case "D":
  177. html.Append("<td align=\"center\" style=\"border: 1px solid black;\">" + SwiftGrid.FormatData(dr[column.Key].ToString(), "D") + "</td>"); // Added border style
  178. break;
  179. case "DT":
  180. html.Append("<td align=\"center\" style=\"border: 1px solid black;\">" + SwiftGrid.FormatData(dr[column.Key].ToString(), "DT") + "</td>"); // Added border style
  181. break;
  182. case "NOSORT":
  183. if (column.Description.Trim() != "")
  184. html.Append("<td align=\"left\" nowrap style=\"border: 1px solid black;\">" + dr[column.Key] + "</td>"); // Added border style
  185. break;
  186. case "CHECKBOX":
  187. break;
  188. default:
  189. html.Append("<td align=\"left\" style=\"border: 1px solid black;\">" + dr[column.Key] + "</td>"); // Added border style
  190. break;
  191. }
  192. }
  193. html.Append("</tr>");
  194. }
  195. html.Append("</table>");
  196. return html.ToString();
  197. }
  198. }
  199. }