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.
567 lines
18 KiB
567 lines
18 KiB
USE [FastMoneyPro_Remit]
|
|
GO
|
|
/****** Object: StoredProcedure [dbo].[proc_applicationRoleFunction] Script Date: 7/4/2019 11:35:48 AM ******/
|
|
DROP PROCEDURE [dbo].[proc_applicationRoleFunction]
|
|
GO
|
|
/****** Object: StoredProcedure [dbo].[proc_applicationRoleFunction] Script Date: 7/4/2019 11:35:48 AM ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
|
|
/*
|
|
exec proc_applicationRoleFunction @flag = 'rfl', @roleId ='2', @user ='admin'
|
|
*/
|
|
CREATE PROC [dbo].[proc_applicationRoleFunction]
|
|
@flag VARCHAR(100)
|
|
,@roleId INT = NULL
|
|
,@functionId INT = NULL
|
|
,@userId INT = NULL
|
|
,@user VARCHAR(30) = NULL
|
|
,@functionIds VARCHAR(MAX)= NULL
|
|
,@roleIds VARCHAR(MAX)= NULL
|
|
AS
|
|
|
|
/*
|
|
|
|
@flag
|
|
rfl -> role function list
|
|
ufl -> user function list
|
|
rl -> role list
|
|
rfi -> role function insert
|
|
ufi -> user fuction insert
|
|
uri -> user role insert
|
|
|
|
*/
|
|
|
|
|
|
SET NOCOUNT ON;
|
|
|
|
|
|
DECLARE
|
|
@sql VARCHAR(MAX)
|
|
,@oldValue VARCHAR(MAX)
|
|
,@newValue VARCHAR(MAX)
|
|
,@ApproveFunctionId INT
|
|
|
|
|
|
DECLARE @function_list TABLE(functionId INT)
|
|
CREATE TABLE #msg(errorCode INT, msg VARCHAR(100), id VARCHAR(20))
|
|
|
|
IF OBJECT_ID('tempdb..#menuList') IS NOT NULL
|
|
DROP TABLE #menuList
|
|
|
|
CREATE TABLE #menuList(
|
|
id INT IDENTITY(1, 1)
|
|
,moduleName VARCHAR(100)
|
|
,menuGroup VARCHAR(100)
|
|
,menu VARCHAR(100)
|
|
,rights VARCHAR(MAX)
|
|
,modulePosition INT
|
|
,groupPosition INT
|
|
,menuPosition INT
|
|
,functionId VARCHAR(10)
|
|
)
|
|
--SELECT 'functionId', @roleId, NULL, @user
|
|
SET @ApproveFunctionId = 10101030
|
|
|
|
IF @flag = 'viewrole'
|
|
BEGIN
|
|
INSERT INTO #menuList(moduleName, menuGroup, menu, rights, modulePosition, groupPosition, menuPosition, functionId)
|
|
SELECT DISTINCT
|
|
--sdv.detailTitle
|
|
CASE am.Module
|
|
WHEN '10' THEN 'System'
|
|
WHEN '20' THEN 'Remittance'
|
|
WHEN '30' THEN 'International Operation'
|
|
ELSE '100'
|
|
END moduleName
|
|
,menuGroup
|
|
, menuName
|
|
,dbo.FNAGetFunctionList(am.functionId, @roleId, NULL,@user, 10101030,'Y') [Rights]
|
|
,CASE am.Module
|
|
WHEN '10' THEN 10
|
|
WHEN '20' THEN 20
|
|
WHEN '30' THEN 30
|
|
ELSE '100'
|
|
END [modulePostion]
|
|
,am.groupPosition
|
|
,am.position
|
|
,am.functionId
|
|
from applicationFunctions AF
|
|
INNER JOIN applicationMenus AM ON AM.functionId=AF.parentFunctionId
|
|
--INNER JOIN staticDataValue sdv ON am.module = sdv.valueId
|
|
INNER JOIN applicationROLEFunctions ARF ON ARF.functionId=AF.functionId AND ARF.roleId = @roleId
|
|
|
|
|
|
UPDATE #menuList SET
|
|
moduleName = CASE WHEN moduleName = ISNULL((SELECT TOP 1 moduleName FROM #menuList WHERE id = ml.id - 1), '') THEN NULL ELSE '<b>' + moduleName + '</b>' END
|
|
,menuGroup = CASE
|
|
WHEN (
|
|
menuGroup = ISNULL((SELECT TOP 1 menuGroup FROM #menuList WHERE id = ml.id - 1), '') AND
|
|
moduleName = ISNULL((SELECT TOP 1 moduleName FROM #menuList WHERE id = ml.id - 1), '')
|
|
) THEN NULL
|
|
ELSE [menuGroup]
|
|
END
|
|
FROM #menuList ml
|
|
|
|
SELECT
|
|
'<span class="moduleGroupReport">' + moduleName + '</span>' [Module]
|
|
,'<span class="menuReport">' + menuGroup + '</span>' [Group]
|
|
,'<span class="subMenuReport">' + menu + '</span>' [Menu]
|
|
,'<span class="rights">' + rights + '</span>' [Rights]
|
|
FROM #menuList l
|
|
--LEFT JOIN staticDataValue S ON L.moduleName = '<b>' + CAST(S.valueId AS VARCHAR) + '</b>'
|
|
--ORDER BY modulePosition ASC, groupPosition ASC, menuPosition ASC
|
|
|
|
END
|
|
|
|
|
|
IF @flag IN('ufl', 'rfl')
|
|
BEGIN
|
|
DECLARE @roleType AS VARCHAR(1)
|
|
|
|
IF @roleId IS NULL
|
|
SELECT @roleId=roleId from applicationUserRoles where userId=@userId AND roleId<>'-1'
|
|
|
|
SELECT @roleType =roleType FROM applicationRoles where roleId=@roleId
|
|
|
|
IF @roleType='A'
|
|
BEGIN
|
|
INSERT INTO #menuList(moduleName, menuGroup, menu, rights, modulePosition, groupPosition, menuPosition, functionId)
|
|
SELECT
|
|
--sdv.detailTitle [Module]
|
|
CASE am.Module
|
|
WHEN '10' THEN 'System'
|
|
WHEN '20' THEN 'Remittance'
|
|
WHEN '30' THEN 'International Operation'
|
|
WHEN '40' THEN 'Agent Operation'
|
|
WHEN '50' THEN 'Money Exchange'
|
|
ELSE '100'
|
|
END moduleName
|
|
,AgentMenuGroup
|
|
,menuName
|
|
,CASE @flag
|
|
WHEN 'rfl' THEN dbo.FNAGetFunctionList(functionId, @roleId, NULL, @user, 10101030,NULL)
|
|
WHEN 'ufl' THEN dbo.FNAGetFunctionList(functionId, NULL, @userId, @user, 10101130,NULL)
|
|
ELSE ''
|
|
END [Rights]
|
|
,CASE am.Module
|
|
WHEN '10' THEN 10
|
|
WHEN '20' THEN 20
|
|
WHEN '30' THEN 30
|
|
WHEN '50' THEN 50
|
|
ELSE 100
|
|
END [modulePostion]
|
|
,am.groupPosition
|
|
,am.position
|
|
,am.functionId
|
|
FROM applicationMenus am WITH(NOLOCK)
|
|
INNER JOIN staticDataValue sdv ON am.module = sdv.valueId
|
|
|
|
WHERE ISNULL(am.isActive, 'Y') = 'Y'
|
|
AND ISNULL(AgentMenuGroup,'') <> ''
|
|
ORDER BY
|
|
am.Module
|
|
,am.groupPosition ASC
|
|
,am.position ASC
|
|
END
|
|
IF @roleType='H'
|
|
BEGIN
|
|
INSERT INTO #menuList(moduleName, menuGroup, menu, rights, modulePosition, groupPosition, menuPosition, functionId)
|
|
SELECT
|
|
CASE am.Module
|
|
WHEN '10' THEN 'System'
|
|
WHEN '20' THEN 'Remittance'
|
|
WHEN '30' THEN 'International Operation'
|
|
WHEN '40' THEN 'Agent Operation'
|
|
ELSE '100'
|
|
END moduleName
|
|
,menuGroup
|
|
,menuName
|
|
,CASE @flag
|
|
WHEN 'rfl' THEN dbo.FNAGetFunctionList(functionId, @roleId, NULL, @user, 10101030,NULL)
|
|
WHEN 'ufl' THEN dbo.FNAGetFunctionList(functionId, NULL, @userId, @user, 10101130,NULL)
|
|
ELSE ''
|
|
END [Rights]
|
|
,CASE am.Module
|
|
WHEN '10' THEN 10
|
|
WHEN '20' THEN 20
|
|
WHEN '30' THEN 30
|
|
WHEN '50' THEN 50
|
|
ELSE 100
|
|
END [modulePostion]
|
|
,am.groupPosition
|
|
,am.position
|
|
,am.functionId
|
|
FROM applicationMenus am WITH(NOLOCK)
|
|
INNER JOIN staticDataValue sdv ON am.module = sdv.valueId
|
|
WHERE ISNULL(am.isActive, 'Y') = 'Y'
|
|
AND ISNULL(AgentMenuGroup,'') = ''
|
|
ORDER BY
|
|
am.Module
|
|
,AM.menuGroup
|
|
,am.groupPosition ASC
|
|
,am.position ASC
|
|
END
|
|
|
|
UPDATE #menuList SET
|
|
moduleName = CASE WHEN moduleName = ISNULL((SELECT TOP 1 moduleName FROM #menuList WHERE id = ml.id - 1), '') THEN NULL ELSE '<b>' + moduleName + '</b>' END
|
|
,menuGroup = CASE
|
|
WHEN (
|
|
menuGroup = ISNULL((SELECT TOP 1 menuGroup FROM #menuList WHERE id = ml.id - 1), '') AND
|
|
moduleName = ISNULL((SELECT TOP 1 moduleName FROM #menuList WHERE id = ml.id - 1), '')
|
|
) THEN NULL
|
|
ELSE [menuGroup]
|
|
END
|
|
FROM #menuList ml
|
|
|
|
SELECT
|
|
'<span class="moduleGroupReport" onclick = "SelectFunctions(this,''' + LEFT(functionId, 2) + ''');">' + moduleName + '</span>' [Module]
|
|
,'<span class="menuReport" onclick = "SelectFunctions(this,''' + LEFT(functionId, 4) + ''');">' + menuGroup + '</span>' [Group]
|
|
,'<span class="subMenuReport" onclick = "SelectFunctions(this,''' + LEFT(functionId, 6) + ''');">' + menu + '</span>' [Menu]
|
|
,'<span class="rights">' + rights + '</span>' [Rights]
|
|
FROM #menuList L
|
|
END
|
|
|
|
ELSE iF @flag = 'rfi'
|
|
BEGIN
|
|
--IF EXISTS (SELECT 'X' FROM applicationRoleFunctionsMod WITH(NOLOCK) WHERE roleId = @roleId AND createdBy <> @user)
|
|
--BEGIN
|
|
-- EXEC proc_errorHandler 1, 'You can not modify this record. Previous modification has not been approved yet.', @userId
|
|
-- RETURN
|
|
--END
|
|
|
|
--select @roleId
|
|
|
|
SET @sql = '
|
|
SELECT
|
|
functionId
|
|
FROM applicationFunctions af WITH(NOLOCK)
|
|
WHERE functionId IN (' + @functionIds + ')'
|
|
INSERT @function_list
|
|
EXEC (@sql)
|
|
BEGIN TRANSACTION
|
|
DELETE FROM applicationRoleFunctions WHERE roleId = @roleId
|
|
INSERT applicationRoleFunctions(functionId, roleId, createdBy, createdDate)
|
|
SELECT functionId, @roleId, @user, GETDATE() FROM @function_list
|
|
|
|
INSERT applicationRoleFunctions(functionId, roleId, createdBy, createdDate)
|
|
SELECT -1, @roleId, @user, GETDATE()
|
|
|
|
IF @@TRANCOUNT > 0
|
|
COMMIT TRANSACTION
|
|
EXEC proc_errorHandler 0, 'Role function successfully assigned.', @roleId
|
|
END
|
|
|
|
ELSE iF @flag = 'reject' AND @roleId IS NOT NULL
|
|
BEGIN
|
|
IF NOT EXISTS(SELECT 'X' FROM applicationRoleFunctionsMod WITH(NOLOCK) WHERE roleId = @roleId)
|
|
BEGIN
|
|
EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @roleId
|
|
RETURN
|
|
END
|
|
|
|
DELETE FROM applicationRoleFunctionsMod WHERE roleId = @roleId
|
|
EXEC proc_errorHandler 0, 'Role function successfully rejected.', @roleId
|
|
|
|
--Audit data ends
|
|
|
|
|
|
END
|
|
|
|
|
|
ELSE iF @flag = 'approve' AND @roleId IS NOT NULL
|
|
BEGIN
|
|
IF NOT EXISTS(SELECT 'X' FROM applicationRoleFunctionsMod WITH(NOLOCK) WHERE roleId = @roleId)
|
|
BEGIN
|
|
EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @roleId
|
|
RETURN
|
|
END
|
|
|
|
DECLARE @roleName VARCHAR(50)
|
|
SELECT TOP 1
|
|
@roleName = ar.roleName
|
|
FROM applicationRoles ar WITH(NOLOCK)
|
|
WHERE ar.roleId = @roleId
|
|
|
|
SELECT
|
|
@newValue = ISNULL(@newValue + ',', '') + CAST(functionId AS VARCHAR(50))
|
|
FROM applicationRoleFunctionsMod
|
|
WHERE roleId = @roleId
|
|
|
|
EXEC [dbo].proc_GetColumnToRow 'applicationRoleFunctions', 'roleId', @roleId, @oldValue OUTPUT
|
|
|
|
BEGIN TRANSACTION
|
|
DELETE FROM applicationRoleFunctions WHERE roleId = @roleId
|
|
INSERT applicationRoleFunctions(functionId, roleId, createdBy, createdDate)
|
|
SELECT functionId, @roleId, @user, GETDATE() FROM applicationRoleFunctionsMod WHERE roleId = @roleId
|
|
|
|
DELETE FROM applicationRoleFunctionsMod WHERE roleId = @roleId
|
|
|
|
INSERT INTO #msg(errorCode, msg, id)
|
|
EXEC proc_applicationLogs 'i', NULL, 'update', 'Role Functions', @roleName, @user, @oldValue, @newValue
|
|
IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
|
|
BEGIN
|
|
IF @@TRANCOUNT > 0
|
|
ROLLBACK TRANSACTION
|
|
EXEC proc_errorHandler 1, 'Could not approve the changes.', @roleId
|
|
RETURN
|
|
END
|
|
|
|
IF @@TRANCOUNT > 0
|
|
COMMIT TRANSACTION
|
|
|
|
EXEC proc_errorHandler 0, 'Function successfully assigned.', @roleId
|
|
|
|
--Audit data ends
|
|
|
|
|
|
END
|
|
|
|
|
|
ELSE iF @flag = 'ufi'
|
|
BEGIN
|
|
IF EXISTS (SELECT 'X' FROM applicationUsers WITH(NOLOCK) WHERE userId = @userId AND approvedBy IS NULL AND createdBy <> @user)
|
|
BEGIN
|
|
EXEC proc_errorHandler 1, 'You can not modify this record. Previous modification has not been approved yet.', @userId
|
|
RETURN
|
|
END
|
|
IF EXISTS (SELECT 'X' FROM applicationUsersMod WITH(NOLOCK) WHERE userId = @userId AND createdBy <> @user)
|
|
BEGIN
|
|
EXEC proc_errorHandler 1, 'You can not modify this record. Previous Modification has not been approved yet.', @userId
|
|
RETURN
|
|
END
|
|
IF EXISTS (SELECT 'X' FROM applicationUserRolesMod WITH(NOLOCK) WHERE userId = @userId AND createdBy <> @user)
|
|
BEGIN
|
|
EXEC proc_errorHandler 1, 'You can not modify this record. Previous modification has not been approved yet.', @userId
|
|
RETURN
|
|
END
|
|
IF EXISTS (SELECT 'X' FROM applicationUserFunctionsMod WITH(NOLOCK) WHERE userId = @userId AND createdBy <> @user)
|
|
BEGIN
|
|
EXEC proc_errorHandler 1, 'You can not modify this record. Previous modification has not been approved yet.', @roleId
|
|
RETURN
|
|
END
|
|
SET @sql = '
|
|
SELECT
|
|
functionId
|
|
FROM applicationFunctions af WITH(NOLOCK)
|
|
WHERE functionId IN (' + @functionIds + ')'
|
|
INSERT @function_list
|
|
EXEC (@sql)
|
|
|
|
BEGIN TRANSACTION
|
|
DELETE FROM applicationUserFunctionsMod WHERE [userId] = @userId
|
|
INSERT applicationUserFunctionsMod(functionId, [userId], modType, createdBy, createdDate)
|
|
SELECT functionId, @userId, 'U', @user, GETDATE() FROM @function_list
|
|
|
|
INSERT applicationUserFunctionsMod(functionId, [userId], modType, createdBy, createdDate)
|
|
SELECT -1, @userId, 'U', @user, GETDATE()
|
|
|
|
IF @@TRANCOUNT > 0
|
|
COMMIT TRANSACTION
|
|
EXEC proc_errorHandler 0, 'User Function successfully assigned.', @userId
|
|
|
|
END
|
|
|
|
ELSE iF @flag = 'reject' AND @userId IS NOT NULL AND @functionIds IS NOT NULL
|
|
BEGIN
|
|
IF NOT EXISTS(SELECT 'X' FROM applicationUserFunctionsMod WITH(NOLOCK) WHERE userId = @userId)
|
|
BEGIN
|
|
EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @userId
|
|
RETURN
|
|
END
|
|
|
|
|
|
DELETE FROM applicationUserFunctionsMod WHERE userId = @userId
|
|
EXEC proc_errorHandler 0, 'User function successfully rejected.', @userId
|
|
|
|
END
|
|
|
|
ELSE iF @flag = 'approve' AND @userId IS NOT NULL AND @functionIds IS NOT NULL
|
|
BEGIN
|
|
IF NOT EXISTS(SELECT 'X' FROM applicationUserFunctionsMod WITH(NOLOCK) WHERE userId = @userId)
|
|
BEGIN
|
|
EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @userId
|
|
RETURN
|
|
END
|
|
|
|
SELECT
|
|
@newValue = ISNULL(@newValue + ',', '') + CAST(functionId AS VARCHAR(50))
|
|
FROM applicationUserFunctionsMod
|
|
WHERE userId = @userId
|
|
|
|
EXEC [dbo].proc_GetColumnToRow 'applicationUserFunctions', 'userId', @userId, @oldValue OUTPUT
|
|
|
|
BEGIN TRANSACTION
|
|
DELETE FROM applicationUserFunctions WHERE userId = @userId
|
|
INSERT applicationUserFunctions(functionId, userId, createdBy, createdDate)
|
|
SELECT functionId, @userId, @user, GETDATE() FROM applicationUserFunctionsMod WHERE userId = @userId
|
|
|
|
DELETE FROM applicationUserFunctionsMod WHERE userId = @userId
|
|
|
|
INSERT INTO #msg(errorCode, msg, id)
|
|
EXEC proc_applicationLogs 'i', NULL, 'update', 'User Functions', @userId, @user, @oldValue, @newValue
|
|
IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
|
|
BEGIN
|
|
IF @@TRANCOUNT > 0
|
|
ROLLBACK TRANSACTION
|
|
EXEC proc_errorHandler 1, 'Could not approve the changes.', @userId
|
|
RETURN
|
|
END
|
|
|
|
IF @@TRANCOUNT > 0
|
|
COMMIT TRANSACTION
|
|
|
|
EXEC proc_errorHandler 0, 'User Function successfully approved.', @roleId
|
|
|
|
--Audit data ends
|
|
|
|
|
|
END
|
|
|
|
ELSE IF @flag = 'rl'
|
|
BEGIN
|
|
DECLARE @AROLETYPE CHAR(1)
|
|
|
|
SELECT
|
|
@AROLETYPE = case when ISNULL(AU.userType, mode.userType) in ('AH','AB','BH','RH','VU','A') then 'A' else 'H' end
|
|
from applicationUsers AU
|
|
LEFT JOIN applicationUsersMod mode ON AU.userId = mode.userId
|
|
WHERE AU.userId = @userId
|
|
|
|
|
|
IF EXISTS(SELECT 'X' FROM applicationUserRolesMod WITH(NOLOCK)
|
|
WHERE userId = @userId AND (@user = createdBy OR 'Y' = dbo.FNAHasRight(@user,@ApproveFunctionId)))
|
|
BEGIN
|
|
SELECT
|
|
--ar.role_type
|
|
'<input type = "checkbox"'
|
|
+ ' value = "' + CAST(ar.roleId AS VARCHAR) + '"'
|
|
+ ' id = "chk_' + CAST(ar.roleId AS VARCHAR) + '"'
|
|
+ ' name = "roleId"'
|
|
+ CASE WHEN aur.roleId IS NOT NULL THEN ' checked = "checked" ' ELSE '' END
|
|
+ '> <label class = "rights" for = "chk_' + CAST(ar.roleId AS VARCHAR) + '">' + ar.roleName + '</label>' [Roles]
|
|
FROM applicationRoles ar WITH(NOLOCK)
|
|
LEFT JOIN applicationUserRolesMod aur WITH(NOLOCK) ON ar.roleId = aur.roleId AND aur.[userId] = @userId
|
|
WHERE ar.roleType = @AROLETYPE
|
|
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
|
|
SELECT
|
|
--ar.role_type
|
|
'<input type = "checkbox"'
|
|
+ ' value = "' + CAST(ar.roleId AS VARCHAR) + '"'
|
|
+ ' id = "chk_' + CAST(ar.roleId AS VARCHAR) + '"'
|
|
+ ' name = "roleId"'
|
|
+ CASE WHEN aur.roleId IS NOT NULL THEN ' checked = "checked" ' ELSE '' END
|
|
+ '> <label class = "rights" for = "chk_' + CAST(ar.roleId AS VARCHAR) + '">
|
|
<a href="'+dbo.FNAGetURL()+'SwiftSystem/UserManagement/ApplicationRoleSetup/Viewrolefunction.aspx?roleId=' + cast(ar.roleId as varchar(20)) + '&roleName=' + ar.roleName + '">' + ar.roleName + '</a></label>' [Roles]
|
|
FROM applicationRoles ar WITH(NOLOCK)
|
|
LEFT JOIN applicationUserRoles aur WITH(NOLOCK) ON ar.roleId = aur.roleId AND aur.[userId] = @userId
|
|
WHERE ar.roleType = @AROLETYPE
|
|
END
|
|
END
|
|
ELSE iF @flag = 'uri'
|
|
BEGIN
|
|
DECLARE @role_list TABLE(roleId INT)
|
|
----IF EXISTS (SELECT 'X' FROM applicationUsers WITH(NOLOCK) WHERE userId = @userId AND approvedBy IS NULL AND createdBy <> @user)
|
|
----BEGIN
|
|
---- EXEC proc_errorHandler 1, 'You can not modify this record. Previous modification has not been approved yet.', @userId
|
|
---- RETURN
|
|
----END
|
|
----IF EXISTS (SELECT 'X' FROM applicationUsersMod WITH(NOLOCK) WHERE userId = @userId AND createdBy <> @user)
|
|
----BEGIN
|
|
---- EXEC proc_errorHandler 1, 'You can not modify this record. Previous Modification has not been approved yet.', @userId
|
|
---- RETURN
|
|
----END
|
|
----IF EXISTS (SELECT 'X' FROM applicationUserRolesMod WITH(NOLOCK) WHERE userId = @userId AND createdBy <> @user)
|
|
----BEGIN
|
|
---- EXEC proc_errorHandler 1, 'You can not modify this record. Previous modification has not been approved yet.', @userId
|
|
---- RETURN
|
|
----END
|
|
----IF EXISTS (SELECT 'X' FROM applicationUserFunctionsMod WITH(NOLOCK) WHERE userId = @userId AND createdBy <> @user)
|
|
----BEGIN
|
|
---- EXEC proc_errorHandler 1, 'You can not modify this record. Previous modification has not been approved yet.', @userId
|
|
---- RETURN
|
|
----END
|
|
SET @sql = '
|
|
SELECT
|
|
roleId
|
|
FROM applicationRoles ar WITH(NOLOCK)
|
|
WHERE roleId IN (' + @roleIds + ')'
|
|
INSERT @role_list
|
|
EXEC (@sql)
|
|
BEGIN TRANSACTION
|
|
DELETE FROM applicationUserRoles WHERE [userId] = @userId
|
|
|
|
INSERT applicationUserRoles(roleId, [userId], createdBy, createdDate)
|
|
SELECT roleId, @userId, @user, GETDATE() FROM @role_list
|
|
|
|
INSERT applicationUserRoles(roleId, [userId], createdBy, createdDate)
|
|
SELECT -1, @userId,@user, GETDATE()
|
|
|
|
IF @@TRANCOUNT > 0
|
|
COMMIT TRANSACTION
|
|
EXEC proc_errorHandler 0, 'Role successfully assigned.', @userId
|
|
|
|
END
|
|
|
|
ELSE iF @flag = 'reject' AND @userId IS NOT NULL AND @roleIds IS NOT NULL
|
|
BEGIN
|
|
IF NOT EXISTS(SELECT 'X' FROM applicationUserRolesMod WITH(NOLOCK) WHERE userId = @userId)
|
|
BEGIN
|
|
EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @userId
|
|
RETURN
|
|
END
|
|
|
|
|
|
DELETE FROM applicationUserRolesMod WHERE userId = @userId
|
|
EXEC proc_errorHandler 0, 'User function successfully rejected.', @userId
|
|
|
|
END
|
|
|
|
ELSE iF @flag = 'approve' AND @userId IS NOT NULL AND @roleIds IS NOT NULL
|
|
BEGIN
|
|
IF NOT EXISTS(SELECT 'X' FROM applicationUserRolesMod WITH(NOLOCK) WHERE userId = @userId)
|
|
BEGIN
|
|
EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @userId
|
|
RETURN
|
|
END
|
|
|
|
SELECT
|
|
@newValue = ISNULL(@newValue + ',', '') + CAST(roleId AS VARCHAR(50))
|
|
FROM applicationUserRolesMod
|
|
WHERE userId = @userId
|
|
|
|
EXEC [dbo].proc_GetColumnToRow 'applicationUserRoles', 'userId', @userId, @oldValue OUTPUT
|
|
|
|
BEGIN TRANSACTION
|
|
DELETE FROM applicationUserRoles WHERE userId = @userId
|
|
INSERT applicationUserRoles(roleId, userId, createdBy, createdDate)
|
|
SELECT roleId, @userId, @user, GETDATE() FROM applicationUserRolesMod WHERE userId = @userId
|
|
|
|
DELETE FROM applicationUserRolesMod WHERE userId = @userId
|
|
|
|
INSERT INTO #msg(errorCode, msg, id)
|
|
EXEC proc_applicationLogs 'i', NULL, 'update', 'User Roles', @userId, @user, @oldValue, @newValue
|
|
IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
|
|
BEGIN
|
|
IF @@TRANCOUNT > 0
|
|
ROLLBACK TRANSACTION
|
|
EXEC proc_errorHandler 1, 'Could not approve the changes.', @userId
|
|
RETURN
|
|
END
|
|
|
|
IF @@TRANCOUNT > 0
|
|
COMMIT TRANSACTION
|
|
|
|
EXEC proc_errorHandler 0, 'Role successfully approved.', @roleId
|
|
|
|
--Audit data ends
|
|
|
|
|
|
END
|
|
GO
|