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.
 
 
 

154 lines
10 KiB

USE [FastMoneyPro_Remit]
GO
/****** Object: StoredProcedure [dbo].[proc_userLoginAgingRpt] Script Date: 9/27/2019 1:30:14 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE procEDURE [dbo].[proc_userLoginAgingRpt]
@flag VARCHAR(20),
@agentType VARCHAR(20) = NULL,
@days INT = NULL,
@chkInactiveAgent VARCHAR(1) = NULL,
@agingFor CHAR(1) = NULL,
@user VARCHAR(50) = NULL,
@PageSize VARCHAR(20) = NULL,
@PageNumber VARCHAR(20) = NULL
AS
SET NOCOUNT ON;
SET ANSI_NULLS ON;
DECLARE @SQL AS VARCHAR(MAX),@SQL1 AS VARCHAR(MAX)
IF @FLAG='a'
BEGIN
IF @agingFor = 'a'
BEGIN
IF OBJECT_ID('tempdb..#tempTable') IS NOT NULL
DROP TABLE #tempTable
IF OBJECT_ID('tempdb..#tempTable1') IS NOT NULL
DROP TABLE #tempTable1
CREATE TABLE #tempTable
(
agentId VARCHAR(200) NULL
)
CREATE TABLE #tempTable2
(
agentId VARCHAR(200) NULL,
lastLoginDate VARCHAR(50) NULL
)
insert into #tempTable2
select distinct agentId,MAX(createdDate) lastLoginDate from LoginLogs A WITH(NOLOCK)
WHERE logType='Login'
group by agentId
insert into #tempTable
select distinct agentId
from LoginLogs with(nolock)
where createdDate between dateadd(D,-@days,CONVERT(VARCHAR,GETDATE(),101)) and CONVERT(VARCHAR,GETDATE(),101)+' 23:59:59'
and logType='Login' and datediff(day,createdDate,CONVERT(VARCHAR,GETDATE(),101))<>@days
insert into #tempTable
select distinct sBranch
from remitTran with(nolock)
where approvedDate between dateadd(D,-@days,CONVERT(VARCHAR,GETDATE(),101)) and CONVERT(VARCHAR,GETDATE(),101)+' 23:59:59'
and datediff(day,approvedDate,CONVERT(VARCHAR,GETDATE(),101))<>@days
insert into #tempTable
select distinct pBranch
from remitTran with(nolock)
where paidDate between dateadd(D,-@days,CONVERT(VARCHAR,GETDATE(),101)) and CONVERT(VARCHAR,GETDATE(),101)+' 23:59:59'
and datediff(day,paidDate,CONVERT(VARCHAR,GETDATE(),101))<>@days
DELETE FROM #tempTable2
FROM #tempTable2 A
INNER JOIN #tempTable B ON A.agentId=B.agentId
SET @SQL='SELECT
[Agent Name] = C.agentName
,[Address] = C.agentAddress
,[Zone] = C.agentState
,[District] = c.agentDistrict
,[Contact] = isnull(C.agentPhone1,'''')+'',''+isnull(C.agentPhone2,'''')
,[Location] = D.districtName
,[Last Login Date] = A.lastLoginDate
,[Inactive Days] = datediff(day,A.lastLoginDate,CONVERT(VARCHAR,GETDATE(),101))
FROM #tempTable2 A WITH(NOLOCK)
INNER JOIN AGENTMASTER C WITH(NOLOCK) ON A.agentId=C.agentId
INNER JOIN api_DistrictList D with(nolock) on C.agentLocation=D.districtCode
WHERE ISNULL(C.agentBlock,''U'') <>''B'''
IF @agentType IS NOT NULL
SET @SQL=@SQL+' AND C.agentGrp='''+@agentType+''''
IF @chkInactiveAgent ='Y'
SET @SQL=@SQL+' AND ISNULL(C.isActive,''Y'')=''Y'''
SET @SQL1='
SELECT COUNT(''a'') AS TXNCOUNT,'+@pageSize+' PAGESIZE,'+@pageNumber+' PAGENUMBER FROM ('+ @SQL +') AS tmp;
SELECT * FROM
(
SELECT ROW_NUMBER() OVER (ORDER BY [Agent Name]) AS [S.N],*
FROM
(
'+ @SQL +'
) AS aa
) AS tmp WHERE 1 = 1 AND tmp.[S.N] BETWEEN (('+@pageNumber+' - 1) * '+@pageSize+' + 1) AND '+@pageNumber+' * '+@pageSize+''
EXEC(@SQL1)
END
ELSE
BEGIN
SET @SQL='SELECT
[S.N.] = row_number()over(order by am.agentName),
[Agent Name] = CASE WHEN bm.agentType = 2903 AND bm.actAsBranch =''Y'' THEN bm.agentName ELSE am.agentName END,
[Branch Name] = bm.agentName,
[Country] = cm.countryName,
[User Name] = au.userName,
[User Full Name] = au.firstName + ISNULL( '' '' + au.middleName, '''') + ISNULL( '' '' + au.lastName, ''''),
[Inactive Days] = DATEDIFF(day,lastLoginTs,CONVERT(VARCHAR,GETDATE(),101)) ,
[Phone No] = au.telephoneNo,
[Active Status] = CASE WHEN au.isActive = ''N'' THEN ''Inactive'' ELSE ''Active'' END,
[Lock Status] = CASE WHEN au.isLocked = ''Y'' THEN ''Locked'' ELSE ''Unlocked'' END,
[Created By] = au.createdBy,
[Created Date] = au.createdDate,
[Last Login Time] = au.lastLoginTs
FROM dbo.applicationUsers au WITH(NOLOCK)
LEFT JOIN dbo.agentMaster bm WITH(NOLOCK) ON au.agentId = bm.agentId
LEFT JOIN dbo.agentMaster am WITH(NOLOCK) ON bm.parentId = am.agentId
LEFT JOIN dbo.countryMaster cm WITH(NOLOCK) ON au.countryId = cm.countryId
WHERE 1=1 '
IF @days IS NOT NULL
SET @SQL = @SQL+ ' AND ISNULL(bm.agentBlock,''U'') <>''B'' AND ISNULL(DATEDIFF(day,lastLoginTs,CONVERT(VARCHAR,GETDATE(),101)),'+CAST(@days AS VARCHAR)+'+1) > ='+CAST(@days AS VARCHAR)+''
IF @agentType IS NOT NULL
SET @SQL = @SQL+ ' AND bm.agentGrp = '''+@agentType+''''
PRINT(@SQL)
EXEC(@SQL)
END
EXEC proc_errorHandler '0', 'Report has been prepared successfully.', NULL
SELECT 'Agent Type' head,isnull(@agentType,'All') value
UNION ALL
SELECT 'Inactive Within' head,case when cast(@days as varchar)='3' then 'More than 3 days' when cast(@days as varchar)='7' then 'More than a week'
else 'More than a month' end value
UNION ALL
SELECT 'Ignore Blocked Agents' head,case when @chkInactiveAgent='Y' then 'Yes' else 'No' end value
SELECT 'AGENT/USER LOGIN AGING REPORT' title
END
GO