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

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_applicationRoleFunction] Script Date: 7/4/2019 11:35:48 AM ******/
  4. DROP PROCEDURE [dbo].[proc_applicationRoleFunction]
  5. GO
  6. /****** Object: StoredProcedure [dbo].[proc_applicationRoleFunction] Script Date: 7/4/2019 11:35:48 AM ******/
  7. SET ANSI_NULLS ON
  8. GO
  9. SET QUOTED_IDENTIFIER ON
  10. GO
  11. /*
  12. exec proc_applicationRoleFunction @flag = 'rfl', @roleId ='2', @user ='admin'
  13. */
  14. CREATE PROC [dbo].[proc_applicationRoleFunction]
  15. @flag VARCHAR(100)
  16. ,@roleId INT = NULL
  17. ,@functionId INT = NULL
  18. ,@userId INT = NULL
  19. ,@user VARCHAR(30) = NULL
  20. ,@functionIds VARCHAR(MAX)= NULL
  21. ,@roleIds VARCHAR(MAX)= NULL
  22. AS
  23. /*
  24. @flag
  25. rfl -> role function list
  26. ufl -> user function list
  27. rl -> role list
  28. rfi -> role function insert
  29. ufi -> user fuction insert
  30. uri -> user role insert
  31. */
  32. SET NOCOUNT ON;
  33. DECLARE
  34. @sql VARCHAR(MAX)
  35. ,@oldValue VARCHAR(MAX)
  36. ,@newValue VARCHAR(MAX)
  37. ,@ApproveFunctionId INT
  38. DECLARE @function_list TABLE(functionId INT)
  39. CREATE TABLE #msg(errorCode INT, msg VARCHAR(100), id VARCHAR(20))
  40. IF OBJECT_ID('tempdb..#menuList') IS NOT NULL
  41. DROP TABLE #menuList
  42. CREATE TABLE #menuList(
  43. id INT IDENTITY(1, 1)
  44. ,moduleName VARCHAR(100)
  45. ,menuGroup VARCHAR(100)
  46. ,menu VARCHAR(100)
  47. ,rights VARCHAR(MAX)
  48. ,modulePosition INT
  49. ,groupPosition INT
  50. ,menuPosition INT
  51. ,functionId VARCHAR(10)
  52. )
  53. --SELECT 'functionId', @roleId, NULL, @user
  54. SET @ApproveFunctionId = 10101030
  55. IF @flag = 'viewrole'
  56. BEGIN
  57. INSERT INTO #menuList(moduleName, menuGroup, menu, rights, modulePosition, groupPosition, menuPosition, functionId)
  58. SELECT DISTINCT
  59. --sdv.detailTitle
  60. CASE am.Module
  61. WHEN '10' THEN 'System'
  62. WHEN '20' THEN 'Remittance'
  63. WHEN '30' THEN 'International Operation'
  64. ELSE '100'
  65. END moduleName
  66. ,menuGroup
  67. , menuName
  68. ,dbo.FNAGetFunctionList(am.functionId, @roleId, NULL,@user, 10101030,'Y') [Rights]
  69. ,CASE am.Module
  70. WHEN '10' THEN 10
  71. WHEN '20' THEN 20
  72. WHEN '30' THEN 30
  73. ELSE '100'
  74. END [modulePostion]
  75. ,am.groupPosition
  76. ,am.position
  77. ,am.functionId
  78. from applicationFunctions AF
  79. INNER JOIN applicationMenus AM ON AM.functionId=AF.parentFunctionId
  80. --INNER JOIN staticDataValue sdv ON am.module = sdv.valueId
  81. INNER JOIN applicationROLEFunctions ARF ON ARF.functionId=AF.functionId AND ARF.roleId = @roleId
  82. UPDATE #menuList SET
  83. moduleName = CASE WHEN moduleName = ISNULL((SELECT TOP 1 moduleName FROM #menuList WHERE id = ml.id - 1), '') THEN NULL ELSE '<b>' + moduleName + '</b>' END
  84. ,menuGroup = CASE
  85. WHEN (
  86. menuGroup = ISNULL((SELECT TOP 1 menuGroup FROM #menuList WHERE id = ml.id - 1), '') AND
  87. moduleName = ISNULL((SELECT TOP 1 moduleName FROM #menuList WHERE id = ml.id - 1), '')
  88. ) THEN NULL
  89. ELSE [menuGroup]
  90. END
  91. FROM #menuList ml
  92. SELECT
  93. '<span class="moduleGroupReport">' + moduleName + '</span>' [Module]
  94. ,'<span class="menuReport">' + menuGroup + '</span>' [Group]
  95. ,'<span class="subMenuReport">' + menu + '</span>' [Menu]
  96. ,'<span class="rights">' + rights + '</span>' [Rights]
  97. FROM #menuList l
  98. --LEFT JOIN staticDataValue S ON L.moduleName = '<b>' + CAST(S.valueId AS VARCHAR) + '</b>'
  99. --ORDER BY modulePosition ASC, groupPosition ASC, menuPosition ASC
  100. END
  101. IF @flag IN('ufl', 'rfl')
  102. BEGIN
  103. DECLARE @roleType AS VARCHAR(1)
  104. IF @roleId IS NULL
  105. SELECT @roleId=roleId from applicationUserRoles where userId=@userId AND roleId<>'-1'
  106. SELECT @roleType =roleType FROM applicationRoles where roleId=@roleId
  107. IF @roleType='A'
  108. BEGIN
  109. INSERT INTO #menuList(moduleName, menuGroup, menu, rights, modulePosition, groupPosition, menuPosition, functionId)
  110. SELECT
  111. --sdv.detailTitle [Module]
  112. CASE am.Module
  113. WHEN '10' THEN 'System'
  114. WHEN '20' THEN 'Remittance'
  115. WHEN '30' THEN 'International Operation'
  116. WHEN '40' THEN 'Agent Operation'
  117. WHEN '50' THEN 'Money Exchange'
  118. ELSE '100'
  119. END moduleName
  120. ,AgentMenuGroup
  121. ,menuName
  122. ,CASE @flag
  123. WHEN 'rfl' THEN dbo.FNAGetFunctionList(functionId, @roleId, NULL, @user, 10101030,NULL)
  124. WHEN 'ufl' THEN dbo.FNAGetFunctionList(functionId, NULL, @userId, @user, 10101130,NULL)
  125. ELSE ''
  126. END [Rights]
  127. ,CASE am.Module
  128. WHEN '10' THEN 10
  129. WHEN '20' THEN 20
  130. WHEN '30' THEN 30
  131. WHEN '50' THEN 50
  132. ELSE 100
  133. END [modulePostion]
  134. ,am.groupPosition
  135. ,am.position
  136. ,am.functionId
  137. FROM applicationMenus am WITH(NOLOCK)
  138. INNER JOIN staticDataValue sdv ON am.module = sdv.valueId
  139. WHERE ISNULL(am.isActive, 'Y') = 'Y'
  140. AND ISNULL(AgentMenuGroup,'') <> ''
  141. ORDER BY
  142. am.Module
  143. ,am.groupPosition ASC
  144. ,am.position ASC
  145. END
  146. IF @roleType='H'
  147. BEGIN
  148. INSERT INTO #menuList(moduleName, menuGroup, menu, rights, modulePosition, groupPosition, menuPosition, functionId)
  149. SELECT
  150. CASE am.Module
  151. WHEN '10' THEN 'System'
  152. WHEN '20' THEN 'Remittance'
  153. WHEN '30' THEN 'International Operation'
  154. WHEN '40' THEN 'Agent Operation'
  155. ELSE '100'
  156. END moduleName
  157. ,menuGroup
  158. ,menuName
  159. ,CASE @flag
  160. WHEN 'rfl' THEN dbo.FNAGetFunctionList(functionId, @roleId, NULL, @user, 10101030,NULL)
  161. WHEN 'ufl' THEN dbo.FNAGetFunctionList(functionId, NULL, @userId, @user, 10101130,NULL)
  162. ELSE ''
  163. END [Rights]
  164. ,CASE am.Module
  165. WHEN '10' THEN 10
  166. WHEN '20' THEN 20
  167. WHEN '30' THEN 30
  168. WHEN '50' THEN 50
  169. ELSE 100
  170. END [modulePostion]
  171. ,am.groupPosition
  172. ,am.position
  173. ,am.functionId
  174. FROM applicationMenus am WITH(NOLOCK)
  175. INNER JOIN staticDataValue sdv ON am.module = sdv.valueId
  176. WHERE ISNULL(am.isActive, 'Y') = 'Y'
  177. AND ISNULL(AgentMenuGroup,'') = ''
  178. ORDER BY
  179. am.Module
  180. ,AM.menuGroup
  181. ,am.groupPosition ASC
  182. ,am.position ASC
  183. END
  184. UPDATE #menuList SET
  185. moduleName = CASE WHEN moduleName = ISNULL((SELECT TOP 1 moduleName FROM #menuList WHERE id = ml.id - 1), '') THEN NULL ELSE '<b>' + moduleName + '</b>' END
  186. ,menuGroup = CASE
  187. WHEN (
  188. menuGroup = ISNULL((SELECT TOP 1 menuGroup FROM #menuList WHERE id = ml.id - 1), '') AND
  189. moduleName = ISNULL((SELECT TOP 1 moduleName FROM #menuList WHERE id = ml.id - 1), '')
  190. ) THEN NULL
  191. ELSE [menuGroup]
  192. END
  193. FROM #menuList ml
  194. SELECT
  195. '<span class="moduleGroupReport" onclick = "SelectFunctions(this,''' + LEFT(functionId, 2) + ''');">' + moduleName + '</span>' [Module]
  196. ,'<span class="menuReport" onclick = "SelectFunctions(this,''' + LEFT(functionId, 4) + ''');">' + menuGroup + '</span>' [Group]
  197. ,'<span class="subMenuReport" onclick = "SelectFunctions(this,''' + LEFT(functionId, 6) + ''');">' + menu + '</span>' [Menu]
  198. ,'<span class="rights">' + rights + '</span>' [Rights]
  199. FROM #menuList L
  200. END
  201. ELSE iF @flag = 'rfi'
  202. BEGIN
  203. --IF EXISTS (SELECT 'X' FROM applicationRoleFunctionsMod WITH(NOLOCK) WHERE roleId = @roleId AND createdBy <> @user)
  204. --BEGIN
  205. -- EXEC proc_errorHandler 1, 'You can not modify this record. Previous modification has not been approved yet.', @userId
  206. -- RETURN
  207. --END
  208. --select @roleId
  209. SET @sql = '
  210. SELECT
  211. functionId
  212. FROM applicationFunctions af WITH(NOLOCK)
  213. WHERE functionId IN (' + @functionIds + ')'
  214. INSERT @function_list
  215. EXEC (@sql)
  216. BEGIN TRANSACTION
  217. DELETE FROM applicationRoleFunctions WHERE roleId = @roleId
  218. INSERT applicationRoleFunctions(functionId, roleId, createdBy, createdDate)
  219. SELECT functionId, @roleId, @user, GETDATE() FROM @function_list
  220. INSERT applicationRoleFunctions(functionId, roleId, createdBy, createdDate)
  221. SELECT -1, @roleId, @user, GETDATE()
  222. IF @@TRANCOUNT > 0
  223. COMMIT TRANSACTION
  224. EXEC proc_errorHandler 0, 'Role function successfully assigned.', @roleId
  225. END
  226. ELSE iF @flag = 'reject' AND @roleId IS NOT NULL
  227. BEGIN
  228. IF NOT EXISTS(SELECT 'X' FROM applicationRoleFunctionsMod WITH(NOLOCK) WHERE roleId = @roleId)
  229. BEGIN
  230. EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @roleId
  231. RETURN
  232. END
  233. DELETE FROM applicationRoleFunctionsMod WHERE roleId = @roleId
  234. EXEC proc_errorHandler 0, 'Role function successfully rejected.', @roleId
  235. --Audit data ends
  236. END
  237. ELSE iF @flag = 'approve' AND @roleId IS NOT NULL
  238. BEGIN
  239. IF NOT EXISTS(SELECT 'X' FROM applicationRoleFunctionsMod WITH(NOLOCK) WHERE roleId = @roleId)
  240. BEGIN
  241. EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @roleId
  242. RETURN
  243. END
  244. DECLARE @roleName VARCHAR(50)
  245. SELECT TOP 1
  246. @roleName = ar.roleName
  247. FROM applicationRoles ar WITH(NOLOCK)
  248. WHERE ar.roleId = @roleId
  249. SELECT
  250. @newValue = ISNULL(@newValue + ',', '') + CAST(functionId AS VARCHAR(50))
  251. FROM applicationRoleFunctionsMod
  252. WHERE roleId = @roleId
  253. EXEC [dbo].proc_GetColumnToRow 'applicationRoleFunctions', 'roleId', @roleId, @oldValue OUTPUT
  254. BEGIN TRANSACTION
  255. DELETE FROM applicationRoleFunctions WHERE roleId = @roleId
  256. INSERT applicationRoleFunctions(functionId, roleId, createdBy, createdDate)
  257. SELECT functionId, @roleId, @user, GETDATE() FROM applicationRoleFunctionsMod WHERE roleId = @roleId
  258. DELETE FROM applicationRoleFunctionsMod WHERE roleId = @roleId
  259. INSERT INTO #msg(errorCode, msg, id)
  260. EXEC proc_applicationLogs 'i', NULL, 'update', 'Role Functions', @roleName, @user, @oldValue, @newValue
  261. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  262. BEGIN
  263. IF @@TRANCOUNT > 0
  264. ROLLBACK TRANSACTION
  265. EXEC proc_errorHandler 1, 'Could not approve the changes.', @roleId
  266. RETURN
  267. END
  268. IF @@TRANCOUNT > 0
  269. COMMIT TRANSACTION
  270. EXEC proc_errorHandler 0, 'Function successfully assigned.', @roleId
  271. --Audit data ends
  272. END
  273. ELSE iF @flag = 'ufi'
  274. BEGIN
  275. IF EXISTS (SELECT 'X' FROM applicationUsers WITH(NOLOCK) WHERE userId = @userId AND approvedBy IS NULL AND createdBy <> @user)
  276. BEGIN
  277. EXEC proc_errorHandler 1, 'You can not modify this record. Previous modification has not been approved yet.', @userId
  278. RETURN
  279. END
  280. IF EXISTS (SELECT 'X' FROM applicationUsersMod WITH(NOLOCK) WHERE userId = @userId AND createdBy <> @user)
  281. BEGIN
  282. EXEC proc_errorHandler 1, 'You can not modify this record. Previous Modification has not been approved yet.', @userId
  283. RETURN
  284. END
  285. IF EXISTS (SELECT 'X' FROM applicationUserRolesMod WITH(NOLOCK) WHERE userId = @userId AND createdBy <> @user)
  286. BEGIN
  287. EXEC proc_errorHandler 1, 'You can not modify this record. Previous modification has not been approved yet.', @userId
  288. RETURN
  289. END
  290. IF EXISTS (SELECT 'X' FROM applicationUserFunctionsMod WITH(NOLOCK) WHERE userId = @userId AND createdBy <> @user)
  291. BEGIN
  292. EXEC proc_errorHandler 1, 'You can not modify this record. Previous modification has not been approved yet.', @roleId
  293. RETURN
  294. END
  295. SET @sql = '
  296. SELECT
  297. functionId
  298. FROM applicationFunctions af WITH(NOLOCK)
  299. WHERE functionId IN (' + @functionIds + ')'
  300. INSERT @function_list
  301. EXEC (@sql)
  302. BEGIN TRANSACTION
  303. DELETE FROM applicationUserFunctionsMod WHERE [userId] = @userId
  304. INSERT applicationUserFunctionsMod(functionId, [userId], modType, createdBy, createdDate)
  305. SELECT functionId, @userId, 'U', @user, GETDATE() FROM @function_list
  306. INSERT applicationUserFunctionsMod(functionId, [userId], modType, createdBy, createdDate)
  307. SELECT -1, @userId, 'U', @user, GETDATE()
  308. IF @@TRANCOUNT > 0
  309. COMMIT TRANSACTION
  310. EXEC proc_errorHandler 0, 'User Function successfully assigned.', @userId
  311. END
  312. ELSE iF @flag = 'reject' AND @userId IS NOT NULL AND @functionIds IS NOT NULL
  313. BEGIN
  314. IF NOT EXISTS(SELECT 'X' FROM applicationUserFunctionsMod WITH(NOLOCK) WHERE userId = @userId)
  315. BEGIN
  316. EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @userId
  317. RETURN
  318. END
  319. DELETE FROM applicationUserFunctionsMod WHERE userId = @userId
  320. EXEC proc_errorHandler 0, 'User function successfully rejected.', @userId
  321. END
  322. ELSE iF @flag = 'approve' AND @userId IS NOT NULL AND @functionIds IS NOT NULL
  323. BEGIN
  324. IF NOT EXISTS(SELECT 'X' FROM applicationUserFunctionsMod WITH(NOLOCK) WHERE userId = @userId)
  325. BEGIN
  326. EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @userId
  327. RETURN
  328. END
  329. SELECT
  330. @newValue = ISNULL(@newValue + ',', '') + CAST(functionId AS VARCHAR(50))
  331. FROM applicationUserFunctionsMod
  332. WHERE userId = @userId
  333. EXEC [dbo].proc_GetColumnToRow 'applicationUserFunctions', 'userId', @userId, @oldValue OUTPUT
  334. BEGIN TRANSACTION
  335. DELETE FROM applicationUserFunctions WHERE userId = @userId
  336. INSERT applicationUserFunctions(functionId, userId, createdBy, createdDate)
  337. SELECT functionId, @userId, @user, GETDATE() FROM applicationUserFunctionsMod WHERE userId = @userId
  338. DELETE FROM applicationUserFunctionsMod WHERE userId = @userId
  339. INSERT INTO #msg(errorCode, msg, id)
  340. EXEC proc_applicationLogs 'i', NULL, 'update', 'User Functions', @userId, @user, @oldValue, @newValue
  341. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  342. BEGIN
  343. IF @@TRANCOUNT > 0
  344. ROLLBACK TRANSACTION
  345. EXEC proc_errorHandler 1, 'Could not approve the changes.', @userId
  346. RETURN
  347. END
  348. IF @@TRANCOUNT > 0
  349. COMMIT TRANSACTION
  350. EXEC proc_errorHandler 0, 'User Function successfully approved.', @roleId
  351. --Audit data ends
  352. END
  353. ELSE IF @flag = 'rl'
  354. BEGIN
  355. DECLARE @AROLETYPE CHAR(1)
  356. SELECT
  357. @AROLETYPE = case when ISNULL(AU.userType, mode.userType) in ('AH','AB','BH','RH','VU','A') then 'A' else 'H' end
  358. from applicationUsers AU
  359. LEFT JOIN applicationUsersMod mode ON AU.userId = mode.userId
  360. WHERE AU.userId = @userId
  361. IF EXISTS(SELECT 'X' FROM applicationUserRolesMod WITH(NOLOCK)
  362. WHERE userId = @userId AND (@user = createdBy OR 'Y' = dbo.FNAHasRight(@user,@ApproveFunctionId)))
  363. BEGIN
  364. SELECT
  365. --ar.role_type
  366. '<input type = "checkbox"'
  367. + ' value = "' + CAST(ar.roleId AS VARCHAR) + '"'
  368. + ' id = "chk_' + CAST(ar.roleId AS VARCHAR) + '"'
  369. + ' name = "roleId"'
  370. + CASE WHEN aur.roleId IS NOT NULL THEN ' checked = "checked" ' ELSE '' END
  371. + '> <label class = "rights" for = "chk_' + CAST(ar.roleId AS VARCHAR) + '">' + ar.roleName + '</label>' [Roles]
  372. FROM applicationRoles ar WITH(NOLOCK)
  373. LEFT JOIN applicationUserRolesMod aur WITH(NOLOCK) ON ar.roleId = aur.roleId AND aur.[userId] = @userId
  374. WHERE ar.roleType = @AROLETYPE
  375. END
  376. ELSE
  377. BEGIN
  378. SELECT
  379. --ar.role_type
  380. '<input type = "checkbox"'
  381. + ' value = "' + CAST(ar.roleId AS VARCHAR) + '"'
  382. + ' id = "chk_' + CAST(ar.roleId AS VARCHAR) + '"'
  383. + ' name = "roleId"'
  384. + CASE WHEN aur.roleId IS NOT NULL THEN ' checked = "checked" ' ELSE '' END
  385. + '> <label class = "rights" for = "chk_' + CAST(ar.roleId AS VARCHAR) + '">
  386. <a href="'+dbo.FNAGetURL()+'SwiftSystem/UserManagement/ApplicationRoleSetup/Viewrolefunction.aspx?roleId=' + cast(ar.roleId as varchar(20)) + '&roleName=' + ar.roleName + '">' + ar.roleName + '</a></label>' [Roles]
  387. FROM applicationRoles ar WITH(NOLOCK)
  388. LEFT JOIN applicationUserRoles aur WITH(NOLOCK) ON ar.roleId = aur.roleId AND aur.[userId] = @userId
  389. WHERE ar.roleType = @AROLETYPE
  390. END
  391. END
  392. ELSE iF @flag = 'uri'
  393. BEGIN
  394. DECLARE @role_list TABLE(roleId INT)
  395. ----IF EXISTS (SELECT 'X' FROM applicationUsers WITH(NOLOCK) WHERE userId = @userId AND approvedBy IS NULL AND createdBy <> @user)
  396. ----BEGIN
  397. ---- EXEC proc_errorHandler 1, 'You can not modify this record. Previous modification has not been approved yet.', @userId
  398. ---- RETURN
  399. ----END
  400. ----IF EXISTS (SELECT 'X' FROM applicationUsersMod WITH(NOLOCK) WHERE userId = @userId AND createdBy <> @user)
  401. ----BEGIN
  402. ---- EXEC proc_errorHandler 1, 'You can not modify this record. Previous Modification has not been approved yet.', @userId
  403. ---- RETURN
  404. ----END
  405. ----IF EXISTS (SELECT 'X' FROM applicationUserRolesMod WITH(NOLOCK) WHERE userId = @userId AND createdBy <> @user)
  406. ----BEGIN
  407. ---- EXEC proc_errorHandler 1, 'You can not modify this record. Previous modification has not been approved yet.', @userId
  408. ---- RETURN
  409. ----END
  410. ----IF EXISTS (SELECT 'X' FROM applicationUserFunctionsMod WITH(NOLOCK) WHERE userId = @userId AND createdBy <> @user)
  411. ----BEGIN
  412. ---- EXEC proc_errorHandler 1, 'You can not modify this record. Previous modification has not been approved yet.', @userId
  413. ---- RETURN
  414. ----END
  415. SET @sql = '
  416. SELECT
  417. roleId
  418. FROM applicationRoles ar WITH(NOLOCK)
  419. WHERE roleId IN (' + @roleIds + ')'
  420. INSERT @role_list
  421. EXEC (@sql)
  422. BEGIN TRANSACTION
  423. DELETE FROM applicationUserRoles WHERE [userId] = @userId
  424. INSERT applicationUserRoles(roleId, [userId], createdBy, createdDate)
  425. SELECT roleId, @userId, @user, GETDATE() FROM @role_list
  426. INSERT applicationUserRoles(roleId, [userId], createdBy, createdDate)
  427. SELECT -1, @userId,@user, GETDATE()
  428. IF @@TRANCOUNT > 0
  429. COMMIT TRANSACTION
  430. EXEC proc_errorHandler 0, 'Role successfully assigned.', @userId
  431. END
  432. ELSE iF @flag = 'reject' AND @userId IS NOT NULL AND @roleIds IS NOT NULL
  433. BEGIN
  434. IF NOT EXISTS(SELECT 'X' FROM applicationUserRolesMod WITH(NOLOCK) WHERE userId = @userId)
  435. BEGIN
  436. EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @userId
  437. RETURN
  438. END
  439. DELETE FROM applicationUserRolesMod WHERE userId = @userId
  440. EXEC proc_errorHandler 0, 'User function successfully rejected.', @userId
  441. END
  442. ELSE iF @flag = 'approve' AND @userId IS NOT NULL AND @roleIds IS NOT NULL
  443. BEGIN
  444. IF NOT EXISTS(SELECT 'X' FROM applicationUserRolesMod WITH(NOLOCK) WHERE userId = @userId)
  445. BEGIN
  446. EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @userId
  447. RETURN
  448. END
  449. SELECT
  450. @newValue = ISNULL(@newValue + ',', '') + CAST(roleId AS VARCHAR(50))
  451. FROM applicationUserRolesMod
  452. WHERE userId = @userId
  453. EXEC [dbo].proc_GetColumnToRow 'applicationUserRoles', 'userId', @userId, @oldValue OUTPUT
  454. BEGIN TRANSACTION
  455. DELETE FROM applicationUserRoles WHERE userId = @userId
  456. INSERT applicationUserRoles(roleId, userId, createdBy, createdDate)
  457. SELECT roleId, @userId, @user, GETDATE() FROM applicationUserRolesMod WHERE userId = @userId
  458. DELETE FROM applicationUserRolesMod WHERE userId = @userId
  459. INSERT INTO #msg(errorCode, msg, id)
  460. EXEC proc_applicationLogs 'i', NULL, 'update', 'User Roles', @userId, @user, @oldValue, @newValue
  461. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  462. BEGIN
  463. IF @@TRANCOUNT > 0
  464. ROLLBACK TRANSACTION
  465. EXEC proc_errorHandler 1, 'Could not approve the changes.', @userId
  466. RETURN
  467. END
  468. IF @@TRANCOUNT > 0
  469. COMMIT TRANSACTION
  470. EXEC proc_errorHandler 0, 'Role successfully approved.', @roleId
  471. --Audit data ends
  472. END
  473. GO