USP_GLOBALCHANGE_DELETEREGISTRATIONOPTION
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SELECTEDREGISTRATIONOPTIONSFORDELETE | 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_DELETEREGISTRATIONOPTION
(
@SELECTEDREGISTRATIONOPTIONSFORDELETE 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
DECLARE @SelectedRegOptionsTable table (ID int identity(1,1), EventPriceID uniqueidentifier)
DECLARE @DeleteTable table (ID int identity(1,1), EventPriceID uniqueidentifier)
DECLARE @InactivateTable table (ID int identity(1,1), EventPriceID uniqueidentifier)
DECLARE @NumberDeactivated int
Set @NumberDeactivated = 0
insert into @SelectedRegOptionsTable(EventPriceID)
SELECT EVENTPRICEID FROM (SELECT T.c.value('(RECORDID)[1]','uniqueidentifier') AS EVENTPRICEID
FROM @SELECTEDREGISTRATIONOPTIONSFORDELETE.nodes('/SELECTEDREGISTRATIONOPTIONSFORDELETE/ITEM') T(c)) XMLTABLE
INNER JOIN EVENTPRICE EP ON XMLTABLE.EVENTPRICEID = EP.ID
WHERE exists(
select 1 from dbo.UFN_SITEID_MAPFROM_EVENTID(EP.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 all the records that already have at least one record in registrantregistration (i.e. they are in use)
insert into @InactivateTable(EventPriceID)
SELECT distinct ST.EVENTPRICEID
FROM @SelectedRegOptionsTable ST
INNER JOIN REGISTRANTREGISTRATION RR ON ST.EVENTPRICEID = RR.EVENTPRICEID
LEFT JOIN FAFREGISTRATIONTYPE FR ON ST.EVENTPRICEID = FR.EVENTPRICEID
WHERE FR.ISACTIVE=1
insert into @DeleteTable
SELECT ST.EVENTPRICEID
FROM @SelectedRegOptionsTable ST
LEFT JOIN REGISTRANTREGISTRATION RR ON ST.EVENTPRICEID = RR.EVENTPRICEID
LEFT JOIN EVENTPRICE EP ON ST.EventPriceID = EP.ID
WHERE RR.EventPriceID is NULL AND EP.ID is not NULL
DELETE FROM EVENTPRICE
WHERE ID in (SELECT EVENTPRICEID FROM @DeleteTable)
UPDATE FAFREGISTRATIONTYPE
SET ISACTIVE=0
WHERE EVENTPRICEID in (SELECT EVENTPRICEID FROM @InactivateTable)
SET @NUMBERDELETED = ((select COUNT(*) from @InactivateTable) + (select COUNT(*) from @DeleteTable))
SELECT @NUMBERDELETED
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch