spAddUpdate_EmailList_Subscription

Parameters

Parameter Parameter Type Mode Description
@PKID int INOUT
@EmailListID int IN
@UserID int IN
@HasOpted bit IN
@BackofficeSystemPeopleID int IN
@EmailAddress nvarchar(255) IN
@FirstName nvarchar(255) IN
@LastName nvarchar(255) IN

Definition

Copy

  CREATE PROCEDURE [dbo].[spAddUpdate_EmailList_Subscription]
          (
              @PKID int OUTPUT,
              @EmailListID    int,        
              @UserID int,
              @HasOpted bit,
              @BackofficeSystemPeopleID int,
              @EmailAddress nvarchar(255),
              @FirstName nvarchar(255),
              @LastName nvarchar(255)
          )
          AS

          declare @ID uniqueidentifier;
          declare @CHANGEAGENTID uniqueidentifier;
          declare @CURRENTDATE date;    

          exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
          set @CURRENTDATE = getdate();
          set @ID = newid()

          -- BBIS Bug 294839; Accounting for anonymous email subscribers subscribing more than once
          declare @emailExists bit;
          select @emailExists = case when exists(select * from [dbo].EmailList_Subscription where EmailListID = @EmailListID and EmailAddress = @EmailAddress)
          then 1 else 0 end;

          IF @emailExists <> 1
              BEGIN
              IF (@PKID<=0) BEGIN
                  INSERT INTO [dbo].EmailList_Subscription
                  (
                      EmailListID, 
                      UserID, 
                      HasOpted, 
                      BackofficeSystemPeopleID, 
                      EmailAddress, 
                      FirstName, 
                      LastName
                  )
                  VALUES
                  (
                      @EmailListID
                      @UserID
                      @HasOpted
                      @BackofficeSystemPeopleID
                      @EmailAddress
                      @FirstName
                      @LastName
                  )

                  SELECT @PKID = @@Identity

              END
              ELSE
              BEGIN
                  UPDATE [EmailList_Subscription] SET
                      EmailListID = @EmailListID
                      UserID = @UserID
                      HasOpted = @HasOpted
                      BackofficeSystemPeopleID = @BackofficeSystemPeopleID
                      EmailAddress = @EmailAddress
                      FirstName = @FirstName
                      LastName = @LastName
                  WHERE ID=@PKID
              END
          END

        -- SHL BBIS Bug 285685; Reset the global preference when someone opts into something new
        -- Done mainly so that repeat anonymous users (using the same email) can receive emails after subscribing to a newsletter instead of being permanently opted out
          exec dbo.spAddUpdate_EmailList_GlobalSubscription @EmailAddress, 1