65 lines
1.6 KiB
Transact-SQL
65 lines
1.6 KiB
Transact-SQL
CREATE PROCEDURE [dbo].[BO_AddUserKnok]
|
|
@knokId bigint,
|
|
@userId bigint,
|
|
@AccountId bigint
|
|
|
|
AS
|
|
DECLARE @TranStarted BIT,
|
|
@ERROR SMALLINT,
|
|
@RC INT,
|
|
@RowCount INT,
|
|
@ErrorMessage VARCHAR(100),
|
|
@PlatformUserId BIGINT,
|
|
@PlatformAccountId BIGINT,
|
|
@KnokPrice DECIMAL(22, 8)
|
|
|
|
|
|
|
|
BEGIN TRY
|
|
SET @TranStarted = 0
|
|
SET @RC = 0
|
|
|
|
BEGIN TRANSACTION
|
|
SET @TranStarted = 1
|
|
|
|
SELECT @PlatformUserId = [UserId] FROM Users WHERE [UserTypeId] = 2 --Platform
|
|
SET @PlatformAccountId = (SELECT TOP 1 [AccountId] FROM [Accounts] WHERE [UserId] = @PlatformUserId)
|
|
|
|
SELECT @KnokPrice = Price FROM Signals WHERE KnokId = @knokId
|
|
|
|
--execute transaction
|
|
EXEC [dbo].[TRN_Account_TransferMoney]
|
|
@FromUserId = @UserId,
|
|
@FromAccountId = @AccountId,
|
|
@FromExternalReferenceId = NULL,
|
|
@FromWalletAddress = NULL,
|
|
@FromAccountTransactionTypeId = 8, --UserBuyKnok
|
|
@ToUserId = @PlatformUserId,
|
|
@ToAccountId = @PlatformAccountId,
|
|
@ToExternalReferenceId = NULL,
|
|
@ToWalletAddress = NULL,
|
|
@ToAccountTransactionTypeId = 8, --UserBuyKnok
|
|
@Amount = @KnokPrice,
|
|
@AmountUSD = NULL,
|
|
@OperatorId = NULL,
|
|
@Comment = NULL,
|
|
@PendingId = NULL,
|
|
@KnokId = @KnokId
|
|
|
|
Insert UserKnoks (UserId, KnokId, BuyDate) VALUES(@userId, @knokId, GETDATE()) -- failure on errors
|
|
IF( @TranStarted = 1 )
|
|
COMMIT TRANSACTION
|
|
END TRY
|
|
BEGIN CATCH
|
|
IF( @TranStarted = 1 )
|
|
ROLLBACK TRANSACTION
|
|
|
|
EXEC USP_LogError
|
|
EXEC USP_RethrowError
|
|
|
|
IF @RC = 0
|
|
SET @RC = 1 ---- Unexpected Error
|
|
|
|
RETURN @RC
|
|
END CATCH
|