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.
 
 
 

942 lines
29 KiB

USE [FastMoneyPro_Remit]
GO
/****** Object: StoredProcedure [dbo].[mobile_proc_userRegistration] Script Date: 7/4/2019 11:35:48 AM ******/
DROP PROCEDURE [dbo].[mobile_proc_userRegistration]
GO
/****** Object: StoredProcedure [dbo].[mobile_proc_userRegistration] Script Date: 7/4/2019 11:35:48 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE mobile_proc_userRegistration
@flag VARCHAR(30)
,@MSISDN VARCHAR(20) = NULL --Mobile Number
,@email VARCHAR(100) = NULL
,@code VARCHAR(50) = NULL --one time password
,@codeType VARCHAR(30) = NULL --one time password
,@userName VARCHAR(100) = NULL
,@Password VARCHAR(100) = NULL
,@newPassword VARCHAR(100) = NULL
,@Imei VARCHAR(256) = NULL --Imei Number of Mobile
,@appVersion VARCHAR(100) = NULL
,@deviceId VARCHAR(100) = NULL
,@osVersion VARCHAR(100) = NULL
,@phoneBrand VARCHAR(100) = NULL
,@phoneOs VARCHAR(100) = NULL
,@scope VARCHAR(50) = NULL
,@clientId VARCHAR(100) = NULL
,@answer DATE = NULL --password secutiry question applies for the dob
,@refWalletAccNo VARCHAR(50) = NULL
,@cmRegistrationId VARCHAR(MAX) = NULL
,@dpUrl VARCHAR(300) = NULL
AS
SET NOCOUNT ON;
SET XACT_ABORT ON;
BEGIN TRY
IF ISNULL(@username,'')=''
BEGIN
SELECT '1' ErrorCode, 'User Id not defined.' Msg ,NULL ID
RETURN
END
IF ISNULL(@scope,'')<>'mobile_app'
BEGIN
SELECT '1' ErrorCode, 'Application scope is not valid for this user.' Msg ,NULL ID
RETURN
END
----------------------- Local variables declaration ###STARTS------------------------
DECLARE @_customerId BIGINT
,@_imei VARCHAR(256)
,@_otpUsed BIT
,@_scope VARCHAR(50)
,@_isDeleted CHAR(1)
,@_errorMsg VARCHAR(MAX)
,@_isExists BIT=0
,@_Otp VARCHAR(50)
,@_pwdRecoveryCode VARCHAR(50)
,@_dob DATE
,@_errorCode VARCHAR(50)
,@_isVerified BIT=0
,@_password VARCHAR(50)
,@_createdDate DATETIME
,@_count INT
,@_onlineUser CHAR(1)
,@_createdBy VARCHAR(100)
----------------------- Local variables declaration ###ENDS------------------------
IF @flag='signup' --first time user create(DONE)
BEGIN
------------- ### Check if the user trying to signup is already exists ###STARTS------------
IF EXISTS(
SELECT 'x' FROM dbo.customerMaster(NOLOCK) cm
WHERE cm.email=@userName OR cm.mobile=@userName
)
BEGIN
SELECT '1' ErrorCode , @userName +' already exists' Msg ,@userName ID
RETURN;
END
IF EXISTS(
SELECT 'x' FROM dbo.customerMasterTemp(NOLOCK) cm
WHERE cm.email=@userName OR cm.mobile=@userName
)
BEGIN
SELECT '1' ErrorCode , @userName +' already exists' Msg ,@userName ID
RETURN;
END
------------- ### Check if the user trying to signup is already exists ###ENDS------------
------------- ### Check device registration limit ###STARTS------------
--IF EXISTS(SELECT 'x' FROM mobile_userRegistration(NOLOCK) WHERE imei=@imei GROUP BY imei HAVING COUNT(imei)>5)
--BEGIN
-- SELECT @_errorMsg = 'This device has exceeded the app registration limit.'
-- SELECT '1' ErrorCode, @_errorMsg Msg ,NULL ID
-- RETURN
--END
------------- ### Check device registration limit ###ENDS------------
BEGIN TRANSACTION
INSERT INTO customerMasterTemp(mobile,email,customerpassword,createdBy)
SELECT @MSISDN,@email,dbo.FNAEncryptString(@Password),@scope
SET @_customerId=SCOPE_IDENTITY()
INSERT INTO mobile_userRegistration (customerId,username, OTP,OTP_Used,createdDate,IMEI,clientId)
SELECT @_customerId,@userName,@code,0,GETDATE(),@Imei,@clientId
INSERT INTO OTPHistory(username,OTP,OTP_Used,createdDate,codeType,customerId)
SELECT @userName,@code,0,GETDATE(),'dvc',@_customerId
IF @@TRANCOUNT > 0
COMMIT TRANSACTION
SELECT '0' ErrorCode , 'Registration Success' Msg ,@userName ID
RETURN
-------## if record already exists ##ENDS---------------
END
ELSE IF @flag='v-otp' --validate otp (DONE)
BEGIN
--SELECT '1' ErrorCode, 'Invalid device verification code.' Msg ,NULL ID
--RETURN
IF ISNULL(@code,'')=''
BEGIN
SELECT '1' ErrorCode, 'Device verification code is required.' Msg ,NULL ID
RETURN
END
IF ISNULL(@phoneOs,'') NOT IN('android','ios')
BEGIN
SELECT '1' ErrorCode, 'Invalid Device type(PhoneOs).' Msg ,NULL ID
RETURN
END
------------- ### Check if the user trying to validate is already exists ###STARTS------------
IF NOT EXISTS(
SELECT 'x' FROM dbo.customerMasterTemp(NOLOCK) cm
WHERE (cm.email=@userName OR cm.mobile=@userName) AND ISNULL(cm.isDeleted,'N')='N'
)
BEGIN
SELECT @_errorMsg = 'User with contact Info ' + @username + ' does not exists. If you are a new user, then sign up and proceed further.'
SELECT '1' ErrorCode, @_errorMsg Msg ,NULL ID
RETURN
END
------------- ### Check if the user trying to validate is already exists ###ENDS------------
SELECT
@_customerId=cm.customerId
FROM dbo.customerMasterTemp(NOLOCK) cm
WHERE cm.email=@userName OR cm.mobile=@userName
SELECT TOP 1
@_imei=v.imei
,@_Otp=otp.OTP
,@_otpUsed=otp.OTP_Used
,@_isDeleted=ISNULL(cust.isDeleted,'N')
,@_createdDate=DATEADD(MINUTE,20,otp.createdDate)
FROM customermasterTemp(NOLOCK) cust
LEFT JOIN mobile_userRegistration(NOLOCK) v ON cust.customerId=v.customerId
INNER JOIN dbo.OTPHistory(NOLOCK) otp ON cust.customerId=otp.customerId
WHERE cust.customerId=@_customerId AND otp.codeType='dvc'
ORDER BY otp.rowId DESC
--INNER JOIN OTPHistory otp(NOLOCK) ON v.username=otp.username
--WHERE cust.customerId=@_customerId AND otp.codeType='dvc'
--ORDER BY otp.rowId DESC
--SELECT TOP 1
-- @_imei=v.imei
-- ,@_Otp=otp.OTP
-- ,@_otpUsed=otp.OTP_Used
-- ,@_isDeleted=ISNULL(cust.isDeleted,'N')
-- ,@_createdDate=DATEADD(MINUTE,20,otp.createdDate)
--FROM customermaster(NOLOCK) cust
--LEFT JOIN mobile_userRegistration(NOLOCK) v ON cust.customerId=v.customerId
--INNER JOIN OTPHistory otp(NOLOCK) ON v.username=otp.username
--WHERE cust.customerId=@_customerId AND otp.codeType='dvc'
--ORDER BY otp.rowId DESC
IF @_Otp=@code AND DATEDIFF(MINUTE, GETDATE() ,@_createdDate)>0
AND @_imei=@Imei AND @_otpUsed=0
BEGIN
BEGIN TRANSACTION
UPDATE mobile_userRegistration
SET OTP_Used = 1
,appVersion=@appVersion
,phoneBrand=@phoneBrand
,phoneOs=@phoneOs
,osVersion=@osVersion
,deviceId=@deviceId
WHERE imei=@Imei AND otp=@code
--UPDATE OTPHistory
-- SET OTP_Used = 1
--WHERE username=@userName AND otp=@code
UPDATE OTPHistory
SET OTP_Used = 1
WHERE customerId=@_customerId AND otp=@code
IF EXISTS(SELECT 'x' FROM dbo.customerMasterTemp(NOLOCK)cm WHERE cm.email=@userName)
BEGIN
UPDATE cm
SET cm.isEmailVerified=1,
cm.isMobileVerified=0
FROM dbo.customerMasterTemp(NOLOCK) cm WHERE cm.email=@userName
END
ELSE
BEGIN
UPDATE cm
SET cm.isMobileVerified=1,
cm.isEmailVerified=0
FROM dbo.customerMasterTemp(NOLOCK) cm WHERE cm.mobile=@userName
END
COMMIT TRANSACTION
SELECT '0' ErrorCode, 'Success' Msg, NULL ID
RETURN
END
ELSE IF ISNULL(@_Otp,'')<>@code
BEGIN
SELECT '1' ErrorCode, 'Please enter valid verification code sent to your ' + @userName Msg ,NULL ID
RETURN
END
ELSE IF DATEDIFF(MINUTE, GETDATE() ,@_createdDate)<=0
BEGIN
SELECT '1' ErrorCode, 'Device verification code expired. Please re-send code and try again.' Msg ,NULL ID
RETURN
END
ELSE IF @_imei=@Imei AND @_otpUsed=1
BEGIN
SELECT '1' ErrorCode, 'User already verified.' Msg ,NULL ID
RETURN
END
ELSE IF @_imei<>@Imei
BEGIN
SELECT '1' ErrorCode, 'User does not belongs to this device for verification.' Msg ,NULL ID
RETURN
END
ELSE
BEGIN
SELECT '1' ErrorCode, 'Invalid device verification code.' Msg ,NULL ID
RETURN
END
END
ELSE IF @flag='re-code' --resend OTP(DONE)
BEGIN
IF ISNULL(@scope,'')<>'mobile_app'
BEGIN
SELECT '1' ErrorCode, 'Application scope is not valid for this user.' Msg ,NULL ID
RETURN
END
IF ISNULL(@codeType,'') NOT IN('dvc','prc')
BEGIN
SELECT '1' ErrorCode, 'Requested code type is not valid.' Msg ,NULL ID
RETURN
END
DECLARE @today VARCHAR(15)=CONVERT(DATE, GETDATE(),101)
------------- ### Check if the user trying to re-send code is exists or not ###STARTS------------
IF EXISTS(
SELECT 'x' FROM dbo.CustomerMasterTemp(NOLOCK) cm
WHERE (cm.email=@userName OR cm.mobile=@userName) AND ISNULL(cm.isDeleted,'N')='N'
)
BEGIN
SELECT
@_customerId=cm.customerId
FROM dbo.customerMasterTemp(NOLOCK) cm
WHERE cm.email=@userName OR cm.mobile=@userName
SELECT TOP 1
@_imei=v.imei
,@_Otp=otp.OTP
,@_otpUsed=otp.OTP_Used
FROM dbo.CustomerMasterTemp(NOLOCK) cust
LEFT JOIN mobile_userRegistration(NOLOCK) v ON cust.customerId=v.customerId
INNER JOIN OTPHistory otp(NOLOCK) ON cust.customerId=otp.customerId
WHERE cust.customerId=@_customerId AND otp.codeType=@codeType
ORDER BY otp.rowId DESC
IF @_otpUsed=1 AND @codeType='dvc' --for device verification code
BEGIN
SELECT '1' ErrorCode, 'User already verified. You cannot re-send code for the user who is already verified.' Msg ,NULL ID
RETURN
END
SELECT @_count=COUNT('x')
FROM dbo.CustomerMasterTemp(NOLOCK) cust
LEFT JOIN mobile_userRegistration(NOLOCK) v ON cust.customerId=v.customerId
INNER JOIN OTPHistory otp(NOLOCK) ON cust.customerId=otp.customerId
WHERE cust.customerId=@_customerId
AND otp.codeType=@codeType
AND v.imei=@imei
AND otp.createdDate BETWEEN @today AND @today+ ' 23:59:59'
IF ISNULL(@_count,0)>10
BEGIN
SELECT '1' ErrorCode, 'Your device has been blocked. Re-send code attempts exceeded from same device.' Msg ,NULL ID
RETURN
END
INSERT INTO OTPHistory(username,OTP,OTP_Used,createdDate,codeType,customerId)
SELECT @userName,@code,0,GETDATE(),@codeType,@_customerId
SELECT '0' ErrorCode, 'Success' Msg ,@code ID
RETURN
END
IF NOT EXISTS(
SELECT 'x' FROM dbo.customerMaster(NOLOCK) cm
WHERE (cm.email=@userName OR cm.mobile=@userName) AND ISNULL(cm.isDeleted,'N')='N'
)
BEGIN
SELECT @_errorMsg = 'Invalid UserId.'
SELECT '1' ErrorCode, @_errorMsg Msg ,NULL ID
RETURN
END
------------- ### Check if the user trying to re-send code is exists or not ###ENDS------------
SELECT
@_customerId=cm.customerId
FROM dbo.customerMaster(NOLOCK) cm
WHERE cm.email=@userName OR cm.mobile=@userName
--SELECT TOP 1
-- @_imei=v.imei
-- ,@_Otp=otp.OTP
-- ,@_otpUsed=otp.OTP_Used
--FROM mobile_userRegistration(NOLOCK) v
--LEFT JOIN OTPHistory otp(NOLOCK) ON v.username=otp.username
--WHERE otp.username=@userName AND otp.codeType=@codeType
--ORDER BY otp.rowId DESC
SELECT TOP 1
@_imei=v.imei
,@_Otp=otp.OTP
,@_otpUsed=otp.OTP_Used
FROM customermaster(NOLOCK) cust
LEFT JOIN mobile_userRegistration(NOLOCK) v ON cust.customerId=v.customerId
INNER JOIN OTPHistory otp(NOLOCK) ON cust.customerId=otp.customerId
WHERE cust.customerId=@_customerId AND otp.codeType=@codeType
ORDER BY otp.rowId DESC
------------- ### Check if the user trying to re-send code is already verified or not ###STARTS------------
IF @_otpUsed=1 AND @codeType='dvc' --for device verification code
BEGIN
SELECT '1' ErrorCode, 'User already verified. You cannot re-send code for the user who is already verified.' Msg ,NULL ID
RETURN
END
------------- ### Check if the user trying to re-send code is already verified or not ###ENDS------------
------------- ### Check attempts of re-send code from same device ###STARTS------------
SELECT @_count=COUNT('x')
FROM customermaster(NOLOCK) cust
LEFT JOIN mobile_userRegistration(NOLOCK) v ON cust.customerId=v.customerId
INNER JOIN OTPHistory otp(NOLOCK) ON cust.customerId=otp.customerId
WHERE cust.customerId=@_customerId
AND otp.codeType=@codeType
AND v.imei=@imei
AND otp.createdDate BETWEEN @today AND @today+ ' 23:59:59'
IF ISNULL(@_count,0)>10
BEGIN
SELECT '1' ErrorCode, 'Your device has been blocked. Re-send code attempts exceeded from same device.' Msg ,NULL ID
RETURN
END
------------- ### Check attempts of re-send code ###ENDS------------
INSERT INTO OTPHistory(username,OTP,OTP_Used,createdDate,codeType,customerId)
SELECT @userName,@code,0,GETDATE(),@codeType,@_customerId
SELECT '0' ErrorCode, 'Success' Msg ,@code ID
RETURN
END
ELSE IF @flag='pwd-reset-rq' --password reset request(DONE)
BEGIN
------------- ### Check if the user trying to re-send code is exists or not ###STARTS------------
IF EXISTS(
SELECT 'x' FROM dbo.CustomerMasterTemp(NOLOCK) cm
WHERE (cm.email=@userName OR cm.mobile=@userName) AND ISNULL(cm.isDeleted,'N')='N'
)
BEGIN
SELECT
@_customerId=cm.customerId
FROM dbo.CustomerMasterTemp(NOLOCK) cm
WHERE cm.email=@userName OR cm.mobile=@userName
INSERT INTO OTPHistory(username,OTP,OTP_Used,createdDate,codeType,customerId)
SELECT @userName,@code,0,GETDATE(),'prc',@_customerId
SELECT ErrorCode= '0'
,userId=@userName
,isVerified='false'
RETURN
END
IF NOT EXISTS(
SELECT 'x' FROM dbo.customerMaster(NOLOCK) cm
WHERE (cm.email=@userName OR cm.mobile=@userName) AND ISNULL(cm.isDeleted,'N')='N'
)
BEGIN
SELECT @_errorMsg = 'User with contact Info ' + @username + ' does not exists. If you are a new user, then sign up and proceed further.'
SELECT '1' ErrorCode, @_errorMsg Msg ,NULL ID
RETURN
END
------------- ### Check if the user trying to re-send code is exists or not ###ENDS------------
SELECT
@_customerId=cm.customerId
FROM dbo.customerMaster(NOLOCK) cm
WHERE cm.email=@userName OR cm.mobile=@userName
IF EXISTS(SELECT 'x'
FROM customermaster(NOLOCK) cust
WHERE cust.customerId=@_customerId AND ISNULL(cust.verifiedDate,'')<>''
)
BEGIN
SELECT ErrorCode= '0'
,userId=@userName
,isVerified='true'
RETURN
END
ELSE
BEGIN
INSERT INTO OTPHistory(username,OTP,OTP_Used,createdDate,codeType,customerId)
SELECT @userName,@code,0,GETDATE(),'prc',@_customerId
SELECT ErrorCode= '0'
,userId=@userName
,isVerified='false'
RETURN
END
END
ELSE IF @flag='qstn_validate' --reset password question validation(DONE)
BEGIN
IF ISNULL(@answer,'')=''
BEGIN
SELECT '1' ErrorCode, 'The answer field is required.' Msg ,NULL ID
RETURN
END
------------- ### Check if the user trying to validate is already exists ###STARTS------------
IF NOT EXISTS(
SELECT 'x' FROM dbo.customerMaster(NOLOCK) cm
WHERE cm.email=@userName OR cm.mobile=@userName AND ISNULL(cm.isDeleted,'N')='N'
)
BEGIN
SELECT @_errorMsg = 'User with contact Info ' + @username + ' does not exists. If you are a new user, then sign up and proceed further.'
SELECT '1' ErrorCode, @_errorMsg Msg ,NULL ID
RETURN
END
------------- ### Check if the user trying to validate is already exists ###ENDS------------
SELECT
@_customerId=cm.customerId
FROM dbo.customerMaster(NOLOCK) cm
WHERE cm.email=@userName OR cm.mobile=@userName
IF NOT EXISTS(
SELECT 'x' FROM dbo.customerMaster(NOLOCK) cm
WHERE cm.customerId=@_customerId AND ISNULL(cm.dob,'')=@answer
)
BEGIN
SELECT '1' ErrorCode, 'Your Date of Birth does not matches with your saved details' Msg ,NULL ID
RETURN
END
INSERT INTO OTPHistory(username,OTP,OTP_Used,createdDate,codeType,customerId)
SELECT @userName,@code,0,GETDATE(),'prc',@_customerId
SELECT '0' ErrorCode, 'Correct answer.' Msg ,@userName ID
RETURN
END
ELSE IF @flag='prc-validate' --password recovery validation(DONE)
BEGIN
IF ISNULL(@code,'')=''
BEGIN
SELECT '1' ErrorCode, 'Password Recovery code is required.' Msg ,NULL ID
RETURN
END
------------- ### Check if the user trying to validate is already exists ###STARTS------------
IF EXISTS(
SELECT 'x' FROM dbo.CustomerMasterTemp(NOLOCK) cm
WHERE cm.email=@userName OR cm.mobile=@userName AND ISNULL(cm.isDeleted,'N')='N'
)
BEGIN
SELECT
@_customerId=cm.customerId
FROM dbo.customerMasterTemp(NOLOCK) cm
WHERE cm.email=@userName OR cm.mobile=@userName
SELECT TOP 1
@_Otp=otp.OTP
,@_otpUsed=otp.OTP_Used
,@_createdDate=DATEADD(MINUTE,20,otp.createdDate)
FROM dbo.OTPHistory(NOLOCK) otp
WHERE otp.customerId=@_customerId AND otp.codeType='prc' /* AND otp.OTP=@code */
ORDER BY otp.rowId DESC
IF @_Otp=@code AND DATEDIFF(MINUTE, GETDATE() ,@_createdDate)>0
AND @_otpUsed=0
BEGIN
--UPDATE OTPHistory
-- SET OTP_Used = 1
--WHERE username=@userName AND otp=@code
UPDATE OTPHistory
SET OTP_Used = 1
WHERE customerId=@_customerId AND otp=@code
SELECT '0' ErrorCode, 'Success' Msg, @userName ID
RETURN
END
IF @_otpUsed=1
BEGIN
SELECT '1' ErrorCode, 'Password recovery code already used.' Msg ,NULL ID
RETURN
END
ELSE IF ISNULL(@_Otp,'') <> @code
BEGIN
SELECT '1' ErrorCode, 'Invalid Password recovery code..' Msg ,NULL ID
RETURN
END
ELSE IF DATEDIFF(MINUTE, GETDATE() ,@_createdDate)<=0
BEGIN
SELECT '1' ErrorCode, 'Password recovery code expired. Please re-send code and try again.' Msg ,NULL ID
RETURN
END
ELSE
BEGIN
SELECT '1' ErrorCode, 'Invalid Password recovery code.' Msg ,NULL ID
RETURN
END
END
IF NOT EXISTS(
SELECT 'x' FROM dbo.customerMaster(NOLOCK) cm
WHERE cm.email=@username OR cm.mobile=@userName AND ISNULL(cm.isDeleted,'N')='N'
)
BEGIN
SELECT @_errorMsg = 'User with contact Info ' + @username + ' does not exists. If you are a new user, then sign up and proceed further.'
SELECT '1' ErrorCode, @_errorMsg Msg ,NULL ID
RETURN
END
------------- ### Check if the user trying to validate is already exists ###ENDS------------
SELECT
@_customerId=cm.customerId
FROM dbo.customerMaster(NOLOCK) cm
WHERE cm.email=@userName OR cm.mobile=@userName
--SELECT TOP 1
-- @_Otp=otp.OTP
-- ,@_otpUsed=otp.OTP_Used
-- ,@_createdDate=DATEADD(MINUTE,20,otp.createdDate)
--FROM dbo.OTPHistory(NOLOCK) otp
--WHERE otp.username=@userName AND otp.codeType='prc' AND otp.OTP=@code
--ORDER BY otp.rowId DESC
SELECT TOP 1
@_Otp=otp.OTP
,@_otpUsed=otp.OTP_Used
,@_createdDate=DATEADD(MINUTE,20,otp.createdDate)
FROM dbo.OTPHistory(NOLOCK) otp
WHERE otp.customerId=@_customerId AND otp.codeType='prc' /* AND otp.OTP=@code */
ORDER BY otp.rowId DESC
IF @_Otp=@code AND DATEDIFF(MINUTE, GETDATE() ,@_createdDate)>0
AND @_otpUsed=0
BEGIN
--UPDATE OTPHistory
-- SET OTP_Used = 1
--WHERE username=@userName AND otp=@code
UPDATE OTPHistory
SET OTP_Used = 1
WHERE customerId=@_customerId AND otp=@code
SELECT '0' ErrorCode, 'Success' Msg, @userName ID
RETURN
END
IF @_otpUsed=1
BEGIN
SELECT '1' ErrorCode, 'Password recovery code already used.' Msg ,NULL ID
RETURN
END
ELSE IF ISNULL(@_Otp,'') <> @code
BEGIN
SELECT '1' ErrorCode, 'Invalid Password recovery code..' Msg ,NULL ID
RETURN
END
ELSE IF DATEDIFF(MINUTE, GETDATE() ,@_createdDate)<=0
BEGIN
SELECT '1' ErrorCode, 'Password recovery code expired. Please re-send code and try again.' Msg ,NULL ID
RETURN
END
ELSE
BEGIN
SELECT '1' ErrorCode, 'Invalid Password recovery code.' Msg ,NULL ID
RETURN
END
END
ELSE IF @flag='u-pwd' --used to update user fields before login(DONE)
BEGIN
--SELECT TOP 1
-- @_customerId=cust.customerId
-- ,@_otpUsed=otp.OTP_Used
-- ,@_onlineUser=cust.onlineUser
--FROM customermaster(NOLOCK) cust
--LEFT JOIN mobile_userRegistration(NOLOCK) v ON cust.customerId=v.customerId
--INNER JOIN OTPHistory otp(NOLOCK) ON v.username=otp.username
--WHERE cust.email=@userName OR cust.mobile=@userName AND ISNULL(cust.createdBy, '')=@scope
--ORDER BY otp.rowId DESC
IF EXISTS(
SELECT 'x' FROM dbo.CustomerMasterTemp(NOLOCK) cm
WHERE cm.email=@userName OR cm.mobile=@userName AND ISNULL(cm.isDeleted,'N')='N'
)
BEGIN
SELECT TOP 1
@_customerId=cust.customerId
,@_otpUsed=otp.OTP_Used
,@_onlineUser=cust.onlineUser
,@_createdBy=cust.createdBy
FROM customermasterTemp(NOLOCK) cust
LEFT JOIN mobile_userRegistration(NOLOCK) v ON cust.customerId=v.customerId
LEFT JOIN OTPHistory(NOLOCK) otp ON cust.customerId=otp.customerId
WHERE cust.email=@userName OR cust.mobile=@userName AND ISNULL(cust.createdBy, '')=@scope
ORDER BY otp.rowId DESC
IF ISNULL(@_customerId,'')=''
BEGIN
SELECT '1' ErrorCode, 'Invalid username.' Msg ,@userName ID
RETURN
END
IF ISNULL(@Password,'')=''
BEGIN
SELECT '1' ErrorCode, 'The password field is Required.' Msg ,@userName ID
RETURN
END
IF @_otpUsed<>1 AND @_createdBy IN ('mobile','mobile_app')
BEGIN
SELECT '1' ErrorCode, 'To update your password, please verify your account first with the verification code sent to your ' + @userName Msg ,@userName ID
RETURN
END
UPDATE customermasterTemp SET
customerpassword=ISNULL(dbo.FNAEncryptString(@Password),customerPassword)
WHERE customerId=@_customerId
SELECT
errorCode='0'
,userId=@userName
,firstName=cm.firstName
,middleName=cm.middleName
,lastName=cm.lastName1
,nickName=cm.nickName
,email=ISNULL(cm.email,'')
,phone=ISNULL(cm.mobile,'')
,rewardPoint=CAST(ISNULL(cm.bonusPoint,0) AS DECIMAL)
,verificationCode=ISNULL(ur.OTP,'')
,VerificationCodeExpiryDate=''
,createdDate=ISNULL(ur.createdDate,'')
,userRoles=''
,active=CASE WHEN ISNULL(cm.isActive,'Y')='Y' THEN 1 ELSE 0 END
,kyc=CASE WHEN ISNULL(cm.createdDate,'') <> '' THEN 1 ELSE 0 END
,verified=CASE WHEN ISNULL(cm.verifiedDate,'') <> '' THEN 1 ELSE 0 END
,forgetCode=ISNULL(ur.passRecoveryCode,'')
,ForgetCodeExpiryDate=''
,primaryBankName=ISNULL(bl.BankName,'')
,walletNumber=ISNULL(cm.walletAccountNo,'')
,availableBalance=CAST([dbo].FNAGetCustomerACBal(@userName) AS DECIMAL)
,dpUrl=ISNULL(cm.dpUrl,'')
,cmRegistrationId=ISNULL(ur.cmRegistrationId,'')
FROM dbo.customerMasterTemp(NOLOCK) cm
LEFT JOIN dbo.mobile_userRegistration(NOLOCK) ur
ON ur.customerId=cm.customerId
LEFT JOIN dbo.vwBankLists bl WITH(NOLOCK)
ON bl.bankCode=cm.bankName
WHERE cm.customerId=@_customerId
RETURN
END
SELECT TOP 1
@_customerId=cust.customerId
,@_otpUsed=otp.OTP_Used
,@_onlineUser=cust.onlineUser
FROM customermaster(NOLOCK) cust
LEFT JOIN mobile_userRegistration(NOLOCK) v ON cust.customerId=v.customerId
LEFT JOIN OTPHistory(NOLOCK) otp ON cust.customerId=otp.customerId
WHERE cust.email=@userName OR cust.mobile=@userName AND ISNULL(cust.createdBy, '')=@scope
ORDER BY otp.rowId DESC
IF ISNULL(@_customerId,'')=''
BEGIN
SELECT '1' ErrorCode, 'Invalid username.' Msg ,@userName ID
RETURN
END
IF ISNULL(@Password,'')=''
BEGIN
SELECT '1' ErrorCode, 'The password field is Required.' Msg ,@userName ID
RETURN
END
IF @_otpUsed<>1 AND @_createdBy IN ('mobile','mobile_app')
BEGIN
SELECT '1' ErrorCode, 'To update your password, please verify your account first with the verification code sent to your ' + @userName Msg ,@userName ID
RETURN
END
UPDATE customermaster SET
customerpassword=ISNULL(dbo.FNAEncryptString(@Password),customerPassword)
WHERE customerId=@_customerId
SELECT
errorCode='0'
,userId=@userName
,firstName=cm.firstName
,middleName=cm.middleName
,lastName=cm.lastName1
,nickName=''
,email=ISNULL(cm.email,'')
,phone=ISNULL(cm.mobile,'')
,rewardPoint=CAST(ISNULL(cm.bonusPoint,0) AS DECIMAL)
,verificationCode=ISNULL(ur.OTP,'')
,VerificationCodeExpiryDate=''
,createdDate=ISNULL(ur.createdDate,'')
,userRoles=''
,active=CASE WHEN ISNULL(cm.isActive,'Y')='Y' THEN 1 ELSE 0 END
,kyc=CASE WHEN ISNULL(cm.createdDate,'') <> '' THEN 1 ELSE 0 END
,verified=CASE WHEN ISNULL(cm.verifiedDate,'') <> '' THEN 1 ELSE 0 END
,forgetCode=ISNULL(ur.passRecoveryCode,'')
,ForgetCodeExpiryDate=''
,primaryBankName=ISNULL(bl.BankName,'')
,walletNumber=ISNULL(cm.walletAccountNo,'')
,availableBalance=CAST([dbo].FNAGetCustomerACBal(@userName) AS DECIMAL)
,dpUrl=''
,cmRegistrationId=ISNULL(ur.cmRegistrationId,'')
FROM dbo.customerMaster(NOLOCK) cm
LEFT JOIN dbo.mobile_userRegistration(NOLOCK) ur
ON ur.customerId=cm.customerId
LEFT JOIN dbo.vwBankLists bl WITH(NOLOCK)
ON bl.bankCode=cm.bankName
WHERE cm.customerId=@_customerId
RETURN
END
ELSE IF @flag='u-user'
BEGIN
--SELECT TOP 1
-- @_customerId=cust.customerId
-- ,@_otpUsed=otp.OTP_Used
-- ,@email=cust.email
-- ,@MSISDN=cust.mobile
--FROM customermaster(NOLOCK) cust
--LEFT JOIN mobile_userRegistration(NOLOCK) v ON cust.customerId=v.customerId
--INNER JOIN OTPHistory otp(NOLOCK) ON v.username=otp.username
--WHERE cust.email=@userName OR cust.mobile=@userName AND ISNULL(cust.createdBy, '')=@scope
--ORDER BY otp.rowId DESC
SELECT TOP 1
@_customerId=cust.customerId
--,@_otpUsed=otp.OTP_Used
,@email=cust.email
,@MSISDN=cust.mobile
FROM customermaster(NOLOCK) cust
--LEFT JOIN mobile_userRegistration(NOLOCK) v ON cust.customerId=v.customerId
INNER JOIN mobile_userRegistration(NOLOCK) v ON cust.customerId=v.customerId
--LEFT JOIN OTPHistory(NOLOCK) otp ON cust.customerId=otp.customerId
WHERE (cust.email=@userName OR cust.mobile=@userName)
--AND ISNULL(cust.createdBy, '')=@scope
--WHERE ((cust.email=@userName AND cust.isEmailVerified=1) OR (cust.mobile=@userName AND cust.isMobileVerified=1)) AND ISNULL(cust.createdBy, '')=@scope
--ORDER BY otp.rowId DESC
IF ISNULL(@_customerId,'')=''
BEGIN
SELECT '1' ErrorCode, 'Invalid username.' Msg ,@userName ID
RETURN
END
IF ISNULL(@cmRegistrationId,'') <> ''
BEGIN
UPDATE mobile_userRegistration SET
cmRegistrationId=ISNULL(@cmRegistrationId,cmRegistrationId)
WHERE customerId=@_customerId
END
--IF ISNULL(@dpUrl,'') <> ''
--BEGIN
-- UPDATE cm SET dpUrl=ISNULL(@dpUrl,dpUrl)
-- FROM dbo.customerMaster cm
-- WHERE cm.customerId=@_customerId
--END
SELECT errorCode='0'
,userId=@userName
,firstName=cm.firstName
,middleName=cm.middleName
,lastName=cm.lastName1
,nickName=''
,email=ISNULL(cm.email,'')
,phone=ISNULL(cm.mobile,'')
,rewardPoint=CAST(ISNULL(cm.bonusPoint,0) AS DECIMAL)
,verificationCode=ISNULL(ur.OTP,'')
,VerificationCodeExpiryDate=''
,createdDate=ISNULL(ur.createdDate,'')
,userRoles=''
,active=CASE WHEN ISNULL(cm.isActive,'Y')='Y' THEN 1 ELSE 0 END
,kyc=CASE WHEN ISNULL(cm.createdDate,'') <> '' THEN 1 ELSE 0 END
,verified=CASE WHEN ISNULL(cm.verifiedDate,'') <> '' THEN 1 ELSE 0 END
,forgetCode=ISNULL(ur.passRecoveryCode,'')
,ForgetCodeExpiryDate=''
,primaryBankName=ISNULL(bl.BankName,'')
,walletNumber=ISNULL(cm.walletAccountNo,'')
,availableBalance=CAST([dbo].FNAGetCustomerACBal(@userName) AS DECIMAL)
,dpUrl=''
,cmRegistrationId=ISNULL(ur.cmRegistrationId,'')
FROM dbo.mobile_userRegistration(NOLOCK) ur
INNER JOIN dbo.customerMaster(NOLOCK) cm
ON ur.customerId=cm.customerId
LEFT JOIN dbo.vwBankLists(NOLOCK) bl
ON bl.bankCode=cm.bankName
WHERE cm.customerId=@_customerId
RETURN
END
ELSE IF @flag='pwd-change' --password changed after successful login(DONE)
BEGIN
------------- ### Check if the user trying to change password exists or not ###STARTS------------
IF NOT EXISTS(SELECT 'x' FROM dbo.customerMaster(NOLOCK) cust
WHERE cust.email=@userName OR cust.mobile=@userName AND ISNULL(cust.isDeleted,'N')='N'
)
BEGIN
SELECT @_errorMsg = 'User with contact Info ' + @username + ' does not exists. If you are a new user, then sign up and proceed further.'
SELECT '1' ErrorCode, @_errorMsg Msg ,NULL ID
RETURN
END
------------- ### Check if the user trying to change password exists or not ###ENDS------------
SELECT
@_customerId=cust.customerId
,@_password=cust.customerpassword
FROM customermaster(NOLOCK) cust
WHERE cust.email=@userName OR cust.mobile=@userName
IF @_password <> dbo.FNAEncryptString(@Password)
BEGIN
EXEC proc_errorHandler 1, 'Incorrect existing password.. Please try again!', @userName
RETURN;
END
IF @_password = dbo.FNAEncryptString(@newPassword)
BEGIN
EXEC proc_errorHandler 1, 'Please enter a new password.Old passwords are not accepted.', @userName
RETURN;
END
IF ISNULL(@_customerId,'') = ''
BEGIN
SELECT @_errorMsg = 'User with contact Info ' + @username + ' does not exists. If you are a new user, then sign up and proceed further.'
SELECT '1' ErrorCode, @_errorMsg Msg ,NULL ID
RETURN
END
BEGIN TRANSACTION
UPDATE customermaster SET
customerpassword=dbo.FNAEncryptString(@newPassword)
WHERE customerId=@_customerId
IF @@TRANCOUNT > 0
COMMIT TRANSACTION
SELECT '0' ErrorCode, 'Password changed successfully.' Msg ,@userName ID
RETURN
END
ELSE IF @flag='chk-referred'
BEGIN
IF EXISTS(SELECT 'x' FROM referralmaster(NOLOCK) WHERE email = @email OR mobile = @MSISDN)
BEGIN
SELECT @userName=userId FROM dbo.referralMaster(NOLOCK) WHERE email=@email OR mobile=@MSISDN
SELECT errorCode = '0' ,
referredBy=@userName,
isReferred=1
RETURN
END
ELSE
BEGIN
SELECT errorCode = '1',
referredBy='',
isReferred=0
RETURN
END
END
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION
DECLARE @errorMessage VARCHAR(MAX)
SET @errorMessage = ERROR_MESSAGE()
SELECT '1' ErrorCode, @errorMessage Msg ,NULL ID
END CATCH