spClone_ClientEvent
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@PKID | int | INOUT | |
@ContentID | int | IN | |
@CurrentUsersID | int | IN | |
@OldContentID | int | IN |
Definition
Copy
CREATE procedure [dbo].[spClone_ClientEvent]
(
@PKID int output,
@ContentID int,
@CurrentUsersID int,
@OldContentID int = null
)
as
declare @ClientEventsID integer;
set @ClientEventsID = @PKID;
declare @newGuid uniqueidentifier;
set @newGuid = newid();
insert into dbo.ClientEvents (
ClientsID,
OwnerID,
Guid,
FundID,
ConstitCodeID,
RedirectPageID,
ContentID,
MerchantAccount,
ShoppingCartPageID,
CartMessage,
CartSendRegistrationAcknowledgementAlways,
AcknowledgementBlock,
NoMGPledges
) select
ClientsID,
@CurrentUsersID,
@newGuid,
FundID,
ConstitCodeID,
RedirectPageID,
@ContentID,
MerchantAccount,
ShoppingCartPageID,
CartMessage,
CartSendRegistrationAcknowledgementAlways,
AcknowledgementBlock,
NoMGPledges
from
dbo.ClientEvents
where
ID = @PKID;
select @PKID = @@identity;
declare @EventItemsID integer;
declare @NewEventItemsID integer;
declare items_cursor cursor for
select ID
from
dbo.EventItems
where
ClientEventsID = @ClientEventsID;
open items_cursor;
fetch next from items_cursor into @EventItemsID;
while @@FETCH_STATUS = 0
begin
insert into dbo.EventItems (
ClientEventsID,
BackOfficeID,
LimitCapacity,
PageLink,
DisplayName,
DisplayDesc,
ShowRelations,
Attributes,
Target,
PageTabID,
BaseCurrencyID,
DisplayOrder
) select
@PKID,
BackOfficeID,
LimitCapacity,
PageLink,
DisplayName,
DisplayDesc,
ShowRelations,
Attributes,
Target,
PageTabID,
BaseCurrencyID,
DisplayOrder
from
dbo.EventItems
where
ID = @EventItemsID;
select @NewEventItemsID = @@identity;
insert into dbo.EventItemPrices (
EventItemsID,
BackOfficeID,
Description,
NumParticipants,
Publish,
AllowAnonRegistrants,
DisplayOrder
) select
@NewEventItemsID,
BackOfficeID,
Description,
NumParticipants,
Publish,
AllowAnonRegistrants,
DisplayOrder
from
dbo.EventItemPrices
where
EventItemsID = @EventItemsID;
fetch next from items_cursor into @EventItemsID;
end
close items_cursor;
deallocate items_cursor;
-- For Event Registration Form 2.0, copy CMSEVENTOPTIONS (price units and attributes data)
if 154 = (select top 1 ContentTypesID from dbo.SiteContent where ID = @ContentID) and @OldContentID is not null
begin
--Get the old part's CMSEventOptionID from its XMLData
declare @XMLData xml = null
select @XMLData = XmlData from dbo.SiteContent sc where sc.ID = @OldContentID
declare @Property nvarchar(400) = 'CMSEventOptionID'
declare @oldCMSEventOptionID uniqueidentifier
select @oldCMSEventOptionID = convert(uniqueidentifier, @XMLData.value('(XMLHashTable[1]/ItemArray[1]/Item[@Name=sql:variable("@Property")][1]/Value[1]/text()[1])', 'nvarchar(max)') )
--Copy the CMSEventOption data
declare @CHANGEAGENTID uniqueidentifier
exec dbo.[USP_CHANGEAGENT_GETORCREATECHANGEAGENT] @CHANGEAGENTID output;
declare @newCMSEventOptionID uniqueidentifier = NEWID()
insert into CMSEVENTOPTION (ID, OPTIONDATA, ADDEDBYID, CHANGEDBYID)
select @newCMSEventOptionID, OPTIONDATA, @CHANGEAGENTID, @CHANGEAGENTID
FROM dbo.CMSEVENTOPTION
where ID = @oldCMSEventOptionID
--Update the new OPTIONDATA blob to point to the new ContentID, and its own CMSEVENTOPTION.ID
set @XMLData = null
select @XMLData = OptionData
from dbo.CMSEVENTOPTION
where ID = @newCMSEventOptionID
declare @NewValue nvarchar(50) = convert(nvarchar(50), @ContentID)
set @XMLData.modify('replace value of (Event2Options[1]/Event2RegContentObjectID[1]/text()[1]) with sql:variable("@NewValue")')
set @NewValue = CONVERT(nvarchar(50), @newCMSEventOptionID)
set @XMLData.modify('replace value of (Event2Options[1]/ID[1]/text()[1]) with sql:variable("@NewValue")')
update dbo.CMSEVENTOPTION
set OPTIONDATA = @XMLData
where ID = @newCMSEventOptionID
--Update new part's XMLData to use the new CMSEventOption's ID
set @XMLData = null
select @XMLData = XmlData
from dbo.SiteContent sc
where sc.ID = @ContentID
if @XMLData is not null
begin
set @Property = 'CMSEventOptionID'
set @NewValue = convert(nvarchar(50), @newCMSEventOptionID)
set @XMLData.modify('replace value of (XMLHashTable[1]/ItemArray[1]/Item[@Name=sql:variable("@Property")][1]/Value[1]/text()[1]) with sql:variable("@NewValue")')
update SC
set SC.XMLData = '<?xml version="1.0" encoding="utf-16"?>' + CAST(@XMLData as nvarchar(max))
from dbo.SiteContent SC
where SC.ID = @ContentID
end
end
exec spAuditThis @CurrentUsersID, 2, @newGuid, 16;