USP_CLONESITE_DONATIONFORM_ECARD

Handles the Donation Form and Ecard-specific steps for cloning a CMS site.

Parameters

Parameter Parameter Type Mode Description
@SourceClientSitesID int IN
@TargetClientSitesID int IN
@CurrentUserID int IN
@CopyBatchGuid uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.USP_CLONESITE_DONATIONFORM_ECARD
(
@SourceClientSitesID int,
@TargetClientSitesID int,
@CurrentUserID int,
@CopyBatchGuid uniqueidentifier

as


    --Insert new email acknowledgement templates

    declare @IDs xml
    set @IDs = 
    (
        select ECP.EmailTemplateID as ID
        from dbo.ECardPart ECP
        inner join dbo.SiteContent SC on SC.CopySourceID = ECP.SiteContentID
        where SC.CopyBatchGUID = @CopyBatchGuid
        FOR XML RAW, ELEMENTS
    )        
    exec spCloneSite_EmailTemplate @TargetClientSitesID,@CurrentUserID,@CopyBatchGUID,@IDs

    --Insert new entries into eCardPart

    insert into dbo.ECardPart (SiteContentID, MaxHeight, MaxWidth, MaxRecipients, EmailTemplateID, BrowseCategories, ClientDonationsID, UseRichTextMessage, DisplayAllAsSingleFields)
    select SC.ID, ECP.MaxHeight, ECP.MaxWidth, ECP.MaxRecipients, ET.ID, ECP.BrowseCategories, ECP.ClientDonationsID, ECP.UseRichTextMessage, ECP.DisplayAllAsSingleFields
    from dbo.ECardPart ECP
    inner join dbo.SiteContent SC on SC.CopySourceID = ECP.SiteContentID
    inner join dbo.EmailTemplate ET on ET.CopySourceID = ECP.EmailTemplateID
    where SC.CopyBatchGUID = @CopyBatchGuid and ET.CopyBatchGUID = @CopyBatchGuid

    --Find matches between the original and copied eCardPart entries

    declare @EcardPartMapping table ([SourcePartID] int, [NewPartID] int)
    insert into @EcardPartMapping
    select SECP.ID, TECP.ID
    from dbo.ECardPart SECP
    inner join dbo.SiteContent SC on SC.CopySourceID = SECP.SiteContentID
    inner join dbo.ECardPart TECP on TECP.SiteContentID = SC.ID
    where SC.CopyBatchGUID = @CopyBatchGuid

    --Insert new entries into eCardPartTemplate

    insert into dbo.ECardPartTemplate (ECardPartID, ECardTemplateID, SiteFoldersID)
    select EPM.NewPartID, ECPT.ECardTemplateID, ECPT.SiteFoldersID
    from dbo.ECardPartTemplate ECPT
    inner join @EcardPartMapping EPM on EPM.SourcePartID = ECPT.ECardPartID

    -------------------------------------------------------------------------------------------


    -- Insert email acknowledgement templates

    set @IDs = 
    (
        select CD.EmailTemplateID as ID
        from dbo.ClientDonations CD
        inner join dbo.SiteContent SC on SC.CopySourceID = CD.ContentID
        where SC.CopyBatchGUID = @CopyBatchGuid
        FOR XML RAW, ELEMENTS
    )    
    exec spCloneSite_EmailTemplate @TargetClientSitesID, @CurrentUserID, @CopyBatchGUID,@IDs

    -- Insert new entries into ClientDonations

    insert into dbo.ClientDonations (ClientsID,OwnerID,Guid,ConstitCodeID,DonationOptions,TributeOptions,RedirectPageID,MerchantAccount,ContentID,Attributes,DonateBtn,RecurrenceOptions,RecurrenceOptionsTruePledge,NoMGPledges,ShoppingCartPageID,EReceiptPdfForCreditCard,EReceiptPdfForDirectDebit,MarkReceiptedForCreditCard,MarkReceiptedForDirectDebit,EReceiptContent,EReceiptPdfMargin,CartMessage,ECardSendDateAttributeID,ECardRecipientFirstNameAttributeID,ECardRecipientLastNameAttributeID,CartSendDonationAcknowledgementAlways,MinimumGiftAmount,MinimumPledgePaymentAmount,ShowPledgePaymentDueDate,EmailTemplateID,AcknowledgementBlock)
    select 
    CD.ClientsID,
    CD.OwnerID,
    NEWID(),
    CD.ConstitCodeID,
    CD.DonationOptions,
    CD.TributeOptions,
    CD.RedirectPageID,
    CD.MerchantAccount,
    SC.ID,
    CD.Attributes,
    CD.DonateBtn,
    CD.RecurrenceOptions,
    CD.RecurrenceOptionsTruePledge,
    CD.NoMGPledges,
    ISNULL(SP.ID,CD.ShoppingCartPageID) as ShoppingCartPageID,
    CD.EReceiptPdfForCreditCard,
    CD.EReceiptPdfForDirectDebit,
    CD.MarkReceiptedForCreditCard,
    CD.MarkReceiptedForDirectDebit,
    dbo.UFN_UPDATECOPYCONTENTHTML (CD.EReceiptContent, @CopyBatchGuid),
    CD.EReceiptPdfMargin,
    dbo.UFN_UPDATECOPYCONTENTHTML (CD.CartMessage, @CopyBatchGuid),
    CD.ECardSendDateAttributeID,
    CD.ECardRecipientFirstNameAttributeID,
    CD.ECardRecipientLastNameAttributeID,
    CD.CartSendDonationAcknowledgementAlways,
    CD.MinimumGiftAmount,
    CD.MinimumPledgePaymentAmount,
    CD.ShowPledgePaymentDueDate,
    ISNULL(ET.ID,-1),
    dbo.UFN_UPDATECOPYCONTENTHTML (CD.AcknowledgementBlock, @CopyBatchGuid)
    from dbo.ClientDonations CD
    inner join dbo.SiteContent SC on SC.CopySourceID = CD.ContentID
    left outer join dbo.EmailTemplate ET on ET.CopySourceID = CD.EmailTemplateID
    left outer join dbo.SitePages SP on SP.CopySourceID = CD.ShoppingCartPageID and (SP.CopyBatchGUID = @CopyBatchGuid OR SP.CopyBatchGUID IS NULL)
    where SC.CopyBatchGUID = @CopyBatchGuid and (ET.CopyBatchGUID = @CopyBatchGuid OR ET.CopyBatchGUID IS NULL)

    -- Find matches between original and copied Donation part entries

    declare @DonationMapping table (SrcPartID int, NewPartID int)
    insert into @DonationMapping
    select SCD.ID, TCD.ID
    from dbo.ClientDonations SCD
    inner join dbo.SiteContent SC on SC.CopySourceID = SCD.ContentID
    inner join dbo.ClientDonations TCD on TCD.ContentID = SC.ID
    where SC.CopyBatchGUID = @CopyBatchGuid

    -- Insert new entries into DonationDesignations

    insert into dbo.DonationDesignations(ClientDonationsID,BackOfficeID,Name,IsDefault,BackOfficeIDGUID)
    select 
    DM.NewPartID,
    DD.BackOfficeID,
    DD.Name,
    DD.IsDefault,
    DD.BackOfficeIDGUID
    from dbo.DonationDesignations DD
    inner join @DonationMapping DM on DM.SrcPartID = DD.ClientDonationsID

    -- Insert new entries into DonationGivingLevels

    insert into dbo.DonationGivingLevels(ClientDonationsID,Name,Amount)
    select 
    DM.NewPartID,
    DGL.Name,
    DGL.Amount
    from dbo.DonationGivingLevels DGL
    inner join @DonationMapping DM on DM.SrcPartID = DGL.ClientDonationsID

    -- Insert new entries into DonationSources

    insert into dbo.DonationSources(ClientDonationsID,BackOfficeID,Name,IsDefault)
    select 
    DM.NewPartID,
    DS.BackOfficeID,
    DS.Name,
    DS.IsDefault
    from dbo.DonationSources DS
    inner join @DonationMapping DM on DM.SrcPartID = DS.ClientDonationsID 

    ------------------------------------------------------------------------------------------



    --Update the Client Donation ID to point to the copied donation data

    update ECP
    set ECP.ClientDonationsID = CD.ID
    from dbo.ECardPart ECP
    inner join dbo.ClientDonations CD on CD.ContentID = ECP.SiteContentID
    inner join dbo.SiteContent SC on SC.ID = ECP.SiteContentID
    where SC.ContentTypesID = 114 AND SC.CopyBatchGUID = @CopyBatchGuid

    --Update the Ecard Part ID to point to the copied ecard data

    update CD
    set cd.ECardPartID = ECP.ID
    from dbo.ECardPart ECP
    inner join dbo.ClientDonations CD on CD.ContentID = ECP.SiteContentID
    inner join dbo.SiteContent SC on SC.ID = ECP.SiteContentID
    where SC.ContentTypesID = 45 AND SC.CopyBatchGUID = @CopyBatchGuid

    --------------------------------------------------------------------------------------------


    --Update XML Data

    declare @Data xml
    set @Data = 
    (
        select P.SiteContentID, CD.ID as Value
        from dbo.UFN_GETXMLPROPERTYFORSITECOPY(@CopyBatchGuid,45, 'ClientDonationsID') P
        inner join dbo.ClientDonations CD on CD.ContentID = P.SiteContentID
        FOR XML RAW, ELEMENTS
    )    
    exec USP_UPDATEXMLPROPERTYFORSITECOPY 'ClientDonationsID', @Data

    set @Data = 
    (
        select P.SiteContentID, CD.ID as Value
        from dbo.UFN_GETXMLPROPERTYFORSITECOPY(@CopyBatchGuid,114, 'ClientDonationsID') P
        inner join dbo.ClientDonations CD on CD.ContentID = P.SiteContentID
        FOR XML RAW, ELEMENTS
    )    
    exec USP_UPDATEXMLPROPERTYFORSITECOPY 'ClientDonationsID', @Data

    set @Data = 
    (
        select P.SiteContentID, ECP.ID as Value
        from dbo.UFN_GETXMLPROPERTYFORSITECOPY(@CopyBatchGuid,45, 'ECardPartID') P
        inner join dbo.EcardPart ECP on ECP.SiteContentID = P.SiteContentID
        FOR XML RAW, ELEMENTS
    )    
    exec USP_UPDATEXMLPROPERTYFORSITECOPY 'ECardPartID', @Data    

    set @Data = 
    (
        select P.SiteContentID, ECP.ID as Value
        from dbo.UFN_GETXMLPROPERTYFORSITECOPY(@CopyBatchGuid,114, 'ECardPartID') P
        inner join dbo.EcardPart ECP on ECP.SiteContentID = P.SiteContentID
        FOR XML RAW, ELEMENTS
    )    
    exec USP_UPDATEXMLPROPERTYFORSITECOPY 'ECardPartID', @Data