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.

324 lines
15 KiB

7 months ago
7 months ago
11 months ago
7 months ago
11 months ago
11 months ago
10 months ago
11 months ago
11 months ago
11 months ago
  1. using JMETxnPushScheduler.API;
  2. using JMETxnPushScheduler.Common;
  3. using System;
  4. using System.Data;
  5. namespace JMETxnPushScheduler.DAO
  6. {
  7. public class TxnPushDAO : SwiftDao
  8. {
  9. public DataTable GetTxnDataForApprove()
  10. {
  11. string sql = "EXEC PROC_TP_TXN_PUSH @FLAG = 'GET-LIST'";
  12. return ExecuteDataTable(sql);
  13. }
  14. public DataTable GetTxnDataForRelease()
  15. {
  16. string sql = "EXEC PROC_TP_TXN_PUSH @FLAG = 'GET-RELEASE-LIST'";
  17. return ExecuteDataTable(sql);
  18. }
  19. public void UpdateTxnPost(string id, string pCurrCostRate = null, string controlNo2 = null )
  20. {
  21. string sql = "EXEC PROC_TP_TXN_PUSH @FLAG = 'UPDATE-POST'";
  22. sql += ", @TRAN_ID = " + FilterString(id);
  23. sql += ", @control2 = " + FilterString(controlNo2);
  24. sql += ", @pCurrCostRate = " + FilterString(pCurrCostRate);
  25. ExecuteDataTable(sql);
  26. }
  27. public void UpdateTxnPostRelease(string id,string controlNo2 = null)
  28. {
  29. string sql = "EXEC PROC_TP_TXN_PUSH @FLAG = 'UPDATE-POST_RELEASE'";
  30. sql += ", @TRAN_ID = " + FilterString(id);
  31. ExecuteDataTable(sql);
  32. }
  33. public void UpdateTxnInstantPaid(string id)
  34. {
  35. string sql = "EXEC PROC_TP_TXN_PUSH @FLAG = 'INSTANT-PAID'";
  36. sql += ", @TRAN_ID = " + FilterString(id);
  37. ExecuteDataTable(sql);
  38. }
  39. public CommonResponse GetTxnApproveData(string user, string id)
  40. {
  41. var sql = "EXEC proc_ApproveHoldedTXN @flag = 'get-info-for-compliance'";
  42. sql += ", @user = " + FilterString(user);
  43. sql += ", @id = " + FilterString(id);
  44. return ParseDbResultWithSql(sql);
  45. }
  46. public TxnDetails GetTxnDetails(string tranId)
  47. {
  48. var sql = "EXEC GetUserInfo @flag='txn-details' ";
  49. sql += ", @tranId = " + FilterString(tranId);
  50. var row = ExecuteDataRow(sql);
  51. TxnDetails userDetails = new TxnDetails();
  52. if (row != null)
  53. {
  54. userDetails.senderName = row["senderName"].ToString();
  55. userDetails.PayoutCountry = row["pcountry"].ToString();
  56. userDetails.controlNo = row["controlNo"].ToString();
  57. userDetails.BeneficiaryName = row["receiverName"].ToString();
  58. userDetails.paymentMethod = row["paymentMethod"].ToString();
  59. userDetails.BankName = row["pBankName"].ToString();
  60. userDetails.BankBranch = row["pBankBranchName"].ToString();
  61. userDetails.email = row["email"].ToString();
  62. userDetails.AccountNo = row["accountNo"].ToString();
  63. userDetails.PayoutAmount = row["pAmt"].ToString();
  64. userDetails.TransferAmount = row["tamt"].ToString();
  65. userDetails.TotalAmount = row["camt"].ToString();
  66. userDetails.serviceCharge = row["serviceCharge"].ToString();
  67. // userDetails.rewardPoints = row["rewardPoints"].ToString();
  68. userDetails.TranDate = row["createdDate"].ToString();
  69. userDetails.payStatus = row["payStatus"].ToString();
  70. }
  71. return userDetails;
  72. }
  73. private T ParseDbResult<T>(string sql)
  74. {
  75. throw new NotImplementedException();
  76. }
  77. public void SyncTxnAsComment(string provider, string tranId, string ControlNo, string status, string msg)
  78. {
  79. string sql = "EXEC PROC_TP_TXN_PUSH @flag='add-api-comment'";
  80. sql += ",@PROVIDER = " + FilterString(provider);
  81. sql += ",@TRAN_ID = " + FilterString(tranId);
  82. sql += ",@message = " + FilterString(msg);
  83. sql += ",@status = " + FilterString(status);
  84. sql += ",@user = " + FilterString("TxnPushJob");
  85. ExecuteDataTable(sql);
  86. }
  87. public JsonResponse GetHoldedTxnForApprovedByAdmin(string user, string id, string sessionId, string callFro = null)
  88. {
  89. var sql = "EXEC proc_GetHoldedTxnForApprovedByAdminCompliance";
  90. sql += " @user = " + FilterString(user);
  91. sql += ", @tranId = " + FilterString(id);
  92. sql += ", @callFro = " + FilterString(callFro);
  93. var drDb = ExecuteDataRow(sql);
  94. if (drDb.Table.Columns.Contains("ErrorCode"))
  95. {
  96. return new JsonResponse()
  97. {
  98. ResponseCode = Convert.ToString(drDb["ErrorCode"]),
  99. Msg = Convert.ToString(drDb["msg"])
  100. };
  101. }
  102. string ProcessId = Guid.NewGuid().ToString().Replace("-", "") + ":" + Convert.ToString(drDb["processId"]) + ":sendTxn";
  103. SendTransactionRequest sendTxnRequest = new SendTransactionRequest();
  104. if (drDb.Table.Columns.Contains("exRateConfirmId"))
  105. {
  106. sendTxnRequest.ExRateConfirmId = drDb["exRateConfirmId"].ToString();
  107. }
  108. sendTxnRequest.RequestedBy = "scheduler";
  109. sendTxnRequest.UserName = user;
  110. sendTxnRequest.ProcessId = ProcessId.Substring(ProcessId.Length - 40, 40);
  111. sendTxnRequest.ProviderId = Convert.ToString(drDb["partnerId"]);
  112. sendTxnRequest.TranId = Convert.ToInt32(drDb["tranId"]);
  113. if (drDb.Table.Columns.Contains("IsRealtime"))
  114. {
  115. sendTxnRequest.IsRealtime = (drDb["IsRealtime"].ToString() == "Y" ? true : false);
  116. }
  117. else
  118. {
  119. sendTxnRequest.IsRealtime = false;
  120. }
  121. #region senderInformation
  122. TxnSender txnSender = new TxnSender();
  123. txnSender.CustomerId = Convert.ToInt32(drDb["customerId"]);
  124. txnSender.SFirstName = Convert.ToString(drDb["sfirstName"]);
  125. txnSender.SMiddleName = Convert.ToString(drDb["smiddleName"]);
  126. txnSender.SLastName1 = Convert.ToString(drDb["slastName1"]);
  127. txnSender.SLastName2 = Convert.ToString(drDb["slastName2"]);
  128. txnSender.SFullName = Convert.ToString(drDb["sfullName"]);
  129. txnSender.SIdIssueDate = Convert.ToString(drDb["sissuedDate"]);
  130. txnSender.SIdExpiryDate = Convert.ToString(drDb["svalidDate"]);
  131. txnSender.SOccuptionId = Convert.ToInt32(drDb["occupationId"]);
  132. txnSender.SOccuptionName = Convert.ToString(drDb["occupationName"]);
  133. txnSender.SBirthDate = Convert.ToString(drDb["sdob"]);
  134. txnSender.SEmail = Convert.ToString(drDb["semail"]);
  135. txnSender.SCityId = Convert.ToString(drDb["scity"]);
  136. if (drDb.Table.Columns.Contains("sstate"))
  137. {
  138. txnSender.SState = Convert.ToString(drDb["sstate"]);
  139. }
  140. if (drDb.Table.Columns.Contains("formOfPaymentId"))
  141. {
  142. txnSender.FormOfPaymentId = Convert.ToString(drDb["formOfPaymentId"]);
  143. }
  144. txnSender.SZipCode = Convert.ToString(drDb["szipCode"]);
  145. txnSender.SNativeCountry = Convert.ToString(drDb["snativeCountry"]);
  146. txnSender.SIdType = Convert.ToString(drDb["sidType"]);
  147. txnSender.SIdNo = Convert.ToString(drDb["sidNumber"]);
  148. txnSender.SMobile = Convert.ToString(drDb["smobile"]);
  149. txnSender.SAddress = Convert.ToString(drDb["saddress"]);
  150. txnSender.SIpAddress = Convert.ToString(drDb["ipAddress"]);
  151. txnSender.SCountryId = Convert.ToInt32(drDb["countryId"]);
  152. txnSender.SCountryName = Convert.ToString(drDb["sCountry"]);
  153. if (drDb.Table.Columns.Contains("IsIndividual"))
  154. {
  155. txnSender.IsIndividual = Convert.ToBoolean(drDb["IsIndividual"]);
  156. }
  157. txnSender.SourceOfFund = Convert.ToString(drDb["sourceOfFund"]);
  158. sendTxnRequest.Sender = txnSender;
  159. #endregion senderInformation
  160. #region receiverInformation
  161. TxnReceiver txnReceiver = new TxnReceiver();
  162. txnReceiver.ReceiverId = Convert.ToString(drDb["receiverId"]);
  163. txnReceiver.RFullName = Convert.ToString(drDb["rfullName"]);
  164. txnReceiver.RFirstName = Convert.ToString(drDb["rfirstName"]);
  165. txnReceiver.RMiddleName = Convert.ToString(drDb["rmiddleName"]);
  166. txnReceiver.RLastName = Convert.ToString(drDb["rlastName1"]);
  167. txnReceiver.RIdType = Convert.ToString(drDb["ridType"]);
  168. txnReceiver.RIdNo = Convert.ToString(drDb["ridNumber"]);
  169. txnReceiver.RIdValidDate = Convert.ToString(drDb["rvalidDate"]);
  170. txnReceiver.RDob = Convert.ToString(drDb["rdob"]);
  171. txnReceiver.RTel = Convert.ToString(drDb["rhomePhone"]);
  172. txnReceiver.RMobile = Convert.ToString(drDb["rmobile"]);
  173. txnReceiver.RNativeCountry = Convert.ToString(drDb["rnativeCountry"]);
  174. txnReceiver.RCity = Convert.ToString(drDb["rcity"]);
  175. txnReceiver.RAdd1 = Convert.ToString(drDb["raddress"]);
  176. txnReceiver.REmail = Convert.ToString(drDb["remail"]);
  177. txnReceiver.RAccountNo = Convert.ToString(drDb["raccountNo"]);
  178. txnReceiver.RCountry = Convert.ToString(drDb["rcountry"]);
  179. txnReceiver.RCityCode = Convert.ToString(drDb["rcityCode"]);
  180. txnReceiver.RelWithSenderName = Convert.ToString(drDb["relationName"]);
  181. txnReceiver.RStateId = Convert.ToString(drDb["rstate"]);
  182. txnReceiver.RLocation = Convert.ToString(drDb["pBankLocation"]);
  183. txnReceiver.UnitaryBankAccountNo = Convert.ToString(drDb["bankAccountNo"]);
  184. txnReceiver.RelWithSenderName = drDb["relationName"].ToString();
  185. if (drDb.Table.Columns.Contains("rTownCode"))
  186. {
  187. txnReceiver.RLocation = Convert.ToString(drDb["rTownCode"]);
  188. }
  189. if (drDb.Table.Columns.Contains("payerId"))
  190. {
  191. txnReceiver.RLocationName = Convert.ToString(drDb["payerId"]);
  192. }
  193. sendTxnRequest.Receiver = txnReceiver;
  194. #endregion receiverInformation
  195. #region txnTransaction
  196. TxnTransaction transaction = new TxnTransaction();
  197. transaction.PCurr = Convert.ToString(drDb["payoutCurr"]);
  198. transaction.CollCurr = Convert.ToString(drDb["collCurr"]);
  199. transaction.CAmt = Convert.ToDecimal(drDb["cAmt"]);
  200. transaction.PAmt = Convert.ToDecimal(drDb["pAmt"]);
  201. transaction.TAmt = Convert.ToDecimal(drDb["tAmt"]);
  202. transaction.ServiceCharge = Convert.ToDecimal(drDb["serviceCharge"]);
  203. transaction.PComm = Convert.ToString(drDb["pAgentComm"]);
  204. transaction.PaymentType = Convert.ToString(drDb["paymentMethod"]);
  205. transaction.JMEControlNo = Convert.ToString(drDb["controlNo"]);
  206. transaction.PurposeOfRemittanceName = Convert.ToString(drDb["purposeOfRemit"]);
  207. if (drDb.Table.Columns.Contains("txnDate"))
  208. {
  209. transaction.TxnDate = Convert.ToString(drDb["txnDate"]);
  210. }
  211. if (drDb.Table.Columns.Contains("ssnno"))
  212. {
  213. transaction.TpRefNo = Convert.ToString(drDb["ssnno"]);
  214. }
  215. if (drDb.Table.Columns.Contains("exRate"))
  216. {
  217. transaction.ExRate = Convert.ToDecimal(drDb["exRate"]);
  218. }
  219. if (drDb.Table.Columns.Contains("Rate"))
  220. {
  221. transaction.Rate = Convert.ToDecimal(drDb["Rate"]);
  222. }
  223. if (drDb.Table.Columns.Contains("SettlementDollarRate"))
  224. {
  225. transaction.SettlementDollarRate = Convert.ToDecimal(drDb["SettlementDollarRate"]);
  226. }
  227. transaction.PayoutMsg = Convert.ToString(drDb["remarks"]);
  228. sendTxnRequest.Transaction = transaction;
  229. #endregion txnTransaction
  230. #region agentInformation
  231. TxnAgent txnAgent = new TxnAgent();
  232. txnAgent.PBranchId = Convert.ToString(drDb["branchId"]);
  233. txnAgent.PBranchName = Convert.ToString(drDb["branchName"]);
  234. txnAgent.PBranchCity = Convert.ToString(drDb["city"]);
  235. txnAgent.PAgentId = Convert.ToInt32(drDb["pAgent"] == "" ? null : drDb["pAgent"]);
  236. txnAgent.PAgentName = Convert.ToString(drDb["pAgentName"]);
  237. txnAgent.PBankType = Convert.ToString(drDb["pBankType"]);
  238. txnAgent.PBankId = Convert.ToString(drDb["pBank"]);
  239. txnAgent.PBankName = Convert.ToString(drDb["pBankName"]);
  240. txnAgent.SAgentId = Convert.ToInt32(drDb["sAgent"]);
  241. txnAgent.SAgentName = Convert.ToString(drDb["sAgentName"]);
  242. txnAgent.SSuperAgentId = Convert.ToInt32(drDb["sSuperAgent"]);
  243. if (drDb.Table.Columns.Contains("pBankBranchId"))
  244. {
  245. txnAgent.PBankBranchId = Convert.ToString(drDb["pBankBranchId"]);
  246. }
  247. txnAgent.SBranchId = Convert.ToInt32(drDb["sBranch"]);
  248. if (drDb.Table.Columns.Contains("pBankBranchName"))
  249. {
  250. txnAgent.PBankBranchName = Convert.ToString(drDb["pBankBranchName"]);
  251. }
  252. sendTxnRequest.Agent = txnAgent;
  253. #endregion agentInformation
  254. if (drDb.Table.Columns.Contains("isFirstTran"))
  255. {
  256. sendTxnRequest.isTxnAlreadyCreated = Convert.ToString(drDb["isFirstTran"]) == "Y" ? true : false;
  257. }
  258. else
  259. {
  260. sendTxnRequest.isTxnAlreadyCreated = true;
  261. }
  262. sendTxnRequest.IsRealtime = Convert.ToBoolean(drDb["IsRealtime"]);
  263. sendTxnRequest.SessionId = Convert.ToString(Guid.NewGuid()).Replace("-", "");
  264. if (string.IsNullOrEmpty(sendTxnRequest.SessionId) || string.IsNullOrWhiteSpace(sendTxnRequest.SessionId))
  265. sendTxnRequest.SessionId = sessionId;
  266. if (drDb.Table.Columns.Contains("IsAccValSupported") && drDb["IsAccValSupported"] != null)
  267. {
  268. sendTxnRequest.IsAccValSupported = drDb["IsAccValSupported"].ToString().Equals("1") ? true : false;
  269. }
  270. else
  271. sendTxnRequest.IsAccValSupported = false;
  272. SendTransactionServices _tpSend = new SendTransactionServices();
  273. var result = _tpSend.SendTransaction(sendTxnRequest);
  274. sql = "";
  275. sql = "EXEC proc_tran_api_call_history ";
  276. sql += " @TRAN_ID =" + FilterString(sendTxnRequest.TranId.ToString());
  277. sql += ", @REQUESTED_BY =" + FilterString(user);
  278. sql += ", @RESPONSE_CODE =" + FilterString(result.ResponseCode);
  279. sql += ", @RESPONSE_MSG =" + FilterString(result.Msg);
  280. GetSingleResult(sql);
  281. return result;
  282. }
  283. }
  284. }