using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Swift.API.Common; using Swift.API.Common.Cancel; using Swift.API.ThirdPartyApiServices; using Swift.DAL.BL.Remit.Transaction; using Swift.DAL.Remittance.APIPartner; using Swift.DAL.SwiftDAL; using Swift.web.Library; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Data; namespace Swift.web.Remit.Administration.ChangeReferral { public partial class CancelTxn : System.Web.UI.Page { private string ViewFunctionId = "20202800"; private readonly RemittanceLibrary _sl = new RemittanceLibrary(); private readonly APIPartnerDao _dao = new APIPartnerDao(); private readonly StaticDataDdl _sdd = new StaticDataDdl(); private ApproveTransactionDao at = new ApproveTransactionDao(); protected void Page_Load(object sender, EventArgs e) { _sl.CheckAuthentication(ViewFunctionId); _sl.CheckSession(); var MethodName = Request.Form["MethodName"]; if (MethodName == "SearchTransaction") SearchTransactionDetails(); if (MethodName == "CancelTxn") CancelTransaction(); if (MethodName == "CancelTxnJME") CancelTransactionJME(); if (!IsPostBack) { cancelDate.Text = DateTime.Now.ToString("yyyy-MM-dd"); PopulateDDL(); } } private void CancelTransactionJME() { string controlNo = Request.Form["ControlNo"]; string cancelDate = Request.Form["CancelDate"]; string cancelReasonText = Request.Form["CancelReasonText"]; var _dbRes = _dao.CancelTxn(GetStatic.GetUser(), controlNo, cancelDate, cancelReasonText); GetStatic.JsonResponse(_dbRes, this); } private void PopulateDDL() { string sql = "SELECT CANCEL_REASON_CODE, CANCEL_REASON_TITLE FROM TBL_PARTNER_CANCEL_REASON (NOLOCK) WHERE PARTNER_ID = 394130 AND IS_ACTIVE = 1"; _sdd.SetDDL(ref ddlRemarks, sql, "CANCEL_REASON_CODE", "CANCEL_REASON_TITLE", "", "Select Reason"); } private void CancelTransaction() { string controlNo = Request.Form["ControlNo"]; string cancelDate = Request.Form["CancelDate"]; string cancelReasonText = Request.Form["CancelReasonText"]; string cancelReasonId = Request.Form["CancelReasonId"]; DbResult _dbRes = at.GetTxnApproveDataForCancel(GetStatic.GetUser(), controlNo, cancelReasonText); if (_dbRes.ErrorCode == "0") { string ProcessId = Guid.NewGuid().ToString().Replace("-", "") + ":" + _dbRes.Extra2 + ":statusSync"; CancelRequestServices crs = new CancelRequestServices(); JsonResponse _resp = crs.CancelTransaction(new CancelTxnPartner() { ProviderId = _dbRes.Msg, PartnerPinNo = _dbRes.Id, CancelReason = cancelReasonId, ProcessId = ProcessId.Substring(ProcessId.Length - 40, 40) }); if (_resp.ResponseCode == "0") { _dbRes = at.TxnCancelRequest(GetStatic.GetUser(), controlNo, cancelReasonText); } else { _dbRes.ErrorCode = _resp.ResponseCode; _dbRes.Msg = _resp.Msg; } } GetStatic.JsonResponse(_dbRes, this); //_dbRes = _dao.CancelTxn(GetStatic.GetUser(), controlNo, cancelDate, cancelReasonText); } private void SearchTransactionDetails() { var controlNo = Request.Form["ControlNo"]; var includePartnerSearch = Request.Form["IncludePartnerSearch"]; DataRow dr = _dao.GetTransactionDetails(GetStatic.GetUser(), controlNo); TxnResponse _resp = new TxnResponse(); if (dr == null) { _resp.ErrorCode = "1"; _resp.Msg = "Internal error occured!"; } else { _resp.ErrorCode = dr["ErrorCode"].ToString(); _resp.Msg = dr["Msg"].ToString(); if (dr["ErrorCode"].ToString().Trim() == "0") { _resp.ControlNo = controlNo; _resp.TranId = dr["ID"].ToString(); _resp.SenderName = dr["SENDERNAME"].ToString(); _resp.ReceiverName = dr["RECEIVERNAME"].ToString(); _resp.ReferralName = dr["REFERRAL_NAME"].ToString(); _resp.ReferralCode = dr["REFERRAL_CODE"].ToString(); _resp.CollectAmount = dr["CAMT"].ToString(); _resp.TransferAmount = dr["TAMT"].ToString(); _resp.PayoutAmount = dr["PAMT"].ToString(); _resp.PayoutCountry = dr["PCOUNTRY"].ToString(); _resp.CollMode = dr["COLLMODE"].ToString(); _resp.PayoutCurr = dr["PAYOUTCURR"].ToString(); _resp.Provider = dr["PSUPERAGENT"].ToString(); _resp.Status = dr["Status"].ToString(); _resp.cancelRequest = dr["cancelRequest"].ToString(); } else if (dr["ErrorCode"].ToString().Trim() == "1") { var dbresult = _sl.ManageInvalidControlNoAttemptAjax(Page, GetStatic.GetUser(), "N"); _resp.ErrorCode = dbresult.ErrorCode; _resp.Msg = dbresult.Msg; GetStatic.JsonResponse(_resp, this); return; } } if (_resp.ErrorCode == "0") { if (includePartnerSearch == "y") { ExchangeRateAPIService _service = new ExchangeRateAPIService(); string ProcessId = Guid.NewGuid().ToString().Replace("-", "") + ":" + _resp.Provider + ":cancelStatusCheck"; var _requestData = new { ProcessId = ProcessId.Substring(ProcessId.Length - 40, 40), UserName = GetStatic.GetUser(), ProviderId = _resp.Provider, SessionId = _resp.ControlNo, ControlNo = _resp.ControlNo, PartnerPinNo = _resp.ControlNo }; JsonResponse _syncStatusResponse = _service.GetTxnStatus(_requestData); if (_syncStatusResponse.ResponseCode == "0") { _resp.ResponseXML = JsonConvert.SerializeObject(_syncStatusResponse); var jsonData = JObject.Parse(_resp.ResponseXML); _resp.StatusName = jsonData["Data"]["StatusName"].ToString(); if (_resp.StatusName.ToLower() == "cancel") { _resp.CancelReason = jsonData["Data"]["CancellationReason"].ToString(); } _resp.InvoiceTxnStatus = JsonConvert.DeserializeObject>(jsonData["Data"]["TransactionInfo"]["InvoiceStatusTimeStamps"].ToString()); _resp.LatestStatus = _resp.InvoiceTxnStatus[_resp.InvoiceTxnStatus.Count - 1].FlagName; _resp.LatestStatusId = _resp.InvoiceTxnStatus[_resp.InvoiceTxnStatus.Count - 1].FlagId; _resp.LatestDate = GetStatic.ToDate(_resp.InvoiceTxnStatus[_resp.InvoiceTxnStatus.Count - 1].ChangeStatusDate); } else { _resp.ErrorCode = _syncStatusResponse.ResponseCode; _resp.Msg = _syncStatusResponse.Msg; } } } GetStatic.JsonResponse(_resp, this); } protected string GetUrlRoot() { return GetStatic.GetUrlRoot(); } public class TxnResponse : DbResult { public string ControlNo { get; set; } public string TranId { get; set; } public string SenderName { get; set; } public string ReceiverName { get; set; } public string ReferralName { get; set; } public string ReferralCode { get; set; } public string CollectAmount { get; set; } public string TransferAmount { get; set; } public string PayoutAmount { get; set; } public string PayoutCountry { get; set; } public string CollMode { get; set; } public string PayoutCurr { get; set; } public string Provider { get; set; } public string StatusName { get; set; } public string LatestStatus { get; set; } public string LatestStatusId { get; set; } public string LatestDate { get; set; } public string CancelReason { get; set; } public string ResponseXML { get; set; } public string cancelRequest { get; set; } public string Status { get; set; } public List InvoiceTxnStatus { get; set; } } public class TxnStatusChangeList { public string FlagId { get; set; } public string FlagName { get; set; } public string ChangeStatusDate { get; set; } } } }