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.

113 lines
3.5 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_tpApiLogs] Script Date: 7/4/2019 11:35:48 AM ******/
  4. DROP PROCEDURE [dbo].[proc_tpApiLogs]
  5. GO
  6. /****** Object: StoredProcedure [dbo].[proc_tpApiLogs] Script Date: 7/4/2019 11:35:48 AM ******/
  7. SET ANSI_NULLS ON
  8. GO
  9. SET QUOTED_IDENTIFIER ON
  10. GO
  11. CREATE PROC [dbo].[proc_tpApiLogs]
  12. @flag VARCHAR(50)
  13. ,@providerName VARCHAR(200) = NULL
  14. ,@methodName VARCHAR(200) = NULL
  15. ,@controlNo VARCHAR(50) = NULL
  16. ,@rowId BIGINT = NULL
  17. ,@requestXml VARCHAR(MAX) = NULL
  18. ,@responseXml VARCHAR(MAX) = NULL
  19. ,@user VARCHAR(30) = NULL
  20. ,@errorCode VARCHAR(10) = NULL
  21. ,@errorMessage VARCHAR(200) = NULL
  22. ,@processId VARCHAR(40) = NULL
  23. AS
  24. SET @user = ISNULL(@user, 'SYSTEM')
  25. IF @flag = 'i'
  26. BEGIN
  27. SET @processId = NEWID()
  28. INSERT Application_Log.DBO.vwTpApiLogs(providerName, methodName, controlNo, requestXml, requestedBy,requestedDate,errorCode,errorMessage,processId)
  29. SELECT @providerName, @methodName, @controlNo, @requestXml, @user, GETDATE(), @errorCode, @errorMessage,@processId
  30. SET @rowId = SCOPE_IDENTITY()
  31. SELECT '0' ErrorCode, 'Request Logged Successfully' Msg, @rowId Id,@processId Extra
  32. RETURN
  33. END
  34. ELSE IF @flag = 'i-api'
  35. BEGIN
  36. if isnull(@processId, '') = ''
  37. SET @processId = NEWID()
  38. INSERT Application_Log.DBO.vwTpApiLogs(providerName, methodName, controlNo, requestXml, requestedBy,requestedDate,errorCode,errorMessage,processId)
  39. SELECT @providerName, @methodName, @controlNo, @requestXml, @user, GETDATE(), @errorCode, @errorMessage,@processId
  40. SET @rowId = SCOPE_IDENTITY()
  41. SELECT '0' ErrorCode, 'Request Logged Successfully' Msg, @rowId Id,@processId Extra
  42. RETURN
  43. END
  44. ELSE IF @flag = 'u'
  45. BEGIN
  46. --SELECT @methodName = methodName, @providerName = providerName FROM vwTpApiLogs WITH(NOLOCK) WHERE rowId = @rowId
  47. UPDATE Application_Log.DBO.vwTpApiLogs SET
  48. responseXml = @responseXml
  49. ,responseDate = GETDATE()
  50. ,errorCode = @errorCode
  51. ,errorMessage = @errorMessage
  52. WHERE rowId = @rowId
  53. SELECT '0' ErrorCode, 'Response Logged Successfully' Msg, @rowId Id
  54. RETURN
  55. END
  56. ELSE IF @flag = 'vr'
  57. BEGIN
  58. /*
  59. Validate For Duplicate Request within 180000 millisecons = 180 seconds = 3 minutes
  60. check from the internal log recorded
  61. if there is an execution either from the schedule or manual run by user, it will verify if there is duplicate request done by itself or any other user.
  62. */
  63. CREATE TABLE #temp(rowId BIGINT, requestedBy VARCHAR(50), requestedDate DATETIME)
  64. INSERT INTO #temp(rowId, requestedBy, requestedDate)
  65. SELECT rowId, requestedBy, requestedDate
  66. FROM Application_Log.DBO.vwTpApiLogs WITH(NOLOCK)
  67. WHERE controlNo = @controlNo AND requestedDate BETWEEN CONVERT(VARCHAR, GETDATE(), 101) AND CONVERT(VARCHAR, GETDATE(), 101) + ' 23:59:59:998'
  68. IF EXISTS(SELECT TOP 1 'X' FROM #temp)
  69. BEGIN
  70. DECLARE @count INT
  71. IF @user = 'sch_admin'
  72. BEGIN
  73. SELECT @count = COUNT('X') FROM #temp WHERE DATEDIFF(MILLISECOND, requestedDate, GETDATE()) <= 180000
  74. IF ISNULL(@count, 0) > 1
  75. BEGIN
  76. EXEC dbo.proc_errorHandler 1, 'From IME: Duplicate request within 3 minutes is restricted', NULL
  77. RETURN
  78. END
  79. END
  80. ELSE
  81. BEGIN
  82. SELECT @count = COUNT('X') FROM #temp WHERE DATEDIFF(MILLISECOND, requestedDate, GETDATE()) <= 5000
  83. IF ISNULL(@count, 0) > 1
  84. BEGIN
  85. EXEC dbo.proc_errorHandler 1, 'From IME: Duplicate request within 5 seconds is restricted', NULL
  86. RETURN
  87. END
  88. END
  89. END
  90. EXEC dbo.proc_errorHandler 0, 'Valid Request', NULL
  91. IF OBJECT_ID('tempdb..#temp') IS NOT NULL
  92. DROP TABLE #temp
  93. END
  94. GO