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 exclude = new List() { "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()); } 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 (result.ResponseCode == "0") { _txnPush.UpdateTxnPost(item["ID"].ToString()); GetTxnDetails(item["ID"].ToString()); } } } } } public void GetTxnDetails(string tranId) { TxnDetails cd = _txnPush.GetTxnDetails(tranId); List bodyMappings = new List(); 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() { 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() { 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(), 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()); } 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(); } } } }