USP_GLOBALCHANGE_DELETESPONSORSHIPOPTION
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SELECTEDSPONSORSHIPOPTIONSFORDELETE | xml | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@ASOF | datetime | IN | |
@NUMBERADDED | int | INOUT | |
@NUMBEREDITED | int | INOUT | |
@NUMBERDELETED | int | INOUT | |
@CURRENTAPPUSERID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_GLOBALCHANGE_DELETESPONSORSHIPOPTION
(
@SELECTEDSPONSORSHIPOPTIONSFORDELETE xml = null,
@CHANGEAGENTID uniqueidentifier = null,
@ASOF as datetime = null,
@NUMBERADDED int = 0 output,
@NUMBEREDITED int = 0 output,
@NUMBERDELETED int = 0 output,
@CURRENTAPPUSERID uniqueidentifier = null
)
as
set nocount off;
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate();
set @NUMBERADDED = 0;
set @NUMBEREDITED = 0;
set @NUMBERDELETED = 0;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
begin try
--do the global change operation here, and set @NUMBERADDED, @NUMBEREDITED, and/or @NUMBERDELETED as appropriate
DECLARE @DeleteTable table (ID int identity(1,1), EventSponsorshipID uniqueidentifier)
DECLARE @InactivateTable table (ID int identity(1,1), EventSponsorshipID uniqueidentifier)
DECLARE @SelectedOptionsTable table (ID int identity(1,1), EventSponsorshipID uniqueidentifier)
insert into @SelectedOptionsTable(EventSponsorshipID)
SELECT EVENTSPONSORSHIPID FROM (SELECT T.c.value('(RECORDID)[1]','uniqueidentifier') AS 'EVENTSPONSORSHIPID'
FROM @SELECTEDSPONSORSHIPOPTIONSFORDELETE.nodes('/SELECTEDSPONSORSHIPOPTIONSFORDELETE/ITEM') T(c)) AS XMLTABLE
INNER JOIN EVENTSPONSORSHIPTYPE ES ON XMLTABLE.EVENTSPONSORSHIPID = ES.ID
WHERE exists(
select 1 from dbo.UFN_SITEID_MAPFROM_EVENTID(ES.EVENTID) EVENTSITE
where (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1
or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,'800093A6-B727-490B-8CC4-C0C0CF2148F0',20)
where SITEID=[EVENTSITE].[SITEID] or (SITEID is null and [EVENTSITE].[SITEID] is null)) )
)
insert into @InactivateTable(EventSponsorshipID)
select distinct ST.EventSponsorshipID
from @SelectedOptionsTable ST
inner join EVENTSPONSORSHIPTYPE EST on EST.ID = ST.EventSponsorshipID
inner join EVENTSPONSOR ES on ES.EVENTSPONSORSHIPTYPEID = EST.ID
insert into @DeleteTable(EventSponsorshipID)
select distinct DT.EventSponsorshipID
from @SelectedOptionsTable DT
inner join EVENTSPONSORSHIPTYPE EST on EST.ID = DT.EventSponsorshipID
left join EVENTSPONSOR ES on ES.EVENTSPONSORSHIPTYPEID = EST.ID
WHERE ES.ID is null
--update
update EVENTSPONSORSHIPTYPE
set ISACTIVE = 0
from EventSponsorshipType ES
inner join @InactivateTable DT on DT.EventSponsorshipID = ES.ID
--delete
delete EVENTSPONSORSHIPTYPE where ID in (select EventSponsorshipID from @DeleteTable)
set @NUMBERDELETED =(select COUNT(*) from @DeleteTable) + (select COUNT(*) from @InactivateTable)
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch