USP_CUSTOMFORM_BULKPUTINTRASHBIN

Parameters

Parameter Parameter Type Mode Description
@XML xml IN
@NUMBEROFSUCCESSFUL int INOUT
@NUMBEROFINUSE int INOUT
@NUMBEROFHASFORMENTRIES int INOUT

Definition

Copy


    CREATE procedure [dbo].[USP_CUSTOMFORM_BULKPUTINTRASHBIN]
    (@XML xml,
    @NUMBEROFSUCCESSFUL int output,
    @NUMBEROFINUSE int output,
    @NUMBEROFHASFORMENTRIES int output
    )
    AS    
    BEGIN
      BEGIN TRAN
      set nocount on

      declare @CustomFormGuids table (formGuid uniqueidentifier)
      insert into @CustomFormGuids select GUIDS.GUID.value('formGuid[1]', 'uniqueidentifier') from @XML.nodes('/CustomForms/CustomForm') GUIDS(GUID)

      declare @FormsInUse table (formGuid uniqueidentifier)
      --fdf entries that don't link to part instances, or link to deleted instances are not considered 'in use'.
      insert into @FormsInUse    
      SELECT distinct fdf.FormGuid
      FROM dbo.FormDisplayForms fdf
      INNER JOIN dbo.SiteContent sc on sc.ID = fdf.ContentID and sc.InTrashBin=0
      INNER JOIN @CustomFormGuids cfg ON fdf.FormGuid = cfg.formGuid

      set @NUMBEROFINUSE = (select count(1) from @FormsInUse)

      delete @CustomFormGuids
      from @CustomFormGuids CFG
      inner join @FormsInUse FIU on FIU.formGuid = CFG.formGuid

      declare @FormsWithEntries table (formGuid uniqueidentifier)

      insert into @FormsWithEntries    
      SELECT distinct cfe.FormGuid
      FROM dbo.CustomFormEntry cfe
      INNER JOIN @CustomFormGuids cfg ON cfe.FormGuid = cfg.formGuid

      set @NUMBEROFHASFORMENTRIES = (select count(1) from @FormsWithEntries)

      delete @CustomFormGuids
      from @CustomFormGuids CFG
      inner join @FormsWithEntries FWE on FWE.formGuid = CFG.formGuid

      update CustomFormSettings
      set InTrashBin=1
      from dbo.CustomFormSettings
        inner join @CustomFormGuids CF on CustomFormSettings.FormGuid = CF.formGuid

      delete dbo.CustomFormFolder
      from dbo.CustomFormFolder cff
        inner join dbo.CustomFormelement cfe on cff.CustomFormElementID = cfe.ID
        inner join @CustomFormGuids CF on cfe.Guid = CF.formGuid

      set @NUMBEROFSUCCESSFUL = (select count(1) from @CustomFormGuids);

      COMMIT TRAN    
    END