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.

95 lines
4.4 KiB

1 year ago
  1. using Common;
  2. using Common.Helper;
  3. using Common.InboundModel;
  4. using Common.Model.PennyTest;
  5. using log4net;
  6. using System.Data;
  7. namespace Repository.Inbound
  8. {
  9. public interface IInboundPennyTestRepository
  10. {
  11. JsonRxResponse SavePennyTestCustomerCertificate(PennyTestCustomerCert cert);
  12. JsonRxResponse VerifyCertificate(string customerId, string certNum, string bankCode, string accountNo);
  13. PennyTestStartRequestModel GetPennyTestRequiredData(string email, string bankcode, string accountNo);
  14. DataTable GetCustomerBankInformation(string customerId, string bankCode, string accountNo);
  15. PennyTestRequestParam GetAutoDebitAccountById(string accountID);
  16. }
  17. public class InboundPennyTestRepository : IInboundPennyTestRepository
  18. {
  19. private readonly Dao _dao;
  20. private static readonly ILog Log = LogManager.GetLogger(typeof(InboundPennyTestRepository));
  21. public InboundPennyTestRepository()
  22. {
  23. _dao = new Dao();
  24. }
  25. public JsonRxResponse SavePennyTestCustomerCertificate(PennyTestCustomerCert cert)
  26. {
  27. //Log.Debug("Trying to save the customer penny test certificate detail.");
  28. var sql = "EXEC INBOUND_PROC_CUSTOMERBANKVERIFICATION @flag = 'REQ'";
  29. sql += ", @pCustomerId = " + _dao.FilterString(cert.CustomerId);
  30. sql += ", @pCertNumber = " + _dao.FilterString(cert.CertNumber);
  31. sql += ", @pCertLimitCount = " + _dao.FilterString(cert.CertLimitCount);
  32. sql += ", @pBankCode = " + _dao.FilterString(cert.BankCode);
  33. sql += ", @pBankAccountNo = " + _dao.FilterString(cert.BankAccountNo);
  34. sql += ", @pIdType = " + _dao.FilterString(cert.IdType);
  35. sql += ", @pIdNumber = " + _dao.FilterString(cert.IdNumber);
  36. sql += ", @pGender = " + _dao.FilterString(cert.Gender);
  37. sql += ", @pNativeCountry = " + _dao.FilterString(cert.NativeCountry);
  38. sql += ", @pAction = " + _dao.FilterString(cert.Action);
  39. var dbRes = _dao.ParseDbResult(sql);
  40. //Log.Debug(sql);
  41. return new JsonRxResponse { ErrorCode = dbRes.ResponseCode, Msg = dbRes.Msg, Id = dbRes.Id, Extra = dbRes.Extra, Extra2 = dbRes.Extra };
  42. }
  43. public JsonRxResponse VerifyCertificate(string customerId, string certNum, string bankCode, string accountNo)
  44. {
  45. var sql = "INBOUND_PROC_CUSTOMERBANKVERIFICATION @flag = 'TRY'";
  46. sql += ", @pCertNumber = " + _dao.FilterString(certNum);
  47. sql += ", @pCustomerId = " + _dao.FilterString(customerId);
  48. sql += ", @pBankCode = " + _dao.FilterString(bankCode);
  49. sql += ", @pBankAccountNo = " + _dao.FilterString(accountNo);
  50. Log.Info("Verifies the customer penny certificate number.");
  51. Log.Debug(sql);
  52. var dbRes = _dao.ParseDbResult(sql);
  53. return new JsonRxResponse { ErrorCode = dbRes.ResponseCode, Msg = dbRes.Msg, Id = dbRes.Id, Extra = dbRes.Extra, Extra2 = dbRes.Extra };
  54. }
  55. public PennyTestStartRequestModel GetPennyTestRequiredData(string email, string bankcode, string accountNo)
  56. {
  57. var sql = "INBOUND_PROC_CUSTOMERBANKVERIFICATION @flag = 'CUSTOMER-INFO'";
  58. sql += ", @pEmail = " + _dao.FilterString(email);
  59. sql += ", @pBankCode = " + _dao.FilterString(bankcode);
  60. sql += ", @pBankAccountNo = " + _dao.FilterString(accountNo);
  61. var dt = _dao.ExecuteDataTable(sql);
  62. return Mapper.DataTableToClass<PennyTestStartRequestModel>(dt)[0];
  63. }
  64. public DataTable GetCustomerBankInformation(string customerId, string bankCode, string accountNo)
  65. {
  66. var sql = "EXEC INBOUND_PROC_CUSTOMERBANKVERIFICATION @flag = 'CUSTOMER-BANK-INFO'";
  67. sql += ", @pCustomerId = " + _dao.FilterString(customerId);
  68. sql += ", @pBankCode = " + _dao.FilterString(bankCode);
  69. sql += ", @pBankAccountNo = " + _dao.FilterString(accountNo);
  70. var dt = _dao.ExecuteDataTable(sql);
  71. return dt;
  72. }
  73. public PennyTestRequestParam GetAutoDebitAccountById(string accountID)
  74. {
  75. var sql = "EXEC INBOUND_PROC_CUSTOMERBANKVERIFICATION @flag = 'AutodebitById'";
  76. sql += ", @autodebitId = " + _dao.FilterString(accountID);
  77. var dt = _dao.ExecuteDataRow(sql);
  78. return Mapper.DataRowToClass<PennyTestRequestParam>(dt);
  79. }
  80. }
  81. }