USP_DATAFORMTEMPLATE_EDIT_MKTMEMBERSHIPMAILINGTEMPLATERULE_DRAGDROPINSERT
The save procedure used by the edit dataform template "Membership Renewal Effort Template Rule Drag and Drop Edit Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter indicating the ID of the record being edited. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@RULES | xml | IN | Rules |
@RULESEQUENCE | int | IN | Rule Sequence |
Definition
Copy
CREATE procedure dbo.[USP_DATAFORMTEMPLATE_EDIT_MKTMEMBERSHIPMAILINGTEMPLATERULE_DRAGDROPINSERT]
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@RULES xml,
@RULESEQUENCE integer
)
as
set nocount on;
declare @CURRENTDATE datetime;
declare @SELECTEDTABLE table ([RULEID] uniqueidentifier, [CURRENTSEQ] int);
declare @RULESTABLE table ([RULEID] uniqueidentifier, [CURRENTSEQ] int, [NEWSEQ] int IDENTITY (1,1));
begin try
if @CHANGEAGENTID is null
exec dbo.[USP_CHANGEAGENT_GETORCREATECHANGEAGENT] @CHANGEAGENTID output;
set @CURRENTDATE = getdate();
if @RULES is not null
begin
insert into
@SELECTEDTABLE ([RULEID])
select
T.c.value('(ID)[1]', 'uniqueidentifier')
from
@RULES.nodes('/RULES/ITEM') T(c);
update
@SELECTEDTABLE
set
[CURRENTSEQ] = (select [SEQUENCE] from dbo.[MKTMEMBERSHIPMAILINGTEMPLATERULE] where [ID] = [S].[RULEID])
from
@SELECTEDTABLE as [S];
insert into @RULESTABLE ([RULEID], [CURRENTSEQ])
select
[ID],
[SEQUENCE]
from
dbo.[MKTMEMBERSHIPMAILINGTEMPLATERULE]
where
[MEMBERSHIPMAILINGTEMPLATEID] = @ID
and
[SEQUENCE] < @RULESEQUENCE
and
[SEQUENCE] not in (select [CURRENTSEQ] from @SELECTEDTABLE)
order by [SEQUENCE];
insert into
@RULESTABLE ([RULEID], [CURRENTSEQ])
select
[RULEID],
[CURRENTSEQ]
from
@SELECTEDTABLE
order by [CURRENTSEQ];
-- insert the remaining rules...
insert into
@RULESTABLE ([RULEID], [CURRENTSEQ])
select
[ID],
[SEQUENCE]
from
dbo.[MKTMEMBERSHIPMAILINGTEMPLATERULE]
where
[MEMBERSHIPMAILINGTEMPLATEID] = @ID
and
[SEQUENCE] >= @RULESEQUENCE
and
[SEQUENCE] not in (select [CURRENTSEQ] from @SELECTEDTABLE)
order by [SEQUENCE];
update
dbo.[MKTMEMBERSHIPMAILINGTEMPLATERULE]
set
[SEQUENCE] = [R].[NEWSEQ],
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
from
dbo.[MKTMEMBERSHIPMAILINGTEMPLATERULE]
inner join
@RULESTABLE as [R] on [R].[RULEID] = [MKTMEMBERSHIPMAILINGTEMPLATERULE].[ID];
end
end try
begin catch
exec dbo.[USP_RAISE_ERROR];
return 1;
end catch
return 0;