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.
386 lines
10 KiB
386 lines
10 KiB
USE [FastMoneyPro_Remit]
|
|
GO
|
|
/****** Object: StoredProcedure [dbo].[proc_MatrixReport] Script Date: 7/4/2019 11:35:48 AM ******/
|
|
DROP PROCEDURE [dbo].[proc_MatrixReport]
|
|
GO
|
|
/****** Object: StoredProcedure [dbo].[proc_MatrixReport] Script Date: 7/4/2019 11:35:48 AM ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
CREATE PROCEDURE [dbo].[proc_MatrixReport](
|
|
--DECLARE
|
|
@flag VARCHAR(20)
|
|
,@user VARCHAR(30)
|
|
,@userName VARCHAR(30) = NULL
|
|
,@roleId INT = NULL
|
|
,@functionId VARCHAR(50) = NULL
|
|
)
|
|
AS
|
|
SET NOCOUNT ON
|
|
BEGIN TRY
|
|
IF @flag = 'udt'
|
|
BEGIN
|
|
SELECT [dbo].[FNADateFormatTZ](GETDATE(), @user) dt
|
|
|
|
END
|
|
ELSE IF @flag = 'nrl'
|
|
BEGIN
|
|
SELECT roleId, roleName FROM applicationRoles ORDER BY roleName
|
|
RETURN
|
|
END
|
|
|
|
ELSE IF @flag = 'nrlReport'
|
|
BEGIN
|
|
SELECT
|
|
[AGENT NAME] = AM1.agentName+' ('+am.agentName+')',
|
|
[USER NAME] = au.firstName + ISNULL(' ' + au.middleName, '') + ISNULL(' ' + au.lastName, '') + '(' + au.userName + ')'
|
|
FROM applicationUsers au WITH(NOLOCK)
|
|
INNER JOIN applicationUserRoles aur WITH(NOLOCK) ON au.userId = aur.userId
|
|
INNER join dbo.agentMaster am WITH(NOLOCK) ON am.agentid = au.agentId
|
|
INNER JOIN AGENTMASTER AM1 WITH(NOLOCK) ON AM1.agentId = am.parentId
|
|
|
|
WHERE aur.roleId = @roleId
|
|
and isnull(au.isDeleted,'N') ='N'
|
|
and isnull(au.isActive,'Y') = 'Y'
|
|
|
|
EXEC proc_errorHandler '0', 'Report has been prepared successfully.', NULL
|
|
|
|
DECLARE @roleName VARCHAR(100)
|
|
|
|
SELECT
|
|
@roleName = ar.roleName
|
|
FROM applicationRoles ar WITH(NOLOCK)
|
|
WHERE ar.roleId = @roleId
|
|
|
|
SELECT
|
|
'Role Name' head
|
|
,@roleName value
|
|
|
|
SELECT 'User Matrix Report (Role » User)' title
|
|
|
|
END
|
|
|
|
ELSE IF @flag = 'nrlReport2'
|
|
BEGIN
|
|
SELECT
|
|
Name = am.menuGroup + ' » ' + am.menuName + ' » ' + af.functionName
|
|
FROM applicationMenus am WITH(NOLOCK)
|
|
INNER JOIN applicationFunctions af WITH(NOLOCK) ON am.functionId = af.parentFunctionId
|
|
INNER JOIN applicationRoleFunctions arf WITH(NOLOCK) ON af.functionId = arf.functionId
|
|
WHERE arf.roleId = @roleId
|
|
ORDER BY am.menuGroup , am.menuName, af.functionName
|
|
|
|
|
|
EXEC proc_errorHandler '0', 'Report has been prepared successfully.', NULL
|
|
|
|
|
|
SELECT
|
|
@roleName = ar.roleName
|
|
FROM applicationRoles ar WITH(NOLOCK)
|
|
WHERE ar.roleId = @roleId
|
|
|
|
SELECT
|
|
'Role Name' head
|
|
,@roleName value
|
|
|
|
SELECT 'User Matrix Report (Role » Function)' title
|
|
|
|
END
|
|
ELSE IF @flag = 'nfl'
|
|
BEGIN
|
|
SELECT
|
|
af.functionId
|
|
,functionName = am.menuGroup + ' » ' + am.menuName + ' » ' + af.functionName
|
|
FROM applicationMenus am WITH(NOLOCK)
|
|
INNER JOIN applicationFunctions af WITH(NOLOCK) ON am.functionId = af.parentFunctionId
|
|
|
|
ORDER BY am.menuGroup , am.menuName, af.functionName
|
|
RETURN
|
|
END
|
|
|
|
ELSE IF @flag = 'nflReport'
|
|
BEGIN
|
|
SELECT
|
|
Name = au.firstName + ISNULL(' ' + au.middleName, '') + ISNULL(' ' + au.lastName, '') + '(' + au.userName + ')'
|
|
,Type = 'USER '
|
|
INTO #rTmp
|
|
FROM applicationUsers au
|
|
INNER JOIN (
|
|
SELECT
|
|
arf.functionId functionId
|
|
,aur.userId
|
|
FROM applicationRoleFunctions arf WITH(NOLOCK)
|
|
INNER JOIN applicationUserRoles aur WITH(NOLOCK) ON arf.roleId = aur.roleId
|
|
WHERE arf.roleId IN (SELECT roleId FROM applicationUserRoles)
|
|
|
|
UNION
|
|
SELECT
|
|
auf.functionId functionId
|
|
,auf.userId
|
|
FROM applicationUserFunctions auf WITH(NOLOCK)
|
|
) x ON au.userId = x.userId
|
|
WHERE x.functionId = @functionId
|
|
ORDER BY au.firstName
|
|
|
|
INSERT INTO #rTmp
|
|
|
|
SELECT
|
|
Name = ar.roleName
|
|
,Type = '[ROLE]'
|
|
FROM applicationRoleFunctions arf WITH(NOLOCK)
|
|
INNER JOIN applicationRoles ar WITH(NOLOCK) ON arf.roleId = ar.roleId
|
|
WHERE functionId = @functionId
|
|
ORDER BY ar.roleName
|
|
|
|
SELECT * FROM #rTmp
|
|
|
|
EXEC proc_errorHandler '0', 'Report has been prepared successfully.', NULL
|
|
|
|
DECLARE @functionName VARCHAR(500)
|
|
|
|
SELECT
|
|
@functionName = am.menuGroup + ' » ' + am.menuName + ' » ' + af.functionName
|
|
FROM applicationMenus am WITH(NOLOCK)
|
|
INNER JOIN applicationFunctions af WITH(NOLOCK) ON am.functionId = af.parentFunctionId
|
|
WHERE af.functionId = @functionId
|
|
|
|
SELECT
|
|
'Function Name' head
|
|
,@functionName value
|
|
|
|
SELECT 'User Matrix Report (Function)' title
|
|
END
|
|
|
|
|
|
ELSE IF @flag = 'report'
|
|
BEGIN
|
|
IF @userName IS NOT NULL
|
|
BEGIN
|
|
IF NOT EXISTS(SELECT 'x' FROM applicationUsers au WITH(NOLOCK) WHERE au.userName = @userName)
|
|
BEGIN
|
|
EXEC proc_errorHandler '1', 'User Does not exists.', NULL
|
|
EXEC proc_errorHandler '1', 'User Does not exists.', NULL
|
|
RETURN
|
|
END
|
|
END
|
|
|
|
IF OBJECT_ID('tempdb..#userList') IS NOT NULL
|
|
DROP TABLE #userList
|
|
|
|
CREATE TABLE #userList(
|
|
rowId INT IDENTITY(1, 1)
|
|
,userName VARCHAR(30)
|
|
,Name VARCHAR(50)
|
|
,department VARCHAR(50)
|
|
,branch VARCHAR(50)
|
|
,supervisor VARCHAR(50)
|
|
)
|
|
|
|
INSERT INTO #userList(userName, Name, department, branch, supervisor)
|
|
SELECT
|
|
au.userName
|
|
,au.userName + ' (' + ISNULL(au.firstName, '') + ISNULL(' ' + au.middleName, '') + ISNULL(' ' + au.lastName, '')+')' fullName
|
|
,''
|
|
,am.agentName
|
|
,''
|
|
FROM applicationUsers au WITH(NOLOCK)
|
|
LEFT JOIN agentMaster am WITH(NOLOCK) ON au.agentId = am.agentId
|
|
WHERE au.userName = ISNULL(@userName, au.userName)
|
|
AND ISNULL(au.isActive, 'N') = 'Y'
|
|
--ORDER BY ISNULL(au1.firstName, '') asc
|
|
|
|
|
|
SELECT * FROM #userList
|
|
|
|
IF OBJECT_ID('tempdb..#report') IS NOT NULL
|
|
DROP TABLE #report
|
|
|
|
CREATE TABLE #report(
|
|
module VARCHAR(50)
|
|
,modulePostion INT
|
|
,[group] VARCHAR(50)
|
|
,groupPostion INT
|
|
,[menu] VARCHAR(50)
|
|
,menuPostion INT
|
|
,id INT
|
|
)
|
|
|
|
DECLARE
|
|
@sql VARCHAR(MAX)
|
|
,@fieldList VARCHAR(MAX)
|
|
,@fieldListAdd VARCHAR(MAX)
|
|
,@fieldListSelect VARCHAR(MAX)
|
|
,@fieldCond VARCHAR(MAX)
|
|
|
|
SELECT
|
|
@fieldList = ISNULL(@fieldList + ',' , '') + '[' + functionName + ']'
|
|
,@fieldCond = ISNULL(@fieldCond + ' OR ' , '') + '[' + functionName + '] IS NOT NULL '
|
|
,@fieldListAdd = ISNULL(@fieldListAdd + ',' , '') + '[' + functionName + '] VARCHAR(100)'
|
|
,@fieldListSelect = ISNULL(@fieldListSelect + ',' , '')
|
|
+ '[' + functionName + '] ['
|
|
+
|
|
CASE functionName
|
|
WHEN 'Assign Functions' THEN 'Assign<br />Functions'
|
|
WHEN 'Assign Roles' THEN 'Assign<br />Roles'
|
|
WHEN 'View History' THEN 'View<br />History'
|
|
WHEN 'Approve/Reject' THEN 'Approve<br />Reject'
|
|
WHEN 'Add/Edit' THEN 'Add<br />Edit'
|
|
ELSE functionName
|
|
END
|
|
+ ']'
|
|
|
|
FROM (
|
|
--------SELECT DISTINCT
|
|
-------- functionName
|
|
--------FROM applicationFunctions
|
|
SELECT DISTINCT functionName
|
|
FROM applicationFunctions aF WITH (NOLOCK)
|
|
INNER JOIN (
|
|
select DISTINCT functionId from applicationRoleFunctions ARF
|
|
INNER JOIN applicationUserRoles AUR ON ARF.roleId = AUR.roleId
|
|
INNER JOIN applicationUserS AU ON AU.userId = AUR.userId
|
|
WHERE AU.userName = @userName
|
|
) X ON aF.functionId = X.functionId
|
|
INNER JOIN applicationMenus AM ON AM.functionId = aF.parentFunctionId
|
|
) x
|
|
|
|
SET @sql = 'ALTER TABLE #report ADD ' + @fieldListAdd
|
|
EXEC (@sql)
|
|
|
|
--SELECT * FROM staticDataValue where typeID = 1400
|
|
|
|
WHILE EXISTS(SELECT 'X' FROM #userList)
|
|
BEGIN
|
|
SELECT TOP 1 @userName = userName FROM #userList
|
|
DECLARE @userId VARCHAR(20)
|
|
SELECT @userId = userId FROM applicationUsers WITH(NOLOCK) WHERE userName = @userName
|
|
SET @sql = '
|
|
SELECT
|
|
sdv.detailDesc [Module]
|
|
,CASE am.Module
|
|
WHEN ''10'' THEN 10
|
|
WHEN ''20'' THEN 20
|
|
WHEN ''30'' THEN 30
|
|
ELSE 100
|
|
END [modulePostion]
|
|
,am.menuGroup [Group]
|
|
,am.groupPosition
|
|
,x.menuName [Menu]
|
|
,am.position
|
|
,ROW_NUMBER() OVER(ORDER BY
|
|
CASE am.Module
|
|
WHEN ''10'' THEN 10
|
|
WHEN ''20'' THEN 20
|
|
WHEN ''30'' THEN 30
|
|
ELSE 100
|
|
END ASC
|
|
,am.groupPosition ASC, am.position) Id
|
|
,' + @fieldList + '
|
|
|
|
FROM (
|
|
SELECT
|
|
menuName
|
|
,' + @fieldList + '
|
|
|
|
FROM (
|
|
SELECT
|
|
am.menuName
|
|
,af.functionName
|
|
,CASE WHEN x.functionId IS NOT NULL THEN ''x'' ELSE NULL END hasAccess
|
|
FROM applicationMenus am
|
|
INNER JOIN applicationFunctions af ON am.functionId = af.parentFunctionId
|
|
LEFT JOIN(
|
|
SELECT
|
|
userId = ''' + @userId + '''
|
|
,arf.functionId functionId
|
|
FROM applicationRoleFunctions arf WITH(NOLOCK)
|
|
WHERE roleId IN (SELECT roleId FROM applicationUserRoles WHERE userId =''' + @userId + ''')
|
|
|
|
UNION
|
|
SELECT
|
|
userId = ''' + @userId + '''
|
|
,auf.functionId functionId
|
|
FROM applicationUserFunctions auf WITH(NOLOCK)
|
|
WHERE userId = ''' + @userId + '''
|
|
) x ON af.functionId = x.functionId
|
|
) x
|
|
PIVOT
|
|
(
|
|
MAX (hasAccess)
|
|
FOR functionName IN
|
|
(
|
|
' + @fieldList + '
|
|
)
|
|
) AS pvt
|
|
)x
|
|
INNER JOIN applicationMenus am ON am.menuName = x.menuName
|
|
INNER JOIN staticDataValue sdv ON am.module = sdv.valueId
|
|
'
|
|
|
|
TRUNCATE TABLE #report
|
|
INSERT INTO #report
|
|
EXEC(@sql)
|
|
|
|
SET @sql = '
|
|
SELECT
|
|
[Module] = CASE WHEN [Module] = ISNULL((SELECT TOP 1 [Module] FROM #report WHERE id = r.id - 1), '''') THEN NULL ELSE ''<span class="moduleGroup">'' + [Module] + ''</span>'' END
|
|
,[Group] = CASE
|
|
WHEN (
|
|
[Group] = ISNULL((SELECT TOP 1 [Group] FROM #report WHERE id = r.id - 1), '''') AND
|
|
[Module] = ISNULL((SELECT TOP 1 [Module] FROM #report WHERE id = r.id - 1), '''')
|
|
) THEN NULL
|
|
ELSE ''<span class="menu">'' + [Group] + ''</span>''
|
|
END
|
|
,[Menu] = ''<span class="subMenu">'' + [Menu] + ''</span>''
|
|
,' + @fieldListSelect + '
|
|
FROM #report r
|
|
WHERE ('+@fieldCond +')'
|
|
|
|
|
|
PRINT @sql
|
|
EXEC(@sql)
|
|
DELETE FROM #userList WHERE userName = @userName
|
|
--select * FROM #report
|
|
|
|
END
|
|
EXEC proc_errorHandler '0', 'Report has been prepared successfully.', NULL
|
|
|
|
|
|
SELECT
|
|
'User Name' head
|
|
,@userName value
|
|
|
|
UNION ALL
|
|
SELECT
|
|
'Full Name' head
|
|
,ISNULL(au.firstName, '') + ISNULL(' ' + au.middleName, '') + ISNULL(' ' + au.lastName, '') Value
|
|
FROM applicationUsers au WITH(NOLOCK) WHERE au.userName = @userName
|
|
|
|
|
|
SELECT 'User Matrix Report' title
|
|
|
|
RETURN
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
EXEC proc_errorHandler '1', 'Error', NULL
|
|
EXEC proc_errorHandler '1', 'Error', NULL
|
|
END
|
|
|
|
END TRY
|
|
BEGIN CATCH
|
|
DECLARE @msg VARCHAR(100)
|
|
SET @msg = ERROR_MESSAGE()
|
|
|
|
EXEC proc_errorHandler '1', @msg, NULL
|
|
EXEC proc_errorHandler '1', @msg, NULL
|
|
END CATCH
|
|
|
|
|
|
|
|
|
|
|
|
GO
|