USP_DATAFORMTEMPLATE_ADD_RESEARCHGROUPMEMBER

The save procedure used by the add dataform template "Research Group Member 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 Input parameter indicating the context ID for the record being added.
@CONSTITUENTID uniqueidentifier IN Constituent
@SECURITYFEATUREID uniqueidentifier IN
@SECURITYFEATURETYPE tinyint IN

Definition

Copy

                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_RESEARCHGROUPMEMBER (
                        @ID uniqueidentifier = null output,
                        @CHANGEAGENTID uniqueidentifier = null,
                        @CURRENTAPPUSERID uniqueidentifier,
                        @RESEARCHGROUPID uniqueidentifier,
                        @CONSTITUENTID uniqueidentifier,
                        @SECURITYFEATUREID uniqueidentifier = null,
                        @SECURITYFEATURETYPE tinyint = 0
                    ) as
                        set nocount on;

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

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

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

                        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 = @RESEARCHGROUPID and
                            (RG.OTHERSCANMODIFY = 1 or
                             RG.OWNERID = @CURRENTAPPUSERID or
                             RG.OWNERID is null or
                             dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1);

                        declare @ISORGANIZATION bit, @ISGROUP bit;
                        set @ISORGANIZATION = 0;
                        set @ISGROUP = 0;

                        select
                             @ISORGANIZATION = C.ISORGANIZATION,
                             @ISGROUP = C.ISGROUP
                        from
                            dbo.CONSTITUENT C
                        where
                            C.ID = @CONSTITUENTID;

                        declare @ISDUPLICATE bit;
                        set @ISDUPLICATE = 0;
                        if exists(select 1 from dbo.RESEARCHGROUPMEMBER where RESEARCHGROUPID = @RESEARCHGROUPID and CONSTITUENTID = @CONSTITUENTID
                            set @ISDUPLICATE = 1;

            declare @HASSECURITYACCESS bit;
            set @HASSECURITYACCESS = 0;
            if (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1
                 or
                 ( --Site security
                  exists ( select top 1 1 from dbo.UFN_SITEID_MAPFROM_CONSTITUENTID(@CONSTITUENTID) as CSITE
                                where exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE) where SITEID=CSITE.[SITEID] or (SITEID is null and CSITE.[SITEID] is null)) 
                             )
                   --Constituent security
                  and
                      dbo.UFN_SECURITY_APPUSER_GRANTED_FORM_IN_NONRACROLE(@CURRENTAPPUSERID,@SECURITYFEATUREID) = 1
                       or
                      dbo.UFN_SECURITY_APPUSER_GRANTED_FORM_FORCONSTIT(@CURRENTAPPUSERID,@SECURITYFEATUREID, @CONSTITUENTID) = 1
                      )
                 )
              )
              set @HASSECURITYACCESS = 1;

                        begin try
                            if @USERCANMODIFY = 0 begin
                                raiserror ('ERR_RESEARCHGROUP_CANNOTMODIFY',13,1);
                            end
                            else if @ISORGANIZATION = 1 begin
                                raiserror ('ERR_RESEARCHGROUP_ISORGANIZATION',13,1);
                            end
                            else if @ISDUPLICATE = 1 begin
                                raiserror ('ERR_RESEARCHGROUP_DUPLICATE_CONSTITUENT',13,1);
                            end
                            else if @ISGROUP = 1 begin
                                raiserror ('ERR_RESEARCHGROUP_ISGROUP',13,1);
                            end
                            if @HASSECURITYACCESS = 0 begin
                                raiserror ('ERR_RESEARCHGROUP_NOSECURITYACCESS',13,1);
                            end
                            else begin
                                insert into dbo.RESEARCHGROUPMEMBER (
                                    ID,
                                    RESEARCHGROUPID,
                                    CONSTITUENTID,
                                    ADDEDBYID,
                                    CHANGEDBYID,
                                    DATEADDED,
                                    DATECHANGED
                                )
                                values (
                                    @ID,
                                    @RESEARCHGROUPID,
                                    @CONSTITUENTID,
                                    @CHANGEAGENTID,
                                    @CHANGEAGENTID,
                                    @CURRENTDATE,
                                    @CURRENTDATE
                                );

                                exec dbo.USP_RESEARCHGROUP_INCREMENTNUMMEMBERS @RESEARCHGROUPID, 1, @CHANGEAGENTID;
                            end
                        end try
                        begin catch
                            exec dbo.USP_RAISE_ERROR;
                            return 1;
                        end catch

                        return 0;