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.

540 lines
22 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_agentUsers] Script Date: 7/4/2019 11:35:48 AM ******/
  4. DROP PROCEDURE [dbo].[proc_agentUsers]
  5. GO
  6. /****** Object: StoredProcedure [dbo].[proc_agentUsers] Script Date: 7/4/2019 11:35:48 AM ******/
  7. SET ANSI_NULLS ON
  8. GO
  9. SET QUOTED_IDENTIFIER ON
  10. GO
  11. CREATE PROC [dbo].[proc_agentUsers]
  12. @flag VARCHAR(50) = NULL ,
  13. @userId INT = NULL ,
  14. @user VARCHAR(30) = NULL ,
  15. @userName VARCHAR(30) = NULL ,
  16. @agentName VARCHAR(100) = NULL ,
  17. @agentCode VARCHAR(20) = NULL ,
  18. @firstName VARCHAR(30) = NULL ,
  19. @middleName VARCHAR(30) = NULL ,
  20. @lastName VARCHAR(30) = NULL ,
  21. @salutation VARCHAR(10) = NULL ,
  22. @gender VARCHAR(10) = NULL ,
  23. @telephoneNo VARCHAR(15) = NULL ,
  24. @address VARCHAR(50) = NULL ,
  25. @city VARCHAR(30) = NULL ,
  26. @countryId INT = NULL ,
  27. @countryName VARCHAR(100) = NULL ,
  28. @state INT = NULL ,
  29. @district INT = NULL ,
  30. @zip VARCHAR(10) = NULL ,
  31. @mobileNo VARCHAR(15) = NULL ,
  32. @email VARCHAR(255) = NULL ,
  33. @pwd VARCHAR(255) = NULL ,
  34. @isActive CHAR(1) = NULL ,
  35. @isLocked CHAR(1) = NULL ,
  36. @agentId INT = NULL ,
  37. @sessionTimeOutPeriod INT = NULL ,
  38. @tranApproveLimit MONEY = NULL ,
  39. @agentCrLimitAmt MONEY = NULL ,
  40. @loginTime VARCHAR(10) = NULL ,
  41. @logoutTime VARCHAR(10) = NULL ,
  42. @userAccessLevel CHAR(1) = NULL ,
  43. @perDayTranLimit INT = NULL ,
  44. @fromSendTrnTime TIME = NULL ,
  45. @toSendTrnTime TIME = NULL ,
  46. @fromPayTrnTime TIME = NULL ,
  47. @toPayTrnTime TIME = NULL ,
  48. @fromRptViewTime TIME = NULL ,
  49. @toRptViewTime TIME = NULL ,
  50. @isDeleted CHAR(1) = NULL ,
  51. @approvedDate DATETIME = 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(2) = NULL ,
  71. @txnPwd VARCHAR(255) = NULL
  72. AS
  73. SET NOCOUNT ON;
  74. SET XACT_ABORT ON;
  75. BEGIN TRY
  76. CREATE TABLE #msg
  77. (
  78. errorCode INT ,
  79. msg VARCHAR(100) ,
  80. id INT
  81. );
  82. DECLARE @sql VARCHAR(MAX) ,
  83. @oldValue VARCHAR(MAX) ,
  84. @newValue VARCHAR(MAX) ,
  85. @tableName VARCHAR(50) ,
  86. @logIdentifier VARCHAR(100) ,
  87. @logParamMain VARCHAR(100) ,
  88. @tableAlias VARCHAR(100) ,
  89. @modType VARCHAR(6) ,
  90. @module INT ,
  91. @select_field_list VARCHAR(MAX) ,
  92. @extra_field_list VARCHAR(MAX) ,
  93. @table VARCHAR(MAX) ,
  94. @sql_filter VARCHAR(MAX) ,
  95. @ApprovedFunctionId INT ,
  96. @msg VARCHAR(200) ,
  97. @parentAgentId INT;
  98. SELECT @logIdentifier = 'userId' ,
  99. @logParamMain = 'applicationUsers' ,
  100. @tableAlias = 'User Setup' ,
  101. @module = 10 ,
  102. @ApprovedFunctionId = 20221030;
  103. IF @userId IS NULL
  104. SELECT @userId = userId
  105. FROM applicationUsers WITH ( NOLOCK )
  106. WHERE userName = @user;
  107. IF @parentAgentId IS NULL
  108. SELECT @parentAgentId = parentId
  109. FROM agentMaster WITH ( NOLOCK )
  110. WHERE agentId = @agentId;
  111. IF @flag = 's'
  112. BEGIN
  113. IF @sortBy IS NULL
  114. SET @sortBy = 'userId';
  115. IF @sortOrder IS NULL
  116. SET @sortOrder = 'ASC';
  117. SET @table = '(
  118. SELECT
  119. U.userId
  120. ,U.UserName
  121. ,A.agentName AgentName
  122. ,A.agentId
  123. ,U.isDeleted
  124. ,U.agentCode
  125. ,firstName+'' ''+ISNULL(middleName,'''')+'' ''+ISNULL(lastName,'''') name
  126. ,U.address
  127. ,U.lastLoginTs
  128. ,U.lastPwdChangedOn
  129. ,U.createdDate
  130. ,U.createdBy
  131. ,lockStatus = CASE WHEN ISNULL(isLocked,''N'') = ''Y'' THEN ''Locked'' ELSE ''Unlock'' END
  132. FROM applicationUsers U WITH(NOLOCK)
  133. INNER JOIN agentmaster A WITH(NOLOCK) ON U.agentid = A.agentId
  134. WHERE userType =''A'' AND U.agentId = '''+CAST(@agentId AS VARCHAR)+'''
  135. ) x';
  136. SET @sql_filter = '';
  137. IF @userName IS NOT NULL
  138. SET @sql_filter = @sql_filter + ' AND username='''
  139. + @userName + '''';
  140. IF @firstName IS NOT NULL
  141. SET @sql_filter = @sql_filter + ' AND name LIKE '''
  142. + @firstName + '%''';
  143. IF @isActive IS NOT NULL
  144. SET @sql_filter += ' AND lockStatus=''' + @isActive
  145. + '''';
  146. IF @isDeleted IS NOT NULL
  147. SET @sql_filter += ' AND isDeleted = ''' + @isDeleted
  148. + '''';
  149. ELSE
  150. SET @sql_filter += ' AND ISNULL(isDeleted,''N'')<> ''Y''';
  151. SET @select_field_list = '
  152. userId
  153. ,userName
  154. ,agentId
  155. ,isDeleted
  156. ,AgentName
  157. ,agentCode
  158. ,name
  159. ,address
  160. ,lastLoginTs
  161. ,lastPwdChangedOn
  162. ,lockStatus
  163. ,createdDate
  164. ,createdBy
  165. ';
  166. EXEC dbo.proc_paging @table, @sql_filter,
  167. @select_field_list, @extra_field_list, @sortBy,
  168. @sortOrder, @pageSize, @pageNumber;
  169. END;
  170. IF @flag = 'i'
  171. BEGIN
  172. IF NOT EXISTS ( SELECT 'X' FROM agentMaster WITH ( NOLOCK )WHERE agentId = @agentId AND ISNULL(isActive, 'N') = 'Y' )
  173. BEGIN
  174. EXEC proc_errorHandler 1,
  175. 'Corresponding Agent has not been approved yet',@employeeId;
  176. RETURN;
  177. END;
  178. IF EXISTS ( SELECT 'X' FROM applicationUsers (NOLOCK)WHERE [userName] = @userName )
  179. BEGIN
  180. SET @msg = 'User Name ' + @userName + ' already exist';
  181. EXEC proc_errorHandler 1, @msg, @employeeId;
  182. RETURN;
  183. END;
  184. BEGIN TRANSACTION;
  185. INSERT INTO applicationUsers
  186. ( [userName] ,agentCode ,firstName ,middleName ,lastName ,salutation ,gender ,countryId ,state ,district ,zip ,
  187. city ,[address] ,telephoneNo ,mobileNo ,email ,pwd ,agentId ,sessionTimeOutPeriod ,tranApproveLimit ,
  188. agentCrLimitAmt ,loginTime ,logoutTime ,userAccessLevel ,perDayTranLimit ,fromSendTrnTime ,toSendTrnTime ,
  189. fromPayTrnTime ,toPayTrnTime ,fromRptViewTime ,toRptViewTime ,isDeleted ,approvedDate ,lastLoginTs ,pwdChangeDays ,
  190. pwdChangeWarningDays ,lastPwdChangedOn ,forceChangePwd ,maxReportViewDays ,createdBy ,createdDate ,employeeId ,
  191. userType ,isActive ,txnPwd)
  192. SELECT @userName,@agentCode,@firstName,@middleName,@lastName ,@salutation ,@gender ,@countryId ,@state ,@district,@zip ,
  193. @city ,@address ,@telephoneNo ,@mobileNo ,@email ,dbo.FNAEncryptString(@userName + '@123') ,@agentId ,@sessionTimeOutPeriod ,@tranApproveLimit ,
  194. @agentCrLimitAmt ,@loginTime ,@logoutTime ,@userAccessLevel ,@perDayTranLimit ,@fromSendTrnTime ,@toSendTrnTime ,
  195. @fromPayTrnTime ,@toPayTrnTime ,@fromRptViewTime ,@toRptViewTime ,@isDeleted ,@approvedDate ,@lastLoginTs ,@pwdChangeDays ,
  196. @pwdChangeWarningDays ,@lastPwdChangedOn ,'Y' ,@maxReportViewDays ,@user ,GETDATE() ,@employeeId ,
  197. @userType ,'N' ,@txnPwd;
  198. SET @userId = SCOPE_IDENTITY();
  199. IF @employeeId IS NULL
  200. BEGIN
  201. UPDATE applicationUsers
  202. SET employeeId = CAST(@userId AS VARCHAR)
  203. WHERE userId = @userId;
  204. END;
  205. IF @agentCode IS NULL
  206. BEGIN
  207. SELECT @agentCode = agentCode FROM agentMaster WITH ( NOLOCK ) WHERE agentId = @agentId;
  208. UPDATE applicationUsers
  209. SET agentCode = @agentCode
  210. WHERE userId = @userId;
  211. END;
  212. ELSE
  213. IF @agentCode IS NOT NULL
  214. BEGIN
  215. UPDATE agentMaster
  216. SET agentCode = @agentCode
  217. WHERE agentId = @agentId;
  218. END;
  219. --Keep Password History--------------------------------------
  220. INSERT INTO passwordHistory( userName ,pwd ,createdDate)
  221. SELECT @userName ,dbo.FNAEncryptString(@pwd) ,GETDATE();
  222. --------------------------------------------------------------
  223. COMMIT TRANSACTION;
  224. SELECT 0 errorCode ,
  225. 'Record has been added successfully with User Code '+ CAST(@userId AS VARCHAR) mes ,@userId id;
  226. END;
  227. ELSE IF @flag = 'a'
  228. BEGIN
  229. IF EXISTS (SELECT 'X' FROM applicationUsersMod WITH(NOLOCK) WHERE userId = @userId AND createdBy = @user)
  230. BEGIN
  231. SELECT
  232. mode.*
  233. ,agentName = am.agentName + '|' + CAST(am.agentId AS VARCHAR) + '|' + CAST(am.agentType AS VARCHAR)
  234. ,dbo.FNADecryptString(mode.pwd) as DePWD
  235. ,main.modifiedBy
  236. ,main.modifiedDate
  237. ,dbo.FNADecryptString(mode.txnPwd) as DeTxnPWD
  238. FROM applicationUsersMod mode WITH(NOLOCK)
  239. INNER JOIN applicationUsers main WITH(NOLOCK) ON mode.userId = main.userId
  240. LEFT JOIN agentMaster am WITH(NOLOCK) ON mode.agentId = am.agentId
  241. WHERE mode.userId = @userId
  242. END
  243. ELSE
  244. BEGIN
  245. SELECT
  246. main.*
  247. ,agentName = am.agentName + '|' + CAST(am.agentId AS VARCHAR) + '|' + CAST(am.agentType AS VARCHAR)
  248. ,dbo.FNADecryptString(pwd) as DePWD
  249. ,dbo.FNADecryptString(txnPwd) as DeTxnPWD
  250. FROM applicationUsers main WITH(NOLOCK)
  251. LEFT JOIN agentMaster am WITH(NOLOCK) ON main.agentId = am.agentId
  252. WHERE main.userId = @userId
  253. END
  254. END
  255. IF @flag = 'u'
  256. BEGIN
  257. IF EXISTS ( SELECT 'X'
  258. FROM applicationUsers WITH ( NOLOCK )
  259. WHERE userId = @userId
  260. AND approvedBy IS NULL
  261. AND createdBy <> @user )
  262. BEGIN
  263. EXEC proc_errorHandler 1,
  264. 'You can not modify this record. Previous Modification has not been approved yet.',
  265. @userId;
  266. RETURN;
  267. END;
  268. IF EXISTS ( SELECT 'X'
  269. FROM applicationUsersMod WITH ( NOLOCK )
  270. WHERE userId = @userId
  271. AND createdBy <> @user )
  272. BEGIN
  273. EXEC proc_errorHandler 1,
  274. 'You can not modify this record. Previous Modification has not been approved yet.',
  275. @userId;
  276. RETURN;
  277. END;
  278. IF EXISTS ( SELECT 'X'
  279. FROM applicationUserRolesMod WITH ( NOLOCK )
  280. WHERE userId = @userId
  281. AND createdBy <> @user )
  282. BEGIN
  283. EXEC proc_errorHandler 1,
  284. 'You can not modify this record. Previous Modification has not been approved yet.',
  285. @userId;
  286. RETURN;
  287. END;
  288. IF EXISTS ( SELECT 'X'
  289. FROM applicationUserFunctionsMod WITH ( NOLOCK )
  290. WHERE userId = @userId
  291. AND createdBy <> @user )
  292. BEGIN
  293. EXEC proc_errorHandler 1,
  294. 'You can not modify this record. Previous Modification has not been approved yet.',
  295. @userId;
  296. RETURN;
  297. END;
  298. BEGIN TRANSACTION;
  299. SELECT @agentId = agentId
  300. FROM applicationUsers WITH ( NOLOCK )
  301. WHERE userId = @userId;
  302. IF EXISTS ( SELECT 'X'
  303. FROM applicationUsers WITH ( NOLOCK )
  304. WHERE userId = @userId
  305. AND approvedBy IS NULL
  306. AND createdBy = @user )
  307. BEGIN
  308. UPDATE applicationUsers
  309. SET firstName = @firstName ,
  310. middleName = @middleName ,
  311. lastName = @lastName ,
  312. salutation = @salutation ,
  313. gender = @gender ,
  314. telephoneNo = @telephoneNo ,
  315. mobileNo = @mobileNo ,
  316. state = @state ,
  317. district = @district ,
  318. zip = @zip ,
  319. [address] = @address ,
  320. city = @city ,
  321. countryId = @countryId ,
  322. email = @email ,
  323. agentId = @agentId ,
  324. sessionTimeOutPeriod = @sessionTimeOutPeriod ,
  325. tranApproveLimit = @tranApproveLimit ,
  326. agentCrLimitAmt = @agentCrLimitAmt ,
  327. loginTime = @loginTime ,
  328. logoutTime = @logoutTime ,
  329. userAccessLevel = @userAccessLevel ,
  330. perDayTranLimit = @perDayTranLimit ,
  331. fromSendTrnTime = @fromSendTrnTime ,
  332. toSendTrnTime = @toSendTrnTime ,
  333. fromPayTrnTime = @fromPayTrnTime ,
  334. toPayTrnTime = @toPayTrnTime ,
  335. fromRptViewTime = @fromRptViewTime ,
  336. toRptViewTime = @toRptViewTime ,
  337. pwdChangeDays = @pwdChangeDays ,
  338. pwdChangeWarningDays = @pwdChangeWarningDays ,
  339. maxReportViewDays = @maxReportViewDays ,
  340. userType = @userType ,
  341. isActive = @isActive
  342. WHERE userId = @userId;
  343. END;
  344. ELSE
  345. BEGIN
  346. DELETE FROM applicationUsersMod
  347. WHERE userId = @userId;
  348. INSERT INTO applicationUsersMod
  349. ( userId ,
  350. agentCode
  351. --,employeeId
  352. ,
  353. userName ,
  354. firstName ,
  355. middleName ,
  356. lastName ,
  357. salutation ,
  358. gender ,
  359. telephoneNo ,
  360. mobileNo ,
  361. state ,
  362. district ,
  363. zip ,
  364. [address] ,
  365. city ,
  366. countryId ,
  367. email ,
  368. agentId ,
  369. sessionTimeOutPeriod ,
  370. tranApproveLimit ,
  371. agentCrLimitAmt ,
  372. loginTime ,
  373. logoutTime ,
  374. userAccessLevel ,
  375. perDayTranLimit ,
  376. fromSendTrnTime ,
  377. toSendTrnTime ,
  378. fromPayTrnTime ,
  379. toPayTrnTime ,
  380. fromRptViewTime ,
  381. toRptViewTime ,
  382. pwdChangeDays ,
  383. pwdChangeWarningDays ,
  384. maxReportViewDays ,
  385. createdDate ,
  386. createdBy ,
  387. modType ,
  388. userType ,
  389. isActive
  390. )
  391. SELECT @userId ,
  392. @agentCode
  393. --,@employeeId
  394. ,
  395. @userName ,
  396. @firstName ,
  397. @middleName ,
  398. @lastName ,
  399. @salutation ,
  400. @gender ,
  401. @telephoneNo ,
  402. @mobileNo ,
  403. @state ,
  404. @district ,
  405. @zip ,
  406. @address ,
  407. @city ,
  408. @countryId ,
  409. @email ,
  410. @agentId ,
  411. @sessionTimeOutPeriod ,
  412. @tranApproveLimit ,
  413. @agentCrLimitAmt ,
  414. @loginTime ,
  415. @logoutTime ,
  416. @userAccessLevel ,
  417. @perDayTranLimit ,
  418. @fromSendTrnTime ,
  419. @toSendTrnTime ,
  420. @fromPayTrnTime ,
  421. @toPayTrnTime ,
  422. @fromRptViewTime ,
  423. @toRptViewTime ,
  424. @pwdChangeDays ,
  425. @pwdChangeWarningDays ,
  426. @maxReportViewDays ,
  427. GETDATE() ,
  428. @user ,
  429. 'U' ,
  430. @userType ,
  431. @isActive;
  432. END;
  433. COMMIT TRANSACTION;
  434. EXEC proc_errorHandler 0, 'Record updated successfully',
  435. @agentId;
  436. END;
  437. IF @flag = 'lockUser'
  438. BEGIN
  439. SELECT @isActive = ISNULL(isLocked, 'N')
  440. FROM applicationUsers WITH ( NOLOCK )
  441. WHERE userId = @userId;
  442. UPDATE applicationUsers
  443. SET isLocked = CASE @isActive
  444. WHEN 'Y' THEN 'N'
  445. ELSE 'Y'
  446. END ,
  447. modifiedBy = @user ,
  448. modifiedDate = GETDATE() ,
  449. isActive = CASE @isActive
  450. WHEN 'Y' THEN 'Y'
  451. ELSE 'N'
  452. END
  453. WHERE userId = @userId;
  454. SELECT @sql_filter = CASE WHEN @isActive = 'Y'
  455. THEN 'User unlocked Successfully'
  456. ELSE 'User locked Successfully'
  457. END;
  458. EXEC proc_errorHandler '0', @sql_filter, @userId;
  459. RETURN;
  460. END;
  461. IF @flag = 'D'
  462. BEGIN
  463. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @userId, @oldValue OUTPUT
  464. UPDATE applicationUsers SET
  465. isDeleted = 'Y'
  466. ,isActive = 'N'
  467. ,modifiedDate = GETDATE()
  468. ,modifiedBy = @user
  469. WHERE userId = @userId
  470. EXEC proc_errorHandler 0, 'Record deleted successfully', @userId
  471. END
  472. IF @flag = 'lockUser'
  473. BEGIN
  474. SELECT @isActive = ISNULL(isLocked,'N') FROM applicationUsers WITH(NOLOCK) WHERE userId = @userId
  475. UPDATE applicationUsers
  476. SET isLocked = CASE @isActive WHEN 'Y' THEN 'N' ELSE 'Y' END ,modifiedBy = @user,modifiedDate = GETDATE()
  477. ,isActive = CASE @isActive WHEN 'Y' THEN 'Y' ELSE 'N' END
  478. WHERE userId = @userId
  479. SELECT @sql_filter = CASE WHEN @isActive = 'Y' THEN 'User unlocked Successfully' ELSE 'User locked Successfully' END
  480. EXEC proc_errorHandler '0',@sql_filter,@userId
  481. RETURN;
  482. END
  483. IF @flag = 'resetPwd'
  484. BEGIN
  485. SET @pwd = LEFT(NEWID(),8)
  486. SET @sql_filter = 'Password changed,New password is : ' + @pwd
  487. UPDATE applicationUsers
  488. SET lastPwdChangedOn = GETDATE(),pwd = dbo.FNAEncryptString(@pwd),modifiedBy = @user,modifiedDate = GETDATE(),forceChangePwd ='Y'
  489. WHERE userId = @userId
  490. EXEC proc_errorHandler '0',@sql_filter,@userId
  491. RETURN
  492. END
  493. END TRY
  494. BEGIN CATCH
  495. IF @@TRANCOUNT > 0
  496. ROLLBACK TRANSACTION;
  497. SELECT 1 errorCode ,
  498. ERROR_MESSAGE() mes ,
  499. NULL id;
  500. END CATCH;
  501. GO