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.

360 lines
22 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_agentRiskProfiling] 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_agentRiskProfiling]
  9. (
  10. @flag VARCHAR(50) = NULL
  11. ,@criteriaId INT = NULL
  12. ,@topic VARCHAR(200) = NULL
  13. ,@minimumScore MONEY = NULL
  14. ,@maximumScore MONEY = NULL
  15. ,@displayOrder INT = NULL
  16. ,@createdBy VARCHAR(50) = NULL
  17. ,@createdDate DATETIME = NULL
  18. ,@modifiedBy VARCHAR(50) = NULL
  19. ,@modifedDate DATETIME = NULL
  20. ,@isActive VARCHAR(1) = NULL
  21. ,@scoringId INT = NULL
  22. ,@scoreFrom MONEY = NULL
  23. ,@scoreTo MONEY = NULL
  24. ,@rating VARCHAR(10) = NULL
  25. ,@assessementId INT = NULL
  26. ,@agentID INT = NULL
  27. ,@assessementDate DATE = NULL
  28. ,@reviewedBy VARCHAR(50) = NULL
  29. ,@reviewedDate DATETIME = NULL
  30. ,@score MONEY = NULL
  31. ,@reviewerComment VARCHAR(2500) = NULL
  32. ,@detailId INT = NULL
  33. ,@remarks VARCHAR(2500) = NULL
  34. ,@user VARCHAR(50) = NULL
  35. ,@sortBy VARCHAR(50) = NULL
  36. ,@sortOrder VARCHAR(5) = NULL
  37. ,@pageSize INT = NULL
  38. ,@pageNumber INT = NULL
  39. ,@xml XML = NULL
  40. ,@agentName VARCHAR(100) = NULL
  41. --,@searchCriteria VARCHAR(50) = NULL
  42. --,@searchValue VARCHAR(50) = NULL
  43. )
  44. AS
  45. SET NOCOUNT ON
  46. SET XACT_ABORT ON
  47. BEGIN TRY
  48. DECLARE
  49. @sql VARCHAR(MAX)
  50. ,@oldValue VARCHAR(MAX)
  51. ,@newValue VARCHAR(MAX)
  52. ,@module VARCHAR(10)
  53. ,@tableAlias VARCHAR(100)
  54. ,@logIdentifier VARCHAR(50)
  55. ,@logParamMod VARCHAR(100)
  56. ,@logParamMain VARCHAR(100)
  57. ,@table VARCHAR(MAX)
  58. ,@select_field_list VARCHAR(MAX)
  59. ,@extra_field_list VARCHAR(MAX)
  60. ,@sql_filter VARCHAR(MAX)
  61. ,@modType VARCHAR(6)
  62. ,@errorMsg VARCHAR(MAX)
  63. IF @flag = 'i'
  64. BEGIN
  65. IF EXISTS (SELECT 'x' FROM riskAssessement WITH(NOLOCK) WHERE agentid=@agentID and reviewdBy is null and isnull(isActive,'Y')='Y')
  66. BEGIN
  67. EXEC proc_errorHandler 1, 'Sorry, there is already active assessement exists for this agent, which has not been reviewed yet. Please kindly do inactive or review existing record and try again.', @agentID
  68. RETURN
  69. END
  70. IF EXISTS (SELECT 'x' FROM riskAssessement WITH(NOLOCK) WHERE agentid=@agentID AND ISNULL(isActive, 'Y') = 'Y')
  71. BEGIN
  72. EXEC proc_errorHandler 1, 'Sorry, there is already active assessement exists for this agent, which has not been reviewed yet. Please kindly do inactive or review existing record and try again.', @agentID
  73. RETURN
  74. END
  75. BEGIN TRANSACTION
  76. INSERT INTO riskAssessement (
  77. agentid
  78. ,assessementDate
  79. ,createdBy
  80. ,createdDate
  81. ,reviewdBy
  82. ,reviewedDate
  83. ,score
  84. ,rating
  85. ,reviewerComment
  86. ,isActive
  87. )
  88. SELECT
  89. @agentID
  90. ,@assessementDate
  91. ,@createdBy
  92. ,GETDATE()
  93. ,@reviewedBy
  94. ,@reviewedDate
  95. ,@score
  96. ,@rating
  97. ,@reviewerComment
  98. ,@isActive
  99. IF @@TRANCOUNT > 0
  100. COMMIT TRANSACTION
  101. EXEC proc_errorHandler 0, 'Record has been added successfully.', @agentID
  102. END
  103. IF @flag = 'i-rp'
  104. BEGIN
  105. BEGIN TRANSACTION
  106. IF EXISTS (SELECT 'x' FROM ratingDetail WITH(NOLOCK) WHERE assessementId=@assessementId)
  107. BEGIN
  108. DELETE FROM ratingDetail WHERE assessementId=@assessementId
  109. END
  110. INSERT INTO ratingDetail(
  111. assessementId
  112. ,criteriaId
  113. ,score
  114. ,remarks
  115. ,createdBy
  116. ,createdDate
  117. ,modifiedBy
  118. ,modifiedDate
  119. )
  120. SELECT
  121. p.value('@assessementId','VARCHAR(50)')
  122. ,p.value('@criteriaId','VARCHAR(50)')
  123. ,p.value('@score','VARCHAR(50)')
  124. ,p.value('@remarks','VARCHAR(2500)')
  125. ,@user
  126. ,GETDATE()
  127. ,@user
  128. ,GETDATE()
  129. FROM @xml.nodes('/root/row') AS tmp(p)
  130. UPDATE riskAssessement
  131. set score=@score
  132. ,rating=@rating
  133. WHERE assessementId=@assessementId
  134. --and agentId=@agentID
  135. IF @@TRANCOUNT > 0
  136. COMMIT TRANSACTION
  137. EXEC proc_errorHandler 0, 'Record has been added successfully.', @agentID
  138. END
  139. ELSE IF @flag='pc' -- profilingCriteria
  140. BEGIN
  141. IF EXISTS (SELECT 'x' FROM ratingDetail WITH(NOLOCK) WHERE assessementId=@assessementId)
  142. BEGIN
  143. SELECT pc.criteriaId,pc.topic,dbo.ShowDecimal(pc.minimumScore)as minimumScore,dbo.ShowDecimal(pc.maximumScore)as maximumScore,pc.displayOrder,
  144. dbo.showdecimal(rd.score)as score,rd.remarks,ra.createdBy,ra.createdDate,ra.reviewdBy,ra.reviewedDate,ra.reviewerComment
  145. FROM ratingDetail rd WITH(NOLOCK)
  146. INNER JOIN profilingCriteria pc on pc.criteriaId=rd.criteriaId
  147. INNER JOIN riskAssessement ra on ra.assessementId=rd.assessementId
  148. WHERE rd.assessementId=@assessementId
  149. ORDER BY pc.displayOrder
  150. END
  151. ELSE
  152. BEGIN
  153. SELECT
  154. criteriaId,topic,dbo.ShowDecimal(minimumScore) as minimumScore,dbo.ShowDecimal(maximumScore) as maximumScore
  155. ,displayOrder,'' as score,'' as remarks FROM profilingCriteria WITH(NOLOCK)
  156. WHERE isActive='Y'
  157. ORDER BY displayOrder
  158. END
  159. SELECT scoringId,scoreFrom,scoreTo,rating
  160. FROM scoringCriteria WITH(NOLOCK) where isActive='Y'
  161. END
  162. --ELSE IF @flag='pc-review'
  163. --BEGIN
  164. -- SELECT pc.criteriaId,pc.topic,pc.minimumScore,pc.maximumScore,pc.displayOrder,
  165. -- score,remarks
  166. -- FROM ratingDetail rd
  167. -- INNER JOIN profilingCriteria pc on pc.criteriaId=rd.criteriaId
  168. -- WHERE rd.assessementId=@assessementId
  169. -- ORDER BY pc.displayOrder
  170. -- SELECT scoringId,scoreFrom,scoreTo,rating
  171. -- FROM scoringCriteria where isActive='Y'
  172. --END
  173. ELSE IF @flag='s'
  174. BEGIN
  175. SET @isActive = ISNULL(@isActive, 'Y')
  176. IF @isActive = 'A'
  177. SET @isActive = NULL
  178. --IF @sortBy IS NULL
  179. SET @sortBy = 'score,agentName'
  180. --IF @sortOrder IS NULL
  181. SET @sortOrder = ''
  182. DECLARE @hasRight CHAR(1),@reviewRight CHAR(1)
  183. SET @hasRight = dbo.FNAHasRight(@user, '20191020')-- Score/Inactive
  184. SET @reviewRight = dbo.FNAHasRight(@user, '20191030')-- Review
  185. SET @table = '(
  186. SELECT
  187. ra.assessementId
  188. ,ra.agentid
  189. ,am.agentName
  190. ,assessementDate = ra.assessementDate
  191. ,ra.createdBy
  192. ,ra.createdDate
  193. ,ra.reviewdBy
  194. ,reviewedDate = ra.reviewedDate
  195. ,score=ra.score
  196. ,ra.rating
  197. ,ra.reviewerComment
  198. ,ra.isActive
  199. ,scorelink = case when ra.isActive=''y'' and ra.reviewedDate is null then
  200. CASE WHEN '''+@hasRight+'''=''Y'' THEN
  201. ''<a href="Manage.aspx?type=risk&aId=''+CAST(ra.assessementId as varchar)+''&agentId=''+cast(ra.agentid as varchar)+''">Score</a>&nbsp;''
  202. +''<a onclick="return confirm(''''Are you sure you want to inactive this assessement?'''');" href="List.aspx?type=inactive&aId=''+CAST(ra.assessementId as varchar)+''&agentId=''+cast(ra.agentid as varchar)+''">Mark Inactive</a>&nbsp;''
  203. ELSE ''''
  204. END
  205. + case when ISNULL(ra.score,0)> 0 THEN
  206. + ''<a href="Manage.aspx?type=riskhistory&aId=''+CAST(ra.assessementId as varchar)+''&agentId=''+cast(ra.agentid as varchar)+''">Details</a>&nbsp;''
  207. + case when ra.reviewedDate is null AND '''+@reviewRight+'''=''Y'' then
  208. +''<a href="Manage.aspx?type=review&aId=''+CAST(ra.assessementId as varchar)+''&agentId=''+cast(ra.agentid as varchar)+''">Review</a>''
  209. ELSE ''''
  210. end
  211. ELSE ''''
  212. end
  213. else
  214. ''<a href="Manage.aspx?type=riskhistory&aId=''+CAST(ra.assessementId as varchar)+''&agentId=''+cast(ra.agentid as varchar)+''">Details</a>&nbsp;''
  215. +case when isnull(ra.isActive,''y'')=''y'' then
  216. +''<a onclick="return confirm(''''Are you sure you want to inactive this assessement?'''');" href="List.aspx?type=inactive&aId=''+CAST(ra.assessementId as varchar)+''&agentId=''+cast(ra.agentid as varchar)+''">Mark Inactive</a>''
  217. else '''' end
  218. end
  219. FROM riskAssessement ra WITH(NOLOCK)
  220. INNER JOIN agentListRiskProfile am on ra.agentId=am.agentId
  221. WHERE 1 = 1
  222. ) x'
  223. SET @sql_filter = ''
  224. IF @agentID is not NULL
  225. SET @sql_filter=@sql_filter+' And agentid = '''+CAST(@agentId AS VARCHAR)+''''
  226. IF @isActive is not null and @isActive<>'A'
  227. SET @sql_filter = @sql_filter + ' And isActive='''+@isActive+''''
  228. IF @assessementDate IS NOT NULL
  229. SET @sql_filter=@sql_filter+' And assessementDate = '''+ CAST(@assessementDate AS VARCHAR) +''' '
  230. IF @score is not NULL
  231. -- SET @sql_filter=@sql_filter+' And score = '''+ @score +''''
  232. SET @sql_filter=@sql_filter+' And score ='''+ CAST(@score AS VARCHAR)+''' '
  233. IF @rating is not NULL
  234. SET @sql_filter=@sql_filter+' And rating = '''+CAST(@rating AS VARCHAR)+''''
  235. print @table+''+@sql_filter
  236. SET @select_field_list ='
  237. assessementId
  238. ,agentid
  239. ,agentName
  240. ,assessementDate
  241. ,createdBy
  242. ,createdDate
  243. ,reviewdBy
  244. ,reviewedDate
  245. ,score
  246. ,rating
  247. ,reviewerComment
  248. ,isActive
  249. ,scorelink '
  250. EXEC dbo.proc_paging
  251. @table
  252. ,@sql_filter
  253. ,@select_field_list
  254. ,@extra_field_list
  255. ,@sortBy
  256. ,@sortOrder
  257. ,@pageSize
  258. ,@pageNumber
  259. END
  260. ELSE IF @flag='inactive'
  261. BEGIN
  262. BEGIN TRANSACTION
  263. UPDATE riskAssessement
  264. set isactive=@isActive
  265. WHERE assessementId=@assessementId
  266. and agentId=@agentID
  267. IF @@TRANCOUNT > 0
  268. COMMIT TRANSACTION
  269. EXEC proc_errorHandler 0, 'Record has been updated successfully.', @agentID
  270. END
  271. ELSE IF @flag='i-r'
  272. BEGIN
  273. BEGIN TRANSACTION
  274. UPDATE riskAssessement
  275. set reviewdBy=@reviewedBy
  276. ,reviewerComment=@reviewerComment
  277. ,reviewedDate=GETDATE()
  278. WHERE assessementId=@assessementId
  279. and agentId=@agentID
  280. IF @@TRANCOUNT > 0
  281. COMMIT TRANSACTION
  282. EXEC proc_errorHandler 0, 'Record has been updated successfully.', @agentID
  283. END
  284. ELSE IF @flag='ddlStatus'
  285. BEGIN
  286. SELECT 'A' AS 'value', 'All' AS 'text' UNION ALL
  287. SELECT 'Y' ,'Active' UNION ALL
  288. SELECT 'N','Inactive'
  289. END
  290. ELSE IF @flag='ddlRating'
  291. BEGIN
  292. SELECT NULL 'value' ,'All' AS 'text' UNION ALL
  293. SELECT 'LOW' ,'LOW' UNION ALL
  294. SELECT 'MEDIUM','MEDIUM' UNION ALL
  295. SELECT 'HIGH' ,'HIGH'
  296. END
  297. ELSE IF @flag = 'l1'
  298. BEGIN
  299. SELECT agentId, agentName
  300. FROM dbo.agentListRiskProfile WITH(NOLOCK)
  301. WHERE agentName LIKE '%' + ISNULL(@agentName, '') + '%'
  302. ORDER BY agentName
  303. END
  304. END TRY
  305. BEGIN CATCH
  306. IF @@TRANCOUNT > 0
  307. ROLLBACK TRANSACTION
  308. DECLARE @errorMessage VARCHAR(MAX)
  309. SET @errorMessage = ERROR_MESSAGE()
  310. EXEC proc_errorHandler 1, @errorMessage, @agentID
  311. END CATCH
  312. GO