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

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<T>(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;
}
}
}