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.

433 lines
29 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_applicationUsersMigration] Script Date: 9/27/2019 1:30:14 PM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. /*
  9. exec [proc_applicationUsers] 'i', NULL, NULL, 'admin', 'admin', @isActive = 'Y',@pwdChangeDays = 20,@pwdChangeWarningDays = 10
  10. exec [proc_applicationUsers] 'l', NULL, NULL, 'admin', 'admin'
  11. exec [proc_applicationUsers] @flag = 'lfg', @userName ='admin', @pwd = 'admin'
  12. */
  13. CREATE proc [dbo].[proc_applicationUsersMigration]
  14. @flag VARCHAR(50) = NULL
  15. ,@userId INT = NULL
  16. ,@user VARCHAR(30) = NULL
  17. ,@userName VARCHAR(30) = NULL
  18. ,@agentName VARCHAR(100) = NULL
  19. ,@agentCode VARCHAR(20) = NULL
  20. ,@firstName VARCHAR(30) = NULL
  21. ,@middleName VARCHAR(30) = NULL
  22. ,@lastName VARCHAR(30) = NULL
  23. ,@salutation VARCHAR(10) = NULL
  24. ,@gender VARCHAR(10) = NULL
  25. ,@telephoneNo VARCHAR(15) = NULL
  26. ,@address VARCHAR(50) = NULL
  27. ,@city VARCHAR(30) = NULL
  28. ,@countryId INT = NULL
  29. ,@state INT = NULL
  30. ,@district INT = NULL
  31. ,@zip VARCHAR(10) = NULL
  32. ,@mobileNo VARCHAR(15) = NULL
  33. ,@email VARCHAR(255) = NULL
  34. ,@pwd VARCHAR(255) = NULL
  35. ,@isActive CHAR(1) = NULL
  36. ,@isLocked CHAR(1) = NULL
  37. ,@agentId INT = NULL
  38. ,@sessionTimeOutPeriod INT = NULL
  39. ,@tranApproveLimit MONEY = NULL
  40. ,@agentCrLimitAmt MONEY = NULL
  41. ,@loginTime VARCHAR(10) = NULL
  42. ,@logoutTime VARCHAR(10) = NULL
  43. ,@userAccessLevel CHAR(1) = NULL
  44. ,@perDayTranLimit INT = NULL
  45. ,@fromSendTrnTime TIME = NULL
  46. ,@toSendTrnTime TIME = NULL
  47. ,@fromPayTrnTime TIME = NULL
  48. ,@toPayTrnTime TIME = NULL
  49. ,@fromRptViewTime TIME = NULL
  50. ,@toRptViewTime TIME = NULL
  51. ,@isDeleted CHAR(1) = NULL
  52. ,@lastLoginTs DATETIME = NULL
  53. ,@pwdChangeDays INT = NULL
  54. ,@pwdChangeWarningDays INT = NULL
  55. ,@lastPwdChangedOn DATETIME = NULL
  56. ,@forceChangePwd CHAR(1) = NULL
  57. ,@oldPwd VARCHAR(255) = NULL
  58. ,@name VARCHAR(50) = NULL
  59. ,@file VARCHAR(500) = NULL
  60. ,@changesApprovalQueueRowId BIGINT = NULL
  61. ,@haschanged CHAR(1) = NULL
  62. ,@sortBy VARCHAR(50) = NULL
  63. ,@sortOrder VARCHAR(5) = NULL
  64. ,@pageSize INT = NULL
  65. ,@pageNumber INT = NULL
  66. ,@UserInfoDetail VARCHAR(MAX) = NULL
  67. ,@maxReportViewDays INT = NULL
  68. ,@lockReason VARCHAR(500) = NULL
  69. ,@employeeId VARCHAR(10) = NULL
  70. ,@userType VARCHAR(20) = NULL
  71. ,@createdBy VARCHAR(50) = NULL
  72. ,@createdDate DATETIME = NULL
  73. ,@approvedBy VARCHAR(50) = NULL
  74. ,@approvedDate DATETIME = NULL
  75. AS
  76. /*
  77. @flag
  78. s = select all (with dynamic filters)
  79. i = insert
  80. u = update
  81. a = select by role id
  82. d = delete by role id
  83. l = login
  84. r = reset password --@custodian_id, @user, @pwd
  85. cp = change password --@user, @pwd, @oldPwd
  86. loc = Lock
  87. cu = check user
  88. lo = Log Out
  89. [custodian]
  90. */
  91. SET NOCOUNT ON;
  92. SET XACT_ABORT ON;
  93. BEGIN TRY
  94. CREATE TABLE #msg(errorCode INT, msg VARCHAR(100), id INT)
  95. DECLARE
  96. @sql VARCHAR(MAX)
  97. ,@oldValue VARCHAR(MAX)
  98. ,@newValue VARCHAR(MAX)
  99. ,@tableName VARCHAR(50)
  100. ,@logIdentifier VARCHAR(100)
  101. ,@logParamMain VARCHAR(100)
  102. ,@tableAlias VARCHAR(100)
  103. ,@modType VARCHAR(6)
  104. ,@module INT
  105. ,@select_field_list VARCHAR(MAX)
  106. ,@extra_field_list VARCHAR(MAX)
  107. ,@table VARCHAR(MAX)
  108. ,@sql_filter VARCHAR(MAX)
  109. ,@ApprovedFunctionId INT
  110. ,@msg VARCHAR(200)
  111. ,@parentAgentId int
  112. SELECT
  113. @logIdentifier = 'userId'
  114. ,@logParamMain = 'applicationUsers'
  115. ,@tableAlias = 'User Setup'
  116. ,@module = 10
  117. ,@ApprovedFunctionId = 10101130
  118. IF @flag = 'i'
  119. BEGIN
  120. IF NOT EXISTS(SELECT 'X' FROM agentMaster WITH(NOLOCK) WHERE agentId = @agentId)
  121. BEGIN
  122. SET @msg = 'Branch not exists'
  123. EXEC proc_errorHandler 1, @msg, @employeeId
  124. RETURN
  125. END
  126. IF EXISTS (SELECT 'X' FROM applicationUsers WITH(NOLOCK) WHERE [userName] = @userName )
  127. BEGIN
  128. SET @msg = 'User Name ' + @userName + ' already exist'
  129. EXEC proc_errorHandler 1, @msg, @employeeId
  130. RETURN
  131. END
  132. BEGIN TRANSACTION
  133. INSERT INTO applicationUsers (
  134. [userName]
  135. ,agentCode
  136. ,firstName
  137. ,middleName
  138. ,lastName
  139. ,salutation
  140. ,gender
  141. ,countryId
  142. ,state
  143. ,district
  144. ,zip
  145. ,city
  146. ,[address]
  147. ,telephoneNo
  148. ,mobileNo
  149. ,email
  150. ,pwd
  151. ,agentId
  152. ,sessionTimeOutPeriod
  153. ,tranApproveLimit
  154. ,agentCrLimitAmt
  155. ,loginTime
  156. ,logoutTime
  157. ,userAccessLevel
  158. ,perDayTranLimit
  159. ,fromSendTrnTime
  160. ,toSendTrnTime
  161. ,fromPayTrnTime
  162. ,toPayTrnTime
  163. ,fromRptViewTime
  164. ,toRptViewTime
  165. ,isDeleted
  166. ,lastLoginTs
  167. ,pwdChangeDays
  168. ,pwdChangeWarningDays
  169. ,lastPwdChangedOn
  170. ,forceChangePwd
  171. ,maxReportViewDays
  172. ,createdBy
  173. ,createdDate
  174. ,approvedBy
  175. ,approvedDate
  176. ,employeeId
  177. ,userType
  178. ,isActive
  179. )
  180. SELECT
  181. @userName
  182. ,@agentCode
  183. ,@firstName
  184. ,@middleName
  185. ,@lastName
  186. ,@salutation
  187. ,@gender
  188. ,@countryId
  189. ,@state
  190. ,@district
  191. ,@zip
  192. ,@city
  193. ,@address
  194. ,@telephoneNo
  195. ,@mobileNo
  196. ,@email
  197. ,dbo.FNAEncryptString(@pwd)
  198. ,@agentId
  199. ,@sessionTimeOutPeriod
  200. ,@tranApproveLimit
  201. ,@agentCrLimitAmt
  202. ,@loginTime
  203. ,@logoutTime
  204. ,@userAccessLevel
  205. ,@perDayTranLimit
  206. ,@fromSendTrnTime
  207. ,@toSendTrnTime
  208. ,@fromPayTrnTime
  209. ,@toPayTrnTime
  210. ,@fromRptViewTime
  211. ,@toRptViewTime
  212. ,@isDeleted
  213. ,@lastLoginTs
  214. ,@pwdChangeDays
  215. ,@pwdChangeWarningDays
  216. ,@lastPwdChangedOn
  217. ,'Y'
  218. ,@maxReportViewDays
  219. ,'bivash'
  220. ,GETDATE()
  221. ,'raju'
  222. ,GETDATE()
  223. ,@employeeId
  224. ,@userType
  225. ,'Y'
  226. SET @userId = SCOPE_IDENTITY()
  227. --Keep Password History--------------------------------------
  228. INSERT INTO passwordHistory(
  229. userName
  230. ,pwd
  231. ,createdDate
  232. )
  233. SELECT
  234. @userName
  235. ,dbo.FNAEncryptString(@pwd)
  236. ,GETDATE()
  237. --------------------------------------------------------------
  238. COMMIT TRANSACTION
  239. SELECT 0 errorCode, 'Record has been added successfully with User Code ' + CAST(@employeeId AS VARCHAR) mes, @userId id
  240. END
  241. ELSE IF @flag = 'approve'
  242. BEGIN
  243. DECLARE
  244. @baseChanges CHAR(1) = 'N'
  245. ,@roleChanges CHAR(1) = 'N'
  246. ,@functionChanges CHAR(1) = 'N'
  247. IF EXISTS(SELECT 'X' FROM applicationUsers WITH(NOLOCK) WHERE userId = @userId AND approvedBy IS NULL)
  248. OR
  249. EXISTS(SELECT 'X' FROM applicationUsersMod WITH(NOLOCK) WHERE userId = @userId)
  250. BEGIN
  251. SET @baseChanges = 'Y'
  252. END
  253. IF EXISTS(SELECT 'X' FROM applicationUserRolesMod WITH(NOLOCK) WHERE userId = @userId)
  254. BEGIN
  255. SET @roleChanges = 'Y'
  256. END
  257. IF EXISTS(SELECT 'X' FROM applicationUserFunctionsMod WITH(NOLOCK) WHERE userId = @userId)
  258. BEGIN
  259. SET @functionChanges = 'Y'
  260. END
  261. IF @baseChanges <> 'Y' AND @roleChanges <> 'Y' AND @functionChanges <> 'Y'
  262. BEGIN
  263. EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @userId
  264. RETURN
  265. END
  266. BEGIN TRANSACTION
  267. IF @baseChanges = 'Y'
  268. BEGIN
  269. IF EXISTS (SELECT 'X' FROM applicationUsers WHERE approvedBy IS NULL AND userId = @userId)
  270. SET @modType = 'I'
  271. ELSE
  272. SELECT @modType = modType FROM applicationUsersMod WHERE userId = @userId
  273. IF @modType = 'I'
  274. BEGIN --New record
  275. UPDATE applicationUsers SET
  276. isActive = 'Y'
  277. ,approvedBy = @user
  278. ,approvedDate= GETDATE()
  279. WHERE userId = @userId
  280. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @userId, @newValue OUTPUT
  281. END
  282. ELSE IF @modType = 'U'
  283. BEGIN
  284. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @userId, @oldValue OUTPUT
  285. UPDATE main SET
  286. main.firstName = mode.firstName
  287. ,main.middleName = mode.middleName
  288. ,main.lastName = mode.lastName
  289. ,main.salutation = mode.salutation
  290. ,main.gender = mode.gender
  291. ,main.telephoneNo = mode.telephoneNo
  292. ,main.mobileNo = mode.mobileNo
  293. ,main.state = mode.state
  294. ,main.district = mode.district
  295. ,main.zip = mode.zip
  296. ,main.[address] = mode.[address]
  297. ,main.city = mode.city
  298. ,main.countryId = mode.countryId
  299. ,main.email = mode.email
  300. ,main.agentId = mode.agentId
  301. ,main.sessionTimeOutPeriod = mode.sessionTimeOutPeriod
  302. ,main.tranApproveLimit = mode.tranApproveLimit
  303. ,main.agentCrLimitAmt = mode.agentCrLimitAmt
  304. ,main.loginTime = mode.loginTime
  305. ,main.logoutTime = mode.logoutTime
  306. ,main.userAccessLevel = mode.userAccessLevel
  307. ,main.perDayTranLimit = mode.perDayTranLimit
  308. ,main.fromSendTrnTime = mode.fromSendTrnTime
  309. ,main.toSendTrnTime = mode.toSendTrnTime
  310. ,main.fromPayTrnTime = mode.fromPayTrnTime
  311. ,main.toPayTrnTime = mode.toPayTrnTime
  312. ,main.fromRptViewTime = mode.fromRptViewTime
  313. ,main.toRptViewTime = mode.toRptViewTime
  314. ,main.pwdChangeDays = mode.pwdChangeDays
  315. ,main.pwdChangeWarningDays = mode.pwdChangeWarningDays
  316. ,main.maxReportViewDays = mode.maxReportViewDays
  317. ,main.userType = mode.userType
  318. ,main.modifiedDate = GETDATE()
  319. ,main.modifiedBy = @user
  320. FROM applicationUsers main
  321. INNER JOIN applicationUsersMod mode ON mode.userId= main.userId
  322. WHERE mode.userId = @userId
  323. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @userId, @newValue OUTPUT
  324. END
  325. ELSE IF @modType = 'D'
  326. BEGIN
  327. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @userId, @oldValue OUTPUT
  328. UPDATE applicationUsers SET
  329. isDeleted = 'Y'
  330. ,isActive = 'N'
  331. ,modifiedDate = GETDATE()
  332. ,modifiedBy = @user
  333. WHERE userId = @userId
  334. END
  335. DELETE FROM applicationUsersMod WHERE userId = @userId
  336. INSERT INTO #msg(errorCode, msg, id)
  337. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @userId, @user, @oldValue, @newValue, @module
  338. END
  339. IF @roleChanges = 'Y'
  340. BEGIN
  341. SELECT
  342. @newValue = ISNULL(@newValue + ',', '') + CAST(roleId AS VARCHAR(50))
  343. FROM applicationUserRolesMod
  344. WHERE userId = @userId
  345. EXEC [dbo].proc_GetColumnToRow 'applicationUserRoles', 'userId', @userId, @oldValue OUTPUT
  346. DELETE FROM applicationUserRoles WHERE userId = @userId
  347. INSERT applicationUserRoles(roleId, userId, createdBy, createdDate)
  348. SELECT roleId, @userId, @user, GETDATE() FROM applicationUserRolesMod WHERE userId = @userId
  349. DELETE FROM applicationUserRolesMod WHERE userId = @userId
  350. INSERT INTO #msg(errorCode, msg, id)
  351. EXEC proc_applicationLogs 'i', NULL, 'Update', 'User Roles', @userId, @user, @oldValue, @newValue, @module
  352. END
  353. IF @functionChanges = 'Y'
  354. BEGIN
  355. SELECT
  356. @newValue = ISNULL(@newValue + ',', '') + CAST(functionId AS VARCHAR(50))
  357. FROM applicationUserFunctionsMod
  358. WHERE userId = @userId
  359. EXEC [dbo].proc_GetColumnToRow 'applicationUserFunctions', 'userId', @userId, @oldValue OUTPUT
  360. DELETE FROM applicationUserFunctions WHERE userId = @userId
  361. INSERT applicationUserFunctions(functionId, userId, createdBy, createdDate)
  362. SELECT functionId, @userId, @user, GETDATE() FROM applicationUserFunctionsMod WHERE userId = @userId
  363. DELETE FROM applicationUserFunctionsMod WHERE userId = @userId
  364. INSERT INTO #msg(errorCode, msg, id)
  365. EXEC proc_applicationLogs 'i', NULL, 'Update', 'User Functions', @userId, @user, @oldValue, @newValue, @module
  366. END
  367. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  368. BEGIN
  369. IF @@TRANCOUNT > 0
  370. ROLLBACK TRANSACTION
  371. EXEC proc_errorHandler 1, 'Could not approve the changes.', @userId
  372. RETURN
  373. END
  374. IF @@TRANCOUNT > 0
  375. COMMIT TRANSACTION
  376. EXEC proc_errorHandler 0, 'Changes approved successfully.', @userId
  377. END
  378. END TRY
  379. BEGIN CATCH
  380. IF @@TRANCOUNT > 0
  381. ROLLBACK TRANSACTION
  382. SELECT 1 errorCode, ERROR_MESSAGE() mes, null id
  383. END CATCH
  384. GO