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.

364 lines
20 KiB

1 year ago
  1. -- ======================================================================
  2. -- Description: "Coupon Issue" in Core System
  3. -- ======================================================================
  4. CREATE OR ALTER PROCEDURE [dbo].[PROC_COUPONISSUE]
  5. (
  6. @flag VARCHAR(50),
  7. @serviceType CHAR = NULL,
  8. @searchBy VARCHAR(50) = NULL,
  9. @searchValue VARCHAR(MAX) = NULL,
  10. @couponFilter CHAR = NULL,
  11. @email VARCHAR(150) = NULL,
  12. @coupon INT = NULL,
  13. @idNumber VARCHAR(50) = NULL,
  14. @anotherIDNumber VARCHAR(50) = NULL,
  15. @rowId INT = NULL,
  16. @agentID VARCHAR(150) = NULL,
  17. @sortBy VARCHAR(100) = NULL,
  18. @sortOrder VARCHAR(5) = NULL,
  19. @pageSize INT = NULL,
  20. @pageNumber INT = NULL,
  21. @user VARCHAR(50) = NULL
  22. )
  23. AS
  24. BEGIN
  25. SET NOCOUNT ON;
  26. SET XACT_ABORT ON;
  27. BEGIN TRY
  28. DECLARE
  29. @table VARCHAR(MAX) = NULL
  30. ,@sqlFilter VARCHAR(MAX) = ''
  31. ,@selectFieldList VARCHAR(MAX) = NULL
  32. ,@extraFieldList VARCHAR(MAX) = NULL
  33. ,@noPaging CHAR(1) = NULL
  34. ,@today DATETIME = getDate()
  35. ,@searchValues VARCHAR(MAX) = NULL
  36. IF @flag = 'loadGrid'
  37. BEGIN
  38. SET @table =
  39. N'(SELECT cm.customerId as ''Customer_ID'',
  40. cm.email as ''User_ID'',
  41. cm.fullName as ''Name'',
  42. com.countryName as ''Nationality'',
  43. cm.walletAccountNo as ''Virtual_Acc_No'',
  44. cm.mobile as ''Mobile_No'',
  45. sd1.detailTitle as ''ID_Type'',
  46. cm.idNumber as ''ID_No'',
  47. sd2.detailTitle as ''Another_ID_Type'',
  48. cm.anotherIDNumber as ''Another_ID_No'',
  49. ci.createdBy as ''Created_By'',
  50. ci.createdDate as ''Created_Date'',
  51. cm.isLoan as ''IsLoan'',
  52. cs.couponName as ''Coupon_Name'',
  53. ci.rowId as ''Row_ID'',
  54. (CASE WHEN ci.isActive is NULL THEN ''N'' ELSE ci.isActive END) as ''Active_Coupon'',
  55. cm.createdDate
  56. FROM dbo.customerMaster cm(nolock)
  57. LEFT JOIN dbo.staticDataValue sd1(nolock) ON sd1.valueId = cm.idType
  58. LEFT JOIN dbo.staticDataValue sd2(nolock) ON sd2.valueId = cm.anotherIDType
  59. INNER JOIN dbo.countryMaster com(nolock) ON com.countryId = cm.nativeCountry
  60. LEFT JOIN dbo.couponIssue ci(nolock) ON ci.customerId = cm.customerId
  61. LEFT JOIN dbo.couponSetup cs(nolock) ON cs.rowId = ci.couponId
  62. WHERE cm.approvedDate is not null AND cm.isActive = ''Y''
  63. AND ((cm.isBlackListed is null) or (cm.isBlackListed = ''N''))
  64. AND ((cm.isDeleted is null) or (cm.isDeleted = ''N''))
  65. AND ((cm.islocked is null) or (cm.islocked = ''N''))';
  66. IF @serviceType = 'X'
  67. SET @table += ' AND cm.isLoan IS NULL)x';
  68. ELSE
  69. SET @table += ' AND cm.isLoan = ''' + @serviceType + ''')x';
  70. IF @searchBy = 'email'
  71. SET @sqlFilter += ' AND x.User_ID like ''%' + @searchValue + '%''';
  72. ELSE IF @searchBy = 'fullName'
  73. SET @sqlFilter += ' AND x.Name like ''%' + @searchValue + '%''';
  74. ELSE IF @searchBy = 'walletAccountNo'
  75. SET @sqlFilter += ' AND x.Virtual_Acc_No = ''' + @searchValue + '''';
  76. ELSE IF @searchBy = 'idNumber'
  77. BEGIN
  78. CREATE TABLE #searchValues (search VARCHAR(MAX))
  79. INSERT INTO #searchValues EXEC PROC_SPLITSTRING @string=@searchValue, @seperator=',';
  80. SELECT @searchValues = CONCAT(@searchValues + ',', '') + '''' + search + '''' FROM #searchValues
  81. SET @sqlFilter += ' AND (x.ID_No in (' + @searchValues + ')' + ' OR x.Another_ID_No in (' + @searchValues + '))';
  82. END
  83. ELSE IF @searchBy = 'mobile'
  84. SET @sqlFilter += ' AND REPLACE(x.Mobile_No, ''-'', '''') =''' + Replace(@searchValue, '-', '') + '''';
  85. IF @couponFilter IS NOT NULL
  86. BEGIN
  87. IF @couponFilter = 'Y'
  88. SET @sqlFilter += ' AND x.Active_Coupon=''Y''';
  89. ELSE IF @couponFilter = 'N'
  90. SET @sqlFilter += ' AND x.Active_Coupon=''N''';
  91. END
  92. SET @selectFieldList = 'Customer_ID, User_ID, Name, Nationality, Virtual_Acc_No, Mobile_No, ID_Type, ID_No, Another_ID_Type, Another_ID_No, IsLoan, Row_ID, Coupon_Name, Active_Coupon, Created_By, Created_Date'
  93. IF @sortBy IS NULL
  94. SET @sortBy = 'createdDate'
  95. IF @sortOrder IS NULL
  96. SET @sortOrder = 'DESC'
  97. EXEC dbo.Proc_paging
  98. @table,
  99. @sqlFilter,
  100. @selectFieldList,
  101. @extraFieldList,
  102. @sortBy,
  103. @sortOrder,
  104. @pageSize,
  105. @pageNumber,
  106. @noPaging
  107. RETURN
  108. END
  109. IF @flag = 'setServiceType'
  110. BEGIN
  111. SELECT 'X' as [VALUE], 'GME Remit Only' as [TEXT]
  112. UNION ALL
  113. SELECT 'Y', 'GME Loan Active'
  114. UNION ALL
  115. SELECT 'N', 'GME Loan Inactive'
  116. END
  117. IF @flag = 'setSearchBy'
  118. BEGIN
  119. SELECT 'email' as [VALUE], 'User ID' as [TEXT]
  120. UNION ALL
  121. SELECT 'fullName', 'Name'
  122. UNION ALL
  123. SELECT 'walletAccountNo', 'Virtual Acc No'
  124. UNION ALL
  125. SELECT 'idNumber', 'ID No'
  126. UNION ALL
  127. SELECT 'mobile', 'Mobile No'
  128. END
  129. IF @flag = 'setControlType'
  130. BEGIN
  131. SELECT 'Y'as [VALUE], 'Activate GME Loan' as [TEXT]
  132. UNION ALL
  133. SELECT 'N', 'Deactivate GME Loan'
  134. UNION ALL
  135. SELECT 'X', 'Eliminate GME Loan'
  136. END
  137. IF @flag = 'setCouponList'
  138. BEGIN
  139. SELECT rowid as [VALUE], couponName as [TEXT]
  140. FROM CouponSetup
  141. END
  142. IF @flag = 'setCouponFilter'
  143. BEGIN
  144. SELECT 'Y'as [VALUE], 'Active User' as [TEXT]
  145. UNION ALL
  146. SELECT 'N', 'Inactive User'
  147. END
  148. IF @flag = 'enableLoan'
  149. BEGIN
  150. IF @idNumber IS NOT NULL
  151. BEGIN
  152. SELECT @searchValue = customerId FROM customerMaster
  153. WHERE idNumber = @idNumber AND approvedDate is not null
  154. AND isActive = 'Y'
  155. AND ((isBlackListed is null) or (isBlackListed = 'N'))
  156. AND ((isDeleted is null) or (isDeleted = 'N'))
  157. AND ((islocked is null) or (islocked = 'N'))
  158. IF (@searchValue IS NULL)
  159. BEGIN
  160. EXEC proc_errorHandler 1, 'Invalid ID Number.', NULL
  161. RETURN
  162. END
  163. ELSE
  164. BEGIN
  165. UPDATE customerMaster SET isLoan='Y' WHERE customerid=@searchValue AND idNumber=@idNumber
  166. END
  167. EXEC proc_errorHandler 0, 'Success.', NULL
  168. END
  169. ELSE
  170. BEGIN
  171. SELECT @searchValue = customerId FROM customerMaster
  172. WHERE anotherIDNumber = @anotherIDNumber AND approvedDate is not null
  173. AND isActive = 'Y'
  174. AND ((isBlackListed is null) or (isBlackListed = 'N'))
  175. AND ((isDeleted is null) or (isDeleted = 'N'))
  176. AND ((islocked is null) or (islocked = 'N'))
  177. IF (@searchValue IS NULL)
  178. BEGIN
  179. EXEC proc_errorHandler 1, 'Invalid Another ID Number.', NULL
  180. RETURN
  181. END
  182. ELSE
  183. BEGIN
  184. UPDATE customerMaster SET isLoan='Y' WHERE customerid=@searchValue AND anotherIDNumber=@anotherIDNumber
  185. END
  186. EXEC proc_errorHandler 0, 'Success.', NULL
  187. END
  188. END
  189. IF @flag = 'disableLoan'
  190. BEGIN
  191. IF @idNumber IS NOT NULL
  192. BEGIN
  193. SELECT @searchValue = customerId FROM customerMaster
  194. WHERE idNumber = @idNumber AND approvedDate is not null
  195. AND isActive = 'Y'
  196. AND ((isBlackListed is null) or (isBlackListed = 'N'))
  197. AND ((isDeleted is null) or (isDeleted = 'N'))
  198. AND ((islocked is null) or (islocked = 'N'))
  199. IF (@searchValue IS NULL)
  200. BEGIN
  201. EXEC proc_errorHandler 1, 'Invalid ID Number.', NULL
  202. RETURN
  203. END
  204. ELSE
  205. BEGIN
  206. UPDATE customerMaster SET isLoan='N' WHERE customerid=@searchValue AND idNumber=@idNumber
  207. END
  208. EXEC proc_errorHandler 0, 'Success.', NULL
  209. END
  210. ELSE
  211. BEGIN
  212. SELECT @searchValue = customerId FROM customerMaster
  213. WHERE anotherIDNumber = @anotherIDNumber AND approvedDate is not null
  214. AND isActive = 'Y'
  215. AND ((isBlackListed is null) or (isBlackListed = 'N'))
  216. AND ((isDeleted is null) or (isDeleted = 'N'))
  217. AND ((islocked is null) or (islocked = 'N'))
  218. IF (@searchValue IS NULL)
  219. BEGIN
  220. EXEC proc_errorHandler 1, 'Invalid Another ID Number.', NULL
  221. RETURN
  222. END
  223. ELSE
  224. BEGIN
  225. UPDATE customerMaster SET isLoan='N' WHERE customerid=@searchValue AND anotherIDNumber=@anotherIDNumber
  226. END
  227. EXEC proc_errorHandler 0, 'Success.', NULL
  228. END
  229. END
  230. IF @flag = 'deleteLoan'
  231. BEGIN
  232. IF @idNumber IS NOT NULL
  233. BEGIN
  234. SELECT @searchValue = customerId FROM customerMaster
  235. WHERE idNumber = @idNumber AND approvedDate is not null
  236. AND isActive = 'Y'
  237. AND ((isBlackListed is null) or (isBlackListed = 'N'))
  238. AND ((isDeleted is null) or (isDeleted = 'N'))
  239. AND ((islocked is null) or (islocked = 'N'))
  240. IF (@searchValue IS NULL)
  241. BEGIN
  242. EXEC proc_errorHandler 1, 'Invalid ID Number.', NULL
  243. RETURN
  244. END
  245. ELSE
  246. BEGIN
  247. UPDATE customerMaster SET isLoan=NULL WHERE customerid=@searchValue AND idNumber=@idNumber
  248. END
  249. EXEC proc_errorHandler 0, 'Success.', NULL
  250. END
  251. ELSE
  252. BEGIN
  253. SELECT @searchValue = customerId FROM customerMaster
  254. WHERE anotherIDNumber = @anotherIDNumber AND approvedDate is not null
  255. AND isActive = 'Y'
  256. AND ((isBlackListed is null) or (isBlackListed = 'N'))
  257. AND ((isDeleted is null) or (isDeleted = 'N'))
  258. AND ((islocked is null) or (islocked = 'N'))
  259. IF (@searchValue IS NULL)
  260. BEGIN
  261. EXEC proc_errorHandler 1, 'Invalid Another ID Number.', NULL
  262. RETURN
  263. END
  264. ELSE
  265. BEGIN
  266. UPDATE customerMaster SET isLoan=NULL WHERE customerid=@searchValue AND anotherIDNumber=@anotherIDNumber
  267. END
  268. EXEC proc_errorHandler 0, 'Success.', NULL
  269. END
  270. END
  271. IF @flag = 'issueCoupon'
  272. BEGIN
  273. SELECT @searchValue = COUNT(rowId) FROM CouponSetup
  274. WHERE rowId = @coupon AND isActive = 'Y'
  275. AND @today BETWEEN startDate AND endDate
  276. IF (@searchValue IS NULL) OR (@searchValue = 0)
  277. BEGIN
  278. EXEC proc_errorHandler 1, 'Invalid Coupon.', NULL
  279. RETURN
  280. END
  281. SELECT @searchValue = customerId FROM customerMaster WHERE email = @email
  282. IF (@searchValue IS NULL) OR (@email IS NULL)
  283. BEGIN
  284. EXEC proc_errorHandler 1, 'Invalid Email.', NULL
  285. RETURN
  286. END
  287. INSERT CouponIssue
  288. SELECT @searchValue,
  289. rowId,
  290. NULL,
  291. startDate,
  292. endDate,
  293. NULL,
  294. NULL,
  295. @today,
  296. @agentID,
  297. 'Y',
  298. 0
  299. FROM CouponSetup
  300. WHERE rowid = @coupon AND isActive = 'Y' AND @today BETWEEN startDate and endDate
  301. EXEC proc_errorHandler 0, 'Success.', NULL
  302. END
  303. IF @flag = 'withdrawCoupon'
  304. BEGIN
  305. IF @coupon = ''
  306. BEGIN
  307. UPDATE CouponIssue
  308. SET isActive = 'N', createdBy = @agentID, createdDate = @today
  309. WHERE rowId = @rowId
  310. END
  311. ELSE
  312. BEGIN
  313. UPDATE CouponIssue
  314. SET isActive = 'N', createdBy = @agentID, createdDate = @today
  315. WHERE rowId = @rowId AND couponId = @coupon
  316. END
  317. EXEC proc_errorHandler 0, 'Success.', NULL
  318. END
  319. END TRY
  320. BEGIN CATCH
  321. IF @@TRANCOUNT > 0
  322. ROLLBACK TRANSACTION
  323. DECLARE @errorMessage VARCHAR(max)
  324. SET @errorMessage = Error_message()
  325. EXEC Proc_errorhandler 1, @errorMessage, NULL
  326. END CATCH
  327. END