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;