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.
 
 

573 lines
22 KiB

using Common.Models.Agent;
using Common.Models.Bank;
using Common.Models.ExchangeRate;
using Common.Models.RequestResponse;
using Common.Models.Status;
using Common.Models.TxnModel;
using Common.TPService;
using Common.Utility;
using GMENepal.GMEReference;
using log4net;
using Newtonsoft.Json;
using System;
using System.IO;
using System.Xml.Serialization;
using TPApiServices.GCCReference;
namespace TPService.GCC.Services
{
public class GCCAPI : ITPApiServices
{
//private readonly ISendAPI _sendAPI;
private readonly ILog _log = LogManager.GetLogger(typeof(GCCAPI));
private readonly SendAPIClient _sendAPI = new SendAPIClient();
string PartnerId = GetStatic.ReadWebConfig("gcc_partnerId", "");
string Password = GetStatic.ReadWebConfig("gcc_password", "");
string SecurityKey = GetStatic.ReadWebConfig("gcc_securityKey", "");
public TPResponse GetTPResponse<T>(T model, string MethodName) where T : class
{
switch (MethodName)
{
case "getCountryList":
return GetCountryList(model as CountryListRequest);
case "currencyList":
return GetCurrencyList(model as CurrencyListRequest);
case "paymentModeList":
return GetPaymentModeList(model as PaymentModeListRequest);
case "agentList":
return GetCityList(model as AgentRequest);
case "bankList":
return GetBranchList(model as BankRequest);
case "exchangeRate":
return GetExRate(model as ExchangeRate);
case "serviceCharge":
return GetServiceCharges(model as ServiceChargesRequest);
case "send":
return SendTransaction(model as SendTransaction);
case "release":
return ApproveTransfer(model as TFReleaseTxnRequest);
case "status":
return GetTransferStatus(model as GetStatus);
case "cancelTransfer":
return CancelTransfer(model as CancelTransferRequest);
case "refundTransfer":
return RefundTransfer(model as RefundTransferRequest);
case "modifyTransfer":
return ModifyTransfer(model as ModifyTransferRequest);
case "modifyTransferStatus":
return GetModifyTransferStatus(model as ModifyTransferStatusRequest);
case "transferFinancialsList":
return GetTransferFinancialsList(model as TransferFinancialsRequest);
case "exchangeRateList":
return GetExchangeRateList(model as ExchangeRateListRequest);
case "availableBalance":
return GetAvailableBalance(model as AvailableBalanceRequest);
case "idTypeList":
return GetIDTypeList(model as IDTypeListRequest);
case "purposeList":
return GetPurposeList(model as PurposeListRequest);
case "incomeSourceList":
return GetIncomeSourceList(model as IncomeSourceListRequest);
case "relationshipList":
return GetRelationshipList(model as RelationshipListRequest);
case "ChangePassword":
return ChangePassword(model as ChangePasswordRequest);
default:
return new TPResponse() { ResponseCode = "1", Msg = "Method Name Not Found !" };
}
}
private TPResponse GetCityList(AgentRequest getCity)
{
TPResponse _response = new TPResponse();
CityListRequest req = new CityListRequest()
{
UniqueID = PartnerId,
Password = Password,
SecurityKey = SecurityKey,
CountryCode = getCity.PayoutCountry,
CurrencyCode = getCity.ExternalBankId,
PaymentModeCode = getCity.PaymentType,
//PayoutBranchCode = exRate.PAgentId
};
try
{
_log.Info("GetExchangeRate | REQUEST :" + JsonConvert.SerializeObject(req));
CityListResponse res = _sendAPI.GetCityList(req);
_log.Info("GetExchangeRate | RESPONSE :" + JsonConvert.SerializeObject(res));
_response.ResponseCode = res.ResponseCode;
_response.Msg = res.ResponseMessage;
//_response.Extra = res.g;
//_response.Extra2 = res.CostRate;
//_response.Id = res.CustomerRate;
_response.Data = res;
}
catch (Exception ex)
{
_response.ResponseCode = "1";
_response.Msg = "Unknown error!";
_log.ErrorFormat("ExchangeRateResponse | Exception occured On ExchangeRat Method At GCCREMITApi ! Details :" + ex.Message);
}
return _response;
}
private TPResponse GetBranchList(BankRequest getbranch)
{
TPResponse _response = new TPResponse();
BranchListRequest req = new BranchListRequest()
{
UniqueID = PartnerId,
Password = Password,
SecurityKey = SecurityKey,
CountryCode = getbranch.CountryCode,
CurrencyCode = getbranch.BankName,
PaymentModeCode = getbranch.PaymentMethod,
CityCode = getbranch.CityId.ToString(),
Search = "",
//PayoutBranchCode = exRate.PAgentId
};
try
{
_log.Info("GetExchangeRate | REQUEST :" + JsonConvert.SerializeObject(req));
BranchListResponse res = _sendAPI.GetBranchList(req);
_log.Info("GetExchangeRate | RESPONSE :" + JsonConvert.SerializeObject(res));
_response.ResponseCode = res.ResponseCode;
_response.Msg = res.ResponseMessage;
//_response.Extra = res.g;
//_response.Extra2 = res.CostRate;
//_response.Id = res.CustomerRate;
_response.Data = res;
}
catch (Exception ex)
{
_response.ResponseCode = "1";
_response.Msg = "Unknown error!";
_log.ErrorFormat("ExchangeRateResponse | Exception occured On ExchangeRat Method At GCCREMITApi ! Details :" + ex.Message);
}
return _response;
}
private TPResponse GetExRate(ExchangeRate exRate)
{
TPResponse _response = new TPResponse();
ExchangeRateRequest req = new ExchangeRateRequest()
{
UniqueID = PartnerId,
Password = Password,
SecurityKey = SecurityKey,
PayoutBranchCode = exRate.PAgentId
};
try
{
_log.Info("GetExchangeRate | REQUEST :" + JsonConvert.SerializeObject(req));
ExchangeRateResponse res = _sendAPI.GetExchangeRate(req);
_log.Info("GetExchangeRate | RESPONSE :" + JsonConvert.SerializeObject(res));
_response.ResponseCode = res.ResponseCode;
_response.Msg = res.ResponseMessage;
_response.Extra = res.PayoutBranchCode;
_response.Extra2 = res.CostRate;
_response.Id = res.CustomerRate;
_response.Data = res;
}
catch (Exception ex)
{
_response.ResponseCode = "1";
_response.Msg = "Unknown error!";
_log.ErrorFormat("ExchangeRateResponse | Exception occured On ExchangeRat Method At GCCREMITApi ! Details :" + ex.Message);
}
return _response;
}
private static string ObjectToXML(object input)
{
try
{
StringWriter stringwriter = new StringWriter();
XmlSerializer serializer = new XmlSerializer(input.GetType());
serializer.Serialize(stringwriter, input);
return stringwriter.ToString();
}
catch (Exception ex)
{
if (ex.InnerException != null)
ex = ex.InnerException;
return "Could not convert: " + ex.Message;
}
}
private TPResponse SendTransaction(SendTransaction sendTransferRequest)
{
TPResponse _response = new TPResponse();
SendTransferRequest mapreq = SendTransferMap(sendTransferRequest);
ExchangeRate exrate = new ExchangeRate()
{
PAgentId = mapreq.PayoutBranchCode
};
TPResponse exrateRes = GetExRate(exrate);
mapreq.CostRate = exrateRes.Extra2;
var costR = Convert.ToDecimal(mapreq.CostRate);
var payoutA = Convert.ToDecimal(mapreq.PayoutAmount);
var paingA = payoutA / costR;
mapreq.PayinAmount = paingA.ToString();
try
{
_log.Info("SendTransferRequest | REQUEST :" + JsonConvert.SerializeObject(mapreq));
// _log.Info("SendTransferRequest | REQUEST :" + ObjectToXML(mapreq));
SendTransferResponse res = _sendAPI.SendTransfer(mapreq);
// _log.Info("SendTransferResponse | RESPONSE :" + ObjectToXML(res));
_log.Info("SendTransferResponse | RESPONSE :" + JsonConvert.SerializeObject(res));
_response.ResponseCode = res.ResponseCode == "001" ? "0" : "1";
_response.Id = res.TransactionNo;
//_response.Extra = res.PayoutCountryName;
_response.Msg = res.ResponseMessage;
//_response.Extra1 =
_response.Data = res;
}
catch (Exception ex)
{
_response.ResponseCode = "1";
_response.Msg = "Unknown error!";
_log.ErrorFormat("SendTransferResponse | Exception occured On SendTransfer Method At GCCREMITApi ! Details :" + ex.Message);
}
return _response;
}
private SendTransferRequest SendTransferMap(SendTransaction sT)
{
return new SendTransferRequest()
{
UniqueID = PartnerId,
Password = Password,
SecurityKey = SecurityKey,
PayoutBranchCode = sT.Agent.PBranchId,
BankAccountNo = sT.Receiver.RAccountNo,
BankAddress = sT.Receiver.RCountry,//"India",
BankBranchCode = sT.Agent.PAgentName, // get IFSC code
BankBranchName = sT.Agent.PBankBranchName,
BankCity = sT.Agent.PBranchCity,
BankCountry = sT.Receiver.RCountryId.ToString(),
BankName = sT.Agent.PBankName,
BankState = "",//sT.BankState,
BankZipCode = "",//sT.BankZipCode,
PayoutAmount = sT.Transaction.PAmt.ToString(),
PayinAmount = sT.Transaction.TAmt.ToString(),
//ExtensionData = '',
PayoutCurrencyCode = sT.Transaction.PCurr,
CostRate = sT.Transaction.ExRate.ToString(),
PurposeCode = sT.Transaction.PurposeOfRemittanceName,
ReceiverAddress = sT.Receiver.RAdd1,
ReceiverDOB = sT.Receiver.RDob,
ReceiverFirstName = sT.Receiver.RFirstName,
ReceiverMiddleName = sT.Receiver.RMiddleName,
ReceiverLastName = sT.Receiver.RLastName,
ReceiverFourthName = "",//sT.Receiver.,
ReceiverIDExpiryDate = sT.Receiver.RIdValidDate,
ReceiverIDNumber = sT.Receiver.RIdNo,
ReceiverIDPlaceOfIssue = "",//sT.Receiver.reid,
ReceiverIDType = sT.Receiver.RIdType,
ReceiverMessage = "",//sT.Receiver.me,,
ReceiverMobileNo = sT.Receiver.RMobile,
//ReceiverNationality = "IN",// sT.Receiver.RCountry,//
ReceiverNationality = sT.Receiver.RNativeCountry,
ReceiverTelephoneNo = sT.Receiver.RTel,
ReceiverRelationship = sT.Receiver.RelWithSenderName,//"Self",
ReceiverZipCode = "",//sT.Receiver,
ReferenceNo = sT.Transaction.JMEControlNo,
SenderDOB = sT.Sender.SBirthDate,
SenderEmail = sT.Sender.SEmail,
SenderFirstName = sT.Sender.SFirstName,
SenderMiddleName = sT.Sender.SMiddleName,
SenderLastName = sT.Sender.SLastName1,
SenderFourthName = sT.Sender.SLastName2,
SenderTelephoneNo = "",
SenderIDExpiryDate = sT.Sender.SIdExpiryDate,
SenderIDNumber = sT.Sender.SIdNo,
// SenderIDPlaceOfIssue = "GB",//sT.Sender.SZipCode,
SenderIDPlaceOfIssue = sT.Sender.SZipCode,
SenderIDType = sT.Sender.SIdType,
SenderMobileNo = sT.Sender.SMobile,
SenderNationality = sT.Sender.SCountryName,
//SenderTelephoneNo = sT.Sender.STel,
//SenderEmail = sT.Sender.SEmail,
SenderZipCode = "", //sT.Sender.SZipCode,
SenderAddress = sT.Sender.SAddress,
TransactionNo = "",//sT.TranId.ToString(),
};
}
private TPResponse ApproveTransfer(TFReleaseTxnRequest approve)
{
//DbResult response = new DbResult();
//TPResponse _response = new TPResponse();
TPResponse _response = new TPResponse();
ApproveTransferRequest req = new ApproveTransferRequest()
{
UniqueID = PartnerId,
Password = Password,
SecurityKey = SecurityKey,
TransactionNo = approve.TxnId,
};
///ApproveTransferRequest appMap = ApproveTransferMap(approveTransferRequest);
try
{
// _log.Info("ApproveTransferRequest | REQUEST :" + JsonConvert.SerializeObject(appMap));
_log.Info("ApproveTransferRequest | REQUEST :" + ObjectToXML(req));
var res = _sendAPI.ApproveTransfer(req);
//_log.Info("ApproveTransferResponse | RESPONSE :" + JsonConvert.SerializeObject(res));
_log.Info("ApproveTransferResponse | RESPONSE :" + ObjectToXML(res));
_response.ResponseCode = res.ResponseCode == "001" ? "0" : "1";
_response.Msg = res.ResponseMessage;
_response.Data = res;
}
catch (Exception ex)
{
_response.ResponseCode = "1";
_response.Msg = "Unknown error!";
_log.ErrorFormat("ApproveTransferResponse | Exception occured On ApproveTransfer Method At GCCREMITApi ! Details :" + ex.Message);
}
return _response;
}
private TPResponse GetTransferStatus(GetStatus status)
{
TPResponse _response = new TPResponse();
TransferStatusRequest req = new TransferStatusRequest()
{
UniqueID = PartnerId,
Password = Password,
SecurityKey = SecurityKey,
TransactionNo = status.PartnerPinNo,
};
try
{
_log.Info("StatusTransferRequest | REQUEST :" + ObjectToXML(req));
var res = _sendAPI.GetTransferStatus(req);
_log.Info("StatusTransferResponse | RESPONSE :" + ObjectToXML(res));
_response.ResponseCode = res.ResponseCode == "001" ? "0" : "1";
_response.Msg = res.ResponseMessage;
_response.Data = res;
}
catch (Exception ex)
{
_response.ResponseCode = "1";
_response.Msg = "Unknown error!";
_log.ErrorFormat("StatusrResponse | Exception occured On ApproveTransfer Method At GCCREMITApi ! Details :" + ex.Message);
}
return _response;
}
//private ApproveTransferRequest ApproveTransferMap(TFReleaseTxnRequest ap)
//{
// return new ApproveTransferRequest()
// {
// UniqueID = PartnerId,
// Password = Password,
// SecurityKey = SecurityKey,
// //TransactionNo = ap.TxnId
// };
//}
private TPResponse CancelTransfer(CancelTransferRequest cancelTransferRequest)
{
DbResult response = new DbResult();
TPResponse _response = new TPResponse();
CancelTransferRequest cancMap = CancelTransferMap(cancelTransferRequest);
try
{
_log.Info("CancelTransferRequest | REQUEST :" + JsonConvert.SerializeObject(cancelTransferRequest));
var req = _sendAPI.CancelTransfer(cancMap);
_log.Info("CancelTransferResponse | RESPONSE :" + JsonConvert.SerializeObject(req));
_response.Data = response;
_response.Msg = req.ResponseMessage;
_response.ResponseCode = "0";
}
catch (Exception ex)
{
_response.ResponseCode = "1";
_response.Msg = "Unknown error!";
_log.ErrorFormat("SendTransferResponse | Exception occured On ApproveTransfer Method At GCCREMITApi ! Details :" + ex.Message);
}
return _response;
}
private CancelTransferRequest CancelTransferMap(CancelTransferRequest tc)
{
return new CancelTransferRequest()
{
TransactionNo = tc.TransactionNo,
Remarks = tc.Remarks
};
}
private TPResponse RefundTransfer(RefundTransferRequest refundTransferRequest)
{
DbResult response = new DbResult();
TPResponse _response = new TPResponse();
RefundTransferRequest cancMap = RefundTransferMap(refundTransferRequest);
try
{
_log.Info("RefundTransferRequest | REQUEST :" + JsonConvert.SerializeObject(refundTransferRequest));
var req = _sendAPI.RefundTransfer(cancMap);
_log.Info("RefundTransferResponse | RESPONSE :" + JsonConvert.SerializeObject(req));
_response.Data = response;
_response.Msg = req.ResponseMessage;
_response.ResponseCode = "0";
}
catch (Exception ex)
{
_response.ResponseCode = "1";
_response.Msg = "Unknown error!";
_log.ErrorFormat("RefundTransfer | Exception occured On RefundTransfer Method At GCCREMITApi ! Details :" + ex.Message);
}
return _response;
}
private RefundTransferRequest RefundTransferMap(RefundTransferRequest rt)
{
return new RefundTransferRequest()
{
TransactionNo = rt.TransactionNo,
Remarks = rt.Remarks
};
}
private TPResponse ModifyTransfer(ModifyTransferRequest modifyTransferRequest)
{
throw new NotImplementedException();
}
private TPResponse GetModifyTransferStatus(ModifyTransferStatusRequest modifyTransferStatusRequest)
{
throw new NotImplementedException();
}
//private TPResponse GetTransferStatus(TransferStatusRequest transferStatusRequest)
//{
// throw new NotImplementedException();
//}
private TPResponse GetTransferFinancialsList(TransferFinancialsRequest transferFinancialsRequest)
{
throw new NotImplementedException();
}
private TPResponse GetExchangeRateList(ExchangeRateListRequest exchangeRateListRequest)
{
throw new NotImplementedException();
}
private TPResponse GetAvailableBalance(AvailableBalanceRequest availableBalanceRequest)
{
throw new NotImplementedException();
}
private TPResponse GetIDTypeList(IDTypeListRequest iDTypeListRequest)
{
throw new NotImplementedException();
}
private TPResponse GetPurposeList(PurposeListRequest purposeListRequest)
{
throw new NotImplementedException();
}
private TPResponse GetIncomeSourceList(IncomeSourceListRequest incomeSourceListRequest)
{
throw new NotImplementedException();
}
private TPResponse GetRelationshipList(RelationshipListRequest relationshipListRequest)
{
throw new NotImplementedException();
}
private TPResponse ChangePassword(ChangePasswordRequest changePasswordRequest)
{
throw new NotImplementedException();
}
private TPResponse GetServiceCharges(ServiceChargesRequest serviceChargesRequest)
{
throw new NotImplementedException();
}
private TPResponse GetBranchList(BranchListRequest branchListRequest)
{
throw new NotImplementedException();
}
private TPResponse GetCityList(CityListRequest cityListRequest)
{
throw new NotImplementedException();
}
private TPResponse GetPaymentModeList(PaymentModeListRequest paymentModeListRequest)
{
throw new NotImplementedException();
}
private TPResponse GetCurrencyList(CurrencyListRequest currencyListRequest)
{
throw new NotImplementedException();
}
private TPResponse GetCountryList(CountryListRequest countryListRequest)
{
throw new NotImplementedException();
}
}
}