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.
 
 
 

344 lines
22 KiB

USE [FastMoneyPro_Remit]
GO
/****** Object: StoredProcedure [dbo].[proc_fraudAnalysisLogin] Script Date: 9/27/2019 1:30:14 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE procEDURE [dbo].[proc_fraudAnalysisLogin](
@flag VARCHAR(20)
,@fromDate VARCHAR(10) = NULL
,@toDate VARCHAR(10) = NULL
,@count INT = NULL
,@sCountry VARCHAR(30) = NULL
,@operator VARCHAR(30) = NULL
,@User VARCHAR(50)
,@agentId INT = NULL
,@userName VARCHAR(50) = NULL
,@agentConName VARCHAR(200) = null
)AS
SET NOCOUNT ON
DECLARE @title VARCHAR(100)
------------------- START ######## SAME USER DIFF IP SUMMARY
--select @fromDate = '2011-2-22', @toDate ='2014-2-22'
DECLARE @SQL VARCHAR(MAX)
SET @title = 'Fraud Login Analysis Report'
-->>Same User Login by Multiple IP Address
IF @flag = 'MIP'
BEGIN
SET @title = 'Fraud Login Analysis Report - SAME USER MULTIPLE IP'
IF ISNULL(@count,0) = 0
BEGIN
SELECT 'Count parameter is missing' [Agent Name], NULL [Branch Name], NULL [Username], NULL [IP Count]
END
ELSE
BEGIN
SET @SQL = 'SELECT
bm.agentId
,agentName = ISNULL(am.agentName, ''IME Head Office'')
,branchName = bm.agentName
,CreatedBy = l.CreatedBy
,IPCount = IP
,agentCountryId = am.agentCountryId
FROM LoginLogs l WITH(NOLOCK)
INNER JOIN agentMaster bm WITH(NOLOCK) ON l.agentId = bm.agentId
LEFT JOIN agentMaster am WITH(NOLOCK) ON bm.parentId = am.agentId
WHERE l.createdDate BETWEEN ''' + @fromDate + ''' AND ''' + @toDate + ' 23:59:59''
AND (bm.agentRole = ''s'' OR bm.agentRole = ''b'' OR bm.agentRole IS NULL)
GROUP BY bm.agentId, am.agentName, bm.AgentName, l.createdBy, l.IP, am.agentCountryId
'
IF ISNULL(@count,0) > 0
BEGIN
SET @SQL = '
SELECT
[Agent Name] = agentName
,[Branch Name] = branchName
,[Username] = CreatedBy
,[IP Count] = ''<a href="reports.aspx?reportName=10122200_login&reportBy=MIPDDN&sCountry='+ISNULL(@sCountry,'')+'&fromDate='+CONVERT(varchar,cast(@fromDate as date),101)+'&toDate='+CONVERT(varchar,cast(@toDate as date),101)+'&UserName=''+CreatedBy+''&agentId=''+CAST(AgentID AS VARCHAR)+''">''+CAST(count(IPCount) AS VARCHAR)+''</a>''
FROM ( '
+ @SQL +
') x
WHERE 1=1 '
END
IF @sCountry IS NOT NULL
BEGIN
SET @SQL = @SQL + ' AND agentCountryId = ''' + @sCountry + ''''
END
SET @SQL = @SQL + '
GROUP BY agentName, branchName, createdBy, agentId
HAVING COUNT(IPCount) ' + @operator + ' ' + CAST(@count AS VARCHAR) + '
ORDER BY AgentName
'
--PRINT @SQL
EXEC(@SQL)
END
END
-->>Same User Login by Multiple IP Address DRILL DOWN
ELSE IF @flag = 'MIPDDN'
BEGIN
--select top 100 * From LoginLogs where createdDate between '2014-2-24' and '2014-2-24'+' 23:59:59'
SET @title = 'Fraud Login Analysis Report - DETAIL'
SELECT DISTINCT
[Agent Name] = agentName
,[Branch Name] = BranchName
,[Username] = CreatedBy
,[IP Address] = IP
,[DC Serial Number] = dcSerialNumber
,[DC User Name] = dcUserName
,[Login Date] = LoginDate
,[Log Type] = logType
FROM (
SELECT
am.agentId
,agentName = 'IME HO'
,branchName = 'Head Office'
,l.CreatedBy
,IP
,dcSerialNumber
,dcUserName
,loginDate = l.createdDate
,logType
FROM LoginLogs l WITH(NOLOCK)
INNER JOIN agentMaster am WITH (NOLOCK) ON l.agentId = am.agentId
Where l.createdDate BETWEEN @fromDate AND @toDate + ' 23:59:59'
AND L.createdBy = @userName
AND am.agentId = 1001
UNION ALL
SELECT
am.agentId
,agentName = am.agentName
,branchName = bm.AgentName
,l.CreatedBy
,IP
,dcSerialNumber
,dcUserName
,loginDate = l.createdDate
,logType
FROM LoginLogs l WITH(NOLOCK)
INNER JOIN agentMaster bm WITH(NOLOCK) ON l.agentId = bm.agentId
INNER JOIN agentMaster am WITH(NOLOCK) ON bm.parentId = am.agentId
WHERE l.createdDate BETWEEN @fromDate AND @toDate+' 23:59:59'
AND L.createdBy = @userName
AND bm.agentId = @agentId
) x
ORDER BY LoginDate
END
-->>Same User Login by Multiple Certificate
ELSE IF @flag = 'MCert'
BEGIN
SET @title = 'Fraud Login Analysis Report - SAME USER MULTIPLE CERTIFICATE'
-- ############## SAME USER DIFF Certificate
IF ISNULL(@count,0) = 0
BEGIN
SELECT 'Count parameter is missing' [Agent Name], NULL [Branch Name], NULL [Username], NULL [IP Count]
END
ELSE
BEGIN
SET @SQL = '
SELECT
bm.agentId
,agentName = ISNULL(am.agentName, ''IME Head Office'')
,branchName = bm.agentName
,createdBy = l.CreatedBy
,IPCount = dcSerialNumber
,agentCountryId = am.agentCountryId
FROM LoginLogs l WITH(NOLOCK)
INNER JOIN agentMaster bm WITH(NOLOCK) ON l.agentId = bm.agentId
LEFT JOIN agentMaster am WITH(NOLOCK) ON bm.parentId = am.agentId
WHERE l.createdDate BETWEEN ''' + @fromDate + ''' AND ''' + @toDate + ' 23:59:59''
AND (bm.agentRole = ''s'' OR bm.agentRole = ''b'' OR bm.agentRole IS NULL)
GROUP BY bm.agentId, am.agentName, bm.AgentName, l.createdBy, l.dcSerialNumber, am.agentCountryId
'
IF ISNULL(@count,0) > 0
BEGIN
SET @SQL = '
SELECT
[Agent Name] = agentName
,[Branch Name] = branchName
,[Username] = CreatedBy
,[Cert. Count] = ''<a href="reports.aspx?reportName=10122200_login&reportBy=MIPDDN&sCountry='+ISNULL(@sCountry,'')+'&fromDate='+CONVERT(varchar,cast(@fromDate as date),101)+'&toDate='+CONVERT(varchar,cast(@toDate as date),101)+'&UserName=''+CreatedBy+''&agentId=''+CAST(AgentID AS VARCHAR)+''">''+CAST(count(IPCount) AS VARCHAR)+''</a>''
FROM ( '
+ @SQL +
') x
WHERE 1=1 '
END
IF @sCountry IS NOT NULL
BEGIN
SET @SQL = @SQL + ' AND agentCountryId = ''' + @sCountry + ''''
END
SET @SQL = @SQL + '
GROUP BY agentName, branchName, createdBy, agentId
HAVING COUNT(IPCount) ' + @operator + ' ' + CAST(@count AS VARCHAR) + '
ORDER BY AgentName
'
--PRINT @SQL
EXEC(@SQL)
END
END
ELSE IF @flag = 'MCertDdl'
BEGIN
SET @title = 'Fraud Login Analysis Report - SAME USER MULTIPLE CERTIFICATE DETAIL'
-- ############## Multiple Login Attempts
select AgentName ,BranchName,CreatedBy UserName, IPCount attemptCount from (
SELECT distinct a.AgentID,b.AgentName,a.agentName BranchName,
l.CreatedBy,dcSerialNumber as IPCount
from LoginLogs l with (nolock)
inner join agentMaster a with (nolock) on l.agentId=a.agentId
inner join agentMaster b with (nolock) on a.ParentId=b.agentId
Where l.createdDate between @fromDate and @toDate+' 23:59:59'
AND L.createdBy = @userName
AND A.agentId = @agentId
UNION ALL
SELECT distinct a.AgentID,b.AgentName,a.AgentName,l.CreatedBy,dcSerialNumber as IPCount
from LoginLogs l with (nolock)
inner join agentMaster a with (nolock) on l.agentId=a.agentId
inner join agentMaster b with (nolock) on a.agentId = b.parentId
Where l.createdDate between @fromDate and @toDate+' 23:59:59'
AND L.createdBy = @userName
AND A.agentId = @agentId
) x
group by AgentName,CreatedBy, IPCount,BranchName
order by IPCount
End
-->>Failed login Attempt
ELSE IF @flag = 'FLogin'
BEGIN
SET @title = 'Fraud Login Analysis Report - FAIL LOGIN ATTEMPT'
IF ISNULL(@count,0) = 0
BEGIN
select 'Count parameter is missing' AgentName,NULL CreatedBy,NULL IPCount
END
ELSE
BEGIN
SET @SQL = '
SELECT
bm.agentId
,agentName = ISNULL(am.agentName, ''IME Head Office'')
,branchName = bm.AgentName
,l.CreatedBy
,am.agentCountryId
,CNT = COUNT(l.CreatedBy)
FROM LoginLogs l WITH(NOLOCK)
INNER JOIN agentMaster bm WITH(NOLOCK) ON l.agentId = bm.agentId
LEFT JOIN agentMaster am WITH(NOLOCK) ON bm.parentId = am.agentId
WHERE l.createdDate between ''' + @fromDate + ''' AND ''' + @toDate + ' 23:59:59''
AND logType = ''Login fails''
AND (bm.agentRole = ''s'' OR bm.agentRole = ''b'' OR bm.agentRole IS NULL)
GROUP BY bm.agentId, am.AgentName, bm.agentName, l.CreatedBy, am.agentCountryId
'
IF ISNULL(@count,0) > 0
BEGIN
SET @SQL = '
SELECT
[Agent Name] = agentName
,[Branch Name] = branchName
,[Username] = CreatedBy
,[Fail Count] = ''<a href="reports.aspx?reportName=10122200_login&reportBy=MIPDDN&sCountry='+ISNULL(@sCountry,'')+'&fromDate='+CONVERT(varchar,cast(@fromDate as date),101)+'&toDate='+CONVERT(varchar,cast(@toDate as date),101)+'&UserName=''+CreatedBy+''&agentId=''+CAST(AgentID AS VARCHAR)+''">''+CAST(SUM(CNT) AS VARCHAR)+''</a>''
FROM ( '
+ @SQL +
') x
WHERE 1=1 '
END
IF @sCountry IS NOT NULL
BEGIN
SET @SQL = @SQL + ' AND agentCountryId = ''' + @sCountry + ''''
END
SET @SQL = @SQL + '
GROUP BY agentName, branchName, createdBy, agentId
HAVING SUM(CNT) ' + @operator + ' ' + CAST(@count AS VARCHAR) + '
ORDER BY agentName
'
--PRINT @SQL
EXEC(@SQL)
END
END
-->>Login Frequency
ELSE IF @flag = 'LoginFreq'
BEGIN
SET @title = 'Fraud Login Analysis Report - LOGIN FREQUENCY'
IF ISNULL(@count,0) = 0
BEGIN
select 'Count parameter is missing' AgentName,NULL CreatedBy,NULL IPCount
END
ELSE
BEGIN
SET @SQL = 'SELECT
a.AgentID,ISNULL(b.AgentName, '' HO User'') AgentName,l.CreatedBy,B.agentCountryId
,SCNT = CASE WHEN logType =''Login'' THEN COUNT(l.CreatedBy) ELSE 0 END
,FCNT = CASE WHEN logType =''Login fails'' THEN COUNT(l.CreatedBy) ELSE 0 END
from LoginLogs l with (nolock)
inner join agentMaster a with (nolock) on l.agentId = a.agentId
inner join agentMaster b with (nolock) on a.ParentId = b.agentId
Where l.createdDate between '''+@fromDate+''' and '''+@toDate+' 23:59:59''
and (a.agentRole =''s'' OR a.agentRole =''b'' OR a.agentRole is null)
group by a.AgentID,b.AgentName,l.CreatedBy,B.agentCountryId,logType
'
IF ISNULL(@count,0) > 0
BEGIN
SET @SQL = ' select AgentName,CreatedBy UserName
,[Success Count] = ''<a href="reports.aspx?reportName=10122200_login&reportBy=MIPDDN&sCountry='+ISNULL(@sCountry,'')+'&fromDate='+@fromDate+'&toDate='+@toDate+'&UserName=''+CreatedBy+''&agentId=''+CAST(AgentID AS VARCHAR)+''">''+CAST(SUM(SCNT) AS VARCHAR)+''</a>''
,[Fail Count] = ''<a href="reports.aspx?reportName=10122200_login&reportBy=MIPDDN&sCountry='+ISNULL(@sCountry,'')+'&fromDate='+@fromDate+'&toDate='+@toDate+'&UserName=''+CreatedBy+''&agentId=''+CAST(AgentID AS VARCHAR)+''">''+CAST(SUM(FCNT) AS VARCHAR)+''</a>''
from ( '
+ @SQL
+') x
WHERE 1=1 '
END
IF @sCountry IS NOT NULL
BEGIN
SET @SQL = @SQL + ' AND agentCountryId='''+@sCountry+''''
END
SET @SQL = @SQL + ' group by AgentName,CreatedBy,AgentID
HAVING SUM(SCNT) '+@operator+' '+CAST( @count AS VARCHAR)+'
AND SUM(FCNT) '+@operator+' '+CAST( @count AS VARCHAR)+'
order by AgentName '
--PRINT @SQL
EXEC(@SQL)
END
end
EXEC proc_errorHandler '0', 'Report has been prepared successfully.', NULL
SELECT 'From Date' head, @fromDate value
UNION ALL
SELECT 'To Date' head, @toDate value
SELECT @title title
GO