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;