64 lines
1.7 KiB
Transact-SQL
64 lines
1.7 KiB
Transact-SQL
|
|
CREATE PROCEDURE [dbo].[SetAccountVerificationCode]
|
|
@VerificationCode varchar(10),
|
|
@Email varchar(255),
|
|
@ExpirationTime DATETIME
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
DECLARE @Result varchar(20)
|
|
DECLARE @AccountExists int;
|
|
DECLARE @VerificationCodeCount int;
|
|
|
|
BEGIN TRY
|
|
BEGIN TRANSACTION
|
|
|
|
SELECT @AccountExists = COUNT(*) FROM AccountTable
|
|
WHERE Email = @Email;
|
|
|
|
|
|
-- Check if account exists
|
|
IF @AccountExists > 0
|
|
BEGIN
|
|
SET @Result = 'AccountExists';
|
|
COMMIT TRANSACTION;
|
|
SELECT @Result as Result;
|
|
RETURN;
|
|
END
|
|
|
|
IF @Result = 'AccountDontExists'
|
|
-- Retrieve count of existing verification codes for the user
|
|
SELECT @VerificationCodeCount = COUNT(*) FROM VerificationCode
|
|
WHERE Email = @Email;
|
|
|
|
-- Check if count of existing verification codes is less than 5
|
|
IF @VerificationCodeCount < 5
|
|
BEGIN
|
|
-- Insert new verification code
|
|
INSERT INTO VerificationCode (VerificationCode, Email, ExpirationTime, Type)
|
|
VALUES (@VerificationCode, @Email, @ExpirationTime, 'Account');
|
|
SET @Result = 'Success';
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
-- Delete all existing verification codes for the user
|
|
DELETE FROM VerificationCode WHERE Email = @Email;
|
|
|
|
-- Insert new verification code
|
|
INSERT INTO VerificationCode (VerificationCode, Email, ExpirationTime, Type)
|
|
VALUES (@VerificationCode, @Email, @ExpirationTime, 'Account');
|
|
SET @Result = 'Success';
|
|
END;
|
|
|
|
COMMIT TRANSACTION;
|
|
END TRY
|
|
BEGIN CATCH
|
|
ROLLBACK TRANSACTION;
|
|
SET @Result = 'TransactionFailed';
|
|
END CATCH
|
|
|
|
SELECT @Result as Result;
|
|
|
|
END
|
|
|