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.

226 lines
9.5 KiB

  1. using Newtonsoft.Json;
  2. using Newtonsoft.Json.Linq;
  3. using Swift.API.Common;
  4. using Swift.API.Common.Cancel;
  5. using Swift.API.ThirdPartyApiServices;
  6. using Swift.DAL.BL.Remit.Transaction;
  7. using Swift.DAL.Remittance.APIPartner;
  8. using Swift.DAL.SwiftDAL;
  9. using Swift.web.Library;
  10. using System;
  11. using System.Collections.Generic;
  12. using System.ComponentModel.DataAnnotations;
  13. using System.Data;
  14. namespace Swift.web.Remit.Administration.ChangeReferral
  15. {
  16. public partial class CancelTxn : System.Web.UI.Page
  17. {
  18. private string ViewFunctionId = "20202800";
  19. private readonly RemittanceLibrary _sl = new RemittanceLibrary();
  20. private readonly APIPartnerDao _dao = new APIPartnerDao();
  21. private readonly StaticDataDdl _sdd = new StaticDataDdl();
  22. private ApproveTransactionDao at = new ApproveTransactionDao();
  23. protected void Page_Load(object sender, EventArgs e)
  24. {
  25. _sl.CheckAuthentication(ViewFunctionId);
  26. _sl.CheckSession();
  27. var MethodName = Request.Form["MethodName"];
  28. if (MethodName == "SearchTransaction")
  29. SearchTransactionDetails();
  30. if (MethodName == "CancelTxn")
  31. CancelTransaction();
  32. if (MethodName == "CancelTxnJME")
  33. CancelTransactionJME();
  34. if (!IsPostBack)
  35. {
  36. cancelDate.Text = DateTime.Now.ToString("yyyy-MM-dd");
  37. PopulateDDL();
  38. }
  39. }
  40. private void CancelTransactionJME()
  41. {
  42. string controlNo = Request.Form["ControlNo"];
  43. string cancelDate = Request.Form["CancelDate"];
  44. string cancelReasonText = Request.Form["CancelReasonText"];
  45. var _dbRes = _dao.CancelTxn(GetStatic.GetUser(), controlNo, cancelDate, cancelReasonText);
  46. GetStatic.JsonResponse(_dbRes, this);
  47. }
  48. private void PopulateDDL()
  49. {
  50. string sql = "SELECT CANCEL_REASON_CODE, CANCEL_REASON_TITLE FROM TBL_PARTNER_CANCEL_REASON (NOLOCK) WHERE PARTNER_ID = 394130 AND IS_ACTIVE = 1";
  51. _sdd.SetDDL(ref ddlRemarks, sql, "CANCEL_REASON_CODE", "CANCEL_REASON_TITLE", "", "Select Reason");
  52. }
  53. private void CancelTransaction()
  54. {
  55. string controlNo = Request.Form["ControlNo"];
  56. string cancelDate = Request.Form["CancelDate"];
  57. string cancelReasonText = Request.Form["CancelReasonText"];
  58. string cancelReasonId = Request.Form["CancelReasonId"];
  59. DbResult _dbRes = at.GetTxnApproveDataForCancel(GetStatic.GetUser(), controlNo, cancelReasonText);
  60. if (_dbRes.ErrorCode == "0")
  61. {
  62. string ProcessId = Guid.NewGuid().ToString().Replace("-", "") + ":" + _dbRes.Extra2 + ":statusSync";
  63. CancelRequestServices crs = new CancelRequestServices();
  64. JsonResponse _resp = crs.CancelTransaction(new CancelTxnPartner()
  65. {
  66. ProviderId = _dbRes.Msg,
  67. PartnerPinNo = _dbRes.Id,
  68. CancelReason = cancelReasonId,
  69. ProcessId = ProcessId.Substring(ProcessId.Length - 40, 40)
  70. });
  71. if (_resp.ResponseCode == "0")
  72. {
  73. _dbRes = at.TxnCancelRequest(GetStatic.GetUser(), controlNo, cancelReasonText);
  74. }
  75. else
  76. {
  77. _dbRes.ErrorCode = _resp.ResponseCode;
  78. _dbRes.Msg = _resp.Msg;
  79. }
  80. }
  81. GetStatic.JsonResponse(_dbRes, this);
  82. //_dbRes = _dao.CancelTxn(GetStatic.GetUser(), controlNo, cancelDate, cancelReasonText);
  83. }
  84. private void SearchTransactionDetails()
  85. {
  86. var controlNo = Request.Form["ControlNo"];
  87. var includePartnerSearch = Request.Form["IncludePartnerSearch"];
  88. DataRow dr = _dao.GetTransactionDetails(GetStatic.GetUser(), controlNo);
  89. TxnResponse _resp = new TxnResponse();
  90. if (dr == null)
  91. {
  92. _resp.ErrorCode = "1";
  93. _resp.Msg = "Internal error occured!";
  94. }
  95. else
  96. {
  97. _resp.ErrorCode = dr["ErrorCode"].ToString();
  98. _resp.Msg = dr["Msg"].ToString();
  99. if (dr["ErrorCode"].ToString().Trim() == "0")
  100. {
  101. _resp.ControlNo = controlNo;
  102. _resp.TranId = dr["ID"].ToString();
  103. _resp.SenderName = dr["SENDERNAME"].ToString();
  104. _resp.ReceiverName = dr["RECEIVERNAME"].ToString();
  105. _resp.ReferralName = dr["REFERRAL_NAME"].ToString();
  106. _resp.ReferralCode = dr["REFERRAL_CODE"].ToString();
  107. _resp.CollectAmount = dr["CAMT"].ToString();
  108. _resp.TransferAmount = dr["TAMT"].ToString();
  109. _resp.PayoutAmount = dr["PAMT"].ToString();
  110. _resp.PayoutCountry = dr["PCOUNTRY"].ToString();
  111. _resp.CollMode = dr["COLLMODE"].ToString();
  112. _resp.PayoutCurr = dr["PAYOUTCURR"].ToString();
  113. _resp.Provider = dr["PSUPERAGENT"].ToString();
  114. _resp.Status = dr["Status"].ToString();
  115. _resp.cancelRequest = dr["cancelRequest"].ToString();
  116. }
  117. else if (dr["ErrorCode"].ToString().Trim() == "1")
  118. {
  119. var dbresult = _sl.ManageInvalidControlNoAttemptAjax(Page, GetStatic.GetUser(), "N");
  120. _resp.ErrorCode = dbresult.ErrorCode;
  121. _resp.Msg = dbresult.Msg;
  122. GetStatic.JsonResponse(_resp, this);
  123. return;
  124. }
  125. }
  126. if (_resp.ErrorCode == "0")
  127. {
  128. if (includePartnerSearch == "y")
  129. {
  130. ExchangeRateAPIService _service = new ExchangeRateAPIService();
  131. string ProcessId = Guid.NewGuid().ToString().Replace("-", "") + ":" + _resp.Provider + ":cancelStatusCheck";
  132. var _requestData = new
  133. {
  134. ProcessId = ProcessId.Substring(ProcessId.Length - 40, 40),
  135. UserName = GetStatic.GetUser(),
  136. ProviderId = _resp.Provider,
  137. SessionId = _resp.ControlNo,
  138. ControlNo = _resp.ControlNo,
  139. PartnerPinNo = _resp.ControlNo
  140. };
  141. JsonResponse _syncStatusResponse = _service.GetTxnStatus(_requestData);
  142. if (_syncStatusResponse.ResponseCode == "0")
  143. {
  144. _resp.ResponseXML = JsonConvert.SerializeObject(_syncStatusResponse);
  145. var jsonData = JObject.Parse(_resp.ResponseXML);
  146. _resp.StatusName = jsonData["Data"]["StatusName"].ToString();
  147. if (_resp.StatusName.ToLower() == "cancel")
  148. {
  149. _resp.CancelReason = jsonData["Data"]["CancellationReason"].ToString();
  150. }
  151. _resp.InvoiceTxnStatus = JsonConvert.DeserializeObject<List<TxnStatusChangeList>>(jsonData["Data"]["TransactionInfo"]["InvoiceStatusTimeStamps"].ToString());
  152. _resp.LatestStatus = _resp.InvoiceTxnStatus[_resp.InvoiceTxnStatus.Count - 1].FlagName;
  153. _resp.LatestStatusId = _resp.InvoiceTxnStatus[_resp.InvoiceTxnStatus.Count - 1].FlagId;
  154. _resp.LatestDate = GetStatic.ToDate(_resp.InvoiceTxnStatus[_resp.InvoiceTxnStatus.Count - 1].ChangeStatusDate);
  155. }
  156. else
  157. {
  158. _resp.ErrorCode = _syncStatusResponse.ResponseCode;
  159. _resp.Msg = _syncStatusResponse.Msg;
  160. }
  161. }
  162. }
  163. GetStatic.JsonResponse(_resp, this);
  164. }
  165. protected string GetUrlRoot()
  166. {
  167. return GetStatic.GetUrlRoot();
  168. }
  169. public class TxnResponse : DbResult
  170. {
  171. public string ControlNo { get; set; }
  172. public string TranId { get; set; }
  173. public string SenderName { get; set; }
  174. public string ReceiverName { get; set; }
  175. public string ReferralName { get; set; }
  176. public string ReferralCode { get; set; }
  177. public string CollectAmount { get; set; }
  178. public string TransferAmount { get; set; }
  179. public string PayoutAmount { get; set; }
  180. public string PayoutCountry { get; set; }
  181. public string CollMode { get; set; }
  182. public string PayoutCurr { get; set; }
  183. public string Provider { get; set; }
  184. public string StatusName { get; set; }
  185. public string LatestStatus { get; set; }
  186. public string LatestStatusId { get; set; }
  187. public string LatestDate { get; set; }
  188. public string CancelReason { get; set; }
  189. public string ResponseXML { get; set; }
  190. public string cancelRequest { get; set; }
  191. public string Status { get; set; }
  192. public List<TxnStatusChangeList> InvoiceTxnStatus { get; set; }
  193. }
  194. public class TxnStatusChangeList
  195. {
  196. public string FlagId { get; set; }
  197. public string FlagName { get; set; }
  198. public string ChangeStatusDate { get; set; }
  199. }
  200. }
  201. }