USP_MKTSEGMENTATIONTESTSEGMENT_MOVEUP

Executes the "Marketing Effort Test Segment: Move Up" record operation.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN Input parameter indicating the ID of the record being updated.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the update.

Definition

Copy


CREATE procedure dbo.USP_MKTSEGMENTATIONTESTSEGMENT_MOVEUP
(
  @ID uniqueidentifier,
  @CHANGEAGENTID uniqueidentifier = null
)
as
  set nocount on;

  declare @SEGMENTATIONID uniqueidentifier;
  declare @SEGMENTID uniqueidentifier;
  declare @ABOVETESTSEGMENTID uniqueidentifier;
  declare @SEQ int;

  begin try
    select 
      @SEGMENTATIONID = [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID],
      @SEGMENTID = [MKTSEGMENTATIONTESTSEGMENT].[SEGMENTID],
      @SEQ = [MKTSEGMENTATIONTESTSEGMENT].[SEQUENCE]
    from dbo.[MKTSEGMENTATIONTESTSEGMENT]
    inner join dbo.[MKTSEGMENTATIONSEGMENT] on [MKTSEGMENTATIONSEGMENT].[ID] = [MKTSEGMENTATIONTESTSEGMENT].[SEGMENTID]
    where [MKTSEGMENTATIONTESTSEGMENT].[ID] = @ID;

    --Check if the mailing is currently being activated...

    exec dbo.[USP_MKTSEGMENTATION_CHECKACTIVATION] @SEGMENTATIONID;

    --Only move if not the first test segment in the segment

    if @SEQ > 1
      begin
        if @CHANGEAGENTID is null  
          exec dbo.[USP_CHANGEAGENT_GETORCREATECHANGEAGENT] @CHANGEAGENTID output;

        select @ABOVETESTSEGMENTID = [ID]
        from dbo.[MKTSEGMENTATIONTESTSEGMENT]
        where [SEGMENTID] = @SEGMENTID
        and [SEQUENCE] = (@SEQ - 1);

        --Test segment is being moved above another test segment, swap the 2 test segments

        exec dbo.[USP_MKTSEGMENTATIONTESTSEGMENT_SWAPTESTSEGMENTS] @ABOVETESTSEGMENTID, @ID, @CHANGEAGENTID;
      end
  end try

  begin catch
    exec dbo.USP_RAISE_ERROR;
    return 1;
  end catch

  return 0;