spBulkUpdate_EmailList_Subscription

Parameters

Parameter Parameter Type Mode Description
@ClientUsersID int IN
@PeopleID int IN
@XML ntext IN

Definition

Copy

                CREATE      PROCEDURE [dbo].[spBulkUpdate_EmailList_Subscription]

                      (

                            @ClientUsersID int,

                            @PeopleID int,

                            @XML ntext

                      )

                      AS

                DECLARE @idoc int

                      EXEC sp_xml_preparedocument @idoc OUTPUT, @XML



                      -- Whack existing based on UserID



                      IF (@ClientUsersID <= 0)

                            SET @ClientUsersID = NULL



                      IF (@ClientUsersID IS NULL) AND (@PeopleID > 0

                            SET @ClientUsersID = dbo.fnGetUserIDFromLinkedPeopleID(@PeopleID)



                      IF (@ClientUsersID IS NOT NULL

                            DELETE FROM [dbo].EmailList_Subscription

                            WHERE UserID = @ClientUsersID

                            AND EmailListID IN

                            ( SELECT [ID] 

                                  FROM OPENXML (@idoc, '/UserSubscriptions/EmailCatIds/Item', 1

                                  WITH(

                                        [ID] int

                                        [OnOff] bit

                                  )

                            )


                      -- Whack existing based on BackOfficePeopleID passed in

                      -- this will also whack the ones that are tied to known linked recs from other systems


                      if (@PeopleID > 0

                            Delete from [dbo].EmailList_Subscription

                            where BackOfficeSystemPeopleID = @PeopleID 

                --             (select BackOfficePeopleID from vwBackofficeLinkedUsers where userID=dbo.fnGetUserIDFromLinkedPeopleID(@PeopleID))

                            AND EmailListID IN

                            ( SELECT [ID] 

                                  FROM OPENXML (@idoc, '/UserSubscriptions/EmailCatIds/Item', 1

                                  WITH(

                                        [ID] int

                                        [OnOff] bit

                                  )

                            )


                      -- Finnaly the case where we have just a userid - and possibly have other backoffice people linked to 

                      -- it. Clean those out too.


                      IF (@ClientUsersID IS NOT NULL)

                            Delete from [dbo].EmailList_Subscription

                            where BackOfficeSystemPeopleID in 

                             (select BackOfficePeopleID from vwBackofficeLinkedUsers where userID=@ClientUsersID)

                            AND EmailListID IN

                            ( SELECT [ID] 

                                  FROM OPENXML (@idoc, '/UserSubscriptions/EmailCatIds/Item', 1

                                  WITH(

                                        [ID] int

                                        [OnOff] bit

                                  )

                            )


                      -- All possible realted subscriptions should be gone now. Add what we got passed in.

                      INSERT INTO [dbo].EmailList_Subscription

                      ([UserID],[BackOfficeSystemPeopleID],[EmailListID],[HasOpted])

                      SELECT @ClientUsersID, @PeopleID, [ID], [OnOff]

                            FROM OPENXML (@idoc, '/UserSubscriptions/EmailCatIds/Item', 1

                            WITH([ID] int, [OnOff] bit)

                      -- Update EmailJob_Recipient table GlobalOptedOut column
                      DECLARE @opted bit, @ejrid integer;      
                      SET @opted = 0;
                      SET @ejrid = 0;

                      SELECT @opted = [Opted], @ejrid = [EjrID] 

                        FROM OPENXML (@idoc, '/UserSubscriptions', 1)

             WITH([Opted] bit, [EjrID] int)

                      UPDATE dbo.EmailJob_Recipient set [GlobalOptedOut] = @opted where [ID] = @ejrid

                      EXEC sp_xml_removedocument @idoc