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.

232 lines
10 KiB

11 months ago
11 months ago
8 months ago
3 months ago
11 months ago
11 months ago
7 months ago
3 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
7 months ago
7 months ago
  1. using JMETxnPushScheduler.API;
  2. using JMETxnPushScheduler.Common;
  3. using JMETxnPushScheduler.DAO;
  4. using Newtonsoft.Json;
  5. using Swift.API.Common.Enum;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Data;
  9. namespace JMETxnPushScheduler.Business
  10. {
  11. public class TxnPush
  12. {
  13. TxnPushDAO _txnPush = new TxnPushDAO();
  14. public void TxnSyncMain()
  15. {
  16. DataTable txnData = _txnPush.GetTxnDataForApprove();
  17. if (txnData.Rows.Count == 0 || null == txnData)
  18. {
  19. return;
  20. }
  21. Console.WriteLine("Total data fetched for sync: " + txnData.Rows.Count.ToString());
  22. foreach (DataRow item in txnData.Rows)
  23. {
  24. CommonResponse _dbRes = _txnPush.GetTxnApproveData("schedular", item["ID"].ToString());
  25. if (_dbRes.ResponseCode == "0")
  26. {
  27. Console.WriteLine("Send txn started: " + item["CONTROLNO"].ToString());
  28. string newSession = Guid.NewGuid().ToString().Replace("-", "");
  29. var result = _txnPush.GetHoldedTxnForApprovedByAdmin("scheduler", item["ID"].ToString(), newSession);
  30. Console.WriteLine("Send txn completed with response msg: " + result.Msg);
  31. List<string> exclude = new List<string>() { "7000", "100" };
  32. if (result.ResponseCode != null && result.ResponseCode != "0")
  33. {
  34. if (!exclude.Contains(result.ResponseCode) || !result.Msg.Contains("task was canceled"))
  35. _txnPush.SyncTxnAsComment(_dbRes.Msg, item["ID"].ToString(), item["CONTROLNO"].ToString(), !string.IsNullOrEmpty(result.Extra) ? result.Extra : result.ResponseCode, result.Msg);
  36. else
  37. Console.WriteLine("SyncTxnAsComment exclude Code: " + result.ResponseCode);
  38. }
  39. if (_dbRes.Msg == "394397")
  40. {
  41. if (result.ResponseCode == "0")
  42. {
  43. _txnPush.UpdateTxnPost(item["ID"].ToString(), result.Extra);
  44. GetTxnDetails(item["ID"].ToString());
  45. //_txnPush.UpdateTxnInstantPaid(item["ID"].ToString());
  46. }
  47. else if (result.ResponseCode == "100")//Transaction has been processed for Bank Deposit.
  48. {
  49. _txnPush.UpdateTxnPost(item["ID"].ToString(), result.Extra);
  50. GetTxnDetails(item["ID"].ToString());
  51. }
  52. else if (result.ResponseCode == "7000" && result.Msg.Contains("ALREADY USED"))
  53. {
  54. _txnPush.UpdateTxnPost(item["ID"].ToString());
  55. // GetTxnDetails(item["ID"].ToString());
  56. }
  57. }
  58. else if (_dbRes.Msg == "394449") //GCC
  59. {
  60. if (result.ResponseCode == "0")
  61. {
  62. _txnPush.UpdateTxnPost(item["ID"].ToString(), result.Extra, result.Id);
  63. GetTxnDetails(item["ID"].ToString());
  64. }
  65. }
  66. else if (_dbRes.Msg == "394502")
  67. {
  68. if (result.ResponseCode == "0")
  69. {
  70. _txnPush.UpdateTxnPost(item["ID"].ToString(), result.Extra, result.Id);
  71. GetTxnDetails(item["ID"].ToString());
  72. }
  73. }
  74. else
  75. {
  76. if (result.ResponseCode == "0")
  77. {
  78. _txnPush.UpdateTxnPost(item["ID"].ToString());
  79. GetTxnDetails(item["ID"].ToString());
  80. }
  81. }
  82. }
  83. }
  84. }
  85. public void GetTxnDetails(string tranId)
  86. {
  87. TxnDetails cd = _txnPush.GetTxnDetails(tranId);
  88. List<Mapping> bodyMappings = new List<Mapping>();
  89. bodyMappings.Add(new Mapping() { SValue = "CustomerName", SText = cd.senderName });
  90. bodyMappings.Add(new Mapping() { SValue = "TxnDate", SText = cd.TranDate });
  91. bodyMappings.Add(new Mapping() { SValue = "RefNum", SText = cd.controlNo });
  92. bodyMappings.Add(new Mapping() { SValue = "TxnDate", SText = cd.TranDate });
  93. bodyMappings.Add(new Mapping() { SValue = "PayoutCountry", SText = cd.PayoutCountry });
  94. bodyMappings.Add(new Mapping() { SValue = "BankName", SText = cd.BankName });
  95. bodyMappings.Add(new Mapping() { SValue = "BankBranch", SText = cd.BankBranch });
  96. bodyMappings.Add(new Mapping() { SValue = "AccNum", SText = cd.AccountNo });
  97. bodyMappings.Add(new Mapping() { SValue = "BeneName", SText = cd.BeneficiaryName });
  98. bodyMappings.Add(new Mapping() { SValue = "PayoutAmt", SText = cd.PayoutAmount });
  99. bodyMappings.Add(new Mapping() { SValue = "TransferAmt", SText = cd.TransferAmount });
  100. bodyMappings.Add(new Mapping() { SValue = "Fee", SText = cd.serviceCharge });
  101. bodyMappings.Add(new Mapping() { SValue = "TotalAmt", SText = cd.TotalAmount });
  102. if (cd.paymentMethod.ToUpper() == "BANK DEPOSIT")
  103. {
  104. SendNotificationRequestMobile request = new SendNotificationRequestMobile()
  105. {
  106. IsBulkNotification = false,
  107. UserName = cd.email,
  108. ProcessId = "BankTxnPushedToAPI",
  109. ProviderId = NotifyTemplate.BANK_TXN_POST.ToString(),
  110. NotificationTypeId = NOTIFICATION_TYPE.EMAIL.ToString(),
  111. Template = NotifyTemplate.BANK_TXN_POST,
  112. Recipients = new List<RecipientViewModel>()
  113. {
  114. new RecipientViewModel()
  115. {
  116. NotificationContent = new NotificationDTO() {
  117. Body = JsonConvert.SerializeObject(bodyMappings),
  118. //Title will be set by mapping json
  119. },
  120. Address= cd.email
  121. }
  122. }
  123. };
  124. var r = NotifierV2.SendNotification(request);
  125. Console.Write(JsonConvert.SerializeObject(r));
  126. }
  127. else if (cd.paymentMethod.ToUpper() == "CASH PAYMENT")
  128. {
  129. SendNotificationRequestMobile request = new SendNotificationRequestMobile()
  130. {
  131. IsBulkNotification = false,
  132. UserName = cd.email,
  133. ProcessId = "CashTxnPushedToAPI",
  134. ProviderId = NotifyTemplate.CASH_TXN_POST.ToString(),
  135. NotificationTypeId = NOTIFICATION_TYPE.EMAIL.ToString(),
  136. Template = NotifyTemplate.CASH_TXN_POST,
  137. Recipients = new List<RecipientViewModel>()
  138. {
  139. new RecipientViewModel()
  140. {
  141. NotificationContent = new NotificationDTO() {
  142. Body = JsonConvert.SerializeObject(bodyMappings),
  143. //Title will be set by mapping json
  144. },
  145. Address= cd.email
  146. }
  147. }
  148. };
  149. var r1 = NotifierV2.SendNotification(request);
  150. Console.Write(JsonConvert.SerializeObject(r1));
  151. }
  152. }
  153. public void TxnReleaseMain()
  154. {
  155. try
  156. {
  157. TxnPushDAO _txnPush = new TxnPushDAO();
  158. DataTable txnData = _txnPush.GetTxnDataForRelease();
  159. if (txnData.Rows.Count == 0 || null == txnData)
  160. {
  161. return;
  162. }
  163. GetStatic.WriteLog("Total data fetched for Release: " + txnData.Rows.Count.ToString());
  164. // Console.WriteLine("Total data fetched for Release: " + txnData.Rows.Count.ToString());
  165. foreach (DataRow item in txnData.Rows)
  166. {
  167. string ProcessId = Guid.NewGuid().ToString().Replace("-", "") + ":" + item["partner"].ToString() + ":releaseTxn";
  168. Console.WriteLine("Release txn started: " + item["CONTROLNO"].ToString());
  169. SendTransactionServices _tpSend = new SendTransactionServices();
  170. var request = new TFReleaseTxnRequest()
  171. {
  172. TfPin = item["CONTROLNO"].ToString(),
  173. TxnId = item["CONTROLNO2"].ToString(),
  174. RequestBy = "scheduler",
  175. UserName = "scheduler",
  176. ProviderId = item["sSuperAgent"].ToString(),
  177. ProcessId = ProcessId.Substring(ProcessId.Length - 40, 40)
  178. };
  179. GetStatic.WriteLog(item["CONTROLNO"].ToString() + " " + Newtonsoft.Json.JsonConvert.SerializeObject(request));
  180. var result = _tpSend.ReleaseTransaction(request);
  181. Console.WriteLine("Release txn completed with response msg: " + result.Msg);
  182. if (result.ResponseCode == "0")
  183. {
  184. // _txnPush.UpdateTxnPost(item["ID"].ToString());
  185. _txnPush.UpdateTxnPostRelease(item["ID"].ToString());
  186. }
  187. else
  188. {
  189. GetStatic.WriteLog("Release txn failed with response msg: " + item["CONTROLNO"].ToString() + " " + result.Msg);
  190. }
  191. }
  192. }
  193. catch (Exception ex)
  194. {
  195. GetStatic.WriteLog("TxnReleaseMain" + ex.ToString());
  196. Console.WriteLine(ex.InnerException.ToString());
  197. Console.Read();
  198. }
  199. }
  200. }
  201. }