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.
 
 

935 lines
26 KiB

USE [FastMoneyPro_Remit]
GO
/****** Object: StoredProcedure [dbo].[mobile_proc_userLogin] Script Date: 12/18/2023 11:01:32 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[mobile_proc_userLogin] @flag VARCHAR(30)
,@userName VARCHAR(100) = NULL
,@Password VARCHAR(100) = NULL
,@Imei VARCHAR(256) = NULL --Imei Number/UUID or Android id of Mobile
,@accessCode VARCHAR(MAX) = NULL -- access token used in every request
,@scope VARCHAR(50) = NULL --for mobile applicatin, @scope='mobile_app'
,@clientId VARCHAR(200) = NULL --basic header key
,@fcmid VARCHAR(250) = NULL
,@customerId VARCHAR(100) = NULL
,@ip VARCHAR(100) = NULL
,@isBiometricLogin VARCHAR(5) = NULL
,@biometricLoginType VARCHAR(20) = NULL
,@deviceType VARCHAR(100) = NULL
,@accessToken VARCHAR(MAX) = NULL -- access token for Biometric
,@residenceType VARCHAR(20) = NULL
AS
BEGIN TRY
----------------------------------------
--@fcmid varchar(250), add @IP param
--#182 - @isBiometricLogin VARCHAR(5), @biometricLoginType VARCHAR(20) , modifications in @flag='l'
-- @isbiometricEnabled
-- #225 - flag = l, check accessCode and status for biometric login
-- add new param @accessToken for Biometric
--select column [mobile_userRegistration].isForcePassChange
--#101 , #361 - Mobile changes for multi lingual
--#101 -set biometric as empty for '5' ErrorCode
--No email OTP verification was prompt for existing customer which was activate over the counter.
--#665 Remove JME online from Branch list
--add for trustdoc @residenceType
----------------------------------------
SET NOCOUNT ON;
SET XACT_ABORT ON;
DECLARE @UserData VARCHAR(500)
,@UserInfoDetail VARCHAR(MAX)
,@AccessCodeExpiresAfter INT = 5 --Minutes
,@email VARCHAR(100)
,@mobile VARCHAR(100)
,@customerPwd VARCHAR(50)
,@isActive CHAR(1)
,@isEmailVerified BIT
,@approvedDate DATETIME
,@isBiometricEnabled VARCHAR(10)
--,@customerStatus VARCHAR(5)
----------------------- Local variables declaration ###STARTS------------------------
DECLARE @_imei VARCHAR(256)
,@_otpUsed BIT
,@_scope VARCHAR(50)
,@_isDeleted CHAR(1)
,@_errorMsg VARCHAR(MAX)
,@_isExists BIT = 0
,@_Otp VARCHAR(50)
,@_accessCode VARCHAR(MAX)
,@_accessCodeExpiry DATETIME
,@_errorCode VARCHAR(20)
,@_lastLoggedInDevice VARCHAR(200)
,@previousAccessCode VARCHAR(MAX)
----------------------- Local variables declaration ###ENDS------------------------
-- Check This Customer Infoagree State
IF @flag = 'check-agree'
BEGIN
IF EXISTS (
SELECT TOP 1 'X'
FROM CustomerMasterTemp(NOLOCK)
WHERE username = @userName
AND ISNULL(agreeYn, '0') = '0'
)
BEGIN
SELECT 0 ErrorCode
,'Get PDF List Success About Agree infomation' Msg
,NULL Id
,rowId
,PdfName
,AgreePdfPath
FROM customerAgreeDocumentTbl(NOLOCK)
WHERE targetObj = 'STAGING'
RETURN
END
ELSE IF EXISTS (
SELECT TOP 1 'X'
FROM CustomerMaster(NOLOCK)
WHERE email = @userName
AND ISNULL(agreeYn, '0') = '0'
)
BEGIN
SELECT 0 ErrorCode
,'Get PDF List Success About Agree infomation' Msg
,NULL Id
,rowId
,PdfName
,AgreePdfPath
FROM customerAgreeDocumentTbl(NOLOCK)
WHERE targetObj = 'STAGING'
RETURN
END
ELSE
BEGIN
SELECT 1 ErrorCode
,'Invaild user.. Check user value ' Msg
,NULL Id
END
END
ELSE IF @flag = 'l' -- login to system(done)
BEGIN
IF ISNULL(@username, '') = ''
BEGIN
SELECT '1' ErrorCode
,'User Id not defined.' Msg
,NULL ID
RETURN
END
--IF EXISTS(SELECT * FROM customerMaster WHERE email = @userName AND ISNULL(mobileUser,'N') = 'N')
--BEGIN
-- SELECT '20' errorCode
-- ,'Your JME account is disabled. Contact JME support.' msg
-- ,@username id
-- SET @UserInfoDetail = 'Reason = Login fails, Your mobile login is disabled. Please, contact your administrator.'
-- EXEC proc_applicationLogs @flag = 'login'
-- ,@logType = 'Login fails'
-- ,@createdBy = @userName
-- ,@Reason = 'Mobile login is disabled '
-- ,@UserData = @UserData
-- ,@fieldValue = @UserInfoDetail
-- RETURN
--END
SELECT @scope = dbo.mobile_FNAGetApplicationScope(@clientId)
IF ISNULL(@scope, '') <> 'mobile_app'
BEGIN
SELECT '2' ErrorCode
,'Application scope is not valid for this user.' Msg
,NULL ID
RETURN
END
SET @UserData = 'User: ' + @username + ' ,Password: ' + @Password + ' ,User Type:Mobile User' + ' ,Device Info: ' + @imei + ' ,IsBiometricLogin: ' + @isBiometricLogin + ' ,BiometricTypeLogin: ' + @biometricLoginType + ' ,DeviceType: ' + @deviceType + ' ,AccessCode: ' + ISNULL(@accessCode, '') + ' ,AccessToken: ' + ISNULL(@accessToken, '')
DECLARE @isReferred BIT = 0,@existingCustomer INT,@createdFrom VARCHAR(50)
--IF EXISTS (
-- SELECT TOP 1 'x'
-- FROM referralmaster(NOLOCK)
-- WHERE email = @userName
-- OR mobile = @userName
-- )
-- SET @isReferred = 1
--SELECT * FROM customerMaster WHERE email = @userName
SELECT @_lastLoggedInDevice = lastLoggedInDevice
,@_accessCodeExpiry = accessCodeExpiry
,@_accessCode = accessCode
FROM dbo.mobile_userRegistration(NOLOCK)
WHERE username = @userName
SELECT
@existingCustomer= ISNULL(isexistingcustomer,0),
@customerPwd=customerPassword
,@createdFrom=createdFrom
FROM customerMaster WITH (NOLOCK)
WHERE ISNULL(username,email)=@userName --and ISNULL(onlineUser, 'N')='Y'
--IF @_lastLoggedInDevice = @Imei AND @_accessCodeExpiry > GETDATE()
--BEGIN
-- SET @accessCode=@_accessCode
-- UPDATE mobile_userRegistration SET
-- accessCodeExpiry = DATEADD(MINUTE,@AccessCodeExpiresAfter,GETDATE()) --adding validity of access token for 20 minutes.
-- FROM dbo.mobile_userRegistration(NOLOCK) ur
-- WHERE ur.username = @userName --END
--ELSE
DECLARE @JmeclientId VARCHAR(50)
SELECT @JmeclientId = DBO.DECRYPTDB(clientId)
FROM KFTC_GME_MASTER(NOLOCK)
BEGIN
BEGIN TRANSACTION
IF @ResidenceType='0'
SET @ResidenceType = NULL
ELSE IF @ResidenceType='RESIDENCE' -- JAPANESE
SET @ResidenceType = 'RESIDENT' /*ANDROID*/
UPDATE mobile_userRegistration
SET accessCode = @accessCode
,accessCodeExpiry = DATEADD(MINUTE, @AccessCodeExpiresAfter, GETDATE()) --adding validity of access token for 20 minutes.
,IMEI = @Imei
,lastLoggedInDevice = getdate()
,deviceId = ISNULL(@fcmid, deviceId)
,ipAddress = @ip
,BiometricLoginType = @biometricLoginType
--,IsBiometricLogin = @isBiometricLogin
,DeviceType = @deviceType
,modifiedDate=GETDATE()
,ResidenceType=CASE WHEN @ResidenceType IS NOT NULL THEN @ResidenceType WHEN @ResidenceType='0' THEN ResidenceType ELSE ResidenceType END
FROM dbo.mobile_userRegistration(NOLOCK)
WHERE username = @userName
IF @@TRANCOUNT > 0
COMMIT TRANSACTION
END
DELETE T
FROM customerMaster(NOLOCK) c
INNER JOIN CustomerMasterTemp t ON c.username = t.username
AND C.username = @userName
DECLARE @redirectTo VARCHAR(100) = 'EYKC';
IF( @existingCustomer=1 and (@customerPwd IS NULL OR @customerPwd=''))
BEGIN
SELECT '1' ErrorCode
,'Login Failed. Please click forgot Password to set new password.' Msg
,NULL
RETURN
END
IF( @createdFrom='C' and (@customerPwd IS NULL OR @customerPwd=''))
BEGIN
SELECT '1' ErrorCode
,'Login Failed. Please click forgot Password to set new password.' Msg
,NULL
RETURN
END
IF EXISTS (
SELECT TOP 1 'X'
FROM customerMasterTemp cm(NOLOCK)
WHERE cm.username = @userName
AND cm.customerPassword = dbo.FNAEncryptString(@Password)
)
OR (
EXISTS (
SELECT TOP 1 'X'
FROM customerMasterTemp cm(NOLOCK)
INNER JOIN MobileToken mt(NOLOCK) ON cm.email = mt.userName
WHERE cm.username = @userName
AND @isBiometricLogin = 'TRUE'
AND mt.token = @accessToken
AND mt.activeStatus = 'Y'
)
)
BEGIN
SELECT '0' ErrorCode
,'a' scope
,@userName userId
,cust.customerId SenderId
,ISNULL(cust.firstName, '') firstName
-- ,ISNULL(cust.middleName,'') middleName
-- ,ISNULL(cust.lastName1,'') lastName
-- ,ISNULL(cust.nickName,'') nickName
,ISNULL(cust.email, '') email
,ISNULL(cust.customerEmail, '') customerEmail
,ISNULL(cust.mobile, '') phone
-- ,cust.idType AS idType
--,cust.idNumber AS idNumber
,cm.countryCode AS countryCode
-- ,CAST(ISNULL(cust.bonusPoint,0) AS DECIMAL) rewardPoint
,CASE
WHEN ISNULL(cust.isActive, 'Y') = 'Y'
THEN 1
ELSE 0
END active
,kyc = 0
,CASE
WHEN ISNULL(cust.verifiedDate, '') <> ''
THEN 1
ELSE 0
END verified
,ISNULL(cust.walletAccountNo, '') walletNumber
,0 availableBalance
,'Fast Remit Bank' primaryBankName
-- ,'' primaryBankAccount
,@accessCode accessCode
,DATEDIFF(SS, GETDATE(), ur.accessCodeExpiry) expiresIn
-- ,ISNULL(dpUrl,'') dpUrl
-- ,ISNULL(ur.cmRegistrationId,'') cmRegistrationId
,'' country
,ISNULL(cust.city, '') city
,ISNULL(cust.[address], '') [address]
-- ,ISNULL(cust.state2,'') [province]
,'' [provinceId]
-- ,@isReferred isReferred
,'' sourceId
,yearlyLimit = 0
,'0' AS pennyTestStatus
,gmeClientId = @JmeclientId
,redirectTo = @redirectTo
,cust.customerType
,ISNULL(ur.ResidenceType,'FOREIGNER') ResidenceType
,isExistingCustomer = ISNULL(isExistingCustomer, 1)
,IsBiometricLogin = ISNULL(IsBiometricLogin, 0)
,BiometricLoginType = ISNULL(BiometricLoginType, '')
--,@customerStatus= ISNULL(customerStatus,'')
,CASE ur.isForcePassChange
WHEN '1'
THEN 'Y'
ELSE 'N'
END IsForcedPwdChange
,ISNULL(@accessToken, '') accessToken
FROM (
SELECT TOP 1 *
FROM customerMasterTemp(NOLOCK) cust
WHERE cust.username = @userName
) cust
LEFT JOIN mobile_userRegistration(NOLOCK) ur ON cust.customerId = ur.customerId
LEFT JOIN dbo.countryMaster(NOLOCK) AS CM ON cm.countryId = cust.nativeCountry
--PRINT @ResidenceType
--UPDATE customerMasterTemp SET idType =CASE WHEN @ResidenceType='FOREIGNER' THEN 11168
--WHEN @ResidenceType IN('JAPANESE','RESIDENCE','RESIDENT') THEN 11079 ELSE 11168 END
--WHERE username = @userName
--WHERE cust.username=@userName
EXEC proc_applicationLogs @flag = 'login'
,@logType = 'Login Success'
,@createdBy = @username
,@Reason = 'Login'
,@UserData = @UserData
,@fieldValue = @UserInfoDetail
RETURN
END
IF UPPER(@isBiometricLogin) = 'TRUE'
BEGIN
SELECT @isbiometricEnabled = (
SELECT ISNULL(isBiometricLogin, 0)
FROM mobile_userRegistration
WHERE username = @userName
)
IF @isbiometricEnabled = 0
BEGIN
SELECT '3' ErrorCode
,'Fingerprint login is not enabled. Please login using password.' Msg
,NULL ID
RETURN
END
IF ISNULL(@accessToken, '') = ''
BEGIN
SELECT '4' ErrorCode
,'Access Token is required for Fingerprint login.' Msg
,NULL ID
RETURN
END
IF NOT EXISTS (
SELECT TOP 1 *
FROM MobileToken(NOLOCK)
WHERE userName = @userName
AND token = @accessToken
AND activeStatus = 'Y'
)
BEGIN
UPDATE mobile_userRegistration SET isBiometricLogin=0,BiometricLoginType=null,DeviceType=null, modifiedDate=GETDATE(), modifiedby= @userName
WHERE username = @userName
SELECT '5' ErrorCode
,'Unauthorized Login for Fingerprint login. Please login using password.' Msg
,NULL
RETURN
END
SELECT @email = email
,@mobile = cm.mobile
,@customerPwd = customerPassword
,@isActive = isactive
,@customerId = cm.customerId
,@approvedDate = cm.approvedDate
FROM customerMaster(NOLOCK) cm
WHERE cm.username = @userName
-- AND ISNULL(cm.mobileUser,'Y') = 'Y'
END
ELSE
BEGIN
SELECT @email = email
,@mobile = cm.mobile
,@customerPwd = customerPassword
,@isActive = isactive
,@customerId = cm.customerId
,@approvedDate = cm.approvedDate
--,@customerStatus=ISNULL(customerStatus,'')
FROM customerMaster(NOLOCK) cm
WHERE cm.username = @userName
--OR cm.mobile=@userName ## NOT MOBILE LOGIN NOT APPLICABLE
AND cm.customerPassword = dbo.FNAEncryptString(@Password)
-- AND ISNULL(cm.mobileUser,'Y')='Y'
END
IF @customerId IS NULL --OR @activeStatus = 'N'
BEGIN
SELECT '6' errorCode,'The username/password do not match.' msg
SET @UserInfoDetail = 'Reason = Incorrect username.'
EXEC dbo.proc_applicationLogs @flag = 'login'
,@logType = 'Login fails'
,@createdBy = @username
,@Reason = 'Invalid Username'
,@UserData = @UserData
,@fieldValue = @UserInfoDetail
RETURN
END
DECLARE @isMobileLoginEnabled VARCHAR(1)
IF EXISTS(SELECT * FROM customerMasterTemp WHERE email = @userName AND ISNULL(mobileUser,'Y') = 'N')
BEGIN
SELECT @isMobileLoginEnabled = 'N'
END
ELSE
SELECT @isMobileLoginEnabled = 'Y'
IF EXISTS(SELECT * FROM customerMaster WHERE email = @userName AND ISNULL(mobileUser,'Y') = 'N')
BEGIN
SELECT @isMobileLoginEnabled = 'N'
END
ELSE
SELECT @isMobileLoginEnabled = 'Y'
IF @isMobileLoginEnabled = 'N'
BEGIN
SELECT '20' errorCode
,'Your IME account is disabled. Contact JME support.' msg
,@username id
SET @UserInfoDetail = 'Reason = Login fails, Your mobile login is disabled. Please, contact your administrator.'
EXEC proc_applicationLogs @flag = 'login'
,@logType = 'Login fails'
,@createdBy = @userName
,@Reason = 'Mobile login is disabled '
,@UserData = @UserData
,@fieldValue = @UserInfoDetail
RETURN
END
BEGIN TRANSACTION
IF NOT EXISTS (
SELECT TOP 1 'X'
FROM mobile_userRegistration ur(NOLOCK)
WHERE ur.username = @userName
)
BEGIN
INSERT INTO mobile_userRegistration (
customerId
,username
,OTP
,OTP_Used
,createdDate
,IMEI
,clientId
,deviceId
,ipAddress
,BiometricLoginType
,IsBiometricLogin
,DeviceType
,ResidenceType
)
SELECT @customerId
,@userName
,0
,0
,GETDATE()
,@Imei
,@clientId
,@fcmid
,@ip
,@biometricLoginType
,@isBiometricLogin
,@deviceType
,@residenceType
UPDATE cm
SET cm.isEmailVerified = 1
FROM dbo.customerMaster cm
WHERE cm.customerId = @customerId AND ISNULL(cm.customerStatus,'')<>'OTC'
END
IF @@TRANCOUNT > 0
COMMIT TRANSACTION
DECLARE @attemptsCount INT
SELECT TOP 1 @attemptsCount = loginAttemptCount
FROM passwordFormat WITH (NOLOCK)
IF (ISNULL(@isActive, 'Y') = 'N')
BEGIN
SELECT '7' errorCode
,'Your account is Inactive. Please, contact JME Support Team.' msg
,@userName id
SET @UserInfoDetail = 'Reason = Login fails, Your account is Inactive. Please, contact your administrator.'
EXEC proc_applicationLogs @flag = 'login'
,@logType = 'Login fails'
,@createdBy = @userName
,@Reason = 'User is not active '
,@UserData = @UserData
,@fieldValue = @UserInfoDetail
RETURN
END
UPDATE customerMaster
SET lastLoginTs = GETDATE()
--,idType =CASE WHEN @ResidenceType='FOREIGNER' THEN 11168 WHEN @ResidenceType='JAPANESE' THEN 11079 ELSE idType END
WHERE customerId = @customerId
DECLARE @yearlyLimit VARCHAR(100) = ''
DECLARE @totalSend MONEY
,@totalSendText VARCHAR(200)
,@YearStart DATE
,@YearEnd DATETIME
SELECT @YearStart = DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0)
,@YearEnd = DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, - 1) + ' 23:59:59'
SELECT @totalSend = SUM(R.cAmt)
FROM REMITTRAN R(NOLOCK)
INNER JOIN TRANSENDERS T(NOLOCK) ON T.TRANID = R.ID
AND T.CUSTOMERID = @customerId
AND R.TRANSTATUS <> 'Cancel'
AND R.approvedDate BETWEEN @YearStart
AND @YearEnd
SELECT @yearlyLimit = amount
FROM dbo.csDetail CD(NOLOCK)
INNER JOIN csMaster CM(NOLOCK) ON CM.csMasterId = CD.csMasterId
AND CD.period = 365
AND CD.condition = 4600
AND ISNULL(CD.isActive, 'Y') = 'Y'
AND ISNULL(CD.isDeleted, 'N') = 'N'
AND ISNULL(CD.isEnable, 'Y') = 'Y'
AND ISNULL(CM.isActive, 'Y') = 'Y'
AND ISNULL(CM.isDeleted, 'N') = 'N'
SET @yearlyLimit = (@yearlyLimit - ISNULL(@totalSend, 0))
DECLARE @hasPennyTestDone VARCHAR(1) = '1'
--IF EXISTS (
-- SELECT TOP 1 'x'
-- FROM dbo.customerMaster(NOLOCK)
-- WHERE approvedDate < '2018-12-19'
-- AND customerId = @customerId
-- )
--BEGIN
-- SET @hasPennyTestDone = '2'
--END
SELECT '0' ErrorCode
,@scope scope
,@userName userId
,cust.customerId SenderId
,ISNULL(cust.firstName, '') firstName
-- ,ISNULL(cust.middleName,'') middleName
-- ,ISNULL(cust.lastName1,'') lastName
-- ,'' nickName
,ISNULL(cust.email, '') email
,ISNULL(cust.customerEmail, '') customerEmail
,ISNULL(cust.mobile, '') phone
-- ,cust.idType AS idType
--,cust.idNumber AS idNumber
,cm1.countryCode AS countryCode
,CAST(ISNULL(cust.bonusPoint, 0) AS DECIMAL) rewardPoint
,CASE
WHEN ISNULL(cust.isActive, 'Y') = 'Y'
THEN 1
ELSE 0
END active
,ISNULL(HasDeclare, 0) kyc
,CASE
WHEN ISNULL(isExistingCustomer, 1) = 0
THEN CASE
WHEN cust.ApprovedDate IS NOT NULL
THEN 1
ELSE 0
END
ELSE CASE
WHEN mobileVerifiedDate IS NOT NULL
THEN 1
ELSE 0
END
END verified
,ISNULL(cust.walletAccountNo, '') walletNumber
,CAST([dbo].FNAGetCustomerACBal(@email) AS DECIMAL) availableBalance
--,ISNULL(bl.BankName,'') primaryBankName
,primaryBankName = 'Fast Remit Bank' --CASE WHEN cust.customerType='11048' THEN 'Mutual savings bank' ELSE 'Kwangju Bank (034)' END
-- ,'' AS primaryBankAccount
,@accessCode accessCode
,DATEDIFF(SS, GETDATE(), ur.accessCodeExpiry) expiresIn
-- ,'' dpUrl
-- ,ISNULL(ur.cmRegistrationId,'') cmRegistrationId
,ISNULL(co.countryName, '') country
,ISNULL(cust.city, '') city
,ISNULL(cust.[address], '') [address]
-- ,ISNULL(cust.state2,'') [province]
,ISNULL(cm.cityId, '') [provinceId]
-- ,@isReferred isReferred
,ISNULL(sdv.valueId, '') sourceId
,yearlyLimit = @yearlyLimit
,PennyTestStatus = @hasPennyTestDone -----0 not started, 1 requested , 2 completed
,gmeClientId = @JmeclientId
,redirectTo = @redirectTo
,cust.customerType
,ISNULL(ur.ResidenceType,'FOREIGNER') ResidenceType
,isExistingCustomer = ISNULL(isExistingCustomer, 1)
,IsBiometricLogin = ISNULL(IsBiometricLogin, 0)
,BiometricLoginType = ISNULL(BiometricLoginType, '')
,CASE ur.isForcePassChange
WHEN '1'
THEN 'Y'
ELSE 'N'
END IsForcedPwdChange
,ISNULL(@accessToken, '') accessToken
FROM (
SELECT TOP 1 *
FROM customerMaster(NOLOCK) cust
WHERE cust.customerId = @customerId
) cust
LEFT JOIN dbo.countryMaster AS CM1 ON cm1.countryId = cust.nativeCountry
LEFT JOIN mobile_userRegistration(NOLOCK) ur ON cust.customerId = ur.customerId
LEFT JOIN dbo.vwBankLists(NOLOCK) bl ON cust.bankName = bl.bankCode
LEFT JOIN countryMaster co(NOLOCK) ON cust.country = co.countryId
LEFT JOIN staticDatavalue sdv(NOLOCK) ON cust.sourceOfFund = sdv.detailTitle
AND ISNULL(sdv.IS_DELETE, 'N') = 'N'
LEFT JOIN dbo.CityMaster cm(NOLOCK) ON cust.state2 = cm.cityName
--WHERE cust.customerId=@customerId AND ISNULL(sdv.IS_DELETE,'N')='N'
EXEC proc_applicationLogs @flag = 'login'
,@logType = 'Login Success'
,@createdBy = @username
,@Reason = 'Login'
,@UserData = @UserData
,@fieldValue = @UserInfoDetail
RETURN
END
ELSE IF @flag = 'chk-access-code' --validating access code(done)
BEGIN
--SELECT
-- @_accessCodeExpiry=l.accessCodeExpiry
-- ,@username=ISNULL(l.username,cust.email)
-- ,@_scope=ISNULL(a.scope,'')
-- ,@_lastLoggedInDevice=ISNULL(cust.lastLoggedInDevice,'')
-- ,@_imei =ISNULL(cust.lastLoggedInDevice,'')
--FROM customermasterTemp(NOLOCK) cust
--INNER JOIN customermaster(NOLOCK) main ON main.customerId=cust.customerMasterId
--LEFT JOIN mobile_userRegistration(NOLOCK) l ON cust.customerId=l.customerId
--INNER JOIN mobile_GmeApiClientRegistration a(NOLOCK) ON a.clientId=l.clientId
--WHERE l.accessCode=@accessCode
SELECT @_accessCodeExpiry = MUR.accessCodeExpiry
,@username = mur.username
,@_scope = ISNULL(a.scope, '')
,@_lastLoggedInDevice = mur.lastLoggedInDevice
,@_imei = mur.IMEI
,@customerId = mur.rowId
FROM dbo.mobile_userRegistration AS MUR(NOLOCK)
INNER JOIN mobile_GmeApiClientRegistration a(NOLOCK) ON a.clientId = MUR.clientId
AND MUR.accessCode = @accessCode
AND (
mur.IMEI = @Imei
OR mur.lastLoggedInDevice = @Imei
)
--PRINT @_accessCodeExpiry
--IF NOT EXISTS(SELECT 'x' FROM dbo.mobile_userRegistration AS MUR WHERE MUR.accessCode=@accessCode AND MUR.IMEI=@Imei)
--BEGIN
-- SELECT '2' errorCode, 'Access code expired..' Msg ,NULL ID
-- RETURN
--END
--IF NOT EXISTS(SELECT 'x' FROM dbo.mobile_userRegistration AS MUR WHERE MUR.accessCode=@accessCode AND MUR.lastLoggedInDevice=@Imei)
--BEGIN
-- SELECT '2' errorCode, 'Access code expired..' Msg ,NULL ID
-- RETURN
--END
IF ISNULL(@username, '') = ''
AND ISNULL(@_lastLoggedInDevice, '') = @imei
BEGIN
SELECT '8' errorCode
,'Access code expired..' Msg
,NULL ID
RETURN
END
IF ISNULL(@username, '') = ''
AND ISNULL(@_lastLoggedInDevice, '') <> @imei
BEGIN
SELECT '9' errorCode
,'Access code expired..' Msg
,NULL ID
RETURN
END
IF (@_accessCodeExpiry < GETDATE())
BEGIN
SELECT '10' errorCode
,'It seems like you are using old access code. Please use newly generated access code.' Msg
,NULL ID
RETURN
END
------------- ### Check if the user trying to validate access-code exists or not ###STARTS------------
IF @username IS NULL
BEGIN
SELECT @_errorMsg = 'User with contact Info ' + @username + ' doesnot 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 access-code exists or not ###ENDS------------
IF @_lastLoggedInDevice <> @Imei
BEGIN
SELECT '11' errorCode
,'You are logged in from another device.' Msg
,NULL ID
RETURN
END
ELSE IF ISNULL(@_scope, '') <> 'mobile_app'
BEGIN
SELECT '12' ErrorCode
,'Application scope is not valid for this user.' Msg
,NULL ID
RETURN
END
UPDATE mobile_userRegistration
SET accessCodeExpiry = DATEADD(MINUTE, @AccessCodeExpiresAfter, GETDATE()) --expiry time for access code(token) increased to 20 minutes.
WHERE rowId = @customerId
SELECT '0' ErrorCode
,'Success' Msg
,@_scope ID
RETURN
END
ELSE IF @flag = 's-accesscode' --validating accessCode for "Get user by access code"
BEGIN
IF @scope <> 'social_comp'
BEGIN
SELECT '13' ErrorCode
,'Application scope is not valid for this user.' Msg
,NULL ID
RETURN
END
DECLARE @user VARCHAR(100);
SELECT @email = cm.email
,@mobile = cm.mobile
,@isEmailVerified = cm.isEmailVerified
,@customerId = cm.customerId
FROM dbo.customerMaster(NOLOCK) cm
INNER JOIN dbo.mobile_userRegistration(NOLOCK) ur ON cm.customerId = ur.customerId
AND ur.accessCode = @accessCode
IF @email IS NOT NULL
AND @isEmailVerified = 1
BEGIN
SET @user = @email
END
ELSE
BEGIN
SET @user = @mobile
END
SELECT @_imei = l.imei
,@_accessCodeExpiry = l.accessCodeExpiry
,@username = @user
FROM customermaster cust(NOLOCK)
INNER JOIN mobile_userRegistration l(NOLOCK) ON cust.customerId = l.customerId
AND l.accessCode = @accessCode
IF DATEDIFF(MINUTE, GETDATE(), @_accessCodeExpiry) > 0
BEGIN
SELECT '0' ErrorCode
,@userName userId
,ISNULL(cust.firstName, '') firstName
,ISNULL(cust.middleName, '') middleName
,ISNULL(cust.lastName1, '') lastName
,ISNULL(cm.countryName, '') nativeCountry
,'' nickName
,userRoles = ''
,'' dpUrl
,ISNULL(ur.cmRegistrationId, '') cmRegistrationId
,ISNULL(ur.IMEI, '') uuid
FROM (
SELECT TOP 1 *
FROM customerMaster(NOLOCK) cust
WHERE cust.customerId = @customerId
) cust
LEFT JOIN mobile_userRegistration ur(NOLOCK) ON cust.customerId = ur.customerId
LEFT JOIN dbo.countryMaster cm(NOLOCK) ON cust.nativeCountry = cm.countryId
--WHERE cust.customerId=@customerId
--WHERE cust.email=@userName OR cust.mobile=@userName
RETURN
END
ELSE IF DATEDIFF(MINUTE, GETDATE(), @_accessCodeExpiry) <= 0
BEGIN
SELECT '14' ErrorCode
,'Access code expired.' Msg
,NULL ID
RETURN
END
ELSE
BEGIN
SELECT '15' ErrorCode
,'Access code does not match.' Msg
,NULL ID
RETURN
END
END
ELSE IF @flag = 'ckeck-guid'
BEGIN
IF EXISTS (
SELECT TOP 1 'A'
FROM dbo.mobile_userRegistration(NOLOCK)
WHERE accessCode IS NULL
AND username = @userName
)
BEGIN
UPDATE dbo.mobile_userRegistration
SET accessCode = @accessCode
WHERE accessCode IS NULL
AND username = @userName
END
IF EXISTS (
SELECT TOP 1 'A'
FROM dbo.mobile_userRegistration(NOLOCK)
WHERE accessCode = @accessCode
AND username = @userName
)
BEGIN
SELECT '0' ErrorCode
,'The access code is valid and is from trusted customer.' Msg
,NULL Id
RETURN
END
BEGIN
SELECT '1' ErrorCode
,'No such access code found in system. Invalid username and customer is not trusted.' Msg
,NULL Id
RETURN
END
END
ELSE IF @flag = 'get-device'
BEGIN
SELECT deviceId
FROM mobile_userRegistration(NOLOCK)
WHERE customerId = @customerId
RETURN
END
ELSE IF @flag = 'agentDetail'
BEGIN
SELECT agentId
,agentName
,agentState
,agentCity
,agentAddress
,agentZip
,agentPhone1
FROM AGENTMASTER(NOLOCK)
WHERE PARENTID = '393877'
and agentid<>'394395'
AND ACTASBRANCH = 'Y'
RETURN
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