using JMETxnPushScheduler.API; using JMETxnPushScheduler.Common; using System; using System.Data; namespace JMETxnPushScheduler.DAO { public class TxnPushDAO : SwiftDao { public DataTable GetTxnDataForApprove() { string sql = "EXEC PROC_TP_TXN_PUSH @FLAG = 'GET-LIST'"; return ExecuteDataTable(sql); } public DataTable GetTxnDataForRelease() { string sql = "EXEC PROC_TP_TXN_PUSH @FLAG = 'GET-RELEASE-LIST'"; return ExecuteDataTable(sql); } public void UpdateTxnPost(string id, string pCurrCostRate = null, string controlNo2 = null ) { string sql = "EXEC PROC_TP_TXN_PUSH @FLAG = 'UPDATE-POST'"; sql += ", @TRAN_ID = " + FilterString(id); sql += ", @control2 = " + FilterString(controlNo2); sql += ", @pCurrCostRate = " + FilterString(pCurrCostRate); ExecuteDataTable(sql); } public void UpdateTxnPostRelease(string id,string controlNo2 = null) { string sql = "EXEC PROC_TP_TXN_PUSH @FLAG = 'UPDATE-POST_RELEASE'"; sql += ", @TRAN_ID = " + FilterString(id); ExecuteDataTable(sql); } public void UpdateTxnInstantPaid(string id) { string sql = "EXEC PROC_TP_TXN_PUSH @FLAG = 'INSTANT-PAID'"; sql += ", @TRAN_ID = " + FilterString(id); ExecuteDataTable(sql); } public CommonResponse GetTxnApproveData(string user, string id) { var sql = "EXEC proc_ApproveHoldedTXN @flag = 'get-info-for-compliance'"; sql += ", @user = " + FilterString(user); sql += ", @id = " + FilterString(id); return ParseDbResultWithSql(sql); } public TxnDetails GetTxnDetails(string tranId) { var sql = "EXEC GetUserInfo @flag='txn-details' "; sql += ", @tranId = " + FilterString(tranId); var row = ExecuteDataRow(sql); TxnDetails userDetails = new TxnDetails(); if (row != null) { userDetails.senderName = row["senderName"].ToString(); userDetails.PayoutCountry = row["pcountry"].ToString(); userDetails.controlNo = row["controlNo"].ToString(); userDetails.BeneficiaryName = row["receiverName"].ToString(); userDetails.paymentMethod = row["paymentMethod"].ToString(); userDetails.BankName = row["pBankName"].ToString(); userDetails.BankBranch = row["pBankBranchName"].ToString(); userDetails.email = row["email"].ToString(); userDetails.AccountNo = row["accountNo"].ToString(); userDetails.PayoutAmount = row["pAmt"].ToString(); userDetails.TransferAmount = row["tamt"].ToString(); userDetails.TotalAmount = row["camt"].ToString(); userDetails.serviceCharge = row["serviceCharge"].ToString(); // userDetails.rewardPoints = row["rewardPoints"].ToString(); userDetails.TranDate = row["createdDate"].ToString(); } return userDetails; } private T ParseDbResult(string sql) { throw new NotImplementedException(); } public void SyncTxnAsComment(string provider, string tranId, string ControlNo, string status, string msg) { string sql = "EXEC PROC_TP_TXN_PUSH @flag='add-api-comment'"; sql += ",@PROVIDER = " + FilterString(provider); sql += ",@TRAN_ID = " + FilterString(tranId); sql += ",@message = " + FilterString(msg); sql += ",@status = " + FilterString(status); sql += ",@user = " + FilterString("TxnPushJob"); ExecuteDataTable(sql); } public JsonResponse GetHoldedTxnForApprovedByAdmin(string user, string id, string sessionId, string callFro = null) { var sql = "EXEC proc_GetHoldedTxnForApprovedByAdminCompliance"; sql += " @user = " + FilterString(user); sql += ", @tranId = " + FilterString(id); sql += ", @callFro = " + FilterString(callFro); var drDb = ExecuteDataRow(sql); if (drDb.Table.Columns.Contains("ErrorCode")) { return new JsonResponse() { ResponseCode = Convert.ToString(drDb["ErrorCode"]), Msg = Convert.ToString(drDb["msg"]) }; } string ProcessId = Guid.NewGuid().ToString().Replace("-", "") + ":" + Convert.ToString(drDb["processId"]) + ":sendTxn"; SendTransactionRequest sendTxnRequest = new SendTransactionRequest(); if (drDb.Table.Columns.Contains("exRateConfirmId")) { sendTxnRequest.ExRateConfirmId = drDb["exRateConfirmId"].ToString(); } sendTxnRequest.RequestedBy = "scheduler"; sendTxnRequest.UserName = user; sendTxnRequest.ProcessId = ProcessId.Substring(ProcessId.Length - 40, 40); sendTxnRequest.ProviderId = Convert.ToString(drDb["partnerId"]); sendTxnRequest.TranId = Convert.ToInt32(drDb["tranId"]); if (drDb.Table.Columns.Contains("IsRealtime")) { sendTxnRequest.IsRealtime = (drDb["IsRealtime"].ToString() == "Y" ? true : false); } else { sendTxnRequest.IsRealtime = false; } #region senderInformation TxnSender txnSender = new TxnSender(); txnSender.CustomerId = Convert.ToInt32(drDb["customerId"]); txnSender.SFirstName = Convert.ToString(drDb["sfirstName"]); txnSender.SMiddleName = Convert.ToString(drDb["smiddleName"]); txnSender.SLastName1 = Convert.ToString(drDb["slastName1"]); txnSender.SLastName2 = Convert.ToString(drDb["slastName2"]); txnSender.SFullName = Convert.ToString(drDb["sfullName"]); txnSender.SIdIssueDate = Convert.ToString(drDb["sissuedDate"]); txnSender.SIdExpiryDate = Convert.ToString(drDb["svalidDate"]); txnSender.SOccuptionId = Convert.ToInt32(drDb["occupationId"]); txnSender.SOccuptionName = Convert.ToString(drDb["occupationName"]); txnSender.SBirthDate = Convert.ToString(drDb["sdob"]); txnSender.SEmail = Convert.ToString(drDb["semail"]); txnSender.SCityId = Convert.ToString(drDb["scity"]); if (drDb.Table.Columns.Contains("sstate")) { txnSender.SState = Convert.ToString(drDb["sstate"]); } if (drDb.Table.Columns.Contains("formOfPaymentId")) { txnSender.FormOfPaymentId = Convert.ToString(drDb["formOfPaymentId"]); } txnSender.SZipCode = Convert.ToString(drDb["szipCode"]); txnSender.SNativeCountry = Convert.ToString(drDb["snativeCountry"]); txnSender.SIdType = Convert.ToString(drDb["sidType"]); txnSender.SIdNo = Convert.ToString(drDb["sidNumber"]); txnSender.SMobile = Convert.ToString(drDb["smobile"]); txnSender.SAddress = Convert.ToString(drDb["saddress"]); txnSender.SIpAddress = Convert.ToString(drDb["ipAddress"]); txnSender.SCountryId = Convert.ToInt32(drDb["countryId"]); txnSender.SCountryName = Convert.ToString(drDb["sCountry"]); if (drDb.Table.Columns.Contains("IsIndividual")) { txnSender.IsIndividual = Convert.ToBoolean(drDb["IsIndividual"]); } txnSender.SourceOfFund = Convert.ToString(drDb["sourceOfFund"]); sendTxnRequest.Sender = txnSender; #endregion senderInformation #region receiverInformation TxnReceiver txnReceiver = new TxnReceiver(); txnReceiver.ReceiverId = Convert.ToString(drDb["receiverId"]); txnReceiver.RFullName = Convert.ToString(drDb["rfullName"]); txnReceiver.RFirstName = Convert.ToString(drDb["rfirstName"]); txnReceiver.RMiddleName = Convert.ToString(drDb["rmiddleName"]); txnReceiver.RLastName = Convert.ToString(drDb["rlastName1"]); txnReceiver.RIdType = Convert.ToString(drDb["ridType"]); txnReceiver.RIdNo = Convert.ToString(drDb["ridNumber"]); txnReceiver.RIdValidDate = Convert.ToString(drDb["rvalidDate"]); txnReceiver.RDob = Convert.ToString(drDb["rdob"]); txnReceiver.RTel = Convert.ToString(drDb["rhomePhone"]); txnReceiver.RMobile = Convert.ToString(drDb["rmobile"]); txnReceiver.RNativeCountry = Convert.ToString(drDb["rnativeCountry"]); txnReceiver.RCity = Convert.ToString(drDb["rcity"]); txnReceiver.RAdd1 = Convert.ToString(drDb["raddress"]); txnReceiver.REmail = Convert.ToString(drDb["remail"]); txnReceiver.RAccountNo = Convert.ToString(drDb["raccountNo"]); txnReceiver.RCountry = Convert.ToString(drDb["rcountry"]); txnReceiver.RCityCode = Convert.ToString(drDb["rcityCode"]); txnReceiver.RelWithSenderName = Convert.ToString(drDb["relationName"]); txnReceiver.RStateId = Convert.ToString(drDb["rstate"]); txnReceiver.RLocation = Convert.ToString(drDb["pBankLocation"]); txnReceiver.UnitaryBankAccountNo = Convert.ToString(drDb["bankAccountNo"]); txnReceiver.RelWithSenderName = drDb["relationName"].ToString(); if (drDb.Table.Columns.Contains("rTownCode")) { txnReceiver.RLocation = Convert.ToString(drDb["rTownCode"]); } if (drDb.Table.Columns.Contains("payerId")) { txnReceiver.RLocationName = Convert.ToString(drDb["payerId"]); } sendTxnRequest.Receiver = txnReceiver; #endregion receiverInformation #region txnTransaction TxnTransaction transaction = new TxnTransaction(); transaction.PCurr = Convert.ToString(drDb["payoutCurr"]); transaction.CollCurr = Convert.ToString(drDb["collCurr"]); transaction.CAmt = Convert.ToDecimal(drDb["cAmt"]); transaction.PAmt = Convert.ToDecimal(drDb["pAmt"]); transaction.TAmt = Convert.ToDecimal(drDb["tAmt"]); transaction.ServiceCharge = Convert.ToDecimal(drDb["serviceCharge"]); transaction.PComm = Convert.ToString(drDb["pAgentComm"]); transaction.PaymentType = Convert.ToString(drDb["paymentMethod"]); transaction.JMEControlNo = Convert.ToString(drDb["controlNo"]); transaction.PurposeOfRemittanceName = Convert.ToString(drDb["purposeOfRemit"]); if (drDb.Table.Columns.Contains("txnDate")) { transaction.TxnDate = Convert.ToString(drDb["txnDate"]); } if (drDb.Table.Columns.Contains("ssnno")) { transaction.TpRefNo = Convert.ToString(drDb["ssnno"]); } if (drDb.Table.Columns.Contains("exRate")) { transaction.ExRate = Convert.ToDecimal(drDb["exRate"]); } if (drDb.Table.Columns.Contains("Rate")) { transaction.Rate = Convert.ToDecimal(drDb["Rate"]); } if (drDb.Table.Columns.Contains("SettlementDollarRate")) { transaction.SettlementDollarRate = Convert.ToDecimal(drDb["SettlementDollarRate"]); } transaction.PayoutMsg = Convert.ToString(drDb["remarks"]); sendTxnRequest.Transaction = transaction; #endregion txnTransaction #region agentInformation TxnAgent txnAgent = new TxnAgent(); txnAgent.PBranchId = Convert.ToString(drDb["branchId"]); txnAgent.PBranchName = Convert.ToString(drDb["branchName"]); txnAgent.PBranchCity = Convert.ToString(drDb["city"]); txnAgent.PAgentId = Convert.ToInt32(drDb["pAgent"] == "" ? null : drDb["pAgent"]); txnAgent.PAgentName = Convert.ToString(drDb["pAgentName"]); txnAgent.PBankType = Convert.ToString(drDb["pBankType"]); txnAgent.PBankId = Convert.ToString(drDb["pBank"]); txnAgent.PBankName = Convert.ToString(drDb["pBankName"]); txnAgent.SAgentId = Convert.ToInt32(drDb["sAgent"]); txnAgent.SAgentName = Convert.ToString(drDb["sAgentName"]); txnAgent.SSuperAgentId = Convert.ToInt32(drDb["sSuperAgent"]); if (drDb.Table.Columns.Contains("pBankBranchId")) { txnAgent.PBankBranchId = Convert.ToString(drDb["pBankBranchId"]); } txnAgent.SBranchId = Convert.ToInt32(drDb["sBranch"]); if (drDb.Table.Columns.Contains("pBankBranchName")) { txnAgent.PBankBranchName = Convert.ToString(drDb["pBankBranchName"]); } sendTxnRequest.Agent = txnAgent; #endregion agentInformation if (drDb.Table.Columns.Contains("isFirstTran")) { sendTxnRequest.isTxnAlreadyCreated = Convert.ToString(drDb["isFirstTran"]) == "Y" ? true : false; } else { sendTxnRequest.isTxnAlreadyCreated = true; } sendTxnRequest.IsRealtime = Convert.ToBoolean(drDb["IsRealtime"]); sendTxnRequest.SessionId = Convert.ToString(Guid.NewGuid()).Replace("-", ""); if (string.IsNullOrEmpty(sendTxnRequest.SessionId) || string.IsNullOrWhiteSpace(sendTxnRequest.SessionId)) sendTxnRequest.SessionId = sessionId; if (drDb.Table.Columns.Contains("IsAccValSupported") && drDb["IsAccValSupported"] != null) { sendTxnRequest.IsAccValSupported = drDb["IsAccValSupported"].ToString().Equals("1") ? true : false; } else sendTxnRequest.IsAccValSupported = false; SendTransactionServices _tpSend = new SendTransactionServices(); var result = _tpSend.SendTransaction(sendTxnRequest); sql = ""; sql = "EXEC proc_tran_api_call_history "; sql += " @TRAN_ID =" + FilterString(sendTxnRequest.TranId.ToString()); sql += ", @REQUESTED_BY =" + FilterString(user); sql += ", @RESPONSE_CODE =" + FilterString(result.ResponseCode); sql += ", @RESPONSE_MSG =" + FilterString(result.Msg); GetSingleResult(sql); return result; } } }