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

USE [FastMoneyPro_Remit]
GO
/****** Object: StoredProcedure [dbo].[proc_tpApiLogs] Script Date: 7/4/2019 11:35:48 AM ******/
DROP PROCEDURE [dbo].[proc_tpApiLogs]
GO
/****** Object: StoredProcedure [dbo].[proc_tpApiLogs] Script Date: 7/4/2019 11:35:48 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROC [dbo].[proc_tpApiLogs]
@flag VARCHAR(50)
,@providerName VARCHAR(200) = NULL
,@methodName VARCHAR(200) = NULL
,@controlNo VARCHAR(50) = NULL
,@rowId BIGINT = NULL
,@requestXml VARCHAR(MAX) = NULL
,@responseXml VARCHAR(MAX) = NULL
,@user VARCHAR(30) = NULL
,@errorCode VARCHAR(10) = NULL
,@errorMessage VARCHAR(200) = NULL
,@processId VARCHAR(40) = NULL
AS
SET @user = ISNULL(@user, 'SYSTEM')
IF @flag = 'i'
BEGIN
SET @processId = NEWID()
INSERT Application_Log.DBO.vwTpApiLogs(providerName, methodName, controlNo, requestXml, requestedBy,requestedDate,errorCode,errorMessage,processId)
SELECT @providerName, @methodName, @controlNo, @requestXml, @user, GETDATE(), @errorCode, @errorMessage,@processId
SET @rowId = SCOPE_IDENTITY()
SELECT '0' ErrorCode, 'Request Logged Successfully' Msg, @rowId Id,@processId Extra
RETURN
END
ELSE IF @flag = 'i-api'
BEGIN
if isnull(@processId, '') = ''
SET @processId = NEWID()
INSERT Application_Log.DBO.vwTpApiLogs(providerName, methodName, controlNo, requestXml, requestedBy,requestedDate,errorCode,errorMessage,processId)
SELECT @providerName, @methodName, @controlNo, @requestXml, @user, GETDATE(), @errorCode, @errorMessage,@processId
SET @rowId = SCOPE_IDENTITY()
SELECT '0' ErrorCode, 'Request Logged Successfully' Msg, @rowId Id,@processId Extra
RETURN
END
ELSE IF @flag = 'u'
BEGIN
--SELECT @methodName = methodName, @providerName = providerName FROM vwTpApiLogs WITH(NOLOCK) WHERE rowId = @rowId
UPDATE Application_Log.DBO.vwTpApiLogs SET
responseXml = @responseXml
,responseDate = GETDATE()
,errorCode = @errorCode
,errorMessage = @errorMessage
WHERE rowId = @rowId
SELECT '0' ErrorCode, 'Response Logged Successfully' Msg, @rowId Id
RETURN
END
ELSE IF @flag = 'vr'
BEGIN
/*
Validate For Duplicate Request within 180000 millisecons = 180 seconds = 3 minutes
check from the internal log recorded
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.
*/
CREATE TABLE #temp(rowId BIGINT, requestedBy VARCHAR(50), requestedDate DATETIME)
INSERT INTO #temp(rowId, requestedBy, requestedDate)
SELECT rowId, requestedBy, requestedDate
FROM Application_Log.DBO.vwTpApiLogs WITH(NOLOCK)
WHERE controlNo = @controlNo AND requestedDate BETWEEN CONVERT(VARCHAR, GETDATE(), 101) AND CONVERT(VARCHAR, GETDATE(), 101) + ' 23:59:59:998'
IF EXISTS(SELECT TOP 1 'X' FROM #temp)
BEGIN
DECLARE @count INT
IF @user = 'sch_admin'
BEGIN
SELECT @count = COUNT('X') FROM #temp WHERE DATEDIFF(MILLISECOND, requestedDate, GETDATE()) <= 180000
IF ISNULL(@count, 0) > 1
BEGIN
EXEC dbo.proc_errorHandler 1, 'From IME: Duplicate request within 3 minutes is restricted', NULL
RETURN
END
END
ELSE
BEGIN
SELECT @count = COUNT('X') FROM #temp WHERE DATEDIFF(MILLISECOND, requestedDate, GETDATE()) <= 5000
IF ISNULL(@count, 0) > 1
BEGIN
EXEC dbo.proc_errorHandler 1, 'From IME: Duplicate request within 5 seconds is restricted', NULL
RETURN
END
END
END
EXEC dbo.proc_errorHandler 0, 'Valid Request', NULL
IF OBJECT_ID('tempdb..#temp') IS NOT NULL
DROP TABLE #temp
END
GO