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.

232 lines
10 KiB

using JMETxnPushScheduler.API;
using JMETxnPushScheduler.Common;
using JMETxnPushScheduler.DAO;
using Newtonsoft.Json;
using Swift.API.Common.Enum;
using System;
using System.Collections.Generic;
using System.Data;
namespace JMETxnPushScheduler.Business
{
public class TxnPush
{
TxnPushDAO _txnPush = new TxnPushDAO();
public void TxnSyncMain()
{
DataTable txnData = _txnPush.GetTxnDataForApprove();
if (txnData.Rows.Count == 0 || null == txnData)
{
return;
}
Console.WriteLine("Total data fetched for sync: " + txnData.Rows.Count.ToString());
foreach (DataRow item in txnData.Rows)
{
CommonResponse _dbRes = _txnPush.GetTxnApproveData("schedular", item["ID"].ToString());
if (_dbRes.ResponseCode == "0")
{
Console.WriteLine("Send txn started: " + item["CONTROLNO"].ToString());
string newSession = Guid.NewGuid().ToString().Replace("-", "");
var result = _txnPush.GetHoldedTxnForApprovedByAdmin("scheduler", item["ID"].ToString(), newSession);
Console.WriteLine("Send txn completed with response msg: " + result.Msg);
List<string> exclude = new List<string>() { "7000", "100" };
if (result.ResponseCode != null && result.ResponseCode != "0")
{
if (!exclude.Contains(result.ResponseCode) || !result.Msg.Contains("task was canceled"))
_txnPush.SyncTxnAsComment(_dbRes.Msg, item["ID"].ToString(), item["CONTROLNO"].ToString(), !string.IsNullOrEmpty(result.Extra) ? result.Extra : result.ResponseCode, result.Msg);
else
Console.WriteLine("SyncTxnAsComment exclude Code: " + result.ResponseCode);
}
if (_dbRes.Msg == "394397")
{
if (result.ResponseCode == "0")
{
_txnPush.UpdateTxnPost(item["ID"].ToString(), result.Extra);
GetTxnDetails(item["ID"].ToString());
//_txnPush.UpdateTxnInstantPaid(item["ID"].ToString());
}
else if (result.ResponseCode == "100")//Transaction has been processed for Bank Deposit.
{
_txnPush.UpdateTxnPost(item["ID"].ToString(), result.Extra);
GetTxnDetails(item["ID"].ToString());
}
else if (result.ResponseCode == "7000" && result.Msg.Contains("ALREADY USED"))
{
_txnPush.UpdateTxnPost(item["ID"].ToString());
// GetTxnDetails(item["ID"].ToString());
}
}
else if (_dbRes.Msg == "394449") //GCC
{
if (result.ResponseCode == "0")
{
_txnPush.UpdateTxnPost(item["ID"].ToString(), result.Extra, result.Id);
GetTxnDetails(item["ID"].ToString());
}
}
else if (_dbRes.Msg == "394502")
{
if (result.ResponseCode == "0")
{
_txnPush.UpdateTxnPost(item["ID"].ToString(), result.Extra, result.Id);
GetTxnDetails(item["ID"].ToString());
}
}
else
{
if (result.ResponseCode == "0")
{
_txnPush.UpdateTxnPost(item["ID"].ToString());
GetTxnDetails(item["ID"].ToString());
}
}
}
}
}
public void GetTxnDetails(string tranId)
{
TxnDetails cd = _txnPush.GetTxnDetails(tranId);
List<Mapping> bodyMappings = new List<Mapping>();
bodyMappings.Add(new Mapping() { SValue = "CustomerName", SText = cd.senderName });
bodyMappings.Add(new Mapping() { SValue = "TxnDate", SText = cd.TranDate });
bodyMappings.Add(new Mapping() { SValue = "RefNum", SText = cd.controlNo });
bodyMappings.Add(new Mapping() { SValue = "TxnDate", SText = cd.TranDate });
bodyMappings.Add(new Mapping() { SValue = "PayoutCountry", SText = cd.PayoutCountry });
bodyMappings.Add(new Mapping() { SValue = "BankName", SText = cd.BankName });
bodyMappings.Add(new Mapping() { SValue = "BankBranch", SText = cd.BankBranch });
bodyMappings.Add(new Mapping() { SValue = "AccNum", SText = cd.AccountNo });
bodyMappings.Add(new Mapping() { SValue = "BeneName", SText = cd.BeneficiaryName });
bodyMappings.Add(new Mapping() { SValue = "PayoutAmt", SText = cd.PayoutAmount });
bodyMappings.Add(new Mapping() { SValue = "TransferAmt", SText = cd.TransferAmount });
bodyMappings.Add(new Mapping() { SValue = "Fee", SText = cd.serviceCharge });
bodyMappings.Add(new Mapping() { SValue = "TotalAmt", SText = cd.TotalAmount });
if (cd.paymentMethod.ToUpper() == "BANK DEPOSIT")
{
SendNotificationRequestMobile request = new SendNotificationRequestMobile()
{
IsBulkNotification = false,
UserName = cd.email,
ProcessId = "BankTxnPushedToAPI",
ProviderId = NotifyTemplate.BANK_TXN_POST.ToString(),
NotificationTypeId = NOTIFICATION_TYPE.EMAIL.ToString(),
Template = NotifyTemplate.BANK_TXN_POST,
Recipients = new List<RecipientViewModel>()
{
new RecipientViewModel()
{
NotificationContent = new NotificationDTO() {
Body = JsonConvert.SerializeObject(bodyMappings),
//Title will be set by mapping json
},
Address= cd.email
}
}
};
var r = NotifierV2.SendNotification(request);
Console.Write(JsonConvert.SerializeObject(r));
}
else if (cd.paymentMethod.ToUpper() == "CASH PAYMENT")
{
SendNotificationRequestMobile request = new SendNotificationRequestMobile()
{
IsBulkNotification = false,
UserName = cd.email,
ProcessId = "CashTxnPushedToAPI",
ProviderId = NotifyTemplate.CASH_TXN_POST.ToString(),
NotificationTypeId = NOTIFICATION_TYPE.EMAIL.ToString(),
Template = NotifyTemplate.CASH_TXN_POST,
Recipients = new List<RecipientViewModel>()
{
new RecipientViewModel()
{
NotificationContent = new NotificationDTO() {
Body = JsonConvert.SerializeObject(bodyMappings),
//Title will be set by mapping json
},
Address= cd.email
}
}
};
var r1 = NotifierV2.SendNotification(request);
Console.Write(JsonConvert.SerializeObject(r1));
}
}
public void TxnReleaseMain()
{
try
{
TxnPushDAO _txnPush = new TxnPushDAO();
DataTable txnData = _txnPush.GetTxnDataForRelease();
if (txnData.Rows.Count == 0 || null == txnData)
{
return;
}
GetStatic.WriteLog("Total data fetched for Release: " + txnData.Rows.Count.ToString());
// Console.WriteLine("Total data fetched for Release: " + txnData.Rows.Count.ToString());
foreach (DataRow item in txnData.Rows)
{
string ProcessId = Guid.NewGuid().ToString().Replace("-", "") + ":" + item["partner"].ToString() + ":releaseTxn";
Console.WriteLine("Release txn started: " + item["CONTROLNO"].ToString());
SendTransactionServices _tpSend = new SendTransactionServices();
var request = new TFReleaseTxnRequest()
{
TfPin = item["CONTROLNO"].ToString(),
TxnId = item["CONTROLNO2"].ToString(),
RequestBy = "scheduler",
UserName = "scheduler",
ProviderId = item["sSuperAgent"].ToString(),
ProcessId = ProcessId.Substring(ProcessId.Length - 40, 40)
};
GetStatic.WriteLog(item["CONTROLNO"].ToString() + " " + Newtonsoft.Json.JsonConvert.SerializeObject(request));
var result = _tpSend.ReleaseTransaction(request);
Console.WriteLine("Release txn completed with response msg: " + result.Msg);
if (result.ResponseCode == "0")
{
// _txnPush.UpdateTxnPost(item["ID"].ToString());
_txnPush.UpdateTxnPostRelease(item["ID"].ToString());
}
else
{
GetStatic.WriteLog("Release txn failed with response msg: " + item["CONTROLNO"].ToString() + " " + result.Msg);
}
}
}
catch (Exception ex)
{
GetStatic.WriteLog("TxnReleaseMain" + ex.ToString());
Console.WriteLine(ex.InnerException.ToString());
Console.Read();
}
}
}
}