USP_DATAFORMTEMPLATE_ADD_RESEARCHGROUP
The save procedure used by the add dataform template "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. |
@NAME | nvarchar(100) | IN | Name |
@DESCRIPTION | nvarchar(255) | IN | Description |
@IDSETREGISTERID | uniqueidentifier | IN | Create from selection |
@OTHERSCANMODIFY | bit | IN | Others can modify |
@SITES | xml | IN | Sites |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_RESEARCHGROUP (
@ID uniqueidentifier = null output,
@CHANGEAGENTID uniqueidentifier = null,
@CURRENTAPPUSERID uniqueidentifier,
@NAME nvarchar(100),
@DESCRIPTION nvarchar(255) = null,
@IDSETREGISTERID uniqueidentifier = null,
@OTHERSCANMODIFY bit = 1,
@SITES xml = null
) with execute as owner 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 @APPLOCKRESULT int;
declare @APPLOCKNAME nvarchar(40);
set @APPLOCKNAME = 'USP_DATAFORMTEMPLATE_ADD_RESEARCHGROUP';
begin try
declare @SELECTIONEXISTS bit;
set @SELECTIONEXISTS = 0;
--check for object, then drop
if object_id('tempdb..#ADD_RESEARCHGROUP_MEMBERSTOINSERT') is not null
drop table #ADD_RESEARCHGROUP_MEMBERSTOINSERT;
create table #ADD_RESEARCHGROUP_MEMBERSTOINSERT
(
CONSTITUENTID uniqueidentifier
);
--Prepare members selection for insert
declare @DBOBJECTNAME nvarchar(128);
declare @DBOBJECTTYPE smallint;
select
@DBOBJECTNAME = IDSETREGISTER.DBOBJECTNAME,
@DBOBJECTTYPE = IDSETREGISTER.OBJECTTYPE
from
dbo.IDSETREGISTER
where
IDSETREGISTER.ID = @IDSETREGISTERID;
if not @DBOBJECTNAME is null and @DBOBJECTNAME <> '' begin
set @SELECTIONEXISTS = 1;
if @DBOBJECTTYPE = 1 set @DBOBJECTNAME = @DBOBJECTNAME + '()';
else if @DBOBJECTTYPE = 2 set @DBOBJECTNAME = @DBOBJECTNAME + '(''' + convert(nvarchar(36), @ID) + ''')';
declare @SQLTOEXEC nvarchar(max);
set @SQLTOEXEC = N'set nocount on;
insert into #ADD_RESEARCHGROUP_MEMBERSTOINSERT (
CONSTITUENTID
) select
CONSTITUENT.ID
from ' + nchar(13);
set @SQLTOEXEC = @SQLTOEXEC + @DBOBJECTNAME + N' as SELECTION
left join dbo.[CONSTITUENT] on CONSTITUENT.[ID] = SELECTION.[ID]
where CONSTITUENT.ISORGANIZATION = 0 and CONSTITUENT.ISGROUP = 0' + nchar(13);
exec sp_executesql @SQLTOEXEC;
end
--get applock
exec @APPLOCKRESULT = sp_getapplock @Resource=@APPLOCKNAME, @LockMode='Exclusive', @LockOwner='Session', @LockTimeout=0
exec dbo.USP_RESEARCHGROUP_VALIDATESITES @SITES, @CURRENTAPPUSERID, 'A4245C3E-08FD-4E56-AC78-18B4EE77AA6E', 1;
if @APPLOCKRESULT = 0 begin
--create Research Group
insert into dbo.RESEARCHGROUP (
ID,
NAME,
DESCRIPTION,
OWNERID,
OTHERSCANMODIFY,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@ID,
@NAME,
@DESCRIPTION,
@CURRENTAPPUSERID,
@OTHERSCANMODIFY,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
if not @SITES is null
exec dbo.USP_RESEARCHGROUP_GETSITES_ADDFROMXML @ID, @SITES, @CHANGEAGENTID, @CURRENTDATE;
if @SELECTIONEXISTS = 1 begin
--insert members and update Research Group numbers
insert into dbo.RESEARCHGROUPMEMBER (
RESEARCHGROUPID,
CONSTITUENTID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
) select
@ID,
CONSTITUENTID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
#ADD_RESEARCHGROUP_MEMBERSTOINSERT;
exec sp_releaseapplock @Resource=@APPLOCKNAME, @LockOwner='Session';
exec dbo.USP_RESEARCHGROUP_RECALCULATENUMMEMBERS @ID, @CHANGEAGENTID;
end
else begin
exec sp_releaseapplock @Resource=@APPLOCKNAME, @LockOwner='Session';
end
end
end try
begin catch
exec sp_releaseapplock @Resource=@APPLOCKNAME, @LockOwner='Session';
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;