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.

442 lines
25 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_IPBlacklist] Script Date: 9/27/2019 1:30:14 PM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. CREATE proc [dbo].[proc_IPBlacklist]
  9. @flag VARCHAR(50) = NULL
  10. ,@user VARCHAR(30) = NULL
  11. ,@blId VARCHAR(30) = NULL
  12. ,@IPAddress VARCHAR(30) = NULL
  13. ,@msg VARCHAR(500) = NULL
  14. ,@reason VARCHAR(500) = NULL
  15. ,@isEnable CHAR(1) = NULL
  16. ,@isActive CHAR(1) = NULL
  17. ,@isDeleted CHAR(1) = NULL
  18. ,@createdDate DATETIME = NULL
  19. ,@createdBy VARCHAR(100) = NULL
  20. ,@modifiedDate DATETIME = NULL
  21. ,@modifiedBy VARCHAR(100) = NULL
  22. ,@sortBy VARCHAR(50) = NULL
  23. ,@sortOrder VARCHAR(5) = NULL
  24. ,@pageSize INT = NULL
  25. ,@pageNumber INT = NULL
  26. ,@ipAdrs VARCHAR(50) = NULL
  27. ,@fieldValues VARCHAR(100) = NULL
  28. AS
  29. SET NOCOUNT ON
  30. SET XACT_ABORT ON
  31. BEGIN TRY
  32. CREATE TABLE #msg(errorCode INT, msg VARCHAR(100), id INT)
  33. DECLARE
  34. @sql VARCHAR(MAX)
  35. ,@oldValue VARCHAR(MAX)
  36. ,@newValue VARCHAR(MAX)
  37. ,@tableName VARCHAR(50)
  38. ,@logIdentifier VARCHAR(100)
  39. ,@logParamMain VARCHAR(100)
  40. ,@tableAlias VARCHAR(100)
  41. ,@modType VARCHAR(6)
  42. ,@module INT
  43. ,@select_field_list VARCHAR(MAX)
  44. ,@extra_field_list VARCHAR(MAX)
  45. ,@table VARCHAR(MAX)
  46. ,@sql_filter VARCHAR(MAX)
  47. ,@ApprovedFunctionId INT
  48. SELECT
  49. @logIdentifier = 'blId'
  50. ,@logParamMain = 'IPBlacklist'
  51. ,@tableAlias = 'IP Blacklist'
  52. ,@module = 10
  53. ,@ApprovedFunctionId = 10131030
  54. IF @flag = 'cadmin' --Check if IPAddress exist
  55. BEGIN
  56. --IF NOT EXISTS (SELECT 'X' from IPBlacklist WHERE @IPAddress between IPaddress and msg)
  57. --BEGIN
  58. --Exec proc_IpAccessLogs @flag = 'i', @fieldValue = @fieldValues, @ip = @ipAdrs
  59. --SELECT 1 ErrorCode, 'Sorry, Invalid Access !' Msg, @IPAddress Id
  60. --RETURN
  61. --END
  62. EXEC proc_errorHandler 0, 'IP Address exist', @IPAddress
  63. RETURN;
  64. END
  65. IF @flag = 'c' --Check if IPAddress exist
  66. BEGIN
  67. IF NOT EXISTS (SELECT 'X' from IPBlacklist with (nolock)
  68. WHERE @IPAddress between IPaddress and msg)
  69. BEGIN
  70. Exec proc_IpAccessLogs @flag = 'i', @fieldValue = @fieldValues, @ip = @ipAdrs
  71. SELECT 1 ErrorCode, 'Invalid Ip Address: '+ @ipAdrs Msg, @IPAddress Id
  72. RETURN
  73. END
  74. EXEC proc_errorHandler 0, 'IP Address exist', @IPAddress
  75. RETURN;
  76. END
  77. IF @flag IN ('s')
  78. BEGIN
  79. SET @table = '(
  80. SELECT
  81. blId = ISNULL(mode.blId, main.blId)
  82. ,IPAddress = ISNULL(mode.IPAddress,main.IPAddress)
  83. ,msg = ISNULL(mode.msg,main.msg)
  84. ,reason = ISNULL(mode.reason,main.reason)
  85. ,isEnable = ISNULL(mode.isEnable, main.isEnable)
  86. ,main.createdBy
  87. ,main.createdDate
  88. ,modifiedDate = CASE WHEN main.approvedBy IS NULL THEN main.createdDate ELSE mode.createdDate END
  89. ,modifiedBy = CASE WHEN main.approvedBy IS NULL THEN main.createdBy ELSE mode.createdBy END
  90. ,hasChanged = CASE WHEN (main.approvedBy IS NULL) OR
  91. (mode.blId IS NOT NULL)
  92. THEN ''Y'' ELSE ''N'' END
  93. FROM IPBlacklist main WITH(NOLOCK)
  94. LEFT JOIN IPBlacklistMod mode ON main.blId = mode.blId
  95. AND (
  96. mode.createdBy = ''' + @user + '''
  97. OR ''Y'' = dbo.FNAHasRight(''' + @user + ''',' + CAST(@ApprovedFunctionId AS VARCHAR) + ')
  98. )
  99. WHERE ISNULL(main.isDeleted, ''N'') <> ''Y''
  100. AND (
  101. main.approvedBy IS NOT NULL
  102. OR main.createdBy = ''' + @user + '''
  103. OR ''Y'' = dbo.FNAHasRight(''' + @user + ''',' + CAST(@ApprovedFunctionId AS VARCHAR) + ')
  104. )
  105. --AND NOT(ISNULL(mode.modType, '''') = ''D'' AND mode.createdBy = ''' + @user + ''')
  106. ) '
  107. END
  108. IF @flag = 'i'
  109. BEGIN
  110. BEGIN TRANSACTION
  111. INSERT INTO IPBlacklist (
  112. IPAddress
  113. ,msg
  114. ,reason
  115. ,isEnable
  116. ,createdDate
  117. ,createdBy
  118. )
  119. SELECT
  120. @IPAddress
  121. ,@msg
  122. ,@reason
  123. ,@isEnable
  124. ,GETDATE()
  125. ,@user
  126. SET @blId = SCOPE_IDENTITY()
  127. COMMIT TRANSACTION
  128. EXEC proc_errorHandler 0, 'Record has been added successfully.', @blId
  129. END
  130. ELSE IF @flag = 'u'
  131. BEGIN
  132. IF EXISTS (SELECT 'X' FROM IPBlacklist WITH(NOLOCK) WHERE blId = @blId AND approvedBy IS NULL AND createdBy <> @user)
  133. BEGIN
  134. EXEC proc_errorHandler 1, 'You can not modify this record. Previous Modification has not been approved yet.', @blId
  135. RETURN
  136. END
  137. IF EXISTS (SELECT 'X' FROM IPBlacklistMod WITH(NOLOCK) WHERE blId = @blId AND createdBy <> @user)
  138. BEGIN
  139. EXEC proc_errorHandler 1, 'You can not modify this record. Previous Modification has not been approved yet.', @blId
  140. RETURN
  141. END
  142. BEGIN TRANSACTION
  143. IF EXISTS (SELECT 'X' FROM IPBlacklist WITH(NOLOCK) WHERE blId = @blId AND approvedBy IS NULL AND createdBy = @user)
  144. BEGIN
  145. UPDATE IPBlacklist SET
  146. IPAddress = @IPAddress
  147. ,msg = @msg
  148. ,reason = @reason
  149. ,isEnable = @isEnable
  150. WHERE blId = @blId
  151. END
  152. ELSE
  153. BEGIN
  154. DELETE FROM IPBlacklistMod WHERE blId = @blId
  155. INSERT INTO IPBlacklistMod (
  156. blId
  157. ,IPAddress
  158. ,msg
  159. ,reason
  160. ,isEnable
  161. ,createdDate
  162. ,createdBy
  163. ,modType
  164. )
  165. SELECT
  166. @blId
  167. ,@IPAddress
  168. ,@msg
  169. ,@reason
  170. ,@isEnable
  171. ,GETDATE()
  172. ,@user
  173. ,'U'
  174. END
  175. COMMIT TRANSACTION
  176. EXEC proc_errorHandler 0, 'Record updated successfully', @blId
  177. END
  178. ELSE IF @flag='a'
  179. BEGIN
  180. IF EXISTS (SELECT 'X' FROM IPBlacklistMod WITH(NOLOCK) WHERE blId = @blId AND createdBy = @user)
  181. BEGIN
  182. SELECT
  183. *
  184. FROM IPBlacklistMod WHERE blId = @blId
  185. END
  186. ELSE
  187. BEGIN
  188. SELECT
  189. *
  190. FROM IPBlacklist where blId = @blId
  191. END
  192. END
  193. ELSE IF @flag = 'd'
  194. BEGIN
  195. IF EXISTS (SELECT 'X' FROM IPBlacklist WITH(NOLOCK) WHERE blId = @blId AND approvedBy IS NULL AND createdBy <> @user)
  196. BEGIN
  197. EXEC proc_errorHandler 1, 'You can not delete this record. Previous Modification has not been approved yet.', @blId
  198. RETURN
  199. END
  200. IF EXISTS (SELECT 'X' FROM IPBlacklistMod WITH(NOLOCK) WHERE blId = @blId AND createdBy <> @user)
  201. BEGIN
  202. EXEC proc_errorHandler 1, 'You can not delete this record. Previous Modification has not been approved yet.', @blId
  203. RETURN
  204. END
  205. BEGIN TRANSACTION
  206. IF EXISTS (SELECT 'X' FROM IPBlacklist WITH(NOLOCK) WHERE blId = @blId AND approvedBy IS NULL AND createdBy = @user)
  207. BEGIN
  208. DELETE FROM IPBlacklist WHERE blId = @blId
  209. END
  210. ELSE
  211. BEGIN
  212. DELETE FROM IPBlacklistMod WHERE blId = @blId
  213. INSERT INTO IPBlacklistMod (
  214. blId
  215. ,IPAddress
  216. ,msg
  217. ,reason
  218. ,isEnable
  219. ,createdDate
  220. ,createdBy
  221. ,modType
  222. )
  223. SELECT
  224. blId
  225. ,IPAddress
  226. ,msg
  227. ,reason
  228. ,isEnable
  229. ,GETDATE()
  230. ,@user
  231. ,'D'
  232. FROM IPBlacklist WHERE blId = @blId
  233. END
  234. COMMIT TRANSACTION
  235. EXEC proc_errorHandler 0, 'Record deleted successfully', @blId
  236. END
  237. ELSE IF @flag = 's'
  238. BEGIN
  239. IF @sortBy IS NULL
  240. SET @sortBy = 'blId'
  241. IF @sortOrder IS NULL
  242. SET @sortOrder = 'ASC'
  243. SET @table = '(
  244. SELECT
  245. main.blId
  246. ,main.msg
  247. ,main.IPAddress
  248. ,main.reason
  249. ,main.isEnable
  250. ,main.modifiedBy
  251. ,main.haschanged
  252. FROM ' + @table + ' main
  253. ) x'
  254. SET @sql_filter = ''
  255. IF @IPAddress IS NOT NULL
  256. SET @sql_filter = @sql_filter + ' AND ISNULL(IPAddress, '''') LIKE ''%' + @IPAddress + '%'''
  257. SET @select_field_list ='
  258. blId
  259. ,msg
  260. ,IPAddress
  261. ,reason
  262. ,haschanged
  263. ,modifiedBy
  264. ,isEnable
  265. '
  266. EXEC dbo.proc_paging
  267. @table
  268. ,@sql_filter
  269. ,@select_field_list
  270. ,@extra_field_list
  271. ,@sortBy
  272. ,@sortOrder
  273. ,@pageSize
  274. ,@pageNumber
  275. END
  276. ELSE IF @flag = 'reject'
  277. BEGIN
  278. IF NOT EXISTS (SELECT 'X' FROM IPBlacklist WITH(NOLOCK) WHERE blId = @blId AND approvedBy IS NULL)
  279. AND
  280. NOT EXISTS(SELECT 'X' FROM IPBlacklistMod WITH(NOLOCK) WHERE blId = @blId )
  281. BEGIN
  282. EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @blId
  283. RETURN
  284. END
  285. IF EXISTS (SELECT 'X' FROM IPBlacklist WHERE blId = @blId AND approvedBy IS NULL)
  286. BEGIN --New record
  287. BEGIN TRANSACTION
  288. SET @modType = 'Reject'
  289. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @blId, @oldValue OUTPUT
  290. INSERT INTO #msg(errorCode, msg, id)
  291. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @blId, @user, @oldValue, @newValue
  292. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  293. BEGIN
  294. IF @@TRANCOUNT > 0
  295. ROLLBACK TRANSACTION
  296. EXEC proc_errorHandler 1, 'Failed to reject the transaction.', @blId
  297. RETURN
  298. END
  299. DELETE FROM IPBlacklist WHERE blId = @blId
  300. IF @@TRANCOUNT > 0
  301. COMMIT TRANSACTION
  302. END
  303. ELSE
  304. BEGIN
  305. BEGIN TRANSACTION
  306. SET @modType = 'Reject'
  307. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @blId, @oldValue OUTPUT
  308. INSERT INTO #msg(errorCode, msg, id)
  309. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @blId, @user, @oldValue, @newValue
  310. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  311. BEGIN
  312. IF @@TRANCOUNT > 0
  313. ROLLBACK TRANSACTION
  314. EXEC proc_errorHandler 1, 'Failed to reject the transaction.', @blId
  315. RETURN
  316. END
  317. DELETE FROM IPBlacklistMod WHERE @blId = @blId
  318. IF @@TRANCOUNT > 0
  319. COMMIT TRANSACTION
  320. END
  321. EXEC proc_errorHandler 0, 'Changes rejected successfully.', @blId
  322. END
  323. ELSE IF @flag = 'approve'
  324. BEGIN
  325. IF NOT EXISTS (SELECT 'X' FROM IPBlacklist WITH(NOLOCK) WHERE blId = @blId AND approvedBy IS NULL)
  326. AND
  327. NOT EXISTS(SELECT 'X' FROM IPBlacklistMod WITH(NOLOCK) WHERE blId = @blId )
  328. BEGIN
  329. EXEC proc_errorHandler 1, '<center>Modification approval is not pending.</center>', @blId
  330. RETURN
  331. END
  332. BEGIN TRANSACTION
  333. IF EXISTS (SELECT 'X' FROM IPBlacklist WHERE approvedBy IS NULL AND blId = @blId)
  334. SET @modType = 'I'
  335. ELSE
  336. SELECT @modType = modType FROM IPBlacklistMod WHERE blId = @blId
  337. IF @modType = 'I'
  338. BEGIN --New record
  339. UPDATE IPBlacklist SET
  340. isActive = 'Y'
  341. ,approvedBy = @user
  342. ,approvedDate= GETDATE()
  343. WHERE blId = @blId
  344. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @blId, @newValue OUTPUT
  345. END
  346. ELSE IF @modType = 'U'
  347. BEGIN
  348. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @blId, @oldValue OUTPUT
  349. UPDATE main SET
  350. main.IPAddress = mode.IPAddress
  351. ,main.msg = mode.msg
  352. ,main.reason = mode.reason
  353. ,main.isEnable = mode.isEnable
  354. ,main.modifiedDate = GETDATE()
  355. ,main.modifiedBy = @user
  356. FROM IPBlacklist main
  357. INNER JOIN IPBlacklistMod mode ON mode.blId= main.blId
  358. WHERE mode.blId = @blId
  359. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @blId, @newValue OUTPUT
  360. END
  361. ELSE IF @modType = 'D'
  362. BEGIN
  363. EXEC [dbo].proc_GetColumnToRow @logParamMain, @logIdentifier, @blId, @oldValue OUTPUT
  364. UPDATE IPBlacklist SET
  365. isDeleted = 'Y'
  366. ,isActive = 'N'
  367. ,modifiedDate = GETDATE()
  368. ,modifiedBy = @user
  369. WHERE blId = @blId
  370. END
  371. DELETE FROM IPBlacklistMod WHERE blId = @blId
  372. INSERT INTO #msg(errorCode, msg, id)
  373. EXEC proc_applicationLogs 'i', NULL, @modType, @tableAlias, @blId, @user, @oldValue, @newValue
  374. IF EXISTS (SELECT 'x' FROM #msg WHERE errorCode <> '0')
  375. BEGIN
  376. IF @@TRANCOUNT > 0
  377. ROLLBACK TRANSACTION
  378. EXEC proc_errorHandler 1, 'Could not approve the changes.', @blId
  379. RETURN
  380. END
  381. IF @@TRANCOUNT > 0
  382. COMMIT TRANSACTION
  383. EXEC proc_errorHandler 0, 'Changes approved successfully.', @blId
  384. END
  385. END TRY
  386. BEGIN CATCH
  387. IF @@TRANCOUNT > 0
  388. ROLLBACK TRANSACTION
  389. DECLARE @errorMessage VARCHAR(MAX)
  390. SET @errorMessage = ERROR_MESSAGE()
  391. EXEC proc_errorHandler 1, @errorMessage, @blId
  392. END CATCH
  393. GO