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.

537 lines
23 KiB

  1. using System;
  2. using System.Data;
  3. using System.Text;
  4. using Swift.DAL.BL.Remit.Transaction;
  5. using Swift.DAL.SwiftDAL;
  6. using Swift.web.Library;
  7. namespace Swift.web.Remit.UserControl
  8. {
  9. public partial class UcTran : System.Web.UI.UserControl
  10. {
  11. private RemittanceLibrary sl = new RemittanceLibrary();
  12. private readonly UcTranDao _obj = new UcTranDao();
  13. public bool ShowDetailBlock { get; set; }
  14. public bool ShowLogBlock { get; set; }
  15. public bool ShowCommentBlock { get; set; }
  16. public bool ShowBankDetail { get; set; }
  17. public bool ShowOfac { get; set; }
  18. public bool ShowCompliance { get; set; }
  19. public bool ShowApproveButton { get; set; }
  20. public string TranNo
  21. {
  22. get { return hddTranId.Value; }
  23. set { hddTranId.Value = value; }
  24. }
  25. public string CtrlNo
  26. {
  27. get { return lblControlNo.Text; }
  28. set { lblControlNo.Text = value; }
  29. }
  30. public string PayTokenId
  31. {
  32. get { return hddPayTokenId.Value; }
  33. set { hddPayTokenId.Value = value; }
  34. }
  35. public string TranStatus
  36. {
  37. get { return tranStatus.Text; }
  38. set { tranStatus.Text = value; }
  39. }
  40. public string ModeOfPayment
  41. {
  42. get { return modeOfPayment.Text; }
  43. set { modeOfPayment.Text = value; }
  44. }
  45. public string CreatedBy
  46. {
  47. get { return createdBy.Text; }
  48. set { createdBy.Text = value; }
  49. }
  50. public string ApprovedBy
  51. {
  52. get { return approvedBy.Text; }
  53. set { approvedBy.Text = value; }
  54. }
  55. public string PaidBy
  56. {
  57. get { return paidBy.Text; }
  58. set { paidBy.Text = value; }
  59. }
  60. public string CancelRequestedBy
  61. {
  62. get { return cancelRequestedBy.Text; }
  63. set { cancelRequestedBy.Text = value; }
  64. }
  65. public string CancelApprovedBy
  66. {
  67. get { return cancelApprovedBy.Text; }
  68. set { cancelApprovedBy.Text = value; }
  69. }
  70. public bool TranFound { get; set; }
  71. public void SearchData(string tranNo, string ctrlNo, string mode, string lockMode)
  72. {
  73. SearchData(tranNo, ctrlNo, mode, lockMode, "SEARCH", "ADM:SEARCH TXN");
  74. }
  75. public void SearchData(string tranNo, string ctrlNo, string mode, string lockMode, string viewType, string viewMsg)
  76. {
  77. tranNoName.Text = GetStatic.GetTranNoName();
  78. TranNo = tranNo;
  79. CtrlNo = ctrlNo;
  80. TranFound = false;
  81. var ds = _obj.SelectTransaction(GetStatic.GetUser(), ctrlNo, TranNo, lockMode, viewType, viewMsg);
  82. if (ds == null)
  83. {
  84. sl.ManageInvalidControlNoAttempt(Page, GetStatic.GetUser(), "N");
  85. return;
  86. }
  87. if (ds.Tables.Count > 1)
  88. {
  89. if (ds.Tables[0].Rows.Count > 0)
  90. {
  91. TranFound = true;
  92. sl.ManageInvalidControlNoAttempt(Page, GetStatic.GetUser(), "Y");
  93. var tRow = ds.Tables[0].Rows[0];
  94. lblControlNo.Text = tRow["controlNo"].ToString();
  95. hddTranId.Value = tRow["tranId"].ToString();
  96. if (tRow["tranStatus"].ToString().ToUpper() == "Cancel")
  97. {
  98. showHideTranStatus.Visible = true;
  99. highLightTranStatus.InnerText = "CANCELLED Transaction";
  100. }
  101. if (mode == "u") // mode: modification transaction
  102. {
  103. sName.Text = GetLinkTextForModification("Sender Name", "senderName", tRow);
  104. sName.Text = GetLinkTextForModification("Sender Name", "senderName", tRow);
  105. sAddress.Text = GetLinkTextForModification("Sender Address", "sAddress", tRow);
  106. sContactNo.Text = GetLinkTextForModification("Sender Contact No", "sContactNo", tRow);
  107. sIdType.Text = GetLinkTextForModification("Sender Id Type", "sIdType", tRow);
  108. sIdNo.Text = GetLinkTextForModification("Sender Id No", "sIdNo", tRow);
  109. rName.Text = GetLinkTextForModification("Receiver Name", "receiverName", tRow);
  110. rAddress.Text = GetLinkTextForModification("Receiver Address", "rAddress", tRow);
  111. rContactNo.Text = GetLinkTextForModification("Receiver Contact No", "rContactNo", tRow);
  112. rIdType.Text = GetLinkTextForModification("Receiver Id Type", "rIdType", tRow);
  113. rIdNo.Text = GetLinkTextForModification("Receiver Id No", "rIdNo", tRow);
  114. if (tRow["paymentMethod"].ToString().ToLower() == "bank deposit")
  115. {
  116. accountNo.Text = GetLinkTextForModification("Account No", "accountNo", tRow);
  117. bankName.Text = GetLinkTextForModification("Bank Name", "BankName", tRow);
  118. branchName.Text = GetLinkTextForModification("Branch Name", "pBranchName", tRow);
  119. }
  120. }
  121. else
  122. {
  123. sName.Text = tRow["senderName"].ToString(); //
  124. sAddress.Text = tRow["sAddress"].ToString(); //
  125. sContactNo.Text = tRow["sContactNo"].ToString(); //
  126. sIdType.Text = tRow["sIdType"].ToString(); //
  127. sIdNo.Text = tRow["sIdNo"].ToString(); //
  128. rName.Text = tRow["receiverName"].ToString(); //
  129. rAddress.Text = tRow["rAddress"].ToString(); //
  130. rContactNo.Text = tRow["rContactNo"].ToString(); //
  131. rIdType.Text = tRow["rIdType"].ToString(); //
  132. rIdNo.Text = tRow["rIdNo"].ToString(); //
  133. }
  134. sCountry.Text = tRow["sCountryName"].ToString();
  135. sEmail.Text = tRow["sEmail"].ToString();
  136. rCountry.Text = tRow["rCountryName"].ToString();
  137. //Sending Agent Detail
  138. sAgentName.Text = tRow["sAgentName"].ToString();
  139. sBranchName.Text = tRow["sBranchName"].ToString();
  140. sAgentCountry.Text = tRow["sCountryName"].ToString();
  141. sAgentDistrict.Text = tRow["sAgentDistrict"].ToString();
  142. sAgentCity.Text = tRow["sAgentCity"].ToString();
  143. sAgentLocation.Text = tRow["sAgentLocation"].ToString();
  144. //Payout Agent Detail
  145. pAgentCountry.Text = tRow["pAgentCountry"].ToString();
  146. pAgentDistrict.Text = tRow["pAgentDistrict"].ToString();
  147. pAgentCity.Text = tRow["pAgentCity"].ToString();
  148. if (mode == "p" && tRow["paymentMethod"].ToString().ToLower() != "bank deposit") // mode: modification payout location
  149. {
  150. pAgentLocation.Text = GetLinkPayoutLocation("Payout Location", "pAgentLocation", tRow);
  151. accountNo.Text = tRow["accountNo"].ToString();
  152. bankName.Text = tRow["BankName"].ToString();
  153. branchName.Text = tRow["BranchName"].ToString();
  154. pBranchName.Text = tRow["pBranchName"].ToString();
  155. }
  156. else if (mode == "p" && tRow["paymentMethod"].ToString().ToLower() == "bank deposit") //modify mode & bank deposit mode
  157. {
  158. accountNo.Text = GetLinkPayoutLocation("Account Number", "accountNo", tRow);
  159. bankName.Text = GetLinkPayoutLocation("Bank Name", "BankName", tRow);
  160. branchName.Text = GetLinkPayoutLocation("Branch Name", "BranchName", tRow);
  161. pBranchName.Text = GetLinkPayoutLocation("Paying Branch", "pBranchName", tRow);
  162. pAgentLocation.Text = tRow["pAgentLocation"].ToString();
  163. }
  164. else
  165. {
  166. pAgentLocation.Text = tRow["pAgentLocation"].ToString();
  167. accountNo.Text = tRow["accountNo"].ToString();
  168. bankName.Text = tRow["BankName"].ToString();
  169. branchName.Text = tRow["BranchName"].ToString();
  170. pBranchName.Text = tRow["pBranchName"].ToString();
  171. }
  172. pAgentName.Text = tRow["pAgentName"].ToString();
  173. modeOfPayment.Text = tRow["paymentMethod"].ToString();
  174. tranStatus.Text = tRow["tranStatus"].ToString();
  175. payStatus.Text = tRow["payStatus"].ToString();
  176. //pnlShowBankDetail.Visible = (tRow["paymentMethod"].ToString() == "Bank Deposit" ? true : false);
  177. trAc.Visible = (tRow["paymentMethod"].ToString().ToLower() == "bank deposit" ? true : false);
  178. trBank.Visible = (tRow["paymentMethod"].ToString().ToLower() == "bank deposit" ? true : false);
  179. trBranch.Visible = (tRow["paymentMethod"].ToString().ToLower() == "bank deposit" ? true : false);
  180. payoutAmt.Text = GetStatic.FormatData(tRow["pAmt"].ToString(), "M");
  181. relationship.Text = tRow["relationship"].ToString();
  182. payoutMsg.Text = tRow["payoutMsg"].ToString();
  183. pAmtCurr.Text = tRow["payoutCurr"].ToString();
  184. createdBy.Text = tRow["createdBy"].ToString();
  185. createdDate.Text = tRow["createdDate"].ToString();
  186. approvedBy.Text = tRow["approvedBy"].ToString();
  187. approvedDate.Text = tRow["approvedDate"].ToString();
  188. paidBy.Text = tRow["paidBy"].ToString();
  189. paidDate.Text = tRow["paidDate"].ToString();
  190. cancelRequestedBy.Text = tRow["cancelRequestBy"].ToString();
  191. cancelRequestedDate.Text = tRow["cancelRequestDate"].ToString();
  192. cancelApprovedBy.Text = tRow["cancelApprovedBy"].ToString();
  193. cancelApprovedDate.Text = tRow["cancelApprovedDate"].ToString();
  194. hddPayTokenId.Value = tRow["payTokenId"].ToString();
  195. tblCreatedLog.Visible = createdBy.Text != "";
  196. tblApprovedLog.Visible = approvedBy.Text != "";
  197. tblPaidLog.Visible = paidBy.Text != "";
  198. tblCancelRequestedLog.Visible = cancelRequestedBy.Text != "";
  199. tblCancelApprovedLog.Visible = cancelApprovedBy.Text != "";
  200. }
  201. pnlLog.Visible = false;
  202. if (ds.Tables[1].Rows.Count > 0)
  203. {
  204. pnlLog.Visible = true;
  205. var dt = ds.Tables[1];
  206. var str = new StringBuilder("<table class='trnLog' border=\"1\" cellspacing=0 cellpadding=\"3\">");
  207. str.Append("<tr>");
  208. str.Append("<th>Updated By</th>");
  209. str.Append("<th width='130px'>Updated Date</th>");
  210. str.Append("<th>Message</th>");
  211. str.Append("</tr>");
  212. foreach (DataRow dr in dt.Rows)
  213. {
  214. str.Append("<tr>");
  215. str.Append("<td align='left'>" + dr["createdBy"] + "</td>");
  216. str.Append("<td align='left'>" + dr["createdDate"] + "</td>");
  217. if (dr["fileType"].ToString() == "")
  218. {
  219. str.Append("<td align='left'>" + dr["message"] + "</td>");
  220. }
  221. else
  222. {
  223. str.Append("<td align='left'><a title='View Deposit Slip' target='_blank' href='/doc/" + lblControlNo.Text + "/" + dr["rowId"].ToString() + "." + dr["fileType"].ToString() + "'>" + dr["message"] + "</a></td>");
  224. }
  225. str.Append("</tr>");
  226. }
  227. str.Append("</table>");
  228. rptLog.InnerHtml = str.ToString();
  229. }
  230. }
  231. }
  232. public void SearchData(string tranNo, string ctrlNo)
  233. {
  234. SearchData(tranNo, ctrlNo, "");
  235. }
  236. public void SearchData(string tranNo, string ctrlNo, string lockMode)
  237. {
  238. SearchData(tranNo, ctrlNo, "", lockMode);
  239. }
  240. public string GetLinkTextForModification(string label, string fieldName, DataRow dr)
  241. {
  242. var str = "<a href=# title='Edit Record'><div class = \"link\" onclick = \"EditData('" + label + "', '" + fieldName + "', '" + dr[fieldName] + "','" + hddTranId.Value + "')\">" +
  243. dr[fieldName] + "<img border=0 src=\"/Images/edit.gif\"/></a></div>";
  244. return str;
  245. }
  246. public string GetLinkPayoutLocation(string label, string fieldName, DataRow dr)
  247. {
  248. var str = "<a href=# title='Edit Record'><div class = \"link\" onclick = \"EditPayoutLocation('" + label + "', '" + fieldName + "', '" + dr[fieldName] + "','" + hddTranId.Value + "')\">" +
  249. dr[fieldName] + "<img border=0 src=\"/Images/edit.gif\"/></a></div>";
  250. return str;
  251. }
  252. public void SearchData()
  253. {
  254. //if TranNo is not blank, search by tranNo
  255. //if CtrlNo is not blank, search by ctrlNo
  256. }
  257. private void ManageMessage(DbResult dbResult)
  258. {
  259. GetStatic.SetMessage(dbResult);
  260. GetStatic.AlertMessage(Page);
  261. }
  262. protected void Page_Load(object sender, EventArgs e)
  263. {
  264. pnlDetail.Visible = ShowDetailBlock;
  265. pnlLog.Visible = ShowLogBlock;
  266. pnlComment.Visible = ShowCommentBlock;
  267. pnlReleaseBtn.Visible = ShowApproveButton;
  268. ShowOFACList();
  269. ShowComplianceList();
  270. }
  271. protected void btnAdd_Click(object sender, EventArgs e)
  272. {
  273. AddComment();
  274. comments.Text = "";
  275. ShowLog();
  276. }
  277. #region for desplaying a transaction comments log
  278. public void ShowLog()
  279. {
  280. var ds = _obj.DisplayLog(GetStatic.GetUser(), lblControlNo.Text, hddTranId.Value, "");
  281. if (ds == null)
  282. return;
  283. if (ds.Tables[0].Rows.Count > 0)
  284. {
  285. pnlLog.Visible = true;
  286. var dt = ds.Tables[0];
  287. var str = new StringBuilder("<table class='trnLog' border=\"1\" cellspacing=0 cellpadding=\"3\">");
  288. str.Append("<tr>");
  289. str.Append("<th>Updated By</th>");
  290. str.Append("<th width='130px'>Updated Date</th>");
  291. str.Append("<th>Message</th>");
  292. str.Append("</tr>");
  293. foreach (DataRow dr in dt.Rows)
  294. {
  295. str.Append("<tr>");
  296. str.Append("<td align='left'>" + dr["createdBy"] + "</td>");
  297. str.Append("<td align='left'>" + dr["createdDate"] + "</td>");
  298. if (dr["fileType"].ToString() == "")
  299. {
  300. str.Append("<td align='left'>" + dr["message"] + "</td>");
  301. }
  302. else
  303. {
  304. str.Append("<td align='left'><a title='View Deposit Slip' target='_blank' href='/doc/" + lblControlNo.Text + "/" + dr["rowId"].ToString() + "." + dr["fileType"].ToString() + "'>" + dr["message"] + "</a></td>");
  305. }
  306. str.Append("</tr>");
  307. }
  308. str.Append("</table>");
  309. rptLog.InnerHtml = str.ToString();
  310. }
  311. }
  312. #endregion
  313. public void ShowOFACList()
  314. {
  315. var ds = _obj.DisplayOFAC(GetStatic.GetUser(), lblControlNo.Text, hddTranId.Value, "");
  316. if (ds == null)
  317. {
  318. pnlOFAC.Visible = false;
  319. return;
  320. }
  321. if (ds.Tables[0].Rows.Count > 0)
  322. {
  323. var dt = ds.Tables[0];
  324. int cols = dt.Columns.Count;
  325. var str = new StringBuilder("<table class='trnLog' border=\"1\" cellspacing=0 cellpadding=\"3\">");
  326. str.Append("<tr>");
  327. for (int i = 0; i < cols; i++)
  328. {
  329. str.Append("<th><div align=\"left\">" + dt.Columns[i].ColumnName + "</div></th>");
  330. }
  331. str.Append("</tr>");
  332. foreach (DataRow dr in dt.Rows)
  333. {
  334. str.Append("<tr>");
  335. for (int i = 0; i < cols; i++)
  336. {
  337. str.Append("<td align=\"left\">" + dr[i].ToString() + "</td>");
  338. }
  339. str.Append("</tr>");
  340. }
  341. str.Append("</table>");
  342. displayOFAC.InnerHtml = str.ToString();
  343. string checkFlag = _obj.checkFlagOFAC(GetStatic.GetUser(), lblControlNo.Text, hddTranId.Value, "");
  344. if (checkFlag == "Y")
  345. pnlReleaseBtn.Visible = false;
  346. GetStatic.AlertMessage(Page);
  347. }
  348. }
  349. public void ShowComplianceList()
  350. {
  351. var ds = _obj.DisplayCompliance(GetStatic.GetUser(), lblControlNo.Text, hddTranId.Value, "");
  352. if (ds == null)
  353. {
  354. pnlCompliance.Visible = false;
  355. return;
  356. }
  357. if (ds.Tables[0].Rows.Count > 0)
  358. {
  359. var dt = ds.Tables[0];
  360. int cols = dt.Columns.Count;
  361. var str = new StringBuilder("<table class='trnLog' border=\"1\" cellspacing=0 cellpadding=\"3\">");
  362. str.Append("<tr>");
  363. for (int i = 2; i < cols; i++)
  364. {
  365. str.Append("<th><div align=\"left\">" + dt.Columns[i].ColumnName + "</div></th>");
  366. }
  367. str.Append("</tr>");
  368. foreach (DataRow dr in dt.Rows)
  369. {
  370. str.Append("<tr>");
  371. for (int i = 2; i < cols; i++)
  372. {
  373. if (i == 4)
  374. {
  375. var strArr = dr["Matched Tran ID"].ToString().Split(',');
  376. var arrlen = strArr.Length;
  377. str.Append("<td>");
  378. for (int j = 0; j < arrlen; j++)
  379. {
  380. str.Append("<a href=\"#\" onclick=\"OpenInNewWindow('/Remit/Transaction/Reports/SearchTransaction.aspx?tranId=" + strArr[j] + "')\">" + strArr[j] + "</a> &nbsp;");
  381. }
  382. str.Append("</td>");
  383. }
  384. else if (i == 3)
  385. {
  386. str.Append("<td align=\"left\"><a href=\"#\" onclick=\"OpenInNewWindow('/Remit/OFACManagement/ComplianceDetail.aspx?id=" + dr["rowId"].ToString() + "&csID=" + dr["csDetailRecId"] + "')\">" + dr[i].ToString() + "</a></td>");
  387. }
  388. else
  389. {
  390. str.Append("<td align=\"left\">" + dr[i].ToString() + "</td>");
  391. }
  392. }
  393. str.Append("</tr>");
  394. }
  395. str.Append("</table>");
  396. displayCompliance.InnerHtml = str.ToString();
  397. string checkFlag = _obj.checkFlagCompliance(GetStatic.GetUser(), lblControlNo.Text, hddTranId.Value, "");
  398. if (checkFlag == "Y")
  399. pnlReleaseBtn.Visible = false;
  400. GetStatic.AlertMessage(Page);
  401. }
  402. }
  403. protected void btnApproveCompliance_Click(object sender, EventArgs e)
  404. {
  405. SaveComplianceApproveRemarks();
  406. }
  407. public void SaveComplianceApproveRemarks()
  408. {
  409. DbResult dbResult = _obj.SaveApproveRemarksComplaince(GetStatic.GetUser(), lblControlNo.Text, hddTranId.Value, remarksCompliance.Text, remarksOFAC.Text);
  410. GetStatic.SetMessage(dbResult);
  411. if (dbResult.ErrorCode != "0")
  412. {
  413. GetStatic.AlertMessage(Page);
  414. }
  415. else
  416. {
  417. ShowComplianceList();
  418. ShowOFACList();
  419. }
  420. }
  421. public void AddComment()
  422. {
  423. DbResult dbResult = _obj.AddComment(GetStatic.GetUser(), lblControlNo.Text, hddTranId.Value, comments.Text);
  424. ManageMessage(dbResult);
  425. if (dbResult.ErrorCode != "0")
  426. {
  427. GetStatic.CallBackJs1(Page, "Result", "alert('" + dbResult.Msg + "')");
  428. return;
  429. }
  430. else
  431. {
  432. SendEmail();
  433. }
  434. }
  435. private void SendEmail()
  436. {
  437. var smtpMailSetting = new SmtpMailSetting();
  438. var ds = _obj.GetEmailFormat(GetStatic.GetUser(), hddTranId.Value, comments.Text);
  439. if (ds == null)
  440. return;
  441. if (ds.Tables.Count == 0)
  442. return;
  443. if (ds.Tables.Count > 1)
  444. {
  445. //Email Server Settings
  446. if (ds.Tables[0].Rows.Count > 0)
  447. {
  448. var dr1 = ds.Tables[0].Rows[0];
  449. smtpMailSetting.SmtpServer = dr1["smtpServer"].ToString();
  450. smtpMailSetting.SmtpPort = Convert.ToInt32(dr1["smtpPort"]);
  451. smtpMailSetting.SendEmailId = dr1["sendID"].ToString();
  452. smtpMailSetting.SendEmailPwd = dr1["sendPSW"].ToString();
  453. }
  454. if (ds.Tables[1].Rows.Count == 0)
  455. return;
  456. //Email Receiver
  457. if (ds.Tables[1].Rows.Count > 0)
  458. {
  459. var dt = ds.Tables[1];
  460. foreach (DataRow dr2 in dt.Rows)
  461. {
  462. if (!string.IsNullOrEmpty(smtpMailSetting.ToEmails))
  463. smtpMailSetting.ToEmails = smtpMailSetting.ToEmails + ",";
  464. smtpMailSetting.ToEmails = smtpMailSetting.ToEmails + dr2["email"].ToString();
  465. }
  466. }
  467. //Email Subject and Body
  468. if (ds.Tables[2].Rows.Count > 0)
  469. {
  470. var dr3 = ds.Tables[2].Rows[0];
  471. if (dr3 == null)
  472. return;
  473. smtpMailSetting.MsgSubject = dr3[0].ToString();
  474. smtpMailSetting.MsgBody = dr3[1].ToString();
  475. }
  476. }
  477. smtpMailSetting.SendSmtpMail(smtpMailSetting);
  478. }
  479. }
  480. }