USP_DATAFORMTEMPLATE_EDIT_MKTSEGMENT_4

The save procedure used by the edit dataform template "Constituent Segment Edit Form 2".

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.
@NAME nvarchar(100) IN Name
@DESCRIPTION nvarchar(255) IN Description
@SEGMENTCATEGORYCODEID uniqueidentifier IN Category
@CODE nvarchar(10) IN Code
@QUERYVIEWCATALOGID uniqueidentifier IN Record source
@SELECTIONS xml IN Selections
@GROUPS xml IN Groups
@ALLOWCODEUPDATE bit IN Allow code update?
@CODEVALUEID uniqueidentifier IN Code value ID
@SITEID uniqueidentifier IN Site
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.

Definition

Copy


CREATE procedure dbo.[USP_DATAFORMTEMPLATE_EDIT_MKTSEGMENT_4]
(
  @ID uniqueidentifier,
  @CHANGEAGENTID uniqueidentifier = null,
  @NAME nvarchar(100),
  @DESCRIPTION nvarchar(255),
  @SEGMENTCATEGORYCODEID uniqueidentifier,
  @CODE nvarchar(10),
  @QUERYVIEWCATALOGID uniqueidentifier,
  @SELECTIONS xml,
  @GROUPS xml,
  @ALLOWCODEUPDATE bit,
  @CODEVALUEID uniqueidentifier,
  @SITEID uniqueidentifier,
  @CURRENTAPPUSERID uniqueidentifier
)
as
  set nocount on;

  declare @CURRENTDATE datetime;
  declare @SEGMENTTYPECODE tinyint;

  if exists (select top 1 1 from dbo.[MKTSEGMENT] where [ID] = @ID and [ISSYSTEM] = 1)
    begin
      raiserror('ERR_MKTSEGMENT_ISSYSTEMSEGMENT', 13, 1);
      return 1;
    end

  begin try
    if @CHANGEAGENTID is null  
      exec dbo.[USP_CHANGEAGENT_GETORCREATECHANGEAGENT] @CHANGEAGENTID output;

    select
      @SEGMENTTYPECODE = [SEGMENTTYPECODE],
      @CURRENTDATE = getdate()
    from dbo.[MKTSEGMENT]
    where [ID] = @ID;

    /* Save the segment */
    update dbo.[MKTSEGMENT] set 
      [NAME] = @NAME,
      [DESCRIPTION] = @DESCRIPTION,
      [SITEID] = @SITEID,
      [SEGMENTCATEGORYCODEID] = @SEGMENTCATEGORYCODEID,
      [CODE] = (case when @ALLOWCODEUPDATE = 1 then @CODE else [CODE] end),
      [QUERYVIEWCATALOGID] = @QUERYVIEWCATALOGID,
      [PARTDEFINITIONVALUESID] = (case when @ALLOWCODEUPDATE = 1 then @CODEVALUEID else [PARTDEFINITIONVALUESID] end),
      [CHANGEDBYID] = @CHANGEAGENTID,
      [DATECHANGED] = @CURRENTDATE
    where [ID] = @ID;

    /* Save all the new selections */
    exec dbo.[USP_MKTSEGMENT_GETSELECTIONS_UPDATEFROMXML] @ID, null, @SELECTIONS, @CHANGEAGENTID, @CURRENTDATE;

    /* Save all the groups */
    exec dbo.[USP_MKTSEGMENT_GETGROUPS_UPDATEFROMXML] @ID, @GROUPS, @CHANGEAGENTID, @CURRENTDATE;

    if @SEGMENTTYPECODE not in (2, 6, 7, 8, 9) and @QUERYVIEWCATALOGID is not null
      /* Create the view and add it to IDSETREGISTER (not for list or public media segments) */
      exec dbo.[USP_MKTSEGMENT_CREATEORUPDATEVIEW] @ID, @CHANGEAGENTID;

    /* Update the segment with the selected code */
    if @ALLOWCODEUPDATE = 1
      exec dbo.[USP_MKTSEGMENT_UPDATECODE] @ID, @CODE, @CODEVALUEID, @CHANGEAGENTID, 1, @CURRENTAPPUSERID;
  end try

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

  return 0;