USP_DATAFORMTEMPLATE_ADD_ASSIGNVOLUNTEER_MULTIPLEDAYS
The save procedure used by the add dataform template "Volunteer Assign Job Multiple Days Add Data Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | The output parameter indicating the ID of the record added. |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
@ADD_MULTIPLE_ACTION | nvarchar(73) | IN | Input parameter indicating the context ID for the record being added. |
@VOLUNTEERID | uniqueidentifier | IN | |
@JOBOCCURRENCEID | uniqueidentifier | IN | |
@STARTDATE | date | IN | Dates |
@ENDDATE | date | IN | |
@ASSIGN_DATES | xml | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_ASSIGNVOLUNTEER_MULTIPLEDAYS
(
@ID uniqueidentifier = null output,
@CURRENTAPPUSERID uniqueidentifier,
@ADD_MULTIPLE_ACTION nvarchar(73),
@VOLUNTEERID uniqueidentifier,
@JOBOCCURRENCEID uniqueidentifier,
@STARTDATE date = null,
@ENDDATE date = null,
@ASSIGN_DATES xml = null,
@CHANGEAGENTID uniqueidentifier = null
)
as
set nocount on;
declare @ISADMIN bit;
declare @APPUSER_IN_NONRACROLE bit;
declare @APPUSER_IN_NOSECGROUPROLE bit;
declare @APPUSER_IN_NONSITEROLE bit;
declare @APPUSER_IN_NOSITEROLE bit;
set @ISADMIN = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);
set @APPUSER_IN_NONRACROLE = dbo.UFN_SECURITY_APPUSER_IN_NONRACROLE(@CURRENTAPPUSERID);
set @APPUSER_IN_NOSECGROUPROLE = dbo.UFN_SECURITY_APPUSER_IN_NO_SECURITY_GROUP_ROLE(@CURRENTAPPUSERID);
set @APPUSER_IN_NONSITEROLE = dbo.UFN_SECURITY_APPUSER_IN_NONSITEROLE(@CURRENTAPPUSERID);
set @APPUSER_IN_NOSITEROLE = dbo.UFN_SECURITY_APPUSER_IN_NO_SITE_ROLE(@CURRENTAPPUSERID);
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
begin try
declare @DATES table (VOLUNTEERASSIGNMENTID uniqueidentifier, DATE date, ASSIGN bit);
insert into @DATES (VOLUNTEERASSIGNMENTID, DATE, ASSIGN)
select
VOLUNTEERASSIGNMENTID,
DATE,
ASSIGN
from
(select
T.c.value('(VOLUNTEERASSIGNMENTID)[1]','uniqueidentifier') as VOLUNTEERASSIGNMENTID,
T.c.value('(DATE)[1]','date') as DATE,
T.c.value('(ASSIGN)[1]','bit') as ASSIGN
from @ASSIGN_DATES.nodes('/ASSIGN_DATES/ITEM') T(c)) as DATES;
if not exists(select * from @DATES where (ASSIGN = 1 and VOLUNTEERASSIGNMENTID is null) or (ASSIGN = 0 and not VOLUNTEERASSIGNMENTID is null))
raiserror('BBERR_VOLUNTEERASSING_MULTIDAY_ATLEASTONEDATE', 13, 1);
--remove dates
declare @contextCache varbinary(128);
set @contextCache = CONTEXT_INFO();
if not @CHANGEAGENTID is null
set CONTEXT_INFO @CHANGEAGENTID;
delete dbo.VOLUNTEERASSIGNMENT
from dbo.VOLUNTEERASSIGNMENT
inner join @DATES DATES
on DATES.VOLUNTEERASSIGNMENTID = VOLUNTEERASSIGNMENT.ID
where
DATES.ASSIGN = 0;
if not @contextCache is null
set CONTEXT_INFO @contextCache;
insert into dbo.VOLUNTEERASSIGNMENT(JOBOCCURRENCEID, VOLUNTEERID, DATE, ADDEDBYID, CHANGEDBYID, DATECHANGED, DATEADDED)
select
@JOBOCCURRENCEID,
@VOLUNTEERID,
DATES.DATE,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from @DATES DATES
where
(DATES.ASSIGN = 1 and DATES.VOLUNTEERASSIGNMENTID is null) and
(@ISADMIN = 1 or
(@APPUSER_IN_NONRACROLE = 1 or
dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, @VOLUNTEERID, @APPUSER_IN_NOSECGROUPROLE) = 1)
and
(@APPUSER_IN_NONSITEROLE = 1 or
dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT_BYSITE(@CURRENTAPPUSERID, @VOLUNTEERID, @APPUSER_IN_NOSITEROLE) = 1)
);
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;