USP_EVENTPREFERENCE_COPY
Copies preferences from one event to another event.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SOURCEEVENTID | uniqueidentifier | IN | |
@DESTINATIONEVENTID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_EVENTPREFERENCE_COPY
(
@SOURCEEVENTID uniqueidentifier,
@DESTINATIONEVENTID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null
)
with execute as caller
as
set nocount on;
-- Cannot copy if the source event does not exist
if not exists (select ID from dbo.EVENT where ID = @SOURCEEVENTID)
raiserror('The source event specified does not exist.',13,1);
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @PREFERENCEGROUPMAP table
(
SOURCEID uniqueidentifier,
DESTINATIONID uniqueidentifier
)
insert into @PREFERENCEGROUPMAP
(
SOURCEID,
DESTINATIONID
)
select
ID,
coalesce
(
(
select
ID
from
dbo.EVENTPREFERENCEGROUP INNEREVENTPREFERENCEGROUP
where
INNEREVENTPREFERENCEGROUP.EVENTID = @DESTINATIONEVENTID
and INNEREVENTPREFERENCEGROUP.[NAME] = EVENTPREFERENCEGROUP.[NAME]
),
newid()
)
from
dbo.EVENTPREFERENCEGROUP
where
EVENTID = @SOURCEEVENTID;
insert into dbo.EVENTPREFERENCEGROUP
(
ID,
EVENTID,
[NAME],
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
MAP.DESTINATIONID,
@DESTINATIONEVENTID,
EVENTPREFERENCEGROUP.[NAME],
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
@PREFERENCEGROUPMAP MAP
left join dbo.EVENTPREFERENCEGROUP on MAP.SOURCEID = EVENTPREFERENCEGROUP.ID
where
not exists
(
select
ID
from
dbo.EVENTPREFERENCEGROUP INNEREVENTPREFERENCEGROUP
where
INNEREVENTPREFERENCEGROUP.ID = MAP.DESTINATIONID
)
order by
EVENTPREFERENCEGROUP.[NAME];
insert into dbo.EVENTPREFERENCE
(
EVENTPREFERENCEGROUPID,
[NAME],
SEQUENCE,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
MAP.DESTINATIONID,
EVENTPREFERENCE.[NAME],
(
select
coalesce(max(INNEREVENTPREFERENCE.SEQUENCE), 0) + EVENTPREFERENCE.SEQUENCE + 1
from
dbo.EVENTPREFERENCE INNEREVENTPREFERENCE
where
INNEREVENTPREFERENCE.EVENTPREFERENCEGROUPID = MAP.DESTINATIONID
),
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
@PREFERENCEGROUPMAP MAP
inner join dbo.EVENTPREFERENCE on MAP.SOURCEID = EVENTPREFERENCE.EVENTPREFERENCEGROUPID
where
not exists
(
select
ID
from
dbo.EVENTPREFERENCE INNEREVENTPREFERENCE
where
INNEREVENTPREFERENCE.EVENTPREFERENCEGROUPID = MAP.DESTINATIONID
and INNEREVENTPREFERENCE.[NAME] = EVENTPREFERENCE.[NAME]
)
order by
EVENTPREFERENCE.SEQUENCE;
return 0;