USP_DATAFORMTEMPLATE_ADD_RESEARCHGROUPMEMBERS

The save procedure used by the add dataform template "Research Group From Map 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.
@RESEARCHGROUPID uniqueidentifier IN Name
@NAME nvarchar(100) IN Name
@DESCRIPTION nvarchar(255) IN Description
@RESEARCHGROUPMEMBERS xml IN Research group members

Definition

Copy

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

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

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

                            declare @OTHERSCANMODIFY bit
                            declare @OWNERID uniqueidentifier


                            set @RESEARCHGROUPMEMBERS = 
                            (    
                                select
                                    NEWMEMBERS.CONSTITUENTID,
                                    NEWMEMBERS.ID
                                from
                                    UFN_RESEARCHGROUP_GETMEMBERS_FROMITEMLISTXML(@RESEARCHGROUPMEMBERS) as NEWMEMBERS
                                left join UFN_RESEARCHGROUP_GETMEMBERS(@RESEARCHGROUPID) as EXISTINGMEMBERS on
                                    NEWMEMBERS.CONSTITUENTID = EXISTINGMEMBERS.CONSTITUENTID
                                left join CONSTITUENT as C on
                                    NEWMEMBERS.CONSTITUENTID = C.ID 
                                where
                                    EXISTINGMEMBERS.ID is null and C.ISORGANIZATION = 0 and C.ISGROUP = 0                    
                                for
                                    XML RAW('ITEM'),type,elements,root('RESEARCHGROUPMEMBERS'),BINARY BASE64
                            )

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

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

                                set @ID = @RESEARCHGROUPID

                                select @OTHERSCANMODIFY=OTHERSCANMODIFY, @OWNERID=OWNERID
                                from RESEARCHGROUP
                                where ID = @ID

                            end

                            if @OTHERSCANMODIFY = 1 or @OWNERID = @CURRENTAPPUSERID or @OWNERID is null or dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1
                                begin
                                    exec dbo.USP_RESEARCHGROUP_GETMEMBERS_ADDFROMXML @ID, @RESEARCHGROUPMEMBERS, @CHANGEAGENTID;
                                    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;