spRollbackCopyBatch

Used to roll back a CMS site copy.

Parameters

Parameter Parameter Type Mode Description
@CopyBatchGUID uniqueidentifier IN
@CurrentUserID int IN

Definition

Copy


CREATE procedure dbo.spRollbackCopyBatch
(
    @CopyBatchGUID uniqueidentifier,
    @CurrentUserID int
)
as
    set nocount on;

    BEGIN TRY

    BEGIN TRANSACTION

      --Let's whack the correlation between this clientsite and this copybatchguid


      DECLARE @clientSiteID int
      SET @clientSiteID = (SELECT top 1 ID from dbo.ClientSites WHERE ClientSites.CopyBatchGUID = @CopyBatchGUID )

      UPDATE ClientSites
      SET
      CopySourceID = NULL,
      CopyBatchGUID = NULL
      WHERE ClientSites.CopyBatchGUID = @CopyBatchGUID

      DELETE FROM dbo.CMSSITESETTING where CLIENTSITESID = @clientSiteID        

      declare @objectsToDelete table (guid uniqueidentifier)

      insert into @objectsToDelete
        select guid from SiteImages where CopyBatchGUID = @CopyBatchGUID
      insert into @objectsToDelete
        select guid from SiteStyleSheets where CopyBatchGUID = @CopyBatchGUID
      insert into @objectsToDelete
        select guid from SitePages where CopyBatchGUID = @CopyBatchGUID
      insert into @objectsToDelete
        select guid from SiteContent where CopyBatchGUID = @CopyBatchGUID        
      insert into @objectsToDelete
        select guid from EmailTemplate where CopyBatchGUID = @CopyBatchGUID

      delete OSE
      from dbo.CMSOBJETSECURITYEXCEPTION OSE
      inner join @objectsToDelete OTD
      on OSE.SECUREDOBJECTGUID = OTD.guid

      delete ESP
      from dbo.CMSEVERYONESECURITYPRIVS ESP
      inner join @objectsToDelete OTD
      on ESP.SECUREDOBJECTGUID = OTD.guid

            delete CTL
            from dbo.CMSTEMPLATELAYOUT CTL
            inner join SitePages SP
            on SP.ID = CTL.TEMPLATEID
      WHERE SP.CopyBatchGUID = @CopyBatchGUID

        delete S
        from dbo.Search S
        inner join dbo.SiteContent SC on SC.ID = S.SiteContentId
        where SC.CopyBatchGUID = @CopyBatchGUID

      DELETE FROM SiteImages WHERE CopyBatchGUID = @CopyBatchGUID
      DELETE FROM SiteLayouts WHERE CopyBatchGUID = @CopyBatchGUID
      DELETE FROM SiteStyleSheets WHERE CopyBatchGUID = @CopyBatchGUID
      DELETE FROM SiteFolders WHERE CopyBatchGUID = @CopyBatchGUID

      --Deleting the siteimages takes care of this

      --DELETE FROM SiteImageFolders WHERE CopyBatchGUID = @CopyBatchGUID

      DELETE FROM dbo.VanityURL where CopyBatchGUID = @CopyBatchGUID

      -- Need to delete page content first because it FKs to both sitecontent and sitepages


      declare @T_SITEPAGES TABLE
      (
        ID int
      )

      insert into @T_SITEPAGES
      select ID from dbo.SitePages where CopyBatchGUID = @CopyBatchGUID

      delete PC from dbo.PageContent PC
        inner join @T_SITEPAGES SP on PC.SitePagesID = SP.ID

      declare @T_SITECONTENT TABLE
      (
        ID int
      )

      insert into @T_SITECONTENT
      select ID from dbo.SiteContent where CopyBatchGUID = @CopyBatchGUID

      delete PC from dbo.PageContent PC
        inner join @T_SITECONTENT SC on PC.SiteContentID = SC.ID

      -- Now that the FK constraints won't fire, we can delete the sitecontent and sitepages


      DELETE FROM SiteContent WHERE CopyBatchGUID = @CopyBatchGUID
      DELETE FROM SitePages WHERE CopyBatchGUID = @CopyBatchGUID

      delete from dbo.[ECARDTEMPLATE] where COPYBATCHGUID = @CopyBatchGUID

      DELETE FROM EmailTemplate WHERE CopyBatchGUID = @CopyBatchGUID

      UPDATE dbo.SiteCopy
      SET TargetClientSitesID = null
      WHERE TargetClientSitesID = @clientSiteID

      DELETE FROM dbo.ClientSites WHERE ID = @clientSiteID


      UPDATE SiteCopy
      SET Status = 100, RollbackUserID = @CurrentUserID, RollbackDate = getutcdate()
      WHERE ID = @CopyBatchGUID

      UPDATE SiteCopy SET Status = 98, ErrorLog = ErrorLog +  'Rollback Complete.' + CHAR(13) WHERE ID = @CopyBatchGUID

    COMMIT TRANSACTION

    END TRY
  BEGIN CATCH
    ROLLBACK TRANSACTION
    UPDATE SiteCopy SET Status = 99, ErrorLog = ErrorLog + 'An error occurred while undoing the site copy: ' + ERROR_MESSAGE() + CHAR(13) WHERE ID = @CopyBatchGUID
  END CATCH