USP_DATAFORMTEMPLATE_PROSPECTSEGMENTATION_RESEARCHGROUP_ADD

The save procedure used by the add dataform template "Prospect Segmentation Segment Save Research Group Add 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.
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@PROSPECTSEGMENTATIONSEGMENTID nvarchar(200) IN Input parameter indicating the context ID for the record being added.
@RESEARCHGROUPID uniqueidentifier IN Name
@NAME nvarchar(100) IN Name
@DESCRIPTION nvarchar(255) IN Description

Definition

Copy

                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_PROSPECTSEGMENTATION_RESEARCHGROUP_ADD
                    (
                        @ID uniqueidentifier = null output,
                        @CHANGEAGENTID uniqueidentifier = null,
                        @CURRENTAPPUSERID uniqueidentifier,
            @PROSPECTSEGMENTATIONSEGMENTID nvarchar(200),
                        @RESEARCHGROUPID uniqueidentifier = null,
                        @NAME nvarchar(100) = ''
                        @DESCRIPTION nvarchar(255) = ''
                    )
                    as
                        set nocount on;

                        begin try
                            declare @CURRENTDATE datetime;
                                set @CURRENTDATE = getdate();

                            if @CHANGEAGENTID is null
                                exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

              declare @IDSUBSTRING        nvarchar(36)       
                       declare @PRIMARYSECTIONID   uniqueidentifier
              declare @SECONDARYSECTIONID uniqueidentifier 

                        set @IDSUBSTRING = substring(@PROSPECTSEGMENTATIONSEGMENTID,1,36)
                        if len(@IDSUBSTRING) = 36
                            set @PRIMARYSECTIONID = cast(@IDSUBSTRING as uniqueidentifier)

                        set @IDSUBSTRING = substring(@PROSPECTSEGMENTATIONSEGMENTID,37,36)
                        if len(@IDSUBSTRING) = 36
                            set @SECONDARYSECTIONID = cast(@IDSUBSTRING as uniqueidentifier)

                          if @RESEARCHGROUPID is null 
                begin
                set @ID = newid();

                insert into dbo.RESEARCHGROUP (
                                  ID,
                                  NAME,
                                  DESCRIPTION,
                                  OWNERID,
                                  OTHERSCANMODIFY,
                                  ADDEDBYID,
                                  CHANGEDBYID,
                                  DATEADDED,
                                  DATECHANGED
                              )
                            values (
                                @ID,
                                  @NAME,
                                  @DESCRIPTION,
                                  @CURRENTAPPUSERID,
                                  1,
                                  @CHANGEAGENTID,
                                  @CHANGEAGENTID,
                                  @CURRENTDATE,
                                  @CURRENTDATE
                          );
                end
              else
                begin
                  set @ID = @RESEARCHGROUPID  
                end

              declare @USERCANMODIFY bit
              set @USERCANMODIFY = 0;

              select
                              @USERCANMODIFY = 1
                          from
                              dbo.RESEARCHGROUP RG
                          left join
                              dbo.APPUSER AU on AU.ID = RG.OWNERID
                          where
                              RG.ID = @ID and
                              (RG.OTHERSCANMODIFY = 1 or
                               RG.OWNERID = @CURRENTAPPUSERID or
                               RG.OWNERID is null or
                               dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1); 

              if @USERCANMODIFY = 1 
                begin
                  insert into dbo.RESEARCHGROUPMEMBER(
                  RESEARCHGROUPID,
                  CONSTITUENTID,
                  ADDEDBYID,
                  CHANGEDBYID,
                  DATEADDED,
                  DATECHANGED
                )
                select
                  @ID,
                  PROSPECTS.CONSTITUENTID,
                  @CHANGEAGENTID,
                                  @CHANGEAGENTID,
                                  @CURRENTDATE,
                                  @CURRENTDATE
                from
                  dbo.PROSPECTSEGMENTATIONPROSPECT PROSPECTS
                left join dbo.RESEARCHGROUPMEMBER on
                   RESEARCHGROUPMEMBER.CONSTITUENTID = PROSPECTS.CONSTITUENTID and
                   RESEARCHGROUPMEMBER.RESEARCHGROUPID = @ID
                where
                  PROSPECTS.PRIMARYSECTIONID = @PRIMARYSECTIONID and
                  PROSPECTS.SECONDARYSECTIONID = @SECONDARYSECTIONID and
                  RESEARCHGROUPMEMBER.CONSTITUENTID is null

                exec dbo.USP_RESEARCHGROUP_RECALCULATENUMMEMBERS @ID, @CHANGEAGENTID;
              end        
            else
              begin
                          raiserror ('ERR_RESEARCHGROUP_CANNOTMODIFY',13,1);
                          return 0;
                      end


                        end try
                        begin catch
                            EXEC dbo.USP_RAISE_ERROR;
                            return 1;
                        end catch

                        return 0;