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(obj); if (response.ErrorCode.Equals(ErrorCode.One)) { var kjMsg = JsonConvert.DeserializeObject(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(resp); if (!dbApiRes.ErrorCode.Equals("0")) { if (dbApiRes.ErrorCode.Equals(ErrorCode.One)) { var kjMsg = JsonConvert.DeserializeObject(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; } } } }