using Common; using Common.Helper; using Common.InboundModel; using Common.Model.PennyTest; using log4net; using System.Data; namespace Repository.Inbound { public interface IInboundPennyTestRepository { JsonRxResponse SavePennyTestCustomerCertificate(PennyTestCustomerCert cert); JsonRxResponse VerifyCertificate(string customerId, string certNum, string bankCode, string accountNo); PennyTestStartRequestModel GetPennyTestRequiredData(string email, string bankcode, string accountNo); DataTable GetCustomerBankInformation(string customerId, string bankCode, string accountNo); PennyTestRequestParam GetAutoDebitAccountById(string accountID); } public class InboundPennyTestRepository : IInboundPennyTestRepository { private readonly Dao _dao; private static readonly ILog Log = LogManager.GetLogger(typeof(InboundPennyTestRepository)); public InboundPennyTestRepository() { _dao = new Dao(); } public JsonRxResponse SavePennyTestCustomerCertificate(PennyTestCustomerCert cert) { //Log.Debug("Trying to save the customer penny test certificate detail."); var sql = "EXEC INBOUND_PROC_CUSTOMERBANKVERIFICATION @flag = 'REQ'"; sql += ", @pCustomerId = " + _dao.FilterString(cert.CustomerId); sql += ", @pCertNumber = " + _dao.FilterString(cert.CertNumber); sql += ", @pCertLimitCount = " + _dao.FilterString(cert.CertLimitCount); sql += ", @pBankCode = " + _dao.FilterString(cert.BankCode); sql += ", @pBankAccountNo = " + _dao.FilterString(cert.BankAccountNo); sql += ", @pIdType = " + _dao.FilterString(cert.IdType); sql += ", @pIdNumber = " + _dao.FilterString(cert.IdNumber); sql += ", @pGender = " + _dao.FilterString(cert.Gender); sql += ", @pNativeCountry = " + _dao.FilterString(cert.NativeCountry); sql += ", @pAction = " + _dao.FilterString(cert.Action); var dbRes = _dao.ParseDbResult(sql); //Log.Debug(sql); return new JsonRxResponse { ErrorCode = dbRes.ResponseCode, Msg = dbRes.Msg, Id = dbRes.Id, Extra = dbRes.Extra, Extra2 = dbRes.Extra }; } public JsonRxResponse VerifyCertificate(string customerId, string certNum, string bankCode, string accountNo) { var sql = "INBOUND_PROC_CUSTOMERBANKVERIFICATION @flag = 'TRY'"; sql += ", @pCertNumber = " + _dao.FilterString(certNum); sql += ", @pCustomerId = " + _dao.FilterString(customerId); sql += ", @pBankCode = " + _dao.FilterString(bankCode); sql += ", @pBankAccountNo = " + _dao.FilterString(accountNo); Log.Info("Verifies the customer penny certificate number."); Log.Debug(sql); var dbRes = _dao.ParseDbResult(sql); return new JsonRxResponse { ErrorCode = dbRes.ResponseCode, Msg = dbRes.Msg, Id = dbRes.Id, Extra = dbRes.Extra, Extra2 = dbRes.Extra }; } public PennyTestStartRequestModel GetPennyTestRequiredData(string email, string bankcode, string accountNo) { var sql = "INBOUND_PROC_CUSTOMERBANKVERIFICATION @flag = 'CUSTOMER-INFO'"; sql += ", @pEmail = " + _dao.FilterString(email); sql += ", @pBankCode = " + _dao.FilterString(bankcode); sql += ", @pBankAccountNo = " + _dao.FilterString(accountNo); var dt = _dao.ExecuteDataTable(sql); return Mapper.DataTableToClass(dt)[0]; } public DataTable GetCustomerBankInformation(string customerId, string bankCode, string accountNo) { var sql = "EXEC INBOUND_PROC_CUSTOMERBANKVERIFICATION @flag = 'CUSTOMER-BANK-INFO'"; sql += ", @pCustomerId = " + _dao.FilterString(customerId); sql += ", @pBankCode = " + _dao.FilterString(bankCode); sql += ", @pBankAccountNo = " + _dao.FilterString(accountNo); var dt = _dao.ExecuteDataTable(sql); return dt; } public PennyTestRequestParam GetAutoDebitAccountById(string accountID) { var sql = "EXEC INBOUND_PROC_CUSTOMERBANKVERIFICATION @flag = 'AutodebitById'"; sql += ", @autodebitId = " + _dao.FilterString(accountID); var dt = _dao.ExecuteDataRow(sql); return Mapper.DataRowToClass(dt); } } }