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.
 
 
 

247 lines
9.5 KiB

using Common;
using Common.Helper;
using Common.Language;
using Common.Model.AutoRefund;
using Common.Model.Enum;
using Common.Model.KwangjuBank;
using Common.Model.PennyTest;
using log4net;
using Newtonsoft.Json;
using PushNotification;
using Repository.PennyTest;
using System;
using System.Runtime.Remoting.Messaging;
using System.Threading.Tasks;
namespace Business.PennyTest
{
public class PennyTestBusiness : IPennyTestBusiness
{
private readonly IPennyTestRepository _repo;
private static readonly ILog Log = LogManager.GetLogger(typeof(PennyTestBusiness));
public PennyTestBusiness(IPennyTestRepository repo)
{
_repo = repo;
}
public JsonRxResponse SavePennyTestCustomerCertificate(PennyTestCustomerCert cert)
{
return _repo.SavePennyTestCustomerCertificate(cert);
}
public JsonRxResponse RealNameCheck(RealNameRequest req)
{
var json = JsonConvert.SerializeObject(req);
Log.Debug("Real name check with parameters " + json);
JsonRxResponse response = new JsonRxResponse();
try
{
var obj = KwangjuBankApi.RealNameCheck(json);
if (obj == null || string.IsNullOrEmpty(obj))
{
Log.Debug("Returning null or empty while RealNameCheck");
response.SetResponse("1", "Error occured while RealNameCheck", null);
return response;
}
response = JsonConvert.DeserializeObject<JsonRxResponse>(obj);
if (response.ErrorCode.Equals(ErrorCode.One))
{
var kjMsg = JsonConvert.DeserializeObject<KwangjuResult>(response.Msg);
var eCode = kjMsg.error.code.ToString();
var eMessage = kjMsg.error.message.ToString();
response.Msg = "Something is wrong. " + eCode + " " + eMessage;
}
return response;
}
catch (Exception ex)
{
Log.Error("Something Went Wrong, Please Try Again!!", ex);
response.SetResponse("1", "Error occured while RealNameCheck", null);
return response;
}
}
public JsonRxResponse Start(string user, string reSendCode)
{
var response = new JsonRxResponse();
string certNumber = Crypto.GetRandomNumber(4);
//GET CUSTOMER DETAIL FOR REAL NAME VERIFICATION AND PENNY TEST
var model = _repo.GetPennyTestRequiredData(user);
var succesMsg = string.Format("We have sent 1 KRW to your Bank Account {0} with {1} Bank, Please check the statement and enter the 4 digit number display after GME.", model.BankAccountNo, model.BankName);
//response.ErrorCode = "0";
//response.Msg = succesMsg;
//response.Data = new { Message = succesMsg };
//return response;
//TO CHECK REAL NAME
var req = new RealNameRequest(
model.IdType,// " realNameDivision=1302:PASSPORT"
model.BankCode,//" institution=145121636083"
model.BankAccountNo.Replace("-", ""),//"no=145121636083"
model.IdNumber.Replace("-", ""),
model.Dob, model.Gender,
model.NativeCountry
);
if (model.ErrorCode == "1")
{
response.ErrorCode = "0";
response.Msg = succesMsg;
response.Data = new { Message = succesMsg };
return response;
}
else if (model.ErrorCode == "10" && reSendCode.ToLower() == "n")
{
response.ErrorCode = "0";
response.Msg = succesMsg;
response.Data = new { Message = succesMsg };
return response;
}
//FOR TESTING
//req.institution = "034";
//req.no = "145121636083";
//req.realNameDivision = "02";
//req.realNameNo = "8502046803408";
if (IsKftcOnly.IsKJRealNameCheckPossible(model.BankCode, model.IdType, model.IdNumber.Replace("-", ""), model.CustomerId))
{
var dbRes = RealNameCheck(req);
if (!dbRes.ErrorCode.Equals("0"))
{
dbRes.Data = new { Message = dbRes.Msg };
return dbRes;
}
}
//SENDING 1KRW INTO CUSTOMER PRIMARY BANK TO VERIFY BANK DETAIL
AmountTransferToBank pennyTrans = new AmountTransferToBank
{
obpId = "", // "001-90010001-000001-6000001", //GME OBPID
accountNo = "KJ",// "1107020345626", //GME ????
accountPassword = "", // "1212", //GME ????
receiveInstitution = model.BankCode.ToString(),
receiveAccountNo = model.BankAccountNo.Replace("-", ""),
amount = "1",
bankBookSummary = String.Format("PENNY-{0}", model.BankAccountNo.Replace("-", "").ToString()),
transactionSummary = String.Format("GME-{0}", certNumber)// THIS IS NARRATION FIELD
};
//FOR TESTING
//pennyTrans.receiveInstitution = "034";
//pennyTrans.receiveAccountNo = "145121636083";
/*
var body = JsonConvert.SerializeObject(pennyTrans);
var resp = KwangjuBankApi.TransferAmount(body);
var dbApiRes = JsonConvert.DeserializeObject<JsonRxResponse>(resp);
if (!dbApiRes.ErrorCode.Equals("0")) {
if (dbApiRes.ErrorCode.Equals(ErrorCode.One))
{
var kjMsg = JsonConvert.DeserializeObject<KwangjuResult>(dbApiRes.Msg);
var eCode = kjMsg.error.code.ToString();
var eMessage = kjMsg.error.message.ToString();
dbApiRes.Msg = "Something is wrong. " + eCode + " " + eMessage;
}
dbApiRes.Data = new { Message = dbApiRes.Msg };
return dbApiRes;
}
*/
var cert = new PennyTestCustomerCert()
{
CustomerId = model.CustomerId,
CertNumber = certNumber,
CertLimitCount = "",
BankCode = model.BankCode,
BankAccountNo = model.BankAccountNo.Replace("-", ""),
IdType = model.IdType,
IdNumber = model.IdNumber.Replace("-", ""),
Dob = model.Dob,
Gender = model.Gender,
NativeCountry = model.NativeCountry,
Action = "REQ"
};
var respon = _repo.SavePennyTestCustomerCertificate(cert);
if (!respon.ErrorCode.Equals("0"))
{
respon.Data = new { Message = respon.Msg };
}
else
{
respon.Msg = succesMsg;
respon.Data = new { Message = succesMsg };
}
return respon;
}
private bool CheckIbkShinanPassport(string bankCode, string idtypeId)
{
var s = ((bankCode.Equals("003") || bankCode.Equals("088")) && idtypeId.Equals("10997"));
return s;
}
public JsonRxResponse VerifyCertificate(PennyCertVerifyRequestModel model)
{
var rsp = _repo.VerifyCertificate(model.CustomerId, model.CertNumber);
if (rsp.ErrorCode.Equals("0"))
{
var fireBaseId = Convert.ToString(CallContext.GetData(Constants.FcmId));
var lang = Convert.ToString(CallContext.GetData(Constants.Language));
Task.Run(() => FcmNotifier.Notify(fireBaseId, Languages.GetMessage("pennytest_success", fireBaseId), Languages.GetTitle("pennytest", fireBaseId)));
}
rsp.Data = new { Message = rsp.Msg };
return rsp;
}
public JsonRxResponse Start_V4(string user, string reSendCode)
{
var response = new JsonRxResponse();
var model = _repo.GetPennyTestRequiredData_V4(user);
var req = new RealNameRequest(
model.IdType,// " realNameDivision=1302:PASSPORT"
model.BankCode,//" institution=145121636083"
model.BankAccountNo.Replace("-", ""),//"no=145121636083"
model.IdNumber.Replace("-", ""),
model.Dob, model.Gender,
model.NativeCountry
);
if (IsKftcOnly.IsKJRealNameCheckPossible(model.BankCode, model.IdType, model.IdNumber.Replace("-", ""), model.CustomerId))
{
var dbRes = RealNameCheck(req);
if (!dbRes.ErrorCode.Equals("0"))
{
response.ErrorCode = "1";
response.Msg = dbRes.Msg;
response.Extra = model.CustomerId;
return response;
}
else
{
response.ErrorCode = "0";
response.Msg = dbRes.Msg;
response.Extra = model.CustomerId;
return response;
}
}
else
{
response.ErrorCode = "1";
response.Msg = "KJ Real Name Check is not possible. Please contact GME support.";
response.Extra = model.CustomerId;
return response;
}
}
}
}