|
|
using Business.KFTCBusiness; using Business.TPApi; using Business.Utility; using Common; using Common.Helper; using Common.Language; using Common.Model; using Common.Model.Config; using Common.Model.Notification; using Common.Model.SendMoney; using Common.Model.TPSendMoney; using log4net; using Newtonsoft.Json; using PushNotification; using Repository.Coupon; using Repository.Mobile; using Repository.Reward; using Repository.SendMoney; using System; using System.Collections.Generic; using System.Configuration; using System.IO; using System.Runtime.Remoting.Messaging; using System.Text; using System.Threading.Tasks; using System.Web; using Notify = Common.Model.Notification;
namespace Business.SendMoney { public class SendMoneyBusiness : ISendMoneyBusiness { private readonly ISendMoneyRepository _repo; private readonly IKftcProcessBusiness _kftcBuss; private readonly IRewardRepository _irewardrepo; private readonly ICouponRepository icouponrepo; private readonly IMobileServicesRepo _requestServices; private readonly ThirdPartyAPI _tpApi = new ThirdPartyAPI(); private static readonly ILog Log = LogManager.GetLogger(typeof(SendMoneyBusiness));
public SendMoneyBusiness(ISendMoneyRepository repo, IKftcProcessBusiness kftcBuss, IRewardRepository irewardrepo, ICouponRepository icouponrepo, IMobileServicesRepo requestServices) { _repo = repo; _kftcBuss = kftcBuss; _irewardrepo = irewardrepo; this.icouponrepo = icouponrepo; _requestServices = requestServices; }
public JsonRxResponse LoadCountryServiceDetail(CountryServiceModel request) { JsonRxResponse jsonRx = new JsonRxResponse(); try { jsonRx.SetResponse("1", "Error"); CountryServiceDetail res = _repo.LoadCountryServiceDetail(request); if (res == null) { Log.Debug("LoadCountryServiceDetail | Returning null while fetching country service details."); return jsonRx; } Log.Debug("LoadCountryServiceDetail | Calling LoadCountryServiceDetail Success..."); jsonRx.SetResponse("0", "Success"); var path = GetStatic.ReadWebConfig("ServiceType_Resource", ""); var text = File.ReadAllText(path); List<ServiceTypeDetails> sd = JsonConvert.DeserializeObject<List<ServiceTypeDetails>>(text); var lang = Convert.ToString(CallContext.GetData(Constants.Language)); if (string.IsNullOrEmpty(lang)) { lang = "en"; } var idx = sd.FindIndex(x => x.countryCode == lang); var data = new ServiceTypeDetails(); if (idx < 0) { data = sd[sd.FindIndex(x => x.countryCode == "en")]; } else { data = sd[idx]; }
foreach (var item in res.PayoutMode) { switch (item.Mode.ToLower()) { case "cash payment": item.ModeDescription = data.cashPayment; break;
case "bank deposit": item.ModeDescription = data.bankDeposit; break;
case "mobile wallet": item.ModeDescription = data.mobileWallet; break;
case "home delivery": item.ModeDescription = data.homeDelivery; break;
case "card payment": item.ModeDescription = data.cardPayment; break; } }
jsonRx.Data = res; return jsonRx; } catch (Exception ex) { Log.Error("Something Went Wrong, Please Try Again!!", ex); jsonRx.SetResponse("1", "Unable to fetch the country service details."); return jsonRx; } }
public JsonRxResponse LoadBankBranch(string country, string bank, string search) { JsonRxResponse jsonRx = new JsonRxResponse(); try { jsonRx.SetResponse("1", "Sorry, No branch found."); List<BankBranch> res = _repo.LoadBankBranch(country, bank, search); if (res == null) { Log.Debug("LoadCountryBankServiceDetail | Returning null while fetching the list of bank branches details."); return jsonRx; } Log.Debug("LoadBankBranch | DB Call Success.."); jsonRx.SetResponse("0", "Success"); jsonRx.Data = res; return jsonRx; } catch (Exception ex) { Log.Error("Something Went Wrong, Please Try Again!!", ex); jsonRx.SetResponse("1", "Unable to fetch the list of bank branches details."); return jsonRx; } }
public JsonRxResponse Calculate(ExRateCalculateRequest m) { JsonRxResponse response = new JsonRxResponse(); APIJsonResponse jsonResponse = new APIJsonResponse(); try { ExRateCalculate model = new ExRateCalculate() { SBranch = Convert.ToInt32(GetStatic.ReadWebConfig("sBranch", "")), SSuperAgent = Convert.ToInt32(GetStatic.ReadWebConfig("sSuperAgent", "")), AgentRefId = "", CalcBy = m.calcBy, CAmount = Convert.ToDecimal(m.cAmount == "" ? "0" : m.cAmount), CardOnline = "", CollCurrency = m.sCurrency, CouponCode = m.DeviceType, CustomerId = 0, IsManualSc = false, IsOnline = false, ManualSc = 0, PAgentId = Convert.ToInt32(m.pAgent == "" ? "0" : m.pAgent), PAgentName = "", PAmount = Convert.ToDecimal(m.pAmount == "" ? "0" : m.pAmount), PaymentType = m.paymentType, PayoutPartner = Convert.ToInt32(m.payoutPartner == "" ? "0" : m.payoutPartner), PCountry = Convert.ToInt32(m.pCountry == "" ? "0" : m.pCountry), pCountryCode = m.pCountryName, PCountryName = m.pCountryName, PCurrency = m.pCurrency, ProcessFor = "send", ProcessId = m.processId == "" ? Guid.NewGuid().ToString() : m.processId, ProviderId = "", RequestedBy = "mobile", SAgent = 0, SchemeId = m.schemeId, SCountry = Convert.ToInt32(m.sCountry == "" ? "0" : m.sCountry), SCurrency = m.sCurrency, ServiceType = m.serviceType, SessionId = Guid.NewGuid().ToString(), tPExRate = m.tpExRate, UserName = m.userId, DiscountedFee = Convert.ToDecimal(string.IsNullOrEmpty(m.discountedFee) ? "0" : m.discountedFee) };
Log.Debug("Calculate | DATA SENT TO TPAPI : " + JsonConvert.SerializeObject(model)); APIJsonResponse result = _tpApi.ThirdPartyApiGetDataOnly<ExRateCalculate, APIJsonResponse>(model, "TP/ExRate", out jsonResponse); Log.Debug("Calculate | TPAPI RRESPONSE : " + JsonConvert.SerializeObject(result));
response = new JsonRxResponse() { ErrorCode = result.ResponseCode, Id = result.Id, Msg = result.Msg, Data = result.Data, Extra = result.Extra, Extra2 = result.Extra1, FootNoteMessage = result.FootNoteMessage };
return response; } catch (Exception ex) { Log.Error("Something Went Wrong, Please Try Again!!", ex); response.SetResponse("1", "Error occured while calculating ex-rate"); return response; } }
public JsonRxResponse TrackTransaction(TrackTransactionParam param) { JsonRxResponse jsonRx = new JsonRxResponse(); try { jsonRx = _repo.TrackTransaction(param); Log.Debug("TrackTransaction | DB RESPONSE : " + JsonConvert.SerializeObject(jsonRx));
if (!jsonRx.ErrorCode.Equals("0")) { Log.Debug("TrackTransaction | Error occurred while calling TrackTransaction..." + "ControlNo: " + param.ControlNo); return jsonRx; } return jsonRx; } catch (Exception ex) { Log.Error("Something Went Wrong, Please Try Again!!", ex); jsonRx.SetResponse("1", "Error occurred while fetching the paystatus of the transaction."); return jsonRx; } }
public JsonRxResponse AmendTransaction(TrackTransactionParam param) { JsonRxResponse jsonRx = new JsonRxResponse(); try { jsonRx = _repo.AmendTransaction(param); Log.Debug("AmendTransaction | DB RESPONSE : " + JsonConvert.SerializeObject(jsonRx));
if (!jsonRx.ErrorCode.Equals("0")) { return jsonRx; } string body = "Hello JME Support, <br>"; body += param.UserId + " Send Amendment request for JME No: " + param.ControlNo; body += param.Body;
//EmailParameters _emailParams = new EmailParameters()
//{
// To = ApplicationConfig.ReadWebConfig("JMESupport"),
// MsgSubject = "Amendment request for JME No: " + param.ControlNo,
// MsgBody = body
//};
//Task.Run(() => GetStatic.SendEmail(_emailParams));
//Task.Run(() =>
//{
// SendNotificationRequest request = new SendNotificationRequest()
// {
// IsBulkNotification = false,
// UserName = param.UserId,
// ProcessId = param.ControlNo,
// ProviderId = param.ControlNo,
// NotificationTypeId = NOTIFICATION_TYPE.EMAIL.ToString(),
// Template = Common.Model.Enum.NotifyTemplate.RESET_PASSWORD,
// Recipients = new List<RecipientViewModel>()
// {
// new RecipientViewModel()
// {
// NotificationContent = new NotificationDTO() {
// Body = body,
// //Title will be set by mapping json
// },
// Address= ApplicationConfig.ReadWebConfig("JMESupport")
// }
// }
// };
// NotifierV2.SendNotification(request, NOTIFICATION_TYPE.EMAIL);
//});
return jsonRx; } catch (Exception ex) { Log.Error("Something Went Wrong, Please Try Again!!", ex); jsonRx.SetResponse("1", "Error occurred while requesting the transaction amendment request."); return jsonRx; } }
public JsonRxResponse AmendTransactionV2(AmendTransactionParam param) { JsonRxResponse jsonRx = new JsonRxResponse(); try { var xml = GetXMLValues(param); jsonRx = _repo.AmendTransactionV2(param, xml); Log.Debug("AmendTransactionV2 | DB RESPONSE : " + JsonConvert.SerializeObject(jsonRx));
if (!jsonRx.ErrorCode.Equals("0")) { return jsonRx; } //string body = "Hello JME Support, <br>";
//body += param.UserId + " Send Amendment request for JME No: " + param.ControlNo;
//body += param.Body;
//EmailParameters _emailParams = new EmailParameters()
//{
// To = ApplicationConfig.ReadWebConfig("JMESupport"),
// MsgSubject = "Amendment request for JME No: " + param.ControlNo,
// MsgBody = body
//};
//Task.Run(() => GetStatic.SendEmail(_emailParams));
return jsonRx; } catch (Exception ex) { Log.Error("Something Went Wrong, Please Try Again!!", ex); jsonRx.SetResponse("1", "Error occurred while requesting the transaction amendment request."); return jsonRx; } }
private string GetXMLValues(AmendTransactionParam param) { StringBuilder sb = new StringBuilder("<root>"); foreach (var item in param.ChangeParams) { sb.Append("<row"); sb.Append(string.Format(" CloumnName=\"{0}\" ColumnValue=\"{1}\"", item.Key, item.Value)); sb.Append(" />"); } sb.AppendLine("</root>"); return sb.ToString(); }
public JsonRxResponse CancelTransaction(TrackTransactionParam param) { JsonRxResponse jsonRx = new JsonRxResponse(); try { jsonRx = _repo.CancelTransaction(param); Log.Debug("CancelTransaction | DB RESPONSE : " + JsonConvert.SerializeObject(jsonRx)); if (!jsonRx.ErrorCode.Equals("0")) { return jsonRx; } //string body = "Hello JME Support, <br>";
//body += param.UserId + " Send cancellation request for JME No: " + param.ControlNo;
//body += param.Body;
//EmailParameters _emailParams = new EmailParameters()
//{
// To = ApplicationConfig.ReadWebConfig("JMESupport"),
// MsgSubject = "Cancellation request for JME No: " + param.ControlNo,
// MsgBody = body
//};
//Task.Run(() => GetStatic.SendEmail(_emailParams));
return jsonRx; } catch (Exception ex) { Log.Error("Something Went Wrong, Please Try Again!!", ex); jsonRx.SetResponse("1", "Error occurred while requesting the transaction cancel."); return jsonRx; } }
public JsonRxResponse RejectTransaction(RejectTransactionParam param) { JsonRxResponse jsonRx = new JsonRxResponse();
//JsonRxResponse response = new JsonRxResponse();
APIJsonResponse jsonResponse = new APIJsonResponse(); try {
DbResult _dbRes = _repo.GetTxnApproveData(param.UserId, param.TranId); Log.Debug("RejectTransaction | GetTxnApproveData RESPONSE : " + JsonConvert.SerializeObject(_dbRes)); if (_dbRes.Extra == "True" || _dbRes.Extra == "1")//is realtime
{
CancelTxnPartner model = new CancelTxnPartner() { ProviderId = _dbRes.Msg, PartnerPinNo = _dbRes.Id, CancelReason = "41", ProcessId = param.ProcessId }; Log.Debug("RejectTransaction | DATA SENT TO TPAPI : " + JsonConvert.SerializeObject(model)); APIJsonResponse result = _tpApi.ThirdPartyApiGetDataOnly<CancelTxnPartner, APIJsonResponse>(model, "TP/cancelTxn", out jsonResponse); Log.Debug("RejectTransaction | TPAPI RRESPONSE : " + JsonConvert.SerializeObject(result));
if (result.ResponseCode == "0") { jsonRx = _repo.RejectTransaction(param); } else { jsonRx = new JsonRxResponse() { ErrorCode = result.ResponseCode, Id = result.Id, Msg = result.Msg, Data = result.Data, Extra = result.Extra, Extra2 = result.Extra1 }; }
return jsonRx; } else { jsonRx = _repo.RejectTransaction(param); Log.Debug("RejectTransaction | DB RESPONSE : " + JsonConvert.SerializeObject(jsonRx));
}
return jsonRx; } catch (Exception ex) { Log.Error("Something Went Wrong, Please Try Again!!", ex); jsonRx.SetResponse("1", "Error occurred while rejecting the transaction."); return jsonRx; } } public Common.Model.DbResult CheckLoginPassword(string user, string txnPassword, string paymentType, string customerId) { return _repo.CheckLoginPassword(user, txnPassword, paymentType, customerId); }
public Common.Model.DbResult CheckLoginPIN(string user, string txnPassword, string paymentType, string customerId) { return _repo.CheckLoginPIN(user, txnPassword, paymentType, customerId); }
public JsonRxResponse SendTransaction(MobileRemitRequest model)
{ JsonRxResponse response = new JsonRxResponse(); APIJsonResponse jsonResponse = new APIJsonResponse(); try { TpSendMoney tp = new TpSendMoney() { CalBy = model.CalBy, CDDI = new CustomerDueDiligence() { PurposeOfRemittance = model.PurposeOfRemittance, RelWithSender = model.RelWithSender, SourceOfFund = model.SourceOfFund, otherPurposeOfRemittance = model.otherPurposeOfRemittance, otherSourceOfFund = model.otherSourceOfFund, GoodsOrigin = model.GoodsOrigin, GoodsType = model.GoodsType, PortOfShipment = model.PortOfShipment }, CollAmt = model.CollAmt, CollCurr = model.CollCurr, DeliveryMethodId = Convert.ToInt32(model.DeliveryMethodId == "" || model.DeliveryMethodId == null ? "0" : model.DeliveryMethodId), ExRate = model.ExRate, ForexSessionId = model.FOREX_SESSION_ID, IsRealtime = false, PaymentType = model.PaymentType, PayoutAmt = model.PayoutAmt == "" ? "0" : model.PayoutAmt, PayoutCurr = model.PCurr, PayOutPartnerId = Convert.ToInt32(model.PayOutPartner == "" || model.PayOutPartner == null ? "0" : model.PayOutPartner), // PBankId = model.DeliveryMethodId == "2" ? Convert.ToInt32(model.PAgent == "" || model.PAgent == null ? "0" : model.PAgent) : 0,
PBankId = Convert.ToInt32(model.PAgent == "" || model.PAgent == null ? "0" : model.PAgent), PBranchId = Convert.ToInt32(model.PBranch == "" || model.PBranch == null ? "0" : model.PBranch), PCountryId = 0, ProcessId = model.ProcessId, ProviderId = "", Receiver = new ReceiverInfo() { ReceiverId = model.ReceiverId, AccountNo = model.ReceiverAccountNo }, RequestedBy = "mobile", ScDiscount = model.Discount, //SchemeId = model.schemeId,
SCountryId = 0, SenderId = model.SenderId, ServiceCharge = model.ServiceCharge, SessionId = "", SIpAddress = model.IpAddress, SourceType = "", TpExRate = model.TpExRate, TpPCurr = model.TpPCurr, TransferAmt = model.TransferAmt, UserName = model.User, DiscountedFee = model.DiscountedFee, SiteId = ConfigurationManager.AppSettings["sitereference"].ToString()
};
Log.Debug("DOTRANSACTION | DATA SENT TO TPAPI : " + JsonConvert.SerializeObject(tp)); APIJsonResponse result = _tpApi.ThirdPartyApiGetDataOnly<TpSendMoney, APIJsonResponse>(tp, "TP/mobileSendTxn", out jsonResponse); Log.Debug("DOTRANSACTION | TPAPI RESPONSE : " + JsonConvert.SerializeObject(result));
response = new JsonRxResponse() { ErrorCode = result.ResponseCode, Id = result.Id, Msg = result.Msg, Data = result.Data, Extra = result.Extra, Extra2 = result.Extra2, Extra3 = result.Extra3, Extra4 = result.Extra4 };
if (response.ErrorCode.Equals("0")) { //var randomPassword = PasswordGenerator.GenerateRandomPassword(new PasswordGenerator.PasswordOptions()
//{ RequireDigit = true, RequiredLength = 10, RequiredUniqueChars = 2, RequireLowercase = true, RequireNonAlphanumeric = true, RequireUppercase = true });
string eID = HttpUtility.UrlEncode(AesOperation.EncryptString(ConfigurationManager.AppSettings["encryptKey"].ToString(), result.Id)); string eCn = HttpUtility.UrlEncode(AesOperation.EncryptString(ConfigurationManager.AppSettings["encryptKey"].ToString(), result.Extra));
var trustpaymentCallback = ApplicationConfig.ReadWebConfig("trustpaymentCallback"); var trustpaymentSuccess = ApplicationConfig.ReadWebConfig("trustpaymentSuccess"); var trustpaymentFail = ApplicationConfig.ReadWebConfig("trustpaymentFail");
Gateway gateway = new Gateway() { Code = result.Extra2, IsRedirect = result.Extra3.Equals("Y") ? true : false, //Token = randomPassword,
RedirectURL = result.Extra3.Equals("Y") ? $"{trustpaymentCallback}?id={eID}&ref={response.Extra4}&cn={eCn}&token=" : "", CheckSuccessURL = result.Extra3.Equals("Y") ? trustpaymentSuccess : "", CheckFailURL = result.Extra3.Equals("Y") ? trustpaymentFail : "" }; response.Data = gateway;
string email = model.User;
try { if (!result.Extra3.Equals("Y")) { UserDetails userDetails = _requestServices.GetUserDetails(email); List<Notify.Mapping> bodyMappings = new List<Notify.Mapping>(); bodyMappings.Add(new Notify.Mapping() { SValue = "CustomerName", SText = userDetails.FullName }); bodyMappings.Add(new Notify.Mapping() { SValue = "CollectAmt", SText = GetStatic.ShowDecimal(model.CollAmt) }); SendNotificationRequest request = new SendNotificationRequest() { IsBulkNotification = false, UserName = userDetails.Email, ProviderId = "BankTransferTxnPendingStatus", NotificationTypeId = NOTIFICATION_TYPE.EMAIL.ToString(), Template = Common.Model.Enum.NotifyTemplate.BANK_TRANSFER_TXN_PENDING, Recipients = new List<RecipientViewModel>() { new RecipientViewModel() { NotificationContent = new NotificationDTO() { Body = JsonConvert.SerializeObject(bodyMappings), //Title will be set by mapping json
}, Address= userDetails.Email } } }; NotifierV2.SendNotification(request, NOTIFICATION_TYPE.EMAIL); }
} catch (Exception ex) {
Log.Error("BankTransferTxnPendingStatus", ex); }
} return response; } catch (Exception ex) { Log.Error("Something Went Wrong, Please Try Again!!", ex); response.SetResponse("1", "Error occured while SendTransaction"); return response; } }
public JsonRxResponse AccountValidation(AccountValidationModel model) { JsonRxResponse response = new JsonRxResponse(); APIJsonResponse jsonResponse = new APIJsonResponse(); try { string providerid = string.Empty; string paymentMode = model.PaymentMode ?? ""; string remarks = string.Empty; bool allowProceed = true; AccountValidate accountValidate = new AccountValidate() {
AccountNumber = model.AccountNumber, BankCode = model.BankCode, UserName = model.UserName, ReceiverName = !string.IsNullOrEmpty(model.ReceiverName) ? model.ReceiverName : Utilities.GetFullName(model.FirstName, model.MiddleName, model.LastName), ControlNo = model.ControlNo ?? "", PaymentMode = model.PaymentMode, SessionId = "", ProcessId = model.ProcessId }; if (string.IsNullOrEmpty(providerid)) { if (model.BankCountry.Equals("BD")) { providerid = "394414"; paymentMode = model.Equals("2") ? "AC" : "MW"; } else if (model.BankCountry.Equals("NP")) { providerid = "394397"; if (model.BankCode == "2454") accountValidate.BankCode = "IMEPAY"; else if (model.BankCode == "2662") accountValidate.BankCode = "KHALTI"; } else if (model.BankCountry.Equals("LK")) { providerid = "394400"; } else if (model.BankCountry.Equals("VD")) { providerid = "394132"; } }
accountValidate.ProviderId = providerid;
Log.Debug("AccountValidation | DATA SENT TO TPAPI : " + JsonConvert.SerializeObject(accountValidate)); APIJsonResponse result = _tpApi.ThirdPartyApiGetDataOnly<AccountValidate, APIJsonResponse>(accountValidate, "TP/Verify", out jsonResponse); Log.Debug("AccountValidation | TPAPI RESPONSE : " + JsonConvert.SerializeObject(result));
response = new JsonRxResponse() { ErrorCode = result.ResponseCode.Equals("0") ? "0" : "1", Id = result.Id, Msg = result.ResponseCode.Equals("0") ? "Validation Success" : "Validation Failed", Data = result.Data, Extra = allowProceed ? "Y" : "N", Extra2 = result.Extra1, Extra3 = result.Extra3 };
return response; } catch (Exception ex) { Log.Error("AccountValidation", ex); response.SetResponse("1", "Error occured while AccountValidation"); return response; } } } }
|