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.

396 lines
18 KiB

  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[mobile_proc_OTPRequest] Script Date: 10/20/2023 11:35:50 AM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. ALTER PROC [dbo].[mobile_proc_OTPRequest] (
  9. @FLAG VARCHAR(20)
  10. ,@OTP_CODE VARCHAR(6)
  11. ,@USER_ID VARCHAR(150)
  12. ,@REQUEST_FOR VARCHAR(15) = NULL
  13. ,@RECEIVER_ID BIGINT = NULL
  14. )
  15. AS
  16. ;
  17. ----------------------------------------------
  18. -- #101 , #361 - CHANGES FOR MOBILE MULTI LINGUAL
  19. -- #501,500 -Prompt for OTP when editing receiver
  20. -- #597- Change OPT valid for 15 mins
  21. -- #17825 changes for email template
  22. -- #20532 otp email for user reg from customer portal
  23. ----------------------------------------------
  24. SET NOCOUNT ON;
  25. SET XACT_ABORT ON;
  26. BEGIN
  27. DECLARE @ROW_ID BIGINT = NULL
  28. ,@IS_EXPIRED BIT = 0
  29. ,@IS_USED BIT = 0
  30. ,@MOBILE VARCHAR(30)
  31. ,@EXPIRE_MINUTES TINYINT = 15
  32. ,@CURRENT_OTP VARCHAR(10)
  33. ,@REQUEST_MINUTES INT
  34. ,@fcmid VARCHAR(250)
  35. ,@custName VARCHAR(200)
  36. ,@mobileNo VARCHAR(500)
  37. IF @FLAG = 'REQUEST'
  38. BEGIN
  39. IF @USER_ID IS NULL
  40. OR (
  41. NOT EXISTS (
  42. SELECT *
  43. FROM CUSTOMERMASTER(NOLOCK)
  44. WHERE USERNAME = @USER_ID
  45. )
  46. AND NOT EXISTS (
  47. SELECT *
  48. FROM CUSTOMERMASTERTEMP(NOLOCK)
  49. WHERE USERNAME = @USER_ID
  50. )
  51. )
  52. BEGIN
  53. SELECT 1 Code
  54. ,'Invalid user!' Msg
  55. ,NULL Id
  56. RETURN
  57. END
  58. IF @REQUEST_FOR = 'REGISTER'
  59. BEGIN
  60. IF EXISTS (
  61. SELECT *
  62. FROM TBL_MOBILE_OTP_REQUEST(NOLOCK)
  63. WHERE [USER_ID] = @USER_ID
  64. AND IS_SUCCESS = 1
  65. AND REQUEST_FOR = 'REGISTER'
  66. )
  67. BEGIN
  68. SELECT 2 Code
  69. ,'User already verified!' Msg
  70. ,NULL Id
  71. RETURN
  72. END
  73. --SELECT @custName = CONCAT(ISNULL(firstName,''), ' ', ISNULL(middleName,''), ' ', ISNULL(lastName1,'')) FROM customerMaster WHERE email = @USER_ID
  74. SELECT @CURRENT_OTP = OTP_CODE
  75. ,@custName = CONCAT (
  76. ISNULL(cm.firstName, '')
  77. ,' '
  78. ,ISNULL(cm.middleName, '')
  79. ,' '
  80. ,ISNULL(cm.lastName1, '')
  81. )
  82. ,@REQUEST_MINUTES = DATEDIFF(MINUTE, REQUESTED_DATE, GETDATE())
  83. ,@mobileNo = cm.mobile
  84. FROM TBL_MOBILE_OTP_REQUEST otp
  85. LEFT JOIN CustomerMasterTemp cm ON otp.USER_ID = cm.email
  86. WHERE [USER_ID] = @USER_ID
  87. AND REQUEST_FOR = 'REGISTER'
  88. AND IS_EXPIRED = 0
  89. END
  90. --ELSE IF @REQUEST_FOR = 'RECEIVER_EDIT'
  91. --BEGIN
  92. -- IF EXISTS(SELECT * FROM TBL_MOBILE_OTP_REQUEST(NOLOCK) WHERE [USER_ID] = @USER_ID AND IS_SUCCESS = 1 AND REQUEST_FOR = 'RECEIVER_EDIT')
  93. -- BEGIN
  94. -- SELECT 5 Code, 'Receiver Edit already verified!' Msg, NULL Id
  95. -- RETURN
  96. -- END
  97. -- SELECT @CURRENT_OTP = OTP_CODE, @REQUEST_MINUTES = DATEDIFF(MINUTE, REQUESTED_DATE, GETDATE())
  98. -- FROM TBL_MOBILE_OTP_REQUEST
  99. -- WHERE [USER_ID] = @USER_ID
  100. -- AND REQUEST_FOR = 'RECEIVER_EDIT'
  101. -- AND IS_EXPIRED = 0
  102. --END
  103. --ELSE IF @REQUEST_FOR = 'RECEIVER'
  104. --BEGIN
  105. -- IF @RECEIVER_ID IS NULL
  106. -- BEGIN
  107. -- SELECT 3 Code
  108. -- ,'Receiver ID can not be null for Receiver OTP Request!' Msg
  109. -- ,NULL Id
  110. -- RETURN
  111. -- END
  112. -- IF EXISTS (
  113. -- SELECT *
  114. -- FROM TBL_MOBILE_OTP_REQUEST(NOLOCK)
  115. -- WHERE [USER_ID] = @USER_ID
  116. -- AND IS_SUCCESS = 1
  117. -- AND REQUEST_FOR = 'RECEIVER'
  118. -- AND RECEIVER_ID = @RECEIVER_ID
  119. -- )
  120. -- BEGIN
  121. -- SELECT 4 Code
  122. -- ,'Receiver already verified!' Msg
  123. -- ,NULL Id
  124. -- RETURN
  125. -- END
  126. -- SELECT @CURRENT_OTP = OTP_CODE
  127. -- ,@custName = CONCAT (
  128. -- ISNULL(cm.firstName, '')
  129. -- ,' '
  130. -- ,ISNULL(cm.middleName, '')
  131. -- ,' '
  132. -- ,ISNULL(cm.lastName1, '')
  133. -- )
  134. -- ,@REQUEST_MINUTES = DATEDIFF(MINUTE, REQUESTED_DATE, GETDATE())
  135. -- FROM TBL_MOBILE_OTP_REQUEST otp
  136. -- LEFT JOIN customerMaster cm ON otp.USER_ID = cm.email
  137. -- WHERE [USER_ID] = @USER_ID
  138. -- AND RECEIVER_ID = @RECEIVER_ID
  139. -- AND REQUEST_FOR = 'RECEIVER'
  140. -- AND IS_EXPIRED = 0
  141. --END
  142. IF @REQUEST_FOR = 'REGISTER'
  143. OR @REQUEST_FOR = 'RECEIVER'
  144. BEGIN
  145. IF @CURRENT_OTP IS NOT NULL
  146. AND @REQUEST_MINUTES <= @EXPIRE_MINUTES
  147. BEGIN
  148. SELECT @mobileNo = mobile from customerMaster where email = @USER_ID
  149. SELECT 103 Code
  150. ,'Success, Old OTP used' Msg
  151. ,@CURRENT_OTP Id
  152. ,@custName Extra
  153. ,@mobileNo Extra2
  154. RETURN
  155. END
  156. IF @CURRENT_OTP IS NOT NULL
  157. AND @REQUEST_MINUTES > @EXPIRE_MINUTES
  158. BEGIN
  159. UPDATE TBL_MOBILE_OTP_REQUEST
  160. SET IS_EXPIRED = 1
  161. ,MODIFIED_DATE = GETDATE()
  162. WHERE [USER_ID] = @USER_ID
  163. AND REQUEST_FOR = @REQUEST_FOR
  164. AND ISNULL(RECEIVER_ID, 1) = CASE
  165. WHEN @REQUEST_FOR = 'RECEIVER'
  166. THEN @RECEIVER_ID
  167. ELSE 1
  168. END
  169. AND OTP_CODE = @CURRENT_OTP
  170. END
  171. END
  172. IF (
  173. @custName IS NULL
  174. OR @custName = ''
  175. )
  176. BEGIN
  177. SELECT @custName = TRIM(REPLACE(CONCAT (
  178. FirstName + ' '
  179. ,MiddleName + ' '
  180. ,LastName1 + ' '
  181. ), ' ', ' '))
  182. FROM CustomerMasterTemp
  183. WHERE email = @USER_ID
  184. END
  185. IF (
  186. @mobileNo IS NULL
  187. OR @mobileNo = ''
  188. )
  189. BEGIN
  190. --SELECT @mobileNo = mobile
  191. --FROM CustomerMasterTemp
  192. --WHERE email = @USER_ID
  193. SELECT @mobileNo = (
  194. SELECT TOP 1 mobile
  195. FROM CustomerMasterTemp
  196. WHERE email = @USER_ID
  197. UNION ALL
  198. SELECT TOP 1 mobile
  199. FROM customerMaster
  200. WHERE email = @USER_ID
  201. )
  202. END
  203. INSERT INTO TBL_MOBILE_OTP_REQUEST (
  204. [USER_ID]
  205. ,OTP_CODE
  206. ,REQUESTED_DATE
  207. ,IS_EXPIRED
  208. ,IS_SUCCESS
  209. ,REQUEST_FOR
  210. ,RECEIVER_ID
  211. )
  212. SELECT @USER_ID
  213. ,@OTP_CODE
  214. ,GETDATE()
  215. ,0
  216. ,0
  217. ,@REQUEST_FOR
  218. ,@RECEIVER_ID
  219. SELECT 100 Code
  220. ,'Success' Msg
  221. ,@OTP_CODE Id
  222. ,@custName Extra
  223. ,@mobileNo Extra2
  224. END
  225. ELSE IF @FLAG = 'SUBMIT'
  226. BEGIN
  227. IF @USER_ID IS NULL
  228. OR (
  229. NOT EXISTS (
  230. SELECT *
  231. FROM CUSTOMERMASTER(NOLOCK)
  232. WHERE USERNAME = @USER_ID
  233. )
  234. AND NOT EXISTS (
  235. SELECT *
  236. FROM CUSTOMERMASTERTEMP(NOLOCK)
  237. WHERE USERNAME = @USER_ID
  238. )
  239. )
  240. BEGIN
  241. SELECT 1 Code
  242. ,'Invalid user!' Msg
  243. ,NULL Id
  244. RETURN
  245. END
  246. IF @REQUEST_FOR = 'RECEIVER'
  247. OR @REQUEST_FOR = 'RECEIVER_EDIT'
  248. BEGIN
  249. SELECT @ROW_ID = ROW_ID
  250. ,@IS_EXPIRED = IS_EXPIRED
  251. ,@IS_USED = IS_SUCCESS
  252. ,@custName = CONCAT (
  253. ISNULL(cm.firstName, '')
  254. ,' '
  255. ,ISNULL(cm.middleName, '')
  256. ,' '
  257. ,ISNULL(cm.lastName1, '')
  258. )
  259. FROM TBL_MOBILE_OTP_REQUEST(NOLOCK) otp
  260. LEFT JOIN customerMaster cm ON otp.USER_ID = cm.email
  261. WHERE [USER_ID] = @USER_ID
  262. AND OTP_CODE = @OTP_CODE
  263. AND REQUEST_FOR = @REQUEST_FOR
  264. AND RECEIVER_ID = @RECEIVER_ID
  265. END
  266. ELSE
  267. BEGIN
  268. SELECT @ROW_ID = ROW_ID
  269. ,@IS_EXPIRED = IS_EXPIRED
  270. ,@IS_USED = IS_SUCCESS
  271. ,@fcmid = ISNULL(mu.deviceId, '')
  272. ,@custName = CONCAT (
  273. ISNULL(cm.firstName, '')
  274. ,' '
  275. ,ISNULL(cm.middleName, '')
  276. ,' '
  277. ,ISNULL(cm.lastName1, '')
  278. )
  279. FROM TBL_MOBILE_OTP_REQUEST t(NOLOCK)
  280. LEFT JOIN mobile_userRegistration mu ON t.[USER_ID] = mu.username
  281. LEFT JOIN customerMaster cm ON t.USER_ID = cm.email
  282. WHERE [USER_ID] = @USER_ID
  283. AND OTP_CODE = @OTP_CODE
  284. AND REQUEST_FOR = @REQUEST_FOR
  285. END
  286. IF @ROW_ID IS NULL
  287. BEGIN
  288. SELECT 2 Code
  289. ,'Invalid OTP!' Msg
  290. ,NULL Id
  291. RETURN
  292. END
  293. IF @IS_EXPIRED = 1
  294. BEGIN
  295. SELECT 3 Code
  296. ,'OTP is already expired!' Msg
  297. ,NULL Id
  298. RETURN
  299. END
  300. IF @IS_USED = 1
  301. BEGIN
  302. SELECT 4 Code
  303. ,'OTP is already used!' Msg
  304. ,NULL Id
  305. RETURN
  306. END
  307. IF EXISTS (
  308. SELECT TOP 1 1
  309. FROM TBL_MOBILE_OTP_REQUEST(NOLOCK)
  310. WHERE ROW_ID = @ROW_ID
  311. AND DATEDIFF(MINUTE, REQUESTED_DATE, GETDATE()) > @EXPIRE_MINUTES
  312. )
  313. BEGIN
  314. UPDATE TBL_MOBILE_OTP_REQUEST
  315. SET IS_EXPIRED = 1
  316. WHERE ROW_ID = @ROW_ID
  317. SELECT 3 Code
  318. ,'OTP is already expired!' Msg
  319. ,NULL Id
  320. RETURN
  321. END
  322. UPDATE TBL_MOBILE_OTP_REQUEST
  323. SET VERIFIED_DATE = GETDATE()
  324. ,IS_SUCCESS = 1
  325. WHERE ROW_ID = @ROW_ID
  326. IF @REQUEST_FOR = 'RECEIVER'
  327. UPDATE RECEIVERINFORMATION
  328. SET isOTPVerified = 1
  329. WHERE RECEIVERID = @RECEIVER_ID
  330. ELSE
  331. BEGIN
  332. IF EXISTS (
  333. SELECT *
  334. FROM CUSTOMERMASTER(NOLOCK)
  335. WHERE username = @USER_ID
  336. )
  337. UPDATE CUSTOMERMASTER
  338. SET isEmailVerified = 1
  339. WHERE username = @USER_ID
  340. ELSE
  341. UPDATE CUSTOMERMASTERTEMP
  342. SET isEmailVerified = 1
  343. WHERE username = @USER_ID
  344. IF EXISTS (
  345. SELECT *
  346. FROM CUSTOMERMASTER(NOLOCK)
  347. WHERE email = @USER_ID
  348. )
  349. UPDATE CUSTOMERMASTER
  350. SET isEmailVerified = 1
  351. WHERE email = @USER_ID
  352. ELSE
  353. UPDATE CUSTOMERMASTERTEMP
  354. SET isEmailVerified = 1
  355. WHERE email = @USER_ID
  356. END
  357. SELECT 0 Code
  358. ,'OTP verified successfully.' Msg
  359. ,@ROW_ID Id
  360. ,@EXPIRE_MINUTES Extra
  361. ,@fcmid Extra2
  362. END
  363. END