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

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_userLoginAgingRpt] Script Date: 9/27/2019 1:30:14 PM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. CREATE procEDURE [dbo].[proc_userLoginAgingRpt]
  9. @flag VARCHAR(20),
  10. @agentType VARCHAR(20) = NULL,
  11. @days INT = NULL,
  12. @chkInactiveAgent VARCHAR(1) = NULL,
  13. @agingFor CHAR(1) = NULL,
  14. @user VARCHAR(50) = NULL,
  15. @PageSize VARCHAR(20) = NULL,
  16. @PageNumber VARCHAR(20) = NULL
  17. AS
  18. SET NOCOUNT ON;
  19. SET ANSI_NULLS ON;
  20. DECLARE @SQL AS VARCHAR(MAX),@SQL1 AS VARCHAR(MAX)
  21. IF @FLAG='a'
  22. BEGIN
  23. IF @agingFor = 'a'
  24. BEGIN
  25. IF OBJECT_ID('tempdb..#tempTable') IS NOT NULL
  26. DROP TABLE #tempTable
  27. IF OBJECT_ID('tempdb..#tempTable1') IS NOT NULL
  28. DROP TABLE #tempTable1
  29. CREATE TABLE #tempTable
  30. (
  31. agentId VARCHAR(200) NULL
  32. )
  33. CREATE TABLE #tempTable2
  34. (
  35. agentId VARCHAR(200) NULL,
  36. lastLoginDate VARCHAR(50) NULL
  37. )
  38. insert into #tempTable2
  39. select distinct agentId,MAX(createdDate) lastLoginDate from LoginLogs A WITH(NOLOCK)
  40. WHERE logType='Login'
  41. group by agentId
  42. insert into #tempTable
  43. select distinct agentId
  44. from LoginLogs with(nolock)
  45. where createdDate between dateadd(D,-@days,CONVERT(VARCHAR,GETDATE(),101)) and CONVERT(VARCHAR,GETDATE(),101)+' 23:59:59'
  46. and logType='Login' and datediff(day,createdDate,CONVERT(VARCHAR,GETDATE(),101))<>@days
  47. insert into #tempTable
  48. select distinct sBranch
  49. from remitTran with(nolock)
  50. where approvedDate between dateadd(D,-@days,CONVERT(VARCHAR,GETDATE(),101)) and CONVERT(VARCHAR,GETDATE(),101)+' 23:59:59'
  51. and datediff(day,approvedDate,CONVERT(VARCHAR,GETDATE(),101))<>@days
  52. insert into #tempTable
  53. select distinct pBranch
  54. from remitTran with(nolock)
  55. where paidDate between dateadd(D,-@days,CONVERT(VARCHAR,GETDATE(),101)) and CONVERT(VARCHAR,GETDATE(),101)+' 23:59:59'
  56. and datediff(day,paidDate,CONVERT(VARCHAR,GETDATE(),101))<>@days
  57. DELETE FROM #tempTable2
  58. FROM #tempTable2 A
  59. INNER JOIN #tempTable B ON A.agentId=B.agentId
  60. SET @SQL='SELECT
  61. [Agent Name] = C.agentName
  62. ,[Address] = C.agentAddress
  63. ,[Zone] = C.agentState
  64. ,[District] = c.agentDistrict
  65. ,[Contact] = isnull(C.agentPhone1,'''')+'',''+isnull(C.agentPhone2,'''')
  66. ,[Location] = D.districtName
  67. ,[Last Login Date] = A.lastLoginDate
  68. ,[Inactive Days] = datediff(day,A.lastLoginDate,CONVERT(VARCHAR,GETDATE(),101))
  69. FROM #tempTable2 A WITH(NOLOCK)
  70. INNER JOIN AGENTMASTER C WITH(NOLOCK) ON A.agentId=C.agentId
  71. INNER JOIN api_DistrictList D with(nolock) on C.agentLocation=D.districtCode
  72. WHERE ISNULL(C.agentBlock,''U'') <>''B'''
  73. IF @agentType IS NOT NULL
  74. SET @SQL=@SQL+' AND C.agentGrp='''+@agentType+''''
  75. IF @chkInactiveAgent ='Y'
  76. SET @SQL=@SQL+' AND ISNULL(C.isActive,''Y'')=''Y'''
  77. SET @SQL1='
  78. SELECT COUNT(''a'') AS TXNCOUNT,'+@pageSize+' PAGESIZE,'+@pageNumber+' PAGENUMBER FROM ('+ @SQL +') AS tmp;
  79. SELECT * FROM
  80. (
  81. SELECT ROW_NUMBER() OVER (ORDER BY [Agent Name]) AS [S.N],*
  82. FROM
  83. (
  84. '+ @SQL +'
  85. ) AS aa
  86. ) AS tmp WHERE 1 = 1 AND tmp.[S.N] BETWEEN (('+@pageNumber+' - 1) * '+@pageSize+' + 1) AND '+@pageNumber+' * '+@pageSize+''
  87. EXEC(@SQL1)
  88. END
  89. ELSE
  90. BEGIN
  91. SET @SQL='SELECT
  92. [S.N.] = row_number()over(order by am.agentName),
  93. [Agent Name] = CASE WHEN bm.agentType = 2903 AND bm.actAsBranch =''Y'' THEN bm.agentName ELSE am.agentName END,
  94. [Branch Name] = bm.agentName,
  95. [Country] = cm.countryName,
  96. [User Name] = au.userName,
  97. [User Full Name] = au.firstName + ISNULL( '' '' + au.middleName, '''') + ISNULL( '' '' + au.lastName, ''''),
  98. [Inactive Days] = DATEDIFF(day,lastLoginTs,CONVERT(VARCHAR,GETDATE(),101)) ,
  99. [Phone No] = au.telephoneNo,
  100. [Active Status] = CASE WHEN au.isActive = ''N'' THEN ''Inactive'' ELSE ''Active'' END,
  101. [Lock Status] = CASE WHEN au.isLocked = ''Y'' THEN ''Locked'' ELSE ''Unlocked'' END,
  102. [Created By] = au.createdBy,
  103. [Created Date] = au.createdDate,
  104. [Last Login Time] = au.lastLoginTs
  105. FROM dbo.applicationUsers au WITH(NOLOCK)
  106. LEFT JOIN dbo.agentMaster bm WITH(NOLOCK) ON au.agentId = bm.agentId
  107. LEFT JOIN dbo.agentMaster am WITH(NOLOCK) ON bm.parentId = am.agentId
  108. LEFT JOIN dbo.countryMaster cm WITH(NOLOCK) ON au.countryId = cm.countryId
  109. WHERE 1=1 '
  110. IF @days IS NOT NULL
  111. 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)+''
  112. IF @agentType IS NOT NULL
  113. SET @SQL = @SQL+ ' AND bm.agentGrp = '''+@agentType+''''
  114. PRINT(@SQL)
  115. EXEC(@SQL)
  116. END
  117. EXEC proc_errorHandler '0', 'Report has been prepared successfully.', NULL
  118. SELECT 'Agent Type' head,isnull(@agentType,'All') value
  119. UNION ALL
  120. 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'
  121. else 'More than a month' end value
  122. UNION ALL
  123. SELECT 'Ignore Blocked Agents' head,case when @chkInactiveAgent='Y' then 'Yes' else 'No' end value
  124. SELECT 'AGENT/USER LOGIN AGING REPORT' title
  125. END
  126. GO