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.

435 lines
15 KiB

  1. using Swift.DAL.Remittance;
  2. using Swift.DAL.Remittance.BonusManagement;
  3. using Swift.DAL.SwiftDAL;
  4. using Swift.web.Component.Grid;
  5. using Swift.web.Component.Grid.gridHelper;
  6. using Swift.web.Library;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.ComponentModel;
  10. using System.Data;
  11. using System.Text;
  12. namespace Swift.web.Remit.BonusManagement.ApproveRedeem
  13. {
  14. public partial class Manage : System.Web.UI.Page
  15. {
  16. private readonly SwiftLibrary _swiftLibrary = new SwiftLibrary();
  17. readonly RedeemProcessDao _redeemDao = new RedeemProcessDao();
  18. private readonly SwiftGrid _grid = new SwiftGrid();
  19. protected const string GridName = "grid_reedem";
  20. private const string ViewFunctionId = "20821300";
  21. protected void Page_Load(object sender, EventArgs e)
  22. {
  23. if (!IsPostBack)
  24. {
  25. Authenticate();
  26. }
  27. LoadGrid();
  28. }
  29. private void Authenticate()
  30. {
  31. _swiftLibrary.CheckAuthentication(ViewFunctionId);
  32. }
  33. private string GetCustomerId()
  34. {
  35. return GetStatic.ReadQueryString("customerId", "");
  36. }
  37. private void Delete()
  38. {
  39. string id = hddRedeemId.Value;
  40. if (string.IsNullOrWhiteSpace(id))
  41. return;
  42. var dbResult = _redeemDao.Delete(GetStatic.GetUser(), id);
  43. ManageMessageReject(dbResult);
  44. }
  45. private void ManageMessageApprove(DbResult dbResult)
  46. {
  47. if (dbResult.ErrorCode == "0")
  48. {
  49. var branchEmail = dbResult.Id;
  50. var obj = new BonusManagementDao();
  51. var dr = obj.SelectById(GetStatic.GetUser(), hddRedeemId.Value);
  52. var redeemReqTable = new StringBuilder();
  53. redeemReqTable.Append("<table border=\"1\">");
  54. redeemReqTable.Append("<tr>");
  55. redeemReqTable.Append("<th>Ref No.</th>");
  56. redeemReqTable.Append("<th>Sender Name</th>");
  57. redeemReqTable.Append("<th>Id Type</th>");
  58. redeemReqTable.Append("<th>Id Number</th>");
  59. redeemReqTable.Append("<th>Bonus Point</th>");
  60. redeemReqTable.Append("<th>Bonus Point Pending</th>");
  61. redeemReqTable.Append("<th>Requested Gift</th>");
  62. redeemReqTable.Append("<th>Requested Branch</th>");
  63. redeemReqTable.Append("<th>Requested User</th>");
  64. redeemReqTable.Append("<th>Requested Date and Time</th>");
  65. redeemReqTable.Append("</tr>");
  66. redeemReqTable.Append("<tr>");
  67. redeemReqTable.Append("<td>" + dr["refno"] + "</td>");
  68. redeemReqTable.Append("<td>" + dr["customerName"] + "</td>");
  69. redeemReqTable.Append("<td>" + dr["idType"] + "</td>");
  70. redeemReqTable.Append("<td>" + dr["idNumber"] + "</td>");
  71. redeemReqTable.Append("<td>" + dr["bonusPoint"] + "</td>");
  72. redeemReqTable.Append("<td>" + dr["bonusPointPending"] + "</td>");
  73. redeemReqTable.Append("<td>" + dr["bonusGiftItem"] + "</td>");
  74. redeemReqTable.Append("<td>" + dr["requestedBranch"] + "</td>");
  75. redeemReqTable.Append("<td>" + dr["requestedBy"] + "</td>");
  76. redeemReqTable.Append("<td>" + dr["requestedDate"] + "</td>");
  77. redeemReqTable.Append("</tr>");
  78. redeemReqTable.Append("</table>");
  79. var htmlAdmin = new StringBuilder();
  80. htmlAdmin.Append("Attn: Branch Operation Dept.<br/><br/>");
  81. htmlAdmin.Append("Bonus redeem request has been approved for the following.<br/><br/>");
  82. htmlAdmin.Append(redeemReqTable.ToString());
  83. htmlAdmin.Append("<br/><br/>");
  84. htmlAdmin.Append("Thank you");
  85. var msgSubjectAdmin = "Bonus Redeem Approval";
  86. var msgBodyAdmin = htmlAdmin.ToString();
  87. var htmlAgent = new StringBuilder();
  88. htmlAgent.Append("Dear " + dr["requestedBy"] + ",<br/><br/>");
  89. htmlAgent.Append("Bonus redeem request has been approved for the following.<br/><br/>");
  90. htmlAgent.Append(redeemReqTable.ToString());
  91. htmlAgent.Append("<br/><br/>");
  92. htmlAgent.Append("Thank you<br/>");
  93. htmlAgent.Append("GME Operation Department");
  94. var msgBodyAgent = "Bonus Redeem Approval";
  95. var msgSubjectAgent = htmlAgent.ToString();
  96. }
  97. LoadGrid();
  98. GetStatic.PrintMessage(Page, dbResult);
  99. }
  100. private void ManageMessageReject(DbResult dbResult)
  101. {
  102. if (dbResult.ErrorCode == "0")
  103. {
  104. var branchEmail = dbResult.Id;
  105. var obj = new BonusManagementDao();
  106. var dr = obj.SelectById(GetStatic.GetUser(), hddRedeemId.Value);
  107. var redeemReqTable = new StringBuilder();
  108. redeemReqTable.Append("<table border=\"1\">");
  109. redeemReqTable.Append("<tr>");
  110. redeemReqTable.Append("<th>Ref No.</th>");
  111. redeemReqTable.Append("<th>Sender Name</th>");
  112. redeemReqTable.Append("<th>Id Type</th>");
  113. redeemReqTable.Append("<th>Id Number</th>");
  114. redeemReqTable.Append("<th>Bonus Point</th>");
  115. redeemReqTable.Append("<th>Bonus Point Pending</th>");
  116. redeemReqTable.Append("<th>Requested Gift</th>");
  117. redeemReqTable.Append("<th>Requested Branch</th>");
  118. redeemReqTable.Append("<th>Requested User</th>");
  119. redeemReqTable.Append("<th>Requested Date and Time</th>");
  120. redeemReqTable.Append("</tr>");
  121. redeemReqTable.Append("<tr>");
  122. redeemReqTable.Append("<td>" + dr["refno"] + "</td>");
  123. redeemReqTable.Append("<td>" + dr["customerName"] + "</td>");
  124. redeemReqTable.Append("<td>" + dr["idType"] + "</td>");
  125. redeemReqTable.Append("<td>" + dr["idNumber"] + "</td>");
  126. redeemReqTable.Append("<td>" + dr["bonusPoint"] + "</td>");
  127. redeemReqTable.Append("<td>" + dr["bonusPointPending"] + "</td>");
  128. redeemReqTable.Append("<td>" + dr["bonusGiftItem"] + "</td>");
  129. redeemReqTable.Append("<td>" + dr["requestedBranch"] + "</td>");
  130. redeemReqTable.Append("<td>" + dr["requestedBy"] + "</td>");
  131. redeemReqTable.Append("<td>" + dr["requestedDate"] + "</td>");
  132. redeemReqTable.Append("</tr>");
  133. redeemReqTable.Append("</table>");
  134. var htmlAdmin = new StringBuilder();
  135. htmlAdmin.Append("Attn: Branch Operation Dept.<br/><br/>");
  136. htmlAdmin.Append("Bonus redeem request has been rejected for the following.<br/><br/>");
  137. htmlAdmin.Append(redeemReqTable.ToString());
  138. htmlAdmin.Append("<br/><br/>");
  139. htmlAdmin.Append("Thank you");
  140. var msgSubjectAdmin = "Bonus Redeem Rejected";
  141. var msgBodyAdmin = htmlAdmin.ToString();
  142. var htmlAgent = new StringBuilder();
  143. htmlAgent.Append("Dear " + dr["requestedBy"] + ",<br/><br/>");
  144. htmlAgent.Append("Bonus redeem request has been rejected for the following.<br/><br/>");
  145. htmlAgent.Append(redeemReqTable.ToString());
  146. htmlAgent.Append("<br/><br/>");
  147. htmlAgent.Append("Thank you<br/>");
  148. htmlAgent.Append("GME Operation Department");
  149. var msgBodyAgent = "Bonus Redeem Rejected";
  150. var msgSubjectAgent = htmlAgent.ToString();
  151. }
  152. LoadGrid();
  153. GetStatic.PrintMessage(Page, dbResult);
  154. }
  155. private void LoadGrid()
  156. {
  157. _grid.FilterList = new List<GridFilter>
  158. {
  159. new GridFilter("userName", "Customer User Name", "LT"),
  160. new GridFilter("agent", "Agent", "LT")
  161. };
  162. _grid.ColumnList = new List<GridColumn>
  163. {
  164. new GridColumn("SN", "SN", "", "T"),
  165. new GridColumn("userName", "Customer User Name", "", "T"),
  166. new GridColumn("customerName", "Customer<br>Name", "", "T"),
  167. new GridColumn("redeemedDate", "Redeemed<br>Date", "", "T"),
  168. new GridColumn("agent", "Agent", "", "T"),
  169. new GridColumn("award", "Gift<br>Item", "", "T"),
  170. new GridColumn("milageEarned", "Total Bonus<br>Point", "", "T"),
  171. new GridColumn("redeemed", "Redeemed", "", "T"),
  172. new GridColumn("availableBonus", "Bonus<br>Available", "", "T"),
  173. };
  174. _grid.GridType = 1;
  175. _grid.GridName = GridName;
  176. _grid.GridDataSource = SwiftGrid.GridDS.RemittanceDB;
  177. _grid.ShowFilterForm = true;
  178. _grid.ShowPagingBar = true;
  179. _grid.PageSize = 100;
  180. _grid.GridWidth = 1000;
  181. _grid.GridMinWidth = 800;
  182. _grid.RowIdField = "refNo";
  183. _grid.ThisPage = "Manage";
  184. _grid.AllowCustomLink = true;
  185. _grid.AllowDelete = false;
  186. _grid.InputPerRow = 2;
  187. _grid.CustomLinkVariables = "refNo,customerId,redeemed,userName,mobile";
  188. _grid.CustomLinkText = "<input id='btn1' type='button' value='Approve' onclick='openApprovedRemarks(@refNo,@customerId,@redeemed,@mobile)' class='btn btn-primary'/>&nbsp;&nbsp<input id='btn2' type='button' value='Reject' onclick='openRejectRemarks(@refNo,@customerId,@redeemed,@mobile)' class='btn btn-primary'/>&nbsp;&nbsp<input id='btn3' type='button' value='TXN History' onclick='ShowBonusPointInNewWindow(\"@userName\")' class='btn btn-primary'/>";
  189. _grid.SetComma();
  190. string sql = "EXEC [proc_bonusRedeemHistoryAdmin] @flag='p'";
  191. rpt_grid.InnerHtml = _grid.CreateGrid(sql);
  192. }
  193. private void Approve(string remarks)
  194. {
  195. if (string.IsNullOrWhiteSpace(hddRedeemId.Value))
  196. return;
  197. var dbResult = _redeemDao.ApproveRedeem(GetStatic.GetUser(), hddRedeemId.Value, hddCustomerId.Value, remarks, hddRedeemedBonus.Value);
  198. if (dbResult.ErrorCode == "2")
  199. {
  200. Response.Write("<script>alert('Redeem approval failed! This customer has negative value bonus point');</script>");
  201. }
  202. else
  203. {
  204. ManageMessage(dbResult);
  205. }
  206. }
  207. private void Reject(string remarks)
  208. {
  209. if (string.IsNullOrWhiteSpace(hddRedeemId.Value))
  210. return;
  211. var dbResult = _redeemDao.RejectRedeem(GetStatic.GetUser(), hddRedeemId.Value, hddCustomerId.Value, remarks, hddRedeemedBonus.Value);
  212. ManageMessage(dbResult);
  213. }
  214. private void ManageMessage(DbResult dbResult)
  215. {
  216. GetStatic.SetMessage(dbResult);
  217. if (dbResult.ErrorCode == "0")
  218. {
  219. GetStatic.PrintMessage(Page, dbResult);
  220. //GetStatic.SendSMS(hdnMobile.Value, dbResult.Extra);
  221. Response.Redirect("ApprovedList.aspx");
  222. }
  223. GetStatic.PrintMessage(Page, dbResult);
  224. }
  225. protected void btnApprove_Click(object sender, EventArgs e)
  226. {
  227. //string refNo = hddRedeemId.Value;
  228. //string customerId = hddCustomerId.Value;
  229. //if (!isRefresh)
  230. //{
  231. // Approve();
  232. //}
  233. }
  234. protected void btnDelete_Click(object sender, EventArgs e)
  235. {
  236. if (!isRefresh)
  237. {
  238. if (string.IsNullOrWhiteSpace(hddRedeemId.Value))
  239. return;
  240. Delete();
  241. }
  242. }
  243. #region Mail Send
  244. private void ComposeAndSendMail(string branchEmail, string msgSubjectAdmin, string msgBodyAdmin, string msgSubjectAgent, string msgBodyAgent)
  245. {
  246. ComposeMail(branchEmail, msgSubjectAdmin, msgBodyAdmin, msgSubjectAgent, msgBodyAgent);
  247. SendMail();
  248. }
  249. readonly SmtpMailSetting _smtpMailSetting = new SmtpMailSetting();
  250. readonly SmtpMailSetting _mailToAgent = new SmtpMailSetting();
  251. private delegate void DoStuff(); //delegate for the action
  252. private void SendMail()
  253. {
  254. var myAction = new DoStuff(AsyncMailProcessing);
  255. //invoke it asynchrnously, control passes to next statement
  256. myAction.BeginInvoke(null, null);
  257. }
  258. private void AsyncMailProcessing()
  259. {
  260. var bw = new BackgroundWorker();
  261. // this allows our worker to report progress during work
  262. bw.WorkerReportsProgress = true;
  263. // what to do in the background thread
  264. bw.DoWork += new DoWorkEventHandler(
  265. delegate(object o, DoWorkEventArgs args)
  266. {
  267. var b = o as BackgroundWorker;
  268. _smtpMailSetting.SendSmtpMail(_smtpMailSetting);
  269. _mailToAgent.SendSmtpMail(_mailToAgent);
  270. });
  271. // what to do when progress changed (update the progress bar for example)
  272. bw.ProgressChanged += new ProgressChangedEventHandler(
  273. delegate(object o, ProgressChangedEventArgs args)
  274. {
  275. //label1.Text = string.Format("{0}% Completed", args.ProgressPercentage);
  276. });
  277. // what to do when worker completes its task (notify the user)
  278. bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(
  279. delegate(object o, RunWorkerCompletedEventArgs args)
  280. {
  281. GetStatic.PrintSuccessMessage(Page, "Mail sent successfully");
  282. });
  283. bw.RunWorkerAsync();
  284. }
  285. //Compose Email From Email Template for Admin
  286. private void ComposeMail(string branchEmail, string msgSubjectAdmin, string msgBodyAdmin, string msgSubjectAgent, string msgBodyAgent)
  287. {
  288. var obj = new SystemEmailSetupDao();
  289. var ds = obj.GetDataForEmail(GetStatic.GetUser(), "Bonus", "", "");
  290. if (ds == null)
  291. return;
  292. if (ds.Tables.Count == 0)
  293. return;
  294. if (ds.Tables.Count > 1)
  295. {
  296. //Email Server Settings
  297. if (ds.Tables[0].Rows.Count > 0)
  298. {
  299. var dr1 = ds.Tables[0].Rows[0];
  300. _smtpMailSetting.SmtpServer = dr1["smtpServer"].ToString();
  301. _smtpMailSetting.SmtpPort = Convert.ToInt32(dr1["smtpPort"]);
  302. _smtpMailSetting.SendEmailId = dr1["sendID"].ToString();
  303. _smtpMailSetting.SendEmailPwd = dr1["sendPSW"].ToString();
  304. _smtpMailSetting.EnableSsl = GetStatic.GetCharToBool(dr1["enableSsl"].ToString());
  305. _mailToAgent.SmtpServer = dr1["smtpServer"].ToString();
  306. _mailToAgent.SmtpPort = Convert.ToInt32(dr1["smtpPort"]);
  307. _mailToAgent.SendEmailId = dr1["sendID"].ToString();
  308. _mailToAgent.SendEmailPwd = dr1["sendPSW"].ToString();
  309. _mailToAgent.EnableSsl = GetStatic.GetCharToBool(dr1["enableSsl"].ToString());
  310. }
  311. if (ds.Tables[1].Rows.Count == 0)
  312. return;
  313. //Email Receiver
  314. if (ds.Tables[1].Rows.Count > 0)
  315. {
  316. var dt = ds.Tables[1];
  317. foreach (DataRow dr2 in dt.Rows)
  318. {
  319. if (!string.IsNullOrEmpty(_smtpMailSetting.ToEmails))
  320. _smtpMailSetting.ToEmails = _smtpMailSetting.ToEmails + ",";
  321. _smtpMailSetting.ToEmails = _smtpMailSetting.ToEmails + dr2["email"].ToString();
  322. }
  323. }
  324. _mailToAgent.ToEmails = branchEmail;
  325. //Email Subject and Body
  326. _smtpMailSetting.MsgSubject = msgSubjectAdmin;
  327. _smtpMailSetting.MsgBody = msgBodyAdmin;
  328. _mailToAgent.MsgSubject = msgSubjectAgent;
  329. _mailToAgent.MsgBody = msgBodyAgent;
  330. }
  331. }
  332. #endregion
  333. #region Browser Refresh
  334. private bool refreshState;
  335. private bool isRefresh;
  336. protected override void LoadViewState(object savedState)
  337. {
  338. object[] AllStates = (object[])savedState;
  339. base.LoadViewState(AllStates[0]);
  340. refreshState = bool.Parse(AllStates[1].ToString());
  341. if (Session["ISREFRESH"] != null && Session["ISREFRESH"] != "")
  342. isRefresh = (refreshState == (bool)Session["ISREFRESH"]);
  343. }
  344. protected override object SaveViewState()
  345. {
  346. Session["ISREFRESH"] = refreshState;
  347. object[] AllStates = new object[3];
  348. AllStates[0] = base.SaveViewState();
  349. AllStates[1] = !(refreshState);
  350. return AllStates;
  351. }
  352. #endregion
  353. protected void btnReject_Click(object sender, EventArgs e)
  354. {
  355. //string refNo = hddRedeemId.Value;
  356. //string customerId = hddCustomerId.Value;
  357. //if (!isRefresh)
  358. //{
  359. // Reject();
  360. //}
  361. }
  362. protected void btnApproveReject_Click(object sender, EventArgs e)
  363. {
  364. if (hdnFlag.Value.ToString() == "approve")
  365. {
  366. Approve(txtremarks.Text);
  367. }
  368. else if (hdnFlag.Value.ToString() == "reject")
  369. {
  370. Reject(txtremarks.Text);
  371. }
  372. else
  373. {
  374. Response.Write("<script>alert('Something went wrong!')</script>");
  375. }
  376. }
  377. }
  378. }