USP_DATAFORMTEMPLATE_ADD_ANONYMOUSEMAILPREFERENCE_BULK
The save procedure used by the add dataform template "Anonymous Email Preference Add Data Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | The output parameter indicating the ID of the record added. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@ANONYMOUSEMAILSUBSCRIBERID | uniqueidentifier | IN | Input parameter indicating the context ID for the record being added. |
@PREFERENCES | xml | IN | Preferences |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_ANONYMOUSEMAILPREFERENCE_BULK
(
@ID uniqueidentifier = null output,
@CHANGEAGENTID uniqueidentifier = null,
@ANONYMOUSEMAILSUBSCRIBERID uniqueidentifier,
@PREFERENCES xml
)
as
set nocount on;
if @ID is null
set @ID = newid()
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()
begin try
--Pull the new prefs out into a table variable
declare @PREFSTABLE table(APPEALCATEGORYCODEID uniqueidentifier, SITEID uniqueidentifier, BUSINESSUNITCODEID uniqueidentifier, OPTEDOUT bit)
insert into @PREFSTABLE
select
P.I.value('APPEALCATEGORYCODEID[1]', 'uniqueidentifier'),
P.I.value('SITEID[1]', 'uniqueidentifier'),
P.I.value('BUSINESSUNITCODEID[1]', 'uniqueidentifier'),
P.I.value('OPTEDOUT[1]', 'bit')
from @PREFERENCES.nodes('/PREFERENCES/ITEM') P(I)
--Update changes to existing preferences
update dbo.ANONYMOUSEMAILPREFERENCE
set OPTEDOUT = P.OPTEDOUT
from dbo.ANONYMOUSEMAILPREFERENCE A
inner join @PREFSTABLE P on
A.ANONYMOUSEMAILSUBSCRIBERID = @ANONYMOUSEMAILSUBSCRIBERID
AND ISNULL(P.BUSINESSUNITCODEID, '00000000-0000-0000-0000-000000000000') = ISNULL(A.BUSINESSUNITCODEID, '00000000-0000-0000-0000-000000000000')
AND ISNULL(P.APPEALCATEGORYCODEID, '00000000-0000-0000-0000-000000000000') = ISNULL(A.APPEALCATEGORYCODEID, '00000000-0000-0000-0000-000000000000')
AND ISNULL(P.SITEID, '00000000-0000-0000-0000-000000000000') = ISNULL(A.SITEID, '00000000-0000-0000-0000-000000000000')
--Add new preferences
insert dbo.ANONYMOUSEMAILPREFERENCE (ANONYMOUSEMAILSUBSCRIBERID, APPEALCATEGORYCODEID, BUSINESSUNITCODEID, SITEID, OPTEDOUT, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
select @ANONYMOUSEMAILSUBSCRIBERID, P.APPEALCATEGORYCODEID, P.BUSINESSUNITCODEID, P.SITEID, P.OPTEDOUT, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
from @PREFSTABLE P
left outer join dbo.ANONYMOUSEMAILPREFERENCE A on
A.ANONYMOUSEMAILSUBSCRIBERID = @ANONYMOUSEMAILSUBSCRIBERID
AND ISNULL(P.BUSINESSUNITCODEID, '00000000-0000-0000-0000-000000000000') = ISNULL(A.BUSINESSUNITCODEID, '00000000-0000-0000-0000-000000000000')
AND ISNULL(P.APPEALCATEGORYCODEID, '00000000-0000-0000-0000-000000000000') = ISNULL(A.APPEALCATEGORYCODEID, '00000000-0000-0000-0000-000000000000')
AND ISNULL(P.SITEID, '00000000-0000-0000-0000-000000000000') = ISNULL(A.SITEID, '00000000-0000-0000-0000-000000000000')
where A.ID is null
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
return 0