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.

193 lines
4.9 KiB

1 year ago
  1. SET QUOTED_IDENTIFIER ON
  2. SET ANSI_NULLS ON
  3. GO
  4. CREATE PROC [dbo].[ws_proc_AccountDepositMarkPaid] (
  5. @ACCESSCODE VARCHAR(50),
  6. @USERNAME VARCHAR(50),
  7. @PASSWORD VARCHAR(50),
  8. @AGENT_SESSION_ID VARCHAR(50),
  9. @xml XML
  10. )
  11. AS
  12. /*
  13. SELECT payStatus, tranStatus, pagent, * from remitTran (NOLOCK) where controlNo = dbo.encryptdb('20160070325780018')
  14. EXEC ws_proc_AccountDepositMarkPaid @ACCESSCODE = 'IMENPADB001', @USERNAME = 'adbapiuser', @PASSWORD = 'adb@API#user!', @AGENT_SESSION_ID = 'y5i0mhyntloih15',
  15. @xml = '<root><row>20160070325780018</row></root>'
  16. DECLARE @xml XML = '<root><row>20160070325780018</row></root>'
  17. SELECT ICN= dbo.encryptdb(p.value('(text())[01]', 'VARCHAR(100)')) FROM @xml.nodes('/root/row') n1(p)
  18. */
  19. SET NOCOUNT ON;
  20. SET XACT_ABORT ON;
  21. BEGIN TRY
  22. DECLARE @errCode INT
  23. DECLARE @count INT
  24. --EXEC ws_proc_checkAuthntication @USERNAME, @PASSWORD, @ACCESSCODE, @errCode OUT
  25. DECLARE @autMsg VARCHAR(500)
  26. EXEC ws_proc_checkAuthntication @USERNAME,@PASSWORD,@ACCESSCODE,@errCode OUT, @autMsg OUT
  27. DECLARE @errorTable TABLE(
  28. AGENT_SESSION_ID VARCHAR(150)
  29. ,REFNO VARCHAR(50)
  30. ,SENDER_NAME VARCHAR(100)
  31. ,RECEIVER_NAME VARCHAR(100)
  32. ,PAYOUTAMT MONEY
  33. ,PAYOUTCURRENCY VARCHAR(3)
  34. ,STATUS VARCHAR(30)
  35. ,STATUS_DATE VARCHAR(20)
  36. ,PAY_TOKEN_ID INT
  37. )
  38. INSERT INTO @errorTable(AGENT_SESSION_ID)
  39. SELECT @AGENT_SESSION_ID
  40. IF(@errCode = '1')
  41. BEGIN
  42. SELECT '1002' CODE, ISNULL(@autMsg,'Authentication Fail') MESSAGE, * FROM @errorTable
  43. RETURN
  44. END
  45. IF EXISTS(SELECT 'A' FROM applicationUsers WITH (NOLOCK) WHERE
  46. userName = @USERNAME AND forceChangePwd = 'Y')
  47. BEGIN
  48. SELECT '1002' CODE
  49. ,'You logged on first time,must first change your password and try again' MESSAGE
  50. ,@AGENT_SESSION_ID AGENT_SESSION_ID
  51. RETURN
  52. END
  53. ------------------VALIDATION-------------------------------
  54. IF @AGENT_SESSION_ID IS NULL
  55. BEGIN
  56. SELECT
  57. '1001' CODE
  58. ,'AGENT SESSION ID Field is Required' MESSAGE
  59. ,@AGENT_SESSION_ID AGENT_SESSION_ID
  60. RETURN;
  61. END
  62. IF @xml IS NULL
  63. BEGIN
  64. SELECT
  65. '1001' CODE
  66. ,'CONTROL NO LIST Field is Required' MESSAGE
  67. ,@AGENT_SESSION_ID AGENT_SESSION_ID
  68. RETURN;
  69. END
  70. DECLARE
  71. @pAgent INT
  72. ,@tranId INT
  73. ,@tranStatus VARCHAR(50)
  74. ,@pAgentName varchar(200)
  75. ,@pAgentCountry varchar(200)
  76. -- PICK AGENTID ,COUNTRY FROM USER
  77. SELECT
  78. @pAgent = agentId
  79. FROM applicationUsers WITH(NOLOCK)
  80. WHERE userName = @USERNAME AND ISNULL(isDeleted, 'N') = 'N' AND isActive = 'Y'
  81. SELECT @pAgentName = agentName,@pAgentCountry=agentCountry FROM agentMaster WITH(NOLOCK)
  82. WHERE agentId = @pAgent AND isActive = 'Y' AND ISNULL(isDeleted, 'N') = 'N'
  83. DECLARE @controlNoTable TABLE(controlNo VARCHAR(50),tranId BIGINT)
  84. INSERT INTO @controlNoTable(controlNo)
  85. SELECT ICN= dbo.FNAEncryptString(p.value('(text())[01]', 'VARCHAR(100)'))
  86. FROM @xml.nodes('/root/row') n1(p)
  87. SELECT controlNo,id INTO #TEMP FROM REMITTRAN(NOLOCK)
  88. WHERE pAgent = @pAgent
  89. AND payStatus = 'Post' AND tranStatus = 'Payment'
  90. AND pCountry = @pAgentCountry AND postedBy = @USERNAME
  91. IF NOT EXISTS(SELECT 'X' FROM @controlNoTable )
  92. BEGIN
  93. SELECT
  94. '1004' CODE
  95. ,'Record not found.' MESSAGE
  96. ,@AGENT_SESSION_ID AGENT_SESSION_ID
  97. RETURN
  98. END
  99. IF NOT EXISTS(SELECT 'X' FROM #TEMP )
  100. BEGIN
  101. SELECT
  102. '1004' CODE
  103. ,'Record not found.' MESSAGE
  104. ,@AGENT_SESSION_ID AGENT_SESSION_ID
  105. RETURN
  106. END
  107. IF EXISTS(
  108. SELECT 'X' FROM @controlNoTable icn
  109. LEFT JOIN #TEMP rt (NOLOCK) ON icn.controlNo = rt.controlNo
  110. WHERE rt.controlNo IS NULL
  111. )
  112. BEGIN
  113. SELECT
  114. '1004' CODE
  115. ,'Invalid pin no provided in list.' MESSAGE
  116. ,@AGENT_SESSION_ID AGENT_SESSION_ID
  117. RETURN
  118. END
  119. DELETE icn FROM @controlNoTable icn
  120. LEFT JOIN #TEMP rt ON icn.controlNo = rt.controlNo
  121. WHERE rt.controlNo IS NULL
  122. IF NOT EXISTS(SELECT 'X' FROM @controlNoTable)
  123. BEGIN
  124. SELECT
  125. '1004' CODE
  126. ,'There are no Transaction(s) with the given Token ID to be marked as paid' MESSAGE
  127. ,@AGENT_SESSION_ID AGENT_SESSION_ID
  128. RETURN
  129. END
  130. UPDATE remitTran SET
  131. tranStatus = 'Paid'
  132. ,payStatus = 'Paid'
  133. ,paidBy = @USERNAME
  134. ,paidDate = GETDATE()
  135. ,paidDateLocal = GETDATE()
  136. ,lockStatus = 'unlocked'
  137. FROM remitTran rt with(nolock)
  138. INNER JOIN @controlNoTable td on rt.controlNo = td.controlNo
  139. WHERE RT.pAgent = @pAgent
  140. AND payStatus = 'Post' AND tranStatus = 'Payment'
  141. AND pCountry = @pAgentCountry AND postedBy = @USERNAME
  142. SET @count = @@ROWCOUNT
  143. SELECT
  144. 0 CODE
  145. ,@AGENT_SESSION_ID AGENT_SESSION_ID
  146. ,CAST(@count AS VARCHAR(10)) + ' transaction(s) paid' MESSAGE
  147. END TRY
  148. BEGIN CATCH
  149. SELECT '9001' CODE, 'Technical Error : ' + ERROR_MESSAGE() MESSAGE
  150. INSERT INTO Logs (errorPage, errorMsg, errorDetails, createdBy, createdDate)
  151. SELECT 'API SP Error','Technical Error : ' + ERROR_MESSAGE() MESSAGE,'ws_proc_AccountDepositMarkPaid',@USERNAME, GETDATE()
  152. END CATCH
  153. /*
  154. EXEC ws_proc_AccountDepositMarkeDownloaded
  155. @ACCESSCODE='',
  156. @USERNAME ='',
  157. @PASSWORD='',
  158. @AGENT_SESSION_ID='',
  159. @DOWNLOAD_TOKENID=''
  160. */
  161. GO