From d5514caf4cf50a841fe5c4c0f01bac73bf29f932 Mon Sep 17 00:00:00 2001 From: John Date: Thu, 27 Sep 2018 18:12:36 +0000 Subject: [PATCH] --- PROMS/VEPROMS User Interface/PROMSFixes.Sql | 14074 ++++++++++++++++++ 1 file changed, 14074 insertions(+) create mode 100644 PROMS/VEPROMS User Interface/PROMSFixes.Sql diff --git a/PROMS/VEPROMS User Interface/PROMSFixes.Sql b/PROMS/VEPROMS User Interface/PROMSFixes.Sql new file mode 100644 index 00000000..d658320c --- /dev/null +++ b/PROMS/VEPROMS User Interface/PROMSFixes.Sql @@ -0,0 +1,14074 @@ + if db_name() in('master','model','msdn','tempdb') +begin + DECLARE @ErrorMsg varchar(255) + SET @ErrorMsg = 'Don''t add these procedures and functions to ' + db_name() + PRINT '==========================================================================' + PRINT '' + PRINT @ErrorMsg + PRINT '' + PRINT 'You probably want to be in the VEPROMS database' + PRINT '' + PRINT '==========================================================================' + RAISERROR (@ErrorMsg, 20, -1) with log + RETURN +end +print 'Adding procedures and functions to ' + db_name() + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[PasteItemReplace]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [PasteItemReplace]; +GO +/****** Object: StoredProcedure [dbo].[PasteItemReplace] Script Date: 03/20/2012 16:02:54 ******/ +/* +declare @NewItemID int +declare @dts datetime +set @newitemid = 0 +set @dts = getdate() +exec PasteItemReplace 398,397,20014,@dts,'bodine',@NewItemID output +*/ +-- ItemID is item to replace +-- StartItemID is item to copy +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[PasteItemReplace] +( + @ItemID int=null, @StartItemID int=null, + @Type int=null, @DTS datetime, @UserID nvarchar(100), + @NewItemID int output +) +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + DECLARE @ContentID AS INT + DECLARE @NextItemID AS INT + DECLARE @PreviousItemID AS INT + DECLARE @ExternalChildCount AS INT + DECLARE @ExternalCount AS INT + DECLARE @Path AS VARCHAR(MAX) + DECLARE @Children AS TABLE + ( + ItemID INT PRIMARY KEY, + ContentID INT + ) + + if exists (select * from tblitems where itemid = @ItemID and DeleteStatus !=0) + BEGIN + RAISERROR ('###Cannot Paste Step###This current step has been deleted in another session',16,1) + RETURN + END + -- First check if the replaced item can be deleted, i.e. it doesn't have transitions + -- pointing to it or children. + + DECLARE @ExternalTrans TABLE + ( + [FromItemID] int, + [TransitionID] [int] NOT NULL, + [FromID] [int] NOT NULL, + [ToID] [int] NOT NULL, + [RangeID] [int] NOT NULL, + [Config] [nvarchar](max) NULL + ) + SET NOCOUNT ON + DECLARE @DeleteID int + INSERT INTO DeleteLog (UserID) VALUES (@UserID) + SELECT @DeleteID = SCOPE_IDENTITY() + SELECT @ContentID = ContentID, @PreviousItemID = PreviousID FROM Items WHERE ItemID = @ItemID + SELECT @NextItemID = ItemID FROM Items WHERE PreviousID = @ItemID + --SELECT @ExternalCount = count(*) FROM vefn_FindExternalTransitions(@ItemID) + SELECT @ExternalChildCount = count(*) FROM vefn_FindExternalChildTransitions(@ItemID) + SET @Path = [dbo].[ve_GetShortPath](@ItemID) + + --IF @ExternalCount > 0 AND @NextItemID is null + --BEGIN + -- RAISERROR ('###Cannot Delete Item###Step %d has External Transitions and has no next step - (%s)',16,1,@ItemID,@Path) + -- RETURN + --END + + IF @ExternalChildCount > 0 + BEGIN + RAISERROR ('###Cannot Delete Item###Step %d has External Transitions to it''s children - (%s)',16,1,@ItemID,@Path) + RETURN + END + + -- Copy the item, 'NewItemID' represents the new item(s) + -- DestFormatID is the formatid for the destination parent's format + DECLARE @DestFormatID int + SET @DestFormatID = .dbo.vefn_GetInheritedFormat(@ItemID, 0) + EXECUTE CopyItemAndChildren @StartItemID, @DestFormatID, @UserID, @NewItemID OUTPUT + + -- Adjust the next/previous to point to the new item + + DECLARE @PreviousID int + SELECT @PreviousID = [PreviousID] + FROM [ITEMS] II + WHERE [ItemID]=@ItemID + UPDATE [ITEMS] SET [PreviousID]=@PreviousID where [ItemID]=@NewItemID + UPDATE [CONTENTS] SET [Type]=@Type + FROM [CONTENTS] CC JOIN [ITEMS] ii ON CC.[ContentID]=II.[ContentID] + WHERE [ItemID]=@NewItemID + UPDATE [ITEMS] SET [PreviousID]=@NewItemID where [PreviousID]=@ItemID + UPDATE [PARTS] SET [ItemID]=@NewItemID where [ItemID]=@ItemID + + -- UPDATE DocVersion if this was a procedure + UPDATE DocVersions SET ItemID=@NewItemID where ItemID = @ItemID + + -- If there were 'external transitions' that pointed to the original + -- top replaced step, adjust them to point to the new top. + INSERT INTO @ExternalTrans SELECT * FROM vefn_FindExternalTransitions(@ItemID) + OPTION (MAXRECURSION 10000) + IF (SELECT COUNT(*) from @ExternalTrans) > 0 + BEGIN + -- Update content records for the transitions + Update CC + Set Text = DBO.vefn_FixTransitionText(Text,TT.TransitionID,TT.TranType,TT.ToID,TT.RangeID,@ItemID,@NewItemID) + From CONTENTS CC + JOIN Transitions TT ON TT.FromID = CC.ContentID + WHERE TransitionID in(Select TransitionID from @ExternalTrans) + -- Update transitions that point to @ItemID to Point to @NextItemID + UPDATE TRANSITIONS + SET ToID = case when ToID = @ItemID then @NewItemID else ToID END, + RangeID = case when RangeID = @ItemID then @NewItemID else RangeID END + WHERE TransitionID in(Select TransitionID from @ExternalTrans) + + DECLARE @typeID int -- AnnotationType + SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' + IF(@typeID IS NULL) + BEGIN + INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian') + SELECT @typeID = SCOPE_IDENTITY() + END + -- Add 'Verification Required' annotions for transtions that pointed to top step + -- and need to point to + INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) + SELECT ItemID, @typeID,'Verify Replaced Step Transition Destination',@UserID + FROM Items where ItemID in (SELECT FromItemID FROM @ExternalTrans) + + END + -- Remove the old one + + -- Get list of Children + INSERT INTO @Children SELECT * FROM vefn_ChildItems(@ItemID) + -- Delete Annotations for @ItemID and children + DELETE from Annotations where ItemID in(Select ItemID from @Children) + -- Delete Details associated with @ContentID and children + DELETE from Details where ContentID in(Select ContentID from @Children) + -- Delete Grids associated with @ContentID and children + DELETE from Grids where ContentID in(Select ContentID from @Children) + -- Delete Images associated with @ContentID and children + DELETE from Images where ContentID in(Select ContentID from @Children) + -- Delete Entries associated with @ContentID and children + DELETE from Entries where ContentID in(Select ContentID from @Children) + -- Delete ROUsages associated with @ContentID and children + DELETE from RoUsages where ContentID in(Select ContentID from @Children) + -- Delete ZTransitions records associated with @ContentID and children + DELETE FROM ZTransitions where TransitionID + in(SELECT TransitionID from Transitions where FromID in(SELECT ContentID FROM @Children) or FromID = @ContentID) + -- Delete Transitions associated with @ContentID and children + DELETE FROM Transitions where FromID in(SELECT ContentID FROM @Children) or FromID = @ContentID + -- Delete Parts associated with @ContentID and children + DELETE from Parts where ContentID in(Select ContentID from @Children) + -- Delete ZContents associated with @ContentID and children + DELETE from ZContents where ContentID in(Select ContentID from @Children) + -- Disconnect Items from Each Other + DELETE from Items where ItemID in(Select ItemID from @Children) and PreviousID Is Not Null + -- Disconnect Items to be deleted from each other + Update Items set PreviousID = null where ItemID in (Select ItemID from @Children) and PreviousID Is Not Null + -- Delete Item Records + DELETE from Items where ItemID in(Select ItemID from @Children) + -- DELETE Contents + DELETE from Contents where ContentID in(Select ContentID from @Children) +--delete from itemaudits where itemid = @newitemid +delete from itemaudits where itemid in (select itemid from vefn_ChildItems(@newitemid)) +--delete from contentaudits where contentid = (select contentid from items where itemid = @newitemid) +delete from contentaudits where contentid in (select contentid from vefn_ChildItems(@newitemid)) + DELETE from DeleteLog where DeleteID = @DeleteID + IF( @@TRANCOUNT > 0 ) COMMIT + EXECUTE GetItem @NewItemID +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: PasteItemReplace Succeeded' +ELSE PRINT 'Procedure Creation: PasteItemReplace Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_ChronologyReport]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_ChronologyReport]; +/****** Object: UserDefinedFunction [dbo].[vefn_ChronologyReport] Script Date: 03/20/2012 17:50:44 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +/* +select * from vefn_chronologyreport(2) where type > 0 order by contentid,auditid +*/ +/****** Object: UserDefinedFunction [dbo].[vefn_ChronologyReport] Script Date: 05/18/2011 11:20:48 ******/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE function [dbo].[vefn_ChronologyReport](@ProcItemID int, @DTS datetime) +returns @Report table +( +src int, +AuditID bigint, +ContentID int, +Number nvarchar(512), +Text nvarchar(max), +Type int, +FormatID int, +Config nvarchar(max), +DTS datetime, +UserID nvarchar(200), +DeleteStatus int, +ActionDTS datetime, +ItemDTS datetime, +LastAuditID int, +DeletedAuditID int +) +WITH EXECUTE AS OWNER +AS +BEGIN +--added rhm/jcb 20121218i +declare @tmpTable table +( + icontentid int primary key +) +insert into @tmpTable select icontentid from vefn_tblchilditems(@ProcItemID,@ProcItemID,1) +--added jcb 20111122 +--declare @dts datetime +--set @dts = (select dts from items where itemid = @ProcItemID ) +--set @dts = (SELECT .[dbo].[vefn_GetPreviousRevisionDTSByItemID] (@ProcItemID)) +--end added jcb 20111122 + insert into @Report + SELECT +1 src, + [AuditID] + ,ca.[ContentID] + ,[Number] + ,[Text] + ,[Type] + ,[FormatID] + ,[Config] + ,ca.[DTS] cadts + ,ca.[UserID] + ,ca.[DeleteStatus] + ,ActionDTS + ,(select min(dts) from itemaudits where contentid = ca.contentid) ItemDTS +,(select max(auditid) from contentaudits where ca.contentid = contentid and ca.auditid > auditid and number is not null) LastAuditID +,(select max(auditid) from contentaudits where ca.contentid = contentid and ca.auditid > auditid and number is not null and deletestatus > 0 and ca.dts = dts) DeletedAuditID + FROM ContentAudits ca +-- inner join tblitems ti on ca.contentid = ti.contentid + where Number is not null +--added jcb 20111028_1827 +and ca.contentid != (select contentid from items where itemid = @procitemid) +and ca.contentid in (select icontentid from @tmpTable) +--end added jcb 20111028_1827 +--added jcb 20111122 +--and ca.ContentID in (SELECT [ContentID] FROM ContentAudits where dts > (select dts from items where itemid = @ProcItemID )) +and ca.ContentID in (SELECT [ContentID] FROM ContentAudits where dts > @dts) +--and ca.dts > (select dts from items where itemid = @ProcItemID ) +and ca.dts > @dts +--end added jcb 20111122 +-- UNION +-- SELECT +--2 src, +-- cast(ident_current('contentaudits') + 1 as bigint) auditid +---- (select max(auditid) + 1 from contentaudits) [AuditID] +---- 0 [AuditID] +-- ,ca.[ContentID] +-- ,[Number] +-- ,[Text] +-- ,[Type] +-- ,[FormatID] +-- ,[Config] +-- ,ca.[DTS] cadts +-- ,ca.[UserID] +-- ,ca.[DeleteStatus] +-- ,ActionDTS +-- ,(select min(dts) from itemaudits where contentid = ca.contentid) ItemDTS +--,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null) LastAuditID +--,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null and deletestatus > 0 and ca.dts = dts) DeletedAuditID +-- FROM tblContents ca +---- inner join tblitems ti on ca.contentid = ti.contentid +--WHERE ca.DeleteStatus = 0 AND +----added jcb 20111028_1827 +--ca.contentid != (select contentid from items where itemid = @procitemid) and +----end added jcb 20111028_1827 +----ca.ContentID in (SELECT [ContentID] FROM ContentAudits where dts > (select dts from items where itemid = @ProcItemID )) +----added jcb 20111122 +----ca.ContentID in (SELECT [ContentID] FROM Contents where dts > (select dts from items where itemid = @ProcItemID )) +--ca.ContentID in (SELECT [ContentID] FROM Contents where dts > @dts) +----end added jcb 20111122 +----order by ca.DTS,ActionDTS + UNION + SELECT +3 src, + cast(ident_current('contentaudits') + 1 as bigint) auditid +-- (select max(auditid) + 1 from contentaudits) [AuditID] +-- 0 [AuditID] + ,ca.[ContentID] + ,[Number] + ,[Text] + ,[Type] + ,[FormatID] + ,[Config] + ,ca.[DTS] cadts + ,ca.[UserID] + ,ca.[DeleteStatus] + ,ActionDTS + ,(select min(dts) from itemaudits where contentid = ca.contentid) ItemDTS +,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null) LastAuditID +,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null and deletestatus > 0 and ca.dts = dts) DeletedAuditID + FROM tblContents ca +-- inner join tblitems ti on ca.contentid = ti.contentid +WHERE ca.DeleteStatus = 0 AND +--added jcb 20111028_1827 +ca.contentid != (select contentid from items where itemid = @procitemid) +and ca.contentid in (select icontentid from @tmpTable) +--end added jcb 20111028_1827 +--added jcb 20111122 +--ca.dts > (select dts from items where itemid = @ProcItemID ) +and (ca.dts > @dts or ca.actiondts > @dts) +--end added jcb 20111122 + UNION + SELECT distinct +5 src, +-- cast(ident_current('contentaudits') + 1 as bigint) auditid +-- (select max(auditid) + 1 from contentaudits) [AuditID] + ca.[AuditID] + ,ca.[ContentID] + ,[Number] + ,[Text] + ,[Type] + ,[FormatID] + ,[Config] + ,ca.[DTS] cadts + ,ca.[UserID] + ,ca.[DeleteStatus] + ,ActionDTS + ,(select min(dts) from itemaudits where contentid = ca.contentid) ItemDTS +,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null) LastAuditID +,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null and deletestatus > 0 and ca.dts = dts) DeletedAuditID + FROM ContentAudits ca +-- inner join tblitems ti on ca.contentid = ti.contentid +WHERE ca.DeleteStatus > 0 +--added jcb 20111028_1827 + --ca.contentid != (select contentid from items where itemid = @procitemid) and +--end added jcb 20111028_1827 +--added jcb 20111122 +--ca.dts > (select dts from items where itemid = @ProcItemID ) +and ca.contentid in (select icontentid from @tmpTable) +and (ca.dts > @dts or ca.actiondts > @dts) +--end added jcb 20111122 +order by ca.DTS,ActionDTS + + insert into @Report + SELECT +4 src, + ca.[AuditID] + ,ca.[ContentID] + ,ca.[Number] + ,ca.[Text] + ,ca.[Type] + ,ca.[FormatID] + ,ca.[Config] + ,ca.[DTS] cadts + ,ca.[UserID] + ,ca.[DeleteStatus] + ,ca.ActionDTS + ,(select min(dts) from itemaudits where contentid = ca.contentid) ItemDTS +,(select max(auditid) from contentaudits where ca.contentid = contentid and ca.auditid > auditid and number is not null) LastAuditID +,(select max(auditid) from contentaudits where ca.contentid = contentid and ca.auditid > auditid and number is not null and deletestatus > 0 and ca.dts = dts) DeletedAuditID + FROM ContentAudits ca +-- inner join tblitems ti on ca.contentid = ti.contentid + inner join @Report rpt on ca.contentid = rpt.contentid and ca.auditid = rpt.lastauditid +where ca.auditid not in (select auditid from @report) +and rpt.lastauditid is not null +and ca.contentid in (select icontentid from @tmpTable) + return +end +GO +-- Display the status of TableFunction creation +IF (@@Error = 0) PRINT 'Function: vefn_ChronologyReport Succeeded' +ELSE PRINT 'Function: vefn_ChronologyReport Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[PasteItemSiblingAfter]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [PasteItemSiblingAfter]; +GO +/****** Object: StoredProcedure [dbo].[PasteItemSiblingAfter] Script Date: 03/21/2012 15:25:31 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[PasteItemSiblingAfter] +( + @ItemID int=null, @StartItemID int=null, -- ItemID is destination, StartItemID is top of copy + @Type int=null, @DTS datetime, @UserID nvarchar(100), + @NewItemID int output +) +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + if exists (select * from tblitems where itemid = @ItemID and DeleteStatus !=0) + BEGIN + RAISERROR ('###Cannot Paste Step###This current step has been deleted in another session',16,1) + RETURN + END + -- First make a copy of the input StartItemID + -- DestFormatID is the formatid for the destination parent's format + DECLARE @DestFormatID int + SET @DestFormatID = .dbo.vefn_GetInheritedFormat(@ItemID, 0) + EXECUTE CopyItemAndChildren @StartItemID, @DestFormatID, @UserID, @NewItemID OUTPUT + -- Adjust previous field + DECLARE @NextID int + SELECT @NextID = [ItemID] + FROM [ITEMS] + WHERE [PreviousID]=@ItemID + IF @NextID is not null -- step after the copy point. Adjust it's previous to point to the new step + BEGIN + UPDATE [ITEMS] SET [PreviousID]=@NewItemID, [DTS]=@DTS, [UserID]=@UserID where [ItemID]=@NextID + END + UPDATE [ITEMS] SET [PreviousID]=@ItemID where [ItemID]=@NewItemID + UPDATE [CONTENTS] SET [Type]=@Type + FROM [CONTENTS] CC JOIN [ITEMS] ii ON CC.[ContentID]=II.[ContentID] + WHERE [ItemID]=@NewItemID + + + -- Check for Transitions that point to the Next Step + BEGIN + -- Get a list of Transitions which need to change children of @ItemID that point to @NextID + DECLARE @NextStepTransitions TABLE + ( + [TransitionID] int PRIMARY KEY, + [FromID] [int], + [ToID] [int], + [RangeID] [int], + [TranType] [int], + [Config] [nvarchar](max) + ) + Insert into @NextStepTransitions select * from vefn_NextStepTransitions(@NextID,@ItemID) + OPTION (MAXRECURSION 10000) + IF (SELECT COUNT(*) from @NextStepTransitions) > 0 -- Next Step Transitions + BEGIN + -- Update all transitions in the list to point to @newItemID + Update TT + Set TT.ToID = CASE TT.ToID WHEN @NextID THEN @NewItemID ELSE TT.ToID END, + TT.RangeID = CASE TT.RangeID WHEN @NextID THEN @NewItemID ELSE TT.RangeID END + From TRANSITIONS TT + JOIN @NextStepTransitions NS ON NS.TransitionID = TT.TransitionID + -- Update content records for the transitions + Update CC + Set Text = DBO.vefn_FixTransitionText(Text,NS.TransitionID,NS.TranType,NS.ToID,NS.RangeID,@NextID,@NewItemID) + From CONTENTS CC + JOIN @NextStepTransitions NS ON NS.FromID = CC.ContentID + END + END + -- Add 'Verification Required' AnnotationType + DECLARE @typeID int + SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' + IF(@typeID IS NULL) + BEGIN + INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian') + SELECT @typeID = SCOPE_IDENTITY() + END + -- Add "Verification Required" Annotation for each Transition that points to @newItemID or @NextID + INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) + SELECT ItemID, @typeID,'Verify Next Step Transition Destination',@UserID + FROM Items where CONTENTID in (SELECT FromID FROM TRANSITIONS + where ToID IN(@newItemID) OR RangeID IN(@newItemID)) + INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) + SELECT ItemID, @typeID,'Verify Transition Destination',@UserID + FROM Items where CONTENTID in (SELECT FromID FROM TRANSITIONS + where ToID IN(@NextID) OR RangeID IN(@NextID)) + -- Transition Text gets updated in ItemInsertExt.cs + +delete from itemaudits where itemid in (select itemid from vefn_ChildItems(@newitemid)) +delete from contentaudits where contentid in (select contentid from vefn_ChildItems(@newitemid)) + IF( @@TRANCOUNT > 0 ) COMMIT + EXECUTE GetItem @NewItemID +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: PasteItemSiblingAfter Succeeded' +ELSE PRINT 'Procedure Creation: PasteItemSiblingAfter Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[PasteItemSiblingBefore]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) +DROP PROCEDURE [PasteItemSiblingBefore]; +GO +/****** Object: StoredProcedure [dbo].[PasteItemSiblingBefore] Script Date: 03/21/2012 15:26:23 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[PasteItemSiblingBefore] +( + @ItemID int=null, @StartItemID int=null, + @Type int=null, @DTS datetime, @UserID nvarchar(100), + @NewItemID int output +) +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + if exists (select * from tblitems where itemid = @ItemID and DeleteStatus !=0) + BEGIN + RAISERROR ('###Cannot Paste Step###This current step has been deleted in another session',16,1) + RETURN + END + -- First make a copy of the input CopyStartID + -- DestFormatID is the formatid for the destination parent's format + DECLARE @DestFormatID int + SET @DestFormatID = .dbo.vefn_GetInheritedFormat(@ItemID, 0) + EXECUTE CopyItemAndChildren @StartItemID, @DestFormatID, @UserID, @NewItemID OUTPUT + -- First adjust previous fields, may also have to do parts, if before first one in list. + DECLARE @PreviousID int, @ContentID int, @newLastChanged timestamp, @NewType int + SELECT @PreviousID = [PreviousID], @NewType=ISNULL(@Type,[Type]) + FROM [ITEMS] II + JOIN [CONTENTS] CC ON CC.[ContentID]=II.[CONTENTID] + WHERE [ItemID]=@ItemID + UPDATE [ITEMS] SET [PreviousID]=@NewItemID where [ItemID]=@ItemID + UPDATE [ITEMS] SET [PreviousID]=@PreviousID where [ItemID]=@NewItemID + UPDATE [CONTENTS] SET [Type]=@Type + FROM [CONTENTS] CC JOIN [ITEMS] ii ON CC.[ContentID]=II.[ContentID] + WHERE [ItemID]=@NewItemID + UPDATE [PARTS] SET [ItemID]=@NewItemID where [ItemID]=@ItemID + UPDATE [DOCVERSIONS] SET [ItemID] = @NewItemID where [ItemID]=@ItemID + + IF @PreviousID is null -- The step is replacing the first step + BEGIN + -- Update content records for the transitions + Update CC + Set Text = DBO.vefn_FixTransitionText(Text,TT.TransitionID,TT.TranType,TT.ToID,TT.RangeID,@ItemID,@NewItemID) + From CONTENTS CC + JOIN Transitions TT ON TT.FromID = CC.ContentID + WHERE TT.ToID = @ItemID OR TT.RangeID = @ItemID + -- Update transitions that pointed to @ItemID to point to @newItemID + Update TRANSITIONS + Set ToID = CASE ToID WHEN @ItemID THEN @NewItemID ELSE ToID END, + RangeID = CASE RangeID WHEN @ItemID THEN @NewItemID ELSE RangeID END + WHERE ToID = @ItemID OR RangeID = @ItemID + END + ELSE -- Check for Transitions that point to the Next Step + BEGIN + -- Get a list of Transitions which need to change children of @ItemID that point to @NextID + DECLARE @NextStepTransitions TABLE + ( + [TransitionID] int PRIMARY KEY, + [FromID] [int], + [ToID] [int], + [RangeID] [int], + [TranType] [int], + [Config] [nvarchar](max) + ) + Insert into @NextStepTransitions select * from vefn_NextStepTransitions(@ItemID,@PreviousID) + OPTION (MAXRECURSION 10000) + IF (SELECT COUNT(*) from @NextStepTransitions) > 0 -- Next Step Transitions + BEGIN + -- Update all transitions in the list to point to @newItemID + Update TT + Set TT.ToID = CASE TT.ToID WHEN @ItemID THEN @NewItemID ELSE TT.ToID END, + TT.RangeID = CASE TT.RangeID WHEN @ItemID THEN @NewItemID ELSE TT.RangeID END + From TRANSITIONS TT + JOIN @NextStepTransitions NS ON NS.TransitionID = TT.TransitionID + -- Update content records for the transitions + Update CC + Set Text = DBO.vefn_FixTransitionText(Text,NS.TransitionID,NS.TranType,NS.ToID,NS.RangeID,@ItemID,@NewItemID) + From CONTENTS CC + JOIN @NextStepTransitions NS ON NS.FromID = CC.ContentID + END + END + -- Add 'Verification Required' AnnotationType + DECLARE @typeID int + SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' + IF(@typeID IS NULL) + BEGIN + INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian') + SELECT @typeID = SCOPE_IDENTITY() + END + -- Add "Verification Required" Annotation for each Transition that points to @newItemID or @NextID + INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) + SELECT ItemID, @typeID,'Verify Transition Destination',@UserID + FROM Items where CONTENTID in (SELECT FromID FROM TRANSITIONS + where ToID IN(@ItemID,@NewItemID) OR RangeID IN(@ItemID,@NewItemID)) + -- Transition Text gets updated in ItemInsertExt.cs +delete from itemaudits where itemid in (select itemid from vefn_ChildItems(@newitemid)) +delete from contentaudits where contentid in (select contentid from vefn_ChildItems(@newitemid)) + IF( @@TRANCOUNT > 0 ) COMMIT + EXECUTE GetItem @NewItemID +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: PasteItemSiblingBefore Succeeded' +ELSE PRINT 'Procedure Creation: PasteItemSiblingBefore Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetMyChronology]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_GetMyChronology]; +GO +/****** Object: UserDefinedFunction [dbo].[vefn_GetMyChronology] Script Date: 11/07/2012 18:09:17 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_GetMyChronology](@ProcItemID int, @ItemID int, @IncludeDeletedChildren int, @DTS datetime) +RETURNS @Chrono TABLE +( +[AuditID] bigint, +[ContentID] int, +[Number] nvarchar(max), +[Text] nvarchar(max), +[Type] int, +[FormatID] int, +[Config] nvarchar(max), +[DTS] datetime, +[UserID] nvarchar(max), +[DeleteStatus] int, +[ActionDTS] datetime, +[ActionWhat] nvarchar(max), +[ActionWhen] datetime, +[Path] nvarchar(max), +ItemID int, +TypeName nvarchar(max), +ordinalpath nvarchar(max) +) +WITH EXECUTE AS OWNER +AS +BEGIN +insert into @Chrono +select distinct [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName,ordinalpath + from + ( + select + case + when lastauditid is null then 'Added' + when r.deletestatus > 0 then 'Deleted' + when lastauditid = -1 then 'Changed' + when DeletedAuditID is not null then 'Restored' +-- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' + else 'Changed' + end actionwhat +,actiondts actionwhen +-- ,case +-- when lastauditid is null then dts +-- when r.deletestatus > 0 then ActionDTS +-- when lastauditid = -1 then dts +-- when DeletedAuditID is not null then ActionDTS +-- else dts +-- end actionwhen +,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName + ,* + from vefn_tblchilditems (@ProcItemID,@ItemID,@IncludeDeletedChildren) t + inner join vefn_chronologyreport(@ProcItemID,@DTS) r + on t.icontentid = r.contentid +-- where ActionDTS > procdts or dts > procdts + ) ah + order by OrdinalPath, contentid,auditid--actionwhen + RETURN +END +go +IF (@@Error = 0) PRINT 'TableFunction [vefn_GetMyChronology] Succeeded' +ELSE PRINT 'TableFunction [vefn_GetMyChronology] Error on Creation' +go + +/****** Object: StoredProcedure [dbo].[getContentAuditsChronologyByItemID] Script Date: 03/21/2012 15:58:26 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getContentAuditsChronologyByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) +DROP PROCEDURE [getContentAuditsChronologyByItemID]; +GO +/****** Object: StoredProcedure [getContentAuditsChronologyByItemID] ******/ +/* +getContentAuditsChronologyByItemID 10154,10154,0 +getContentAuditsChronologyByItemID 42,42,0 +getContentAuditsChronologyByItemID 9,9,0 +getContentAuditsChronologyByItemID 146,146,1 +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getContentAuditsChronologyByItemID] +( + @ProcedureItemID int, + @SelectedItemID int, + @IncludeDeletedChildren int, + @DTS datetime +) + +WITH EXECUTE AS OWNER +AS +begin + select * from vefn_GetMyChronology(@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren,@DTS) +-- select distinct [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName,ordinalpath +-- from +-- ( +-- select +-- case +-- when lastauditid is null then 'Added' +-- when r.deletestatus > 0 then 'Deleted' +-- when lastauditid = -1 then 'Changed' +-- when DeletedAuditID is not null then 'Restored' +---- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' +-- else 'Changed' +-- end actionwhat +--,actiondts actionwhen +---- ,case +---- when lastauditid is null then dts +---- when r.deletestatus > 0 then ActionDTS +---- when lastauditid = -1 then dts +---- when DeletedAuditID is not null then ActionDTS +---- else dts +---- end actionwhen +--,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName +-- ,* +-- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t +-- inner join vefn_chronologyreport(@ProcedureItemID) r +-- on t.icontentid = r.contentid +---- where ActionDTS > procdts or dts > procdts +-- ) ah +-- order by OrdinalPath, contentid,auditid--actionwhen + RETURN +end +go +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'StoredProcedure [getContentAuditsChronologyByItemID] Succeeded' +ELSE PRINT 'StoredProcedure [getContentAuditsChronologyByItemID] Error on Creation' +go + +/****** Object: StoredProcedure [getContentAuditsSummaryByItemID] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getContentAuditsSummaryByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getContentAuditsSummaryByItemID]; +GO + +/****** Object: StoredProcedure [getContentAuditsSummaryByItemID] ******/ +/* +getContentAuditsSummaryByItemID 146,146,0 +getContentAuditsSummaryByItemID 42,42,0 +getContentAuditsSummaryByItemID 9,9,0 +getContentAuditsSummaryByItemID 146,146,1 +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getContentAuditsSummaryByItemID] +( + @ProcedureItemID int, + @SelectedItemID int, + @IncludeDeletedChildren int, + @DTS datetime +) + +WITH EXECUTE AS OWNER +AS +begin +DECLARE @Chrono TABLE +( +[AuditID] bigint, +[ContentID] int, +[Number] nvarchar(max), +[Text] nvarchar(max), +[Type] int, +[FormatID] int, +[Config] nvarchar(max), +[DTS] datetime, +[UserID] nvarchar(max), +[DeleteStatus] int, +[ActionDTS] datetime, +[ActionWhat] nvarchar(max), +[ActionWhen] datetime, +[Path] nvarchar(max), +ItemID int, +TypeName nvarchar(max), +ordinalpath nvarchar(max) +) +insert into @Chrono +select * from vefn_GetMyChronology(@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren,@DTS) +select * from @Chrono +where AuditID is null OR AuditID in (select min(auditID) from @Chrono group by contentid UNION select max(auditID) from @Chrono group by contentid) +order by OrdinalPath, contentid,auditid +--select z.* from +--( +--select contentid,min(auditid) auditid from +--( +-- select [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName +-- from +-- ( +-- select +-- case +-- when lastauditid is null then 'Added' +-- when r.deletestatus > 0 then 'Deleted' +-- when lastauditid = -1 then 'Changed' +-- when DeletedAuditID is not null then 'Restored' +---- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' +-- else 'Changed' +-- end actionwhat +--,actiondts actionwhen +---- ,case +---- when lastauditid is null then dts +---- when r.deletestatus > 0 then ActionDTS +---- when lastauditid = -1 then dts +---- when DeletedAuditID is not null then ActionDTS +---- else dts +---- end actionwhen +--,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName +-- ,* +-- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t +-- inner join vefn_chronologyreport(@ProcedureItemID) r +-- on t.icontentid = r.contentid +---- where ActionDTS > procdts or dts > procdts +-- ) ah +--) x +--group by contentid +--) y +--inner join +--( +-- select [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName,ordinalpath +-- from +-- ( +-- select +-- case +-- when lastauditid is null then 'Added' +-- when r.deletestatus > 0 then 'Deleted' +-- when lastauditid = -1 then 'Changed' +-- when DeletedAuditID is not null then 'Restored' +---- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' +-- else 'Changed' +-- end actionwhat +--,actiondts actionwhen +---- ,case +---- when lastauditid is null then dts +---- when r.deletestatus > 0 then ActionDTS +---- when lastauditid = -1 then dts +---- when DeletedAuditID is not null then ActionDTS +---- else dts +---- end actionwhen +--,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName +-- ,* +-- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t +-- inner join vefn_chronologyreport(@ProcedureItemID) r +-- on t.icontentid = r.contentid +---- where ActionDTS > procdts or dts > procdts +-- ) ah +--) z on y.contentid = z.contentid and y.auditid = z.auditid +--union +--select z.* from +--( +--select contentid,max(auditid) auditid from +--( +-- select [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName +-- from +-- ( +-- select +-- case +-- when lastauditid is null then 'Added' +-- when r.deletestatus > 0 then 'Deleted' +-- when lastauditid = -1 then 'Changed' +-- when DeletedAuditID is not null then 'Restored' +---- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' +-- else 'Changed' +-- end actionwhat +--,actiondts actionwhen +---- ,case +---- when lastauditid is null then dts +---- when r.deletestatus > 0 then ActionDTS +---- when lastauditid = -1 then dts +---- when DeletedAuditID is not null then ActionDTS +---- else dts +---- end actionwhen +--,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName +-- ,* +-- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t +-- inner join vefn_chronologyreport(@ProcedureItemID) r +-- on t.icontentid = r.contentid +---- where ActionDTS > procdts or dts > procdts +-- ) ah +--) x +--group by contentid +--) y +--inner join +--( +-- select [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName,ordinalpath +-- from +-- ( +-- select +-- case +-- when lastauditid is null then 'Added' +-- when r.deletestatus > 0 then 'Deleted' +-- when lastauditid = -1 then 'Changed' +-- when DeletedAuditID is not null then 'Restored' +---- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' +-- else 'Changed' +-- end actionwhat +--,actiondts actionwhen +---- ,case +---- when lastauditid is null then dts +---- when r.deletestatus > 0 then ActionDTS +---- when lastauditid = -1 then dts +---- when DeletedAuditID is not null then ActionDTS +---- else dts +---- end actionwhen +--,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName +-- ,* +-- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t +-- inner join vefn_chronologyreport(@ProcedureItemID) r +-- on t.icontentid = r.contentid +---- where ActionDTS > procdts or dts > procdts +-- ) ah +--) z on y.contentid = z.contentid and y.auditid = z.auditid +-- order by OrdinalPath, contentid,auditid--actionwhen + RETURN +end +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getContentAuditsSummaryByItemID Succeeded' +ELSE PRINT 'Procedure Creation: getContentAuditsSummaryByItemID Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FixSearchString]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) + DROP FUNCTION [vefn_FixSearchString]; +GO +/****** Object: UserDefinedFunction [dbo].[vefn_FixSearchString] Script Date: 03/26/2012 09:31:13 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +/* +select ID,ss,.dbo.vefn_FixSearchString(ss) +from ( +select 1 ID,'*' ss union +select 2 ID,'50%' ss union +select 3 ID,'IF*' ss union +select 4 ID,'*then:' ss union +select 5 ID,'530`F' ss union +select 6 ID,'check' ss union +select 7 ID,'RCP*Cooling' ss union +select 8 ID,'14%[34%]' ss union +select 9 ID,'\*' ss union +select 10 ID,'\?' ss union +select 11 ID,'_' ss union +select 12 ID,'[' ss union +select 13 ID,']' ss union +select 14 ID,'%' ss union +select 15 ID,'_' ss union +select 16 ID,'-' ss union +select 17 ID,'%' ss union +select 18 ID,'C* - *' ss union +select 19 ID,'' ss union +select 20 ID,null ss +) tt order by ID +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_FixSearchString](@SearchString nvarchar(MAX)) +RETURNS nvarchar(MAX) +WITH EXECUTE AS OWNER +AS +BEGIN + -- This code adds % at the beginning and end if the beginning and end + -- of the search string if it does not have % at the beginning or end + Set @SearchString = replace(@SearchString,'[','[[]') + Set @SearchString = replace(@SearchString,'_','[_]') + Set @SearchString = replace(@SearchString,'%','[%]') + Set @SearchString = replace(@SearchString,'*','%') + Set @SearchString = replace(@SearchString,'?','_') + Set @SearchString = replace(@SearchString,'\%','*') + Set @SearchString = replace(@SearchString,'\_','?') + Set @SearchString = replace(@SearchString,'-','\u8209?') + Set @SearchString = replace(@SearchString,'\''A9','\u169?') -- copyright symbol + Set @SearchString = replace(@SearchString,'\''AE','\u174?') -- Register symbol + Set @SearchString = replace(@SearchString,'\\line ','\line ') -- newline + Set @SearchString = replace(@SearchString,'\\','\u9586?') -- use a double backslash to search for a backslash + IF(@SearchString like '[%]%') RETURN @SearchString + IF(@SearchString like '%[%]') RETURN @SearchString + Set @SearchString = replace('%' + @SearchString + '%','%%','%') + RETURN @SearchString +END +GO +-- Display the status +IF (@@Error = 0) PRINT 'ScalerFunction [vefn_FixSearchString] Succeeded' +ELSE PRINT 'ScalerFunction [vefn_FixSearchString] Error on Creation' +go + + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[restoreDeletedItem]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) +DROP PROCEDURE [restoreDeletedItem]; +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +/* +restoreDeletedItem 10133,1,10130,2 +select dbo.ve_GetPartContentID(10133) +select dbo.ve_GetPartFromType(10133) +select itemid from parts where contentid = 10126 and fromtype = 6 +SELECT ItemID FROM PartAudits WHERE DeleteStatus = 1 + +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[restoreDeletedItem] +( + @ItemID int, + @DeleteID int, + @CurrentID int, + @Level int +) + +WITH EXECUTE AS OWNER +AS + DECLARE @PreviousID int + declare @oldPreviousID int + DECLARE @NextID int + DECLARE @ContentID int + declare @fromtype int + IF @Level = 0 BEGIN + SET @NextID = @CurrentID + SELECT @PreviousID = PreviousID FROM Items WHERE ItemID = @CurrentID + END + IF @Level = 1 BEGIN + SELECT @NextID = ItemID FROM Items WHERE PreviousID = @CurrentID + SET @PreviousID = @CurrentID + END + SELECT @ContentID = dbo.[ve_GetPartContentID](@ItemID) + select @fromtype = dbo.[ve_GetPartFromType](@ItemID) + select @oldPreviousID = isnull(PreviousID,0) from tblItems where ItemID = @ItemID + if @level = 2 begin + select @NextID = itemid from parts where contentid = @contentid and fromtype = @fromtype + end + --restore parts from step being restored + UPDATE tblParts SET DeleteStatus = 0 WHERE ItemID IN (SELECT ItemID FROM PartAudits WHERE DeleteStatus = @DeleteID) +--print 'oldpreviousid: ' + cast(@oldpreviousid as varchar(10)) +--print 'currentid: ' + cast(@currentid as varchar(10)) + --restore of children in different order + if(@oldPreviousID != @CurrentID and @Level = 2) begin + update tblparts set deletestatus = 0, itemid = @itemid where contentid = @contentid and fromtype = @fromtype +--print 'special code' + end + UPDATE tblContents SET DeleteStatus = 0, ActionDTS = getdate() WHERE ContentID IN (SELECT ContentID FROM ContentAudits WHERE DeleteStatus = @DeleteID) + UPDATE tblItems SET DeleteStatus = 0,PreviousID = CASE WHEN ItemID = @ItemID THEN @PreviousID ELSE PreviousID END + WHERE ItemID IN (SELECT ItemID FROM ItemAudits WHERE DeleteStatus = @DeleteID) + UPDATE tblGrids SET DeleteStatus = 0 WHERE ContentID IN (SELECT ContentID FROM ContentAudits WHERE DeleteStatus = @DeleteID) + UPDATE tblImages SET DeleteStatus = 0 WHERE ContentID IN (SELECT ContentID FROM ContentAudits WHERE DeleteStatus = @DeleteID) + UPDATE tblEntries SET DeleteStatus = 0 WHERE DocID IN (SELECT DocID FROM EntryAudits WHERE DeleteStatus = @DeleteID) + UPDATE tblAnnotations SET DeleteStatus = 0, ActionDTS = getdate() WHERE deletestatus = @deleteid -- ItemID in (SELECT ItemID FROM ItemAudits WHERE DeleteStatus = @DeleteID) + UPDATE tblROUsages SET DeleteStatus = 0 WHERE deletestatus = @deleteid --ContentID IN (SELECT ContentID FROM ContentAudits WHERE DeleteStatus = @DeleteID) + UPDATE tblTransitions SET DeleteStatus = 0 WHERE deletestatus = @deleteid --FromID IN (SELECT ContentID FROM ContentAudits WHERE DeleteStatus = @DeleteID) + IF @NextID IS NOT NULL BEGIN + UPDATE Items SET PreviousID = @ItemID WHERE ItemID = @NextID + UPDATE DocVersions SET ItemID = @ItemID WHERE ItemID = @NextID + IF @ContentID IS NOT NULL BEGIN + UPDATE Parts SET ItemID = @ItemID WHERE ItemID = @NextID and ContentID = @ContentID +--print 'old code' + END + END +--else +-- begin +--update parts set itemid = @itemid where contentid = @contentid and fromtype = @fromtype +-- end +RETURN +go +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: restoreDeletedItem Succeeded' +ELSE PRINT 'Procedure Creation: restoreDeletedItem Error on Creation' +GO + +/****** Object: UserDefinedFunction [dbo].[vefn_GetLastDelim] Script Date: 03/28/2012 17:58:48 ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetLastDelim]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) + DROP FUNCTION [vefn_GetLastDelim]; +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +/* +select .dbo.vefn_GetLastDelim(bozo) delim,bozo +from +( +select 'ES\u8209?3.1Post\u8209?SGTR Cooldown Using Backfill' bozo union +select 'ES\u8209?3.1Post\u8209?SGTR Cooldown Using BackfillProcedure Steps' bozo union +select 'ES\u8209?3.1Post\u8209?SGTR Cooldown Using BackfillProcedure Steps1' bozo union +select 'ES\u8209?3.1Post\u8209?SGTR Cooldown Using BackfillProcedure Steps1.1' bozo union +select 'ES\u8209?3.1Post\u8209?SGTR Cooldown Using BackfillProcedure Steps1.1.RNO..1' bozo union +select 'ES\u8209?3.1Post\u8209?SGTR Cooldown Using BackfillProcedure Steps1.1.RNO..1.3' bozo +) ah +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_GetLastDelim](@SearchString nvarchar(MAX)) +RETURNS nvarchar(1) +WITH EXECUTE AS OWNER +AS +BEGIN + declare @patstr nvarchar(7) + set @patstr = '%[' + char(7) + char(17) + '.]%' + declare @patidx bigint + set @patidx = patindex(@patstr,Reverse(@SearchString)) + if @patidx = 0 return ' ' + return substring(@SearchString,1 + len(@SearchString) - @patidx,1) +END +GO +IF (@@Error = 0) PRINT 'ScalerFunction [vefn_GetLastDelim] Succeeded' +ELSE PRINT 'ScalerFunction [vefn_GetLastDelim] Error on Creation' +go + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_tblChildItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_tblChildItems]; +GO +/****** Object: UserDefinedFunction [dbo].[vefn_tblChildItems] Script Date: 03/28/2012 17:43:20 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +/* +declare @PreviousID as int +declare @ItemID as int +set @ItemID = 450 +select @PreviousID = PreviousID from items where ItemID = @ItemID + +Select * from Items where ItemID = @ItemID + +select * from Transitions +where FromID in (Select ContentID from vefn_ChildItems(@PreviousID)) +AND (ToID = @ItemID or RangeID = @ItemID) + +select CC.Text from Transitions TT +join contents CC on TT.FromID = CC.ContentID +where FromID in (Select ContentID from vefn_ChildItems(@PreviousID)) +AND (ToID = @ItemID or RangeID = @ItemID) + +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_tblChildItems](@ProcItemID int, @ItemID int, @IncludeDeletedChildren int) +RETURNS @Children TABLE +( + ItemID int PRIMARY KEY, + IContentID int, + IDeleteStatus int, + ProcDTS datetime, + Path nvarchar(max), + OrdinalPath nvarchar(max) +) +WITH EXECUTE AS OWNER +AS +BEGIN + declare @path nvarchar(max) + declare @ppath nvarchar(max) + declare @ordinalpath nvarchar(max) + declare @pordinalpath nvarchar(max) + declare @ordinal int + declare @pitemid int + select @path = path,@ordinalpath = ordinalpath,@ordinal = ordinal,@pitemid = parentid from vefn_ProcedureByProcID(@ProcItemID) where itemid = @ItemID + if @pitemid = 0 begin + set @pordinalpath = '' + set @ppath = '' + end + else begin + select @ppath = path,@pordinalpath = ordinalpath from vefn_ProcedureByProcID(@ProcItemID) where itemid = @pitemID + end + declare @procdts datetime + select @procdts = dts from items where itemid = @ProcItemID + Declare @Delim char(1) + Set @Delim=char(7) + Declare @DelimNumber char(1) + Set @DelimNumber=char(17) + Declare @DelimStep char(1) + Set @DelimStep='.' + begin + with Itemz([Level], [ItemID], [ContentID], DeleteStatus, ProcDTS, PPath, [Path], [POrdinalPath], [OrdinalPath], [FromType], [Ordinal]) as ( + Select 0 [Level], [ItemID], I.[ContentID], I.DeleteStatus, @procdts procdts, + @ppath [PPath], + @path [Path], + @pordinalpath [POrdinalPath], + @ordinalpath [OrdinalPath], + 0 [FromType],@ordinal [Ordinal] + FROM [tblItems] I + --inner join tblContents C on C.ContentID=I.ContentID + where I.[ItemID]=@ItemID + Union All + -- Children + select [Level] + 1, I.[ItemID], I.[ContentID], I.DeleteStatus, @procdts procdts, + PATH + --'' + case C.Type/10000 + when 2 then + case P.FromType + when 3 then @DelimStep + 'Caution' + when 4 then @DelimStep + 'Note' + when 8 then @DelimStep + 'SupInfo' + else '' end + else '' end + PPath, + Path + case C.Type/10000 + when 0 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') + when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') + else + case P.FromType + --when 1 then 'PRC' + @Delim + cast(1 as varchar(4)) + --when 2 then 'SEC' + @Delim + cast(1 as varchar(4)) + when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(4)) + when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(4)) + when 5 then @DelimStep +'RNO' + @DelimStep + when 7 then @DelimStep +'Table' + @DelimStep + when 8 then @DelimStep +'SupInfo' + @DelimStep + else case when Z.FromType < 3 then @Delim else @DelimStep end + + case when I.deletestatus != 0 then 'Old ' else '' end + cast(1 as varchar(4)) + end end Path, + OrdinalPath + '.' + Right('000' + Cast(P.FromType as varchar(4)), 4) + '-' , + OrdinalPath + '.' + Right('000' + Cast(P.FromType as varchar(4)), 4) + '-00001', + P.[FromType],0 + from Itemz Z + join tblParts P on P.ContentID = Z.ContentID + join tblItems I on I.ItemID = P.ItemID + inner join tblContents C on C.ContentID=I.ContentID + where @IncludeDeletedChildren = 1 or z.DeleteStatus = 0 + Union All + -- Children2 + select [Level] + 1, I.[ItemID], I.[ContentID], I.DeleteStatus, @procdts procdts, + PATH + --'' + case C.Type/10000 + when 2 then + case P.FromType + when 3 then @DelimStep + 'Caution' + when 4 then @DelimStep + 'Note' + when 8 then @DelimStep + 'SupInfo' + else '' end + else '' end + PPath, + Path + case C.Type/10000 + when 0 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') + when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') + else + case P.FromType + --when 1 then 'PRC' + @Delim + cast(1 as varchar(4)) + --when 2 then 'SEC' + @Delim + cast(1 as varchar(4)) + when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(4)) + when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(4)) + when 5 then @DelimStep +'RNO' + @DelimStep + when 7 then @DelimStep +'Table' + @DelimStep + when 8 then @DelimStep +'SupInfo' + @DelimStep + else case when Z.FromType < 3 then @Delim else @DelimStep end + + case when I.deletestatus != 0 then 'Old ' else '' end + cast(1 as varchar(4)) + end end Path, + OrdinalPath + '.' + Right('000' + Cast(P.FromType as varchar(4)), 4) + '-' , + OrdinalPath + '.' + Right('000' + Cast(P.FromType as varchar(4)), 4) + '-00001', + P.[FromType],0 + from Itemz Z + join PartAudits P on P.ContentID = Z.ContentID + join tblItems I on I.ItemID = P.ItemID and i.PreviousID is null + inner join tblContents C on C.ContentID=I.ContentID + where @IncludeDeletedChildren = 1 or z.DeleteStatus >= 0 + -- Siblings + Union All + select [Level] , I.[ItemID], I.[ContentID], I.DeleteStatus, @procdts procdts, + PPath, + --'1' + + PPath + case C.Type/10000 + when 0 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') + when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') + else case when .dbo.vefn_GetLastDelim(Path) = '.' then @DelimStep else @Delim end + + case when I.deletestatus != 0 then 'Old ' else '' end + cast(Ordinal + 2 as varchar(4)) + end Path, + POrdinalPath, + POrdinalPath + right('00000' + cast(Z.[Ordinal] + 2 as varchar(5)), 5), + FromType,Z.[Ordinal] +1 + from Itemz Z + join tblItems I on I.PreviousID = Z.ItemID + inner join tblContents C on C.ContentID=I.ContentID + where Z.[Level] > 0 + ) + insert into @Children select distinct ItemID, ContentID, DeleteStatus, ProcDTS, Path, OrdinalPath from Itemz + OPTION (MAXRECURSION 10000) + END + RETURN +end +go +IF (@@Error = 0) PRINT 'TableFunction [vefn_tblChildItems] Succeeded' +ELSE PRINT 'TableFunction [vefn_tblChildItems] Error on Creation' +go + +/****** Object: StoredProcedure [dbo].[getAnnotationAuditsChronologyByItemID] Script Date: 04/02/2012 15:57:32 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAnnotationAuditsChronologyByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) +DROP PROCEDURE [getAnnotationAuditsChronologyByItemID]; +GO +/****** Object: StoredProcedure [getAnnotationAuditsChronologyByItemID] ******/ +/* +getAnnotationAuditsChronologyByItemID 13,13 +getAnnotationAuditsChronologyByItemID 30,8570 +getAnnotationAuditsChronologyByItemID 30,8513 +getAnnotationAuditsChronologyByItemID 30,8505 +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE procedure [dbo].[getAnnotationAuditsChronologyByItemID] +( + @ProcItemID int, + @ItemID int, + @DTS datetime +) +WITH EXECUTE AS OWNER +AS +begin +-- declare @dts datetime +-- set @dts = (select dts from items where itemid = @procitemid) + declare @tci table + ( + ItemID int, + IContentID int, + IDeleteStatus int, + ProcDTS datetime, + Path nvarchar(max), + OrdinalPath nvarchar(max) + ) + insert into @tci + select * from vefn_tblchilditems(@ProcItemID,@ItemID,0) + select + case + when lastauditid is null and dts > itemdts then 'Added' + when deletestatus > 0 then 'Deleted' + when lastauditid = deletedauditid then 'Restored' + else 'Changed' + end ActionWhat + ,case + when lastauditid is null and dts > itemdts then dts + when deletestatus > 0 then ActionDTS + when lastauditid = deletedauditid then ActionDTS + else dts + end ActionWhen + ,* + from + ( + select + cast(ident_current('annotationaudits') + 1 as bigint) auditid + -- (select max(auditid) + 1 from annotationaudits) auditid + -- 0 auditid + ,aa.annotationid + ,aa.itemid + ,aa.typeid + ,aa.rtftext + ,aa.searchtext + ,aa.config + ,aa.dts + ,aa.userid + ,0 deletestatus + ,aa.ActionDTS + ,ii.contentid icontentid + ,(select min(dts) from tblitems where itemid = ii.itemid) ItemDTS + ,(select max(auditid) from annotationaudits where annotationid = aa.annotationid and itemid = ii.itemid) LastAuditID + ,(select max(auditid) from annotationaudits where annotationid = aa.annotationid and itemid = ii.itemid and deletestatus > 0 and aa.dts = dts) DeletedAuditID +,tci.ordinalpath + from tblannotations aa + inner join items ii on aa.itemid = ii.itemid +join @tci tci on tci.itemid = ii.itemid + where aa.deletestatus = 0 + union + select + aa.auditid + ,aa.annotationid + ,aa.itemid + ,aa.typeid + ,aa.rtftext + ,aa.searchtext + ,aa.config + ,aa.dts + ,aa.userid + ,aa.deletestatus + ,aa.ActionDTS + ,ii.contentid icontentid + ,(select min(dts) from tblitems where itemid = ii.itemid) ItemDTS + ,(select max(auditid) from annotationaudits where annotationid = aa.annotationid and itemid = ii.itemid and aa.auditid > auditid ) LastAuditID + ,(select max(auditid) from annotationaudits where annotationid = aa.annotationid and itemid = ii.itemid and aa.auditid > auditid and deletestatus > 0 and aa.dts = dts) DeletedAuditID +,tci.ordinalpath + from annotationaudits aa + inner join items ii on aa.itemid = ii.itemid +join @tci tci on tci.itemid = ii.itemid + ) ah + where itemid in (select itemid from @tci) + and dts > @dts + --(select dts from versions where versionid = (select max(versionid) from revisions rr inner join versions vv on rr.revisionid = vv.revisionid + --inner join stages ss on vv.stageid = ss.stageid where itemid = @procitemid and ss.isapproved = 1)) + order by ordinalpath,annotationid,auditid--actionwhen +end +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getAnnotationAuditsChronologyByItemID Succeeded' +ELSE PRINT 'Procedure Creation: getAnnotationAuditsChronologyByItemID Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetUnitPrefix]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) + DROP FUNCTION [vefn_GetUnitPrefix]; +GO +/* +select 'DocVersions' Type, VersionID, Config, .dbo.vefn_GetUnitPrefix(config) UnitPrefix from DocVersions +UNION select 'Blank' Type, 0 VersionID, '' Config, .dbo.vefn_GetUnitPrefix('') UnitPrefix +UNION select 'Null' Type, 0 VersionID, null Config, .dbo.vefn_GetUnitPrefix(null) UnitPrefix +UNION select 'XML with' Type, 0 VersionID, '' Config, .dbo.vefn_GetUnitPrefix('') UnitPrefix +UNION select 'XML without' Type, 0 VersionID, '' Config, .dbo.vefn_GetUnitPrefix('') UnitPrefix +UNION select 'XML empty' Type, 0 VersionID, '' Config, .dbo.vefn_GetUnitPrefix('') UnitPrefix +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE function [dbo].[vefn_GetUnitPrefix](@config varchar(MAX)) +returns varchar(MAX) +begin + declare @Xml xml + set @Xml = cast(@config as xml) + declare @UnitPrefix varchar(MAX) + set @UnitPrefix = (select Replace(v.value('@ProcedureNumber', 'nvarchar(100)'),'#','') UnitPrefix from @XML.nodes('//Unit') as tmpXml(v)) + return isnull(@UnitPrefix,'') +end + +GO +IF (@@Error = 0) PRINT 'Function: vefn_GetUnitPrefix Succeeded' +ELSE PRINT 'Function: vefn_GetUnitPrefix Error on Creation' +GO + + + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_DocVersionSplit]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_DocVersionSplit]; +GO +/* +select * from vefn_DocVersionSplit('1,4') +select * from vefn_DocVersionSplit(null) +select * from vefn_DocVersionSplit('') +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_DocVersionSplit](@DocVersionList varchar(MAX)) +RETURNS @IDs TABLE +( + VersionID int PRIMARY KEY, + ItemID int, + DVPath varchar(MAX), + UnitPrefix varchar(MAX) +) +WITH EXECUTE AS OWNER +AS +BEGIN +IF(isnull(@DocVersionList,'') = '') + Insert into @IDs + Select VersionID, ItemID, dbo.ve_GetFolderPath(VersionID), .dbo.vefn_GetUnitPrefix(config) + from DocVersions where ItemID is not null +else + Insert into @IDs + Select ID, ItemID, dbo.ve_GetFolderPath(VersionID), .dbo.vefn_GetUnitPrefix(config) + from vefn_SplitInt(@DocVersionList,',') as T + join DocVersions DV on VersionID = T.ID +RETURN +END + +GO + +IF (@@Error = 0) PRINT 'Function: [vefn_DocVersionSplit] Succeeded' +ELSE PRINT 'Function: [vefn_DocVersionSplit] Error on Creation' +GO + + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_SiblingAndChildrenItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_SiblingAndChildrenItems]; +GO + +/* +select * from vefn_SiblingAndChildrenItems('','3-') +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_SiblingAndChildrenItems](@DocVersionList varchar(MAX),@UnitPrefix varchar(MAX)) +RETURNS @SiblingAndChildren TABLE +( + [ItemID] int PRIMARY KEY + , [DVPath] nvarchar(max) + , [Path] nvarchar(max) + , [Level] int + , [FromType] int + , [Ordinal] int + , [ParentID] int + , [PreviousID] int + , [ContentID] int + , [DTS] datetime + , [UserID] nvarchar(100) + , [pContentID] int + , [pDTS] datetime + , [pUserID] nvarchar(100) + , [IsRNO] int + +-- , [PPath] nvarchar(max) +-- , [POrdinalPath] nvarchar(max) + , [OrdinalPath] nvarchar(max) +) +WITH EXECUTE AS OWNER +AS +BEGIN +Declare @Delim char(1) +Set @Delim=char(7) +Declare @DelimNumber char(1) +Set @DelimNumber=char(17) +Declare @DelimStep char(1) +Set @DelimStep='.' +BEGIN +with Itemz([ItemID], [DVPath], [Level], [ParentID], [Ordinal], [PreviousID], [FromType], [ContentID], [DTS], [UserID],[pContentID], + [pDTS],[pUserID],PPath, [Path], [IsRNO], [POrdinalPath], [OrdinalPath], [UnitPrefix]) as ( + Select [I].[ItemID], DVPath, 0 [Level], 0 [ParentID], 0 [Ordinal], [PreviousID],0 [FromType],[I].[ContentID],[I].[DTS],[I].[UserID] + ,0 [pContentID],[I].[DTS] [pDTS], [I].[UserID] [pUserID], + Cast('' as nvarchar(max)) [PPath], + Cast(Case when C.Type < 20000 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') else '1' end as nvarchar(max)) [Path], + 0 IsRNO, Cast('' as nvarchar(max)) [POrdinalPath], Cast('0001' as nvarchar(max)) [OrdinalPath], UnitPrefix + FROM [Items] I + Join Contents C on C.ContentID=I.ContentID + JOIN vefn_DocVersionSplit(@DocVersionList) DV + ON I.[ItemID] = DV.[ItemID] +Union All +-- Children + select I.[ItemID], DVPath, [Level] + 1,Z.ItemID,0, I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID], + P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID] + ,PATH + --'' + case C.Type/10000 + when 2 then + case P.FromType + when 3 then @DelimStep + 'Caution' + when 4 then @DelimStep + 'Note' + when 8 then @DelimStep + 'SupInfo' + else '' end + else '' end + PPath, + Path + case C.Type/10000 + when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') -- Procedure + when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') -- Section + else + case P.FromType + --when 1 then 'PRC' + @Delim + cast(1 as varchar(4)) + --when 2 then 'SEC' + @Delim + cast(1 as varchar(4)) + when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(4)) + when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(4)) + when 5 then @DelimStep +'RNO' + @DelimStep + when 7 then @DelimStep +'Table' + @DelimStep + when 8 then @DelimStep +'SupInfo' + @DelimStep + else case when Z.FromType < 3 then @Delim else @DelimStep end + cast(1 as varchar(4)) + end end Path, + case when P.FromType = 5 then -1 else 0 end IsRNO, + OrdinalPath + '.' + Right('000' + Cast(P.FromType as varchar(4)), 4) + '-' , + OrdinalPath + '.' + Right('000' + Cast(P.FromType as varchar(4)), 4) + '-00001', UnitPrefix + from Itemz Z + join Parts P on P.ContentID = Z.ContentID + join Items I on I.ItemID = P.ItemID + join Contents C on C.ContentID = I.ContentID +Union All +-- Siblings + select I.[ItemID], DVPath, [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID] + ,null,null,null, + PPath, + --'1' + + PPath + case C.Type/10000 + when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') -- Procedure + when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') -- Section + else case when .dbo.vefn_GetLastDelim(Path) = '.' then @DelimStep else @Delim end + cast(Ordinal + 2 as varchar(4)) + end Path, 0, + POrdinalPath, + POrdinalPath + right('00000' + cast(Z.[Ordinal] + 2 as varchar(5)), 5), UnitPrefix + from Itemz Z + join Items I on I.PreviousID = Z.ItemID + join Contents C on C.ContentID = I.ContentID + --where Z.[Level] > 0 + +) +insert into @SiblingAndChildren +select I.[ItemID], [DvPath], [Path], I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID], + [pContentID],[pDTS],[pUserID],[IsRNO]/*,[PPath],[POrdinalPath]*/,[OrdinalPath] + from ItemZ I +OPTION (MAXRECURSION 10000) +END +RETURN +END +GO + +IF (@@Error = 0) PRINT 'Function: vefn_SiblingAndChildrenItems Succeeded' +ELSE PRINT 'Function: vefn_SiblingAndChildrenItems Error on Creation' +GO +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[FindAnnotations]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [FindAnnotations]; + +/****** Object: UserDefinedFunction [dbo].[FindAnnotations] Script Date: 09/28/2012 11:06:59 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +/* +select * from [FindAnnotations]('12','',0,'') +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[FindAnnotations](@AnnotationTypeList varchar(MAX), @SearchString varchar(MAX), @CaseSensitive int, @StepTypeList varchar(MAX)) +RETURNS @Results TABLE +( + AnnotationID int Primary Key +) +WITH EXECUTE AS OWNER +BEGIN + insert into @Results + select Distinct A.AnnotationID from Items I + join Contents C on I.ContentID = C.ContentID + left Join Parts P on P.ItemID = I.ItemID + join Annotations A on A.ItemID = I.ItemID + join vefn_AnnotationTypeSplit(@AnnotationTypeList) TT on TT.TypeID=A.TypeID +where + (isnull(@SearchString,'')='' + OR (@CaseSensitive = 1 AND A.SearchText like @SearchString Collate SQL_Latin1_General_CP1_CS_AS) + OR (@CaseSensitive = 0 AND A.SearchText like @SearchString Collate SQL_Latin1_General_CP1_CI_AS)) + AND + ((isnull(@StepTypeList,'') = '' /*and dbo.vefn_AllSections(C.Type)>=10000*/) + or + ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))) + or + (@StepTypeList like '%20040%' AND isnull(P.FromType,0) = 5))) + + RETURN +END +GO +IF (@@Error = 0) PRINT 'Function: FindAnnotations Succeeded' +ELSE PRINT 'Function: FindAnnotations Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SearchAnnotationItemAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) +DROP PROCEDURE [vesp_SearchAnnotationItemAndChildren]; +GO +/* +exec vesp_SearchAnnotationItemAndChildren Null,Null,'1',Null,0,"3-" +exec vesp_SearchAnnotationItemAndChildren Null,Null,'2',Null,0 +exec vesp_SearchAnnotationItemAndChildren Null,Null,'3',Null,0 +exec vesp_SearchAnnotationItemAndChildren Null,Null,'4',Null,0 +exec vesp_SearchAnnotationItemAndChildren Null,Null,'5',Null,0 +exec vesp_SearchAnnotationItemAndChildren Null,Null,'',Null,0 +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_SearchAnnotationItemAndChildren] (@DocVersionList varchar(MAX), @StepTypeList varchar(MAX), @AnnotationTypeList varchar(MAX), @SearchString nvarchar(MAX), @CaseSensitive as int, @UnitPrefix nvarchar(MAX)) +WITH EXECUTE AS OWNER +AS +BEGIN +Declare @Delim char(1) +Set @Delim=char(7) +Declare @DelimNumber char(1) +Set @DelimNumber=char(17) +Declare @DelimStep char(1) +Set @DelimStep='.' +Set @SearchString = .dbo.vefn_FixSearchString(@SearchString) +begin +with Itemz(DVPath, [Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], + [pDTS],[pUserID],[pLastChanged],PPath, Path, IsRNO, POrdinalPath, OrdinalPath, UnitPrefix) as ( + Select DVPath, 0 [Level], 0 [ParentID], 0 [Ordinal], [I].[ItemID], [PreviousID],0 [FromType],[I].[ContentID],[I].[DTS],[I].[UserID],[I].[LastChanged] + ,0 [pContentID],[I].[DTS] [pDTS], [I].[UserID] [pUserID], [I].[LastChanged] [pLastChanged], + Cast('' as nvarchar(max)) PPath, + Cast(Case when C.Type < 20000 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') else '1' end as nvarchar(max)) Path, + 0 IsRNO, Cast('' as nvarchar(max)) POrdinalPath, Cast('0001' as nvarchar(max)) OrdinalPath, UnitPrefix + FROM [Items] I + Join Contents C on C.ContentID=I.ContentID + JOIN vefn_DocVersionSplit(@DocVersionList) DV + ON I.[ItemID] = DV.[ItemID] +Union All +-- Children + select DVPath, [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] + ,PATH + --'' + case C.Type/10000 + when 2 then + case P.FromType + when 3 then @DelimStep + 'Caution' + when 4 then @DelimStep + 'Note' + when 8 then @DelimStep + 'SupInfo' + else '' end + else '' end + PPath, + Path + case C.Type/10000 + when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') + when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') + else + case P.FromType + --when 1 then 'PRC' + @Delim + cast(1 as varchar(4)) + --when 2 then 'SEC' + @Delim + cast(1 as varchar(4)) + when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(4)) + when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(4)) + when 5 then @DelimStep +'RNO' + @DelimStep + when 7 then @DelimStep +'Table' + @DelimStep + when 8 then @DelimStep +'SupInfo' + @DelimStep + else case when Z.FromType < 3 then @Delim else @DelimStep end + cast(1 as varchar(4)) + end end Path, + case when P.FromType = 5 then -1 else 0 end IsRNO, + OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-' , + OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-0001', UnitPrefix + from Itemz Z + join Parts P on P.ContentID = Z.ContentID + join Items I on I.ItemID = P.ItemID + join Contents C on C.ContentID = I.ContentID +Union All +-- Siblings + select DVPath, [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + ,null,null,null,null + ,PPath, + --'1' + + PPath + case C.Type/10000 + when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') + when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') + else case when .dbo.vefn_GetLastDelim(Path) = '.' then @DelimStep else @Delim end + cast(Ordinal + 2 as varchar(4)) + end Path, 0, + POrdinalPath, + POrdinalPath + right('0000' + cast(Z.[Ordinal] + 2 as varchar(4)), 4), UnitPrefix + from Itemz Z + join Items I on I.PreviousID = Z.ItemID + join Contents C on C.ContentID = I.ContentID + --where Z.[Level] > 0 +) +select DvPath, Path, I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], + C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], + [pContentID],[pDTS],[pUserID],[pLastChanged],AnnotationID SearchAnnotationID, SearchText, TT.Name AnnotationType, + (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], + (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], + (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=[I].[ItemID]) [NextCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], + (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], + (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], + (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], + (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], + (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], + (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], + (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] + from ItemZ I + join Contents C on C.ContentID = I.ContentID + left join Entries E on C.ContentID = E.ContentID + left join Documents D on E.DocID = D.DocID + join Annotations A on A.ItemID = I.ItemID + join vefn_AnnotationTypeSplit(@AnnotationTypeList) TT on TT.TypeID=A.TypeID +where + A.AnnotationID in(select AnnotationID from [FindAnnotations](@AnnotationTypeList, @SearchString, @CaseSensitive, @StepTypeList)) + order by DvPath,OrdinalPath +OPTION (MAXRECURSION 10000) +END +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SearchAnnotationItemAndChildren Succeeded' +ELSE PRINT 'Procedure Creation: vesp_SearchAnnotationItemAndChildren Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SearchItemAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) +DROP PROCEDURE [vesp_SearchItemAndChildren]; +GO +/* +exec vesp_SearchItemAndChildren '1,2,4','20007','#Link:Transition',1,0,0,0 +exec vesp_SearchItemAndChildren '1,2,4','20007','#Link:Transition',1,1,0,0 +exec vesp_SearchItemAndChildren '1,2,4','20007','#Link:Transition',1,2,0,0 +exec vesp_SearchItemAndChildren '4','','#Link:Refer',1,2,0,0 +exec vesp_SearchItemAndChildren '4','','200`F',0,1,0,0 +exec vesp_SearchItemAndChildren '4','10000','',0,0,0,0 +exec vesp_SearchItemAndChildren '4','','[0-9]`F',0,1,0,0 +exec vesp_SearchItemAndChildren '','','RCP',0,0,0,0 +exec vesp_SearchItemAndChildren '','','%',0,0,0,0 +exec vesp_SearchItemAndChildren '','20040','',0,0,0,0 +exec vesp_SearchItemAndChildren '','10000','XYZZY',0,0,0,0 +exec vesp_SearchItemAndChildren '','10000','XYZZY',1,0,0,0 +exec vesp_SearchItemAndChildren '','','%IF%',0,0,0,0 +exec vesp_SearchItemAndChildren '','','%IF%',1,0,0,0 +exec vesp_SearchItemAndChildren '','','%47%',1,0,0,0 +exec vesp_SearchItemAndChildren '','','%47%',1,0,0,1 +exec vesp_SearchItemAndChildren '','','condenser not av',0,0,0,0 +exec vesp_SearchItemAndChildren '','','(SG OR LHSI) AND DISPATCH',2,0,0,0 +exec vesp_SearchItemAndChildren '','','DISPATCH NEAR SG',2,0,0,0 +exec vesp_SearchItemAndChildren '','','PORV NEAR SG',2,0,0,0 +exec vesp_SearchItemAndChildren '','','CHECK NORMAL',0,0,0,0 +exec vesp_SearchItemAndChildren '','','turbine-driven',0,0,0,0 +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_SearchItemAndChildren] (@DocVersionList varchar(MAX), @StepTypeList varchar(MAX), +@SearchString varchar(MAX), @CaseSensitive as int, @IncludeLinks as int, @IncludeRtfFormatting as int, @IncludeSpecialCharacters as int, @UnitPrefix as varchar(MAX)) +WITH EXECUTE AS OWNER +AS +BEGIN +Declare @Delim char(1) +Set @Delim=char(7) +Declare @DelimNumber char(1) +Set @DelimNumber=char(17) +Declare @DelimStep char(1) +Set @DelimStep='.' +Set @SearchString = .dbo.vefn_FixSearchString(@SearchString) +begin +with Itemz(DVPath, [Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], + [pDTS],[pUserID],[pLastChanged],PPath, Path, IsRNO, POrdinalPath, OrdinalPath, UnitPrefix) as ( + Select DVPath, 0 [Level], 0 [ParentID], 0 [Ordinal], [I].[ItemID], [PreviousID],0 [FromType],[I].[ContentID],[I].[DTS],[I].[UserID],[I].[LastChanged] + ,0 [pContentID],[I].[DTS] [pDTS], [I].[UserID] [pUserID], [I].[LastChanged] [pLastChanged], + Cast('' as nvarchar(max)) PPath, + Cast(Case when C.Type < 20000 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') else '1' end as nvarchar(max)) Path, + 0 IsRNO, Cast('' as nvarchar(max)) POrdinalPath, Cast('0001' as nvarchar(max)) OrdinalPath, UnitPrefix + FROM [Items] I + Join Contents C on C.ContentID=I.ContentID + JOIN vefn_DocVersionSplit(@DocVersionList) DV + ON I.[ItemID] = DV.[ItemID] +Union All +-- Children + select DVPath, [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] + ,PATH + --'' + case C.Type/10000 + when 2 then + case P.FromType + when 3 then @DelimStep + 'Caution' + when 4 then @DelimStep + 'Note' + when 8 then @DelimStep + 'SupInfo' + else '' end + else '' end + PPath, + Path + case C.Type/10000 + when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') + when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') + else + case P.FromType + --when 1 then 'PRC' + @Delim + cast(1 as varchar(4)) + --when 2 then 'SEC' + @Delim + cast(1 as varchar(4)) + when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(4)) + when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(4)) + when 5 then @DelimStep +'RNO' + @DelimStep + when 7 then @DelimStep +'Table' + @DelimStep + when 8 then @DelimStep +'SupInfo' + @DelimStep + else case when Z.FromType < 3 then @Delim else @DelimStep end + cast(1 as varchar(4)) + end end Path, + case when P.FromType = 5 then -1 else 0 end IsRNO, + OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-' , + OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-0001', UnitPrefix + from Itemz Z + join Parts P on P.ContentID = Z.ContentID + join Items I on I.ItemID = P.ItemID + join Contents C on C.ContentID = I.ContentID +Union All +-- Siblings + select DVPath, [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + ,null,null,null,null + ,PPath, + --'1' + + PPath + case C.Type/10000 + when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') + when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') + else case when .dbo.vefn_GetLastDelim(Path) = '.' then @DelimStep else @Delim end + cast(Ordinal + 2 as varchar(4)) + end Path, 0, + POrdinalPath, + POrdinalPath + right('0000' + cast(Z.[Ordinal] + 2 as varchar(4)), 4), UnitPrefix + from Itemz Z + join Items I on I.PreviousID = Z.ItemID + join Contents C on C.ContentID = I.ContentID + --where Z.[Level] > 0 +) +select DvPath, Path, I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], + C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], + [pContentID],[pDTS],[pUserID],[pLastChanged], + (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], + (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], + (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=[I].[ItemID]) [NextCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], + (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], + (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], + (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], + (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], + (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], + (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], + (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] + from ItemZ I + join Contents C on C.ContentID = I.ContentID + left join Entries E on C.ContentID = E.ContentID + left join Documents D on E.DocID = D.DocID + where + (isnull(@SearchString,'')='' + OR (@CaseSensitive = 1 AND .dbo.vefn_RemoveExtraText(C.Text,@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) like @SearchString Collate SQL_Latin1_General_CP1_CS_AS) + OR (@CaseSensitive = 0 AND .dbo.vefn_RemoveExtraText(C.Text,@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) like @SearchString Collate SQL_Latin1_General_CP1_CI_AS) + OR (@CaseSensitive = 1 AND Replace(D.DocAscii,nchar(176),'\''B0') like @SearchString Collate SQL_Latin1_General_CP1_CS_AS) + OR (@CaseSensitive = 0 AND Replace(D.DocAscii,nchar(176),'\''B0') like @SearchString Collate SQL_Latin1_General_CP1_CI_AS) + ) + AND + ((isnull(@StepTypeList,'') = '' /*and dbo.vefn_AllSections(C.Type)>=10000*/) + or + ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))) + or + (@StepTypeList like '%20040%' AND IsRNO = -1))) + order by DvPath,OrdinalPath +OPTION (MAXRECURSION 10000) +END +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SearchItemAndChildren Succeeded' +ELSE PRINT 'Procedure Creation: vesp_SearchItemAndChildren Error on Creation' +GO + +/****** Object: StoredProcedure [vesp_SearchItemAndChildrenNew] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SearchItemAndChildrenNew]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) +DROP PROCEDURE [vesp_SearchItemAndChildrenNew]; +GO + +/* +exec vesp_SearchItemAndChildrenNew '1,2,4','20007','#Link:Transition',1,0,0,0 +exec vesp_SearchItemAndChildrenNew '1,2,4','20007','#Link:Transition',1,1,0,0 +exec vesp_SearchItemAndChildrenNew '1,2,4','20007','#Link:Transition',1,2,0,0 +exec vesp_SearchItemAndChildrenNew '4','','#Link:Refer',1,2,0,0 +exec vesp_SearchItemAndChildrenNew '4','','200`F',0,1,0,0 +exec vesp_SearchItemAndChildrenNew '4','10000','',0,0,0,0 +exec vesp_SearchItemAndChildrenNew '4','','[0-9]`F',0,1,0,0 +exec vesp_SearchItemAndChildrenNew '1','','"RCP"',2,0,0,0 +exec vesp_SearchItemAndChildrenNew '','','"RCP"',2,0,0,0 +exec vesp_SearchItemAndChildrenNew '','','%',0,0,0,0 +exec vesp_SearchItemAndChildrenNew '','20040','',0,0,0,0 +exec vesp_SearchItemAndChildrenNew '','10000','XYZZY',0,0,0,0 +exec vesp_SearchItemAndChildrenNew '','10000','XYZZY',1,0,0,0 +exec vesp_SearchItemAndChildrenNew '','','%IF%',0,0,0,0 +exec vesp_SearchItemAndChildrenNew '','','%IF%',1,0,0,0 +exec vesp_SearchItemAndChildrenNew '','','%47%',1,0,0,0 +exec vesp_SearchItemAndChildrenNew '','','%47%',1,0,0,1 +exec vesp_SearchItemAndChildrenNew '','','condenser not av',0,0,0,0 +exec vesp_SearchItemAndChildrenNew '','','(SG OR LHSI) AND DISPATCH',2,0,0,0 +exec vesp_SearchItemAndChildrenNew '','','DISPATCH NEAR SG',2,0,0,0 +exec vesp_SearchItemAndChildrenNew '','','PORV NEAR SG',2,0,0,0 +exec vesp_SearchItemAndChildrenNew '','','CHECK NORMAL',0,0,0,0 +exec vesp_SearchItemAndChildrenNew '','','(Resolved Transition Text)',0,0,0,0 +exec vesp_SearchItemAndChildrenNew '','','%turbine-driven%',0,0,0,0 +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_SearchItemAndChildrenNew] (@DocVersionList varchar(MAX), @StepTypeList varchar(MAX), +@SearchString varchar(MAX), @CaseSensitive as int, @IncludeLinks as int, @IncludeRtfFormatting as int, @IncludeSpecialCharacters as int, @UnitPrefix as varchar(MAX)) +WITH EXECUTE AS OWNER +AS +select ZZ.DvPath, ZZ.Path, ZZ.[Level],ZZ.[FromType],ZZ.[Ordinal], ZZ.[ParentID], ZZ.[ItemID],ZZ.[PreviousID],ZZ.[ContentID],ZZ.[DTS],ZZ.[UserID] + ,II.[LastChanged] + ,CC.[Number],CC.[Text],CC.[Type],CC.[FormatID],CC.[Config],CC.[DTS] [cDTS],CC.[UserID] [cUserID] + ,CC.[LastChanged] [cLastChanged], + PP.[ContentID] [pContentID], PP.[DTS] [pDTS],PP.[UserID] [pUserID], PP.[LastChanged] [pLastChanged], + (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=ZZ.[ItemID]) [AnnotationCount], + (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=ZZ.[ItemID]) [DocVersionCount], + (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=ZZ.[ItemID]) [NextCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=ZZ.[ItemID]) [PartCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=ZZ.[ItemID]) [Transition_RangeIDCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=ZZ.[ItemID]) [Transition_ToIDCount], + (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=CC.[ContentID]) [DetailCount], + (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=CC.[ContentID]) [EntryCount], + (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=CC.[ContentID]) [GridCount], + (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=CC.[ContentID]) [ImageCount], + (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=CC.[ContentID]) [ItemCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=CC.[ContentID]) [cPartCount], + (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=CC.[ContentID]) [RoUsageCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=CC.[ContentID]) [TransitionCount], + (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=CC.[ContentID]) [ZContentCount] +from vefn_SiblingAndChildrenItems(@DocVersionList, @UnitPrefix) ZZ + Join Items II on ZZ.ItemID=II.ItemID + Left Join Parts PP on ZZ.PContentID=PP.ContentID and ZZ.FromType = PP.FromType + Join Contents CC on CC.ContentID=ZZ.ContentID +where ZZ.ContentID in (select ContentID from vefn_FindText(@DocVersionList,@SearchString,@CaseSensitive,@IncludeLinks,@IncludeRtfFormatting,@IncludeSpecialCharacters,@StepTypeList)) + order by DvPath,OrdinalPath + GO +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SearchItemAndChildrenNew Succeeded' +ELSE PRINT 'Procedure Creation: vesp_SearchItemAndChildrenNew Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[tr_tblItems_Update]') AND OBJECTPROPERTY(id,N'IsTrigger') = 1) + DROP TRIGGER [tr_tblItems_Update]; + + /****** Object: Trigger [dbo].[tr_tblItems_Update] Script Date: 04/25/2012 14:09:52 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +/****** Object: Trigger [tr_tblItems_Update] ******/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE trigger [dbo].[tr_tblItems_Update] on [dbo].[tblItems] for update as + begin + if exists (select * from inserted) + begin + if update(PreviousID) or update(ContentID) or update(UserID) or update(DeleteStatus) + begin + insert into ItemAudits(ItemID,PreviousID,ContentID,DTS,UserID,DeleteStatus) + select dd.ItemID,dd.PreviousID,dd.ContentID,dd.DTS,dd.UserID,dd.DeleteStatus from deleted dd + inner join inserted ii on dd.ItemID = ii.ItemID + where dd.deletestatus = 0 or ii.deletestatus != 0 + end + end + end +GO +-- Display the status of Trigger alter +IF (@@Error = 0) PRINT 'Trigger alteration: tr_tblItems_Update Succeeded' +ELSE PRINT 'Trigger alteration: tr_tblItems_Update Error on Alteration' +GO + +/****** Object: StoredProcedure [vesp_GetROUsagesByProcedure] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetROUsagesByProcedure]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_GetROUsagesByProcedure]; +GO + +/* +exec vesp_GetROUsagesByProcedure '1,2,4','20007','1:00010000019C,0001000002AE' +exec vesp_GetROUsagesByProcedure '1,2,4','','1:00010000019C,0001000002AE' +exec vesp_GetROUsagesByProcedure '1,2,4','20007','1:0001' +exec vesp_GetROUsagesByProcedure '1,2,4','20006','1' +exec vesp_GetROUsagesByProcedure '1,2,4','20006','' +exec vesp_GetROUsagesByProcedure '1,2,4',Null,Null +exec vesp_GetROUsagesByProcedure '1','','1:000700000124','' +exec vesp_GetROUsagesByProcedure '','','1:0007000001C9,000700000124', '' +exec vesp_SearchROItemAndChildren '1','','1:000700000124','' +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_GetROUsagesByProcedure] (@DocVersionList varchar(MAX), @StepTypeList varchar(MAX), @ROSearchString varchar(MAX), @UnitPrefix as varchar(MAX)) +WITH EXECUTE AS OWNER +AS +BEGIN +Declare @Delim char(1) +Set @Delim=char(7) +Declare @DelimNumber char(1) +Set @DelimNumber=char(17) +Declare @DelimStep char(1) +Set @DelimStep='.' +begin +with Itemz(DVPath, [Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], + [pDTS],[pUserID],[pLastChanged],PPath, Path, IsRNO, POrdinalPath, OrdinalPath, FoundROID) as ( + Select DVPath, 0 [Level], 0 [ParentID], 0 [Ordinal], [I].[ItemID], [PreviousID],0 [FromType],[I].[ContentID],[I].[DTS],[I].[UserID],[I].[LastChanged] + ,0 [pContentID],[I].[DTS] [pDTS], [I].[UserID] [pUserID], [I].[LastChanged] [pLastChanged], + Cast('' as nvarchar(max)) PPath, + Cast(Case when C.Type < 20000 then @Delim + @UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') else '1' end as nvarchar(max)) Path, + 0 IsRNO, Cast('' as nvarchar(max)) POrdinalPath, Cast('0001' as nvarchar(max)) OrdinalPath, null + + FROM [Items] I + Join Contents C on C.ContentID=I.ContentID + JOIN vefn_DocVersionSplit(@DocVersionList) DV + ON I.[ItemID] = DV.[ItemID] +Union All +-- Children + select DVPath, [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] + ,PATH + --'' + case C.Type/10000 + when 2 then + case P.FromType + when 3 then @DelimStep + 'Caution' + when 4 then @DelimStep + 'Note' + when 8 then @DelimStep + 'SupInfo' + else '' end + else '' end + PPath, + --Path + case when Z.FromType < 3 then @Delim else @DelimStep end + case C.Type/10000 + Path + case C.Type/10000 + when 0 then @Delim + @UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') + when 1 then @Delim + @UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') + else + case P.FromType + --when 1 then 'PRC' + @Delim + cast(1 as varchar(4)) + --when 2 then 'SEC' + @Delim + cast(1 as varchar(4)) + when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(4)) + when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(4)) + when 5 then @DelimStep +'RNO' + @DelimStep + when 7 then @DelimStep +'Table' + @DelimStep + when 8 then @DelimStep +'SupInfo' + @DelimStep + else case when Z.FromType < 3 then @Delim else @DelimStep end + cast(1 as varchar(4)) + end end Path, + case when P.FromType = 5 then -1 else 0 end IsRNO, + OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-' , + OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-0001', + null + from Itemz Z + join Parts P on P.ContentID = Z.ContentID + join Items I on I.ItemID = P.ItemID + join Contents C on C.ContentID = I.ContentID +Union All +-- Siblings + select DVPath, [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + ,null,null,null,null + ,PPath, + --'1' + + PPath + case C.Type/10000 + when 0 then @Delim + @UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') + when 1 then @Delim + @UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') + else case when .dbo.vefn_GetLastDelim(Path) = '.' then @DelimStep else @Delim end + cast(Ordinal + 2 as varchar(4)) + end Path, 0, + POrdinalPath, + POrdinalPath + right('0000' + cast(Z.[Ordinal] + 2 as varchar(4)), 4), + null + from Itemz Z + join Items I on I.PreviousID = Z.ItemID + join Contents C on C.ContentID = I.ContentID + --where Z.[Level] > 0 +) +select DvPath, Path, I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], + C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], + [pContentID],[pDTS],[pUserID],[pLastChanged], + (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], + (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], + (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=[I].[ItemID]) [NextCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], + (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], + (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], + (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], + (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], + (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], + (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], + (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount], + RRU.ROID FoundROID + from ItemZ I + join Contents C on C.ContentID = I.ContentID +join (select contentid, ru.roid from ROusages RU +join vefn_SplitROSearch(@ROSearchString) RR on case when len(RU.ROID) = 12 then RU.ROID +'0000' else RU.ROID end + like RR.roid + '%' +union +select contentid, du.roid from DROusages DU +join entries ee on DU.DOCID = EE.DOCID +join vefn_SplitROSearch(@ROSearchString) RR on case when len(DU.ROID) = 12 then DU.ROID +'0000' else DU.ROID end like RR.roid + '%') RRU on RRU.ContentID = I.ContentID + AND + ((isnull(@StepTypeList,'') = '' /*and dbo.vefn_AllSections(C.Type)>=10000*/) + or + ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))) + or + (@StepTypeList like '%20040%' AND IsRNO = -1))) + order by DvPath,OrdinalPath /*having foundroid in ( select roid from vefn_SplitROSearch(@ROSearchString))*/ +OPTION (MAXRECURSION 10000) +END +END +GO +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetROUsagesByProcedure Succeeded' +ELSE PRINT 'Procedure Creation: vesp_GetROUsagesByProcedure Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[FindRoUsages]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [FindRoUsages]; +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +/* +Declare @ROSearchString varchar(MAX) +set @ROSearchString='1:000200000089' +select * from FindRoUsages('1:000200000089') +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +Create FUNCTION [dbo].[FindRoUsages](@ROSearchString varchar(Max)) +RETURNS @Results TABLE +( + ContentID int Primary Key +) +WITH EXECUTE AS OWNER +BEGIN + insert into @Results + select ContentID from ROUsages RU + join vefn_SplitROSearch(@ROSearchString) RR + ON RR.RODBID = RU.RODBID and + RU.ROID like RR.ROID + '%' Collate SQL_Latin1_General_CP1_CI_AS + UNION + select ContentID from Entries EE + Join DROUsages RU on RU.DocID = EE.DocID + join vefn_SplitROSearch(@ROSearchString) RR + ON RR.RODBID = RU.RODBID and + case when len(RU.ROID) = 12 then RU.ROID +'0000' else RU.ROID end like RR.ROID + '%' Collate SQL_Latin1_General_CP1_CI_AS + RETURN +END +GO + +IF (@@Error = 0) PRINT 'Function: FindRoUsages Succeeded' +ELSE PRINT 'Function: FindRoUsages Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SearchROItemAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) +DROP PROCEDURE [vesp_SearchROItemAndChildren]; + +GO +/****** Object: StoredProcedure [dbo].[vesp_SearchROItemAndChildren] Script Date: 09/28/2012 09:02:50 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +/* +exec vesp_SearchROItemAndChildren '1,2,4','20007','1:00010000019C,0001000002AE','' +exec vesp_SearchROItemAndChildren '1,2,4','','1:00010000019C,0001000002AE','' +exec vesp_SearchROItemAndChildren '1,2,4','20007','1:0001','' +exec vesp_SearchROItemAndChildren '1,2,4','20006','1','' +exec vesp_SearchROItemAndChildren '1,2,4','20006','','' +exec vesp_SearchROItemAndChildren '',Null,Null,'XXX-','' +exec vesp_SearchROItemAndChildren '1','','1:000200000089','' +exec vesp_SearchROItemAndChildren '1','','1:00010000019c','' +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_SearchROItemAndChildren] (@DocVersionList varchar(MAX), @StepTypeList varchar(MAX), @ROSearchString varchar(MAX), @UnitPrefix as varchar(MAX)) +WITH EXECUTE AS OWNER +AS +BEGIN +Declare @Delim char(1) +Set @Delim=char(7) +Declare @DelimNumber char(1) +Set @DelimNumber=char(17) +Declare @DelimStep char(1) +Set @DelimStep='.' +begin +with Itemz(DVPath, [Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], + [pDTS],[pUserID],[pLastChanged],PPath, Path, IsRNO, POrdinalPath, OrdinalPath, UnitPrefix) as ( + Select DVPath, 0 [Level], 0 [ParentID], 0 [Ordinal], [I].[ItemID], [PreviousID],0 [FromType],[I].[ContentID],[I].[DTS],[I].[UserID],[I].[LastChanged] + ,0 [pContentID],[I].[DTS] [pDTS], [I].[UserID] [pUserID], [I].[LastChanged] [pLastChanged], + Cast('' as nvarchar(max)) PPath, + Cast(Case when C.Type < 20000 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') else '1' end as nvarchar(max)) Path, + 0 IsRNO, Cast('' as nvarchar(max)) POrdinalPath, Cast('0001' as nvarchar(max)) OrdinalPath, UnitPrefix + + FROM [Items] I + Join Contents C on C.ContentID=I.ContentID + JOIN vefn_DocVersionSplit(@DocVersionList) DV + ON I.[ItemID] = DV.[ItemID] +Union All +-- Children + select DVPath, [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] + ,PATH + --'' + case C.Type/10000 + when 2 then + case P.FromType + when 3 then @DelimStep + 'Caution' + when 4 then @DelimStep + 'Note' + when 8 then @DelimStep + 'SupInfo' + else '' end + else '' end + PPath, + --Path + case when Z.FromType < 3 then @Delim else @DelimStep end + case C.Type/10000 + Path + case C.Type/10000 + when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') + when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') + else + case P.FromType + --when 1 then 'PRC' + @Delim + cast(1 as varchar(4)) + --when 2 then 'SEC' + @Delim + cast(1 as varchar(4)) + when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(4)) + when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(4)) + when 5 then @DelimStep +'RNO' + @DelimStep + when 7 then @DelimStep +'Table' + @DelimStep + when 8 then @DelimStep +'SupInfo' + @DelimStep + else case when Z.FromType < 3 then @Delim else @DelimStep end + cast(1 as varchar(4)) + end end Path, + case when P.FromType = 5 then -1 else 0 end IsRNO, + OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-' , + OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-0001', UnitPrefix + from Itemz Z + join Parts P on P.ContentID = Z.ContentID + join Items I on I.ItemID = P.ItemID + join Contents C on C.ContentID = I.ContentID +Union All +-- Siblings + select DVPath, [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + ,null,null,null,null + ,PPath, + --'1' + + PPath + case C.Type/10000 + when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') + when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') + else case when .dbo.vefn_GetLastDelim(Path) = '.' then @DelimStep else @Delim end + cast(Ordinal + 2 as varchar(4)) + end Path, 0, + POrdinalPath, + POrdinalPath + right('0000' + cast(Z.[Ordinal] + 2 as varchar(4)), 4), UnitPrefix + from Itemz Z + join Items I on I.PreviousID = Z.ItemID + join Contents C on C.ContentID = I.ContentID + --where Z.[Level] > 0 +) +select DvPath, Path, I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], + C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], + [pContentID],[pDTS],[pUserID],[pLastChanged], + (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], + (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], + (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=[I].[ItemID]) [NextCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], + (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], + (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], + (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], + (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], + (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], + (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], + (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] + from ItemZ I + join Contents C on C.ContentID = I.ContentID + left join Entries E on C.ContentID = E.ContentID + left join Documents D on E.DocID = D.DocID + where + I.ContentID in(select ContentID from FindROUsages(@ROSearchString)) + AND + ((isnull(@StepTypeList,'') = '' /*and dbo.vefn_AllSections(C.Type)>=10000*/) + or + ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))) + or + (@StepTypeList like '%20040%' AND IsRNO = -1))) + order by DvPath,OrdinalPath +OPTION (MAXRECURSION 10000) +END +END +GO + +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SearchROItemAndChildren Succeeded' +ELSE PRINT 'Procedure Creation: vesp_SearchROItemAndChildren Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListItemsTranFrom]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_ListItemsTranFrom]; +GO +/****** Object: StoredProcedure [dbo].[vesp_ListItemsTranFrom] Script Date: 10/03/2012 10:06:38 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_ListItemsTranFrom] +WITH EXECUTE AS OWNER +AS +begin + +Select distinct I.ItemID,I.PreviousID,I.ContentID,I.[DTS],I.[UserID],I.[LastChanged], + (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=I.[ItemID]) [AnnotationCount], + (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=I.[ItemID]) [DocVersionCount], + (SELECT COUNT(*) FROM [Items] [Children] WHERE [Children].[PreviousID]=I.[ItemID]) [NextCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=I.[ItemID]) [PartCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=I.[ItemID]) [Transition_RangeIDCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=I.[ItemID]) [Transition_ToIDCount] +from Items I +join Transitions T on I.ContentID = T.FromID +END +GO + +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItemsTranFrom Succeeded' +ELSE PRINT 'Procedure Creation: vesp_ListItemsTranFrom Error on Creation' +GO + + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListItemsTranTo]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_ListItemsTranTo]; +GO +/****** Object: StoredProcedure [dbo].[vesp_ListItemsTranTo] Script Date: 10/03/2012 10:08:03 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_ListItemsTranTo] +WITH EXECUTE AS OWNER +AS +begin +with Itemz(ItemID, ContentID, PreviousID, [Type]) as ( + Select Distinct ItemID, C.ContentID, PreviousID, C.Type + FROM [Items] I + Join Contents C on C.ContentID = I.ContentID + JOIN Transitions T on t.ToID = I.ItemID or t.RangeID = I.ItemID + --where [ItemID]=@ItemID +Union ALL +-- Parent + select I.ItemID,I.ContentID, I.PreviousID, C.Type + from Itemz Z + join Parts P on P.ItemID = Z.ItemID + join Items I on I.ContentID = P.ContentID + Join Contents C on C.ContentID = I.ContentID +-- Previous +Union ALL + select I.ItemID,I.ContentID, I.PreviousID, C.Type + from Itemz Z + join Items I on Z.PreviousID = I.ItemID + Join Contents C on C.ContentID = I.ContentID + where Z.Type >= 10000 +) +Select distinct I.ItemID,I.PreviousID,I.ContentID,I.[DTS],I.[UserID],I.[LastChanged], + (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=Z.[ItemID]) [AnnotationCount], + (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=Z.[ItemID]) [DocVersionCount], + (SELECT COUNT(*) FROM [Items] [Children] WHERE [Children].[PreviousID]=Z.[ItemID]) [NextCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=Z.[ItemID]) [PartCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=Z.[ItemID]) [Transition_RangeIDCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=Z.[ItemID]) [Transition_ToIDCount] +from Itemz Z join Items I on I.ItemID = Z.ItemID +OPTION (MAXRECURSION 10000) +END +GO + +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItemsTranTo Succeeded' +ELSE PRINT 'Procedure Creation: vesp_ListItemsTranTo Error on Creation' +GO + + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListItemsTranFromAndContent]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_ListItemsTranFromAndContent]; +GO +/****** Object: StoredProcedure [dbo].[vesp_ListItemsTranFromAndContent] Script Date: 10/03/2012 10:52:31 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_ListItemsTranFromAndContent] +WITH EXECUTE AS OWNER +AS +begin + +Select distinct I.ItemID,I.PreviousID,I.ContentID,I.[DTS],I.[UserID],I.[LastChanged], + C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], + (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], + (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], + (SELECT COUNT(*) FROM [Items] [Children] WHERE [Children].[PreviousID]=[I].[ItemID]) [NextCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], + (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], + (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], + (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], + (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], + (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], + (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], + (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] +from Items I Join Contents C on I.ContentID = C.ContentID +join Transitions T on I.ContentID = T.FromID +END +GO +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItemsTranFromAndContent Succeeded' +ELSE PRINT 'Procedure Creation: vesp_ListItemsTranFromAndContent Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListItemsTranToAndContent]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_ListItemsTranToAndContent]; +GO +GO +/****** Object: StoredProcedure [dbo].[vesp_ListItemsTranToAndContent] Script Date: 10/03/2012 10:08:17 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_ListItemsTranToAndContent] +WITH EXECUTE AS OWNER +AS +begin +with Itemz(ItemID, ContentID, PreviousID, [Type]) as ( + Select Distinct ItemID, C.ContentID, PreviousID, C.Type + FROM [Items] I + Join Contents C on C.ContentID = I.ContentID + JOIN Transitions T on t.ToID = I.ItemID or t.RangeID = I.ItemID + --where [ItemID]=@ItemID +Union ALL +-- Parent + select I.ItemID,I.ContentID, I.PreviousID, C.Type + from Itemz Z + join Parts P on P.ItemID = Z.ItemID + join Items I on I.ContentID = P.ContentID + Join Contents C on C.ContentID = I.ContentID +-- Previous +Union ALL + select I.ItemID,I.ContentID, I.PreviousID, C.Type + from Itemz Z + join Items I on Z.PreviousID = I.ItemID + Join Contents C on C.ContentID = I.ContentID + where Z.Type >= 10000 +) +Select distinct I.ItemID,I.PreviousID,I.ContentID,I.[DTS],I.[UserID],I.[LastChanged], + C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], + (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], + (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], + (SELECT COUNT(*) FROM [Items] [Children] WHERE [Children].[PreviousID]=[I].[ItemID]) [NextCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], + (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], + (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], + (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], + (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], + (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], + (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], + (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] +from Itemz Z +Join Items I on Z.ItemID = I.ItemID +Join Contents C on I.ContentID = C.ContentID +OPTION (MAXRECURSION 10000) +END +GO + +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItemsTranToAndContent Succeeded' +ELSE PRINT 'Procedure Creation: vesp_ListItemsTranToAndContent Error on Creation' +GO + +/****** Object: StoredProcedure [vefn_SiblingAndChildrenItemsByProc] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_SiblingAndChildrenItemsByProc]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_SiblingAndChildrenItemsByProc]; +GO + +/****** Object: UserDefinedFunction [dbo].[vefn_tblChildItems] Script Date: 05/18/2011 11:20:48 ******/ +/* +select * from vefn_SiblingAndChildrenItemsByProc(30) II +join +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_SiblingAndChildrenItemsByProc](@ProcID int) +RETURNS @SiblingAndChildren TABLE +( + [ItemID] int PRIMARY KEY + , [DVPath] nvarchar(max) + , [Path] nvarchar(max) + , [Level] int + , [FromType] int + , [Ordinal] int + , [ParentID] int + , [PreviousID] int + , [ContentID] int + , [DTS] datetime + , [UserID] nvarchar(100) + , [pContentID] int + , [pDTS] datetime + , [pUserID] nvarchar(100) + , [IsRNO] int + +-- , [PPath] nvarchar(max) +-- , [POrdinalPath] nvarchar(max) + , [OrdinalPath] nvarchar(max) +) +WITH EXECUTE AS OWNER +AS +BEGIN +Declare @Delim char(1) +Set @Delim=char(7) +Declare @DelimNumber char(1) +Set @DelimNumber=char(17) +Declare @DelimStep char(1) +Set @DelimStep='.' +BEGIN +with Itemz([ItemID], [DVPath], [Level], [ParentID], [Ordinal], [PreviousID], [FromType], [ContentID], [DTS], [UserID],[pContentID], + [pDTS],[pUserID],PPath, [Path], [IsRNO], [POrdinalPath], [OrdinalPath]) as ( + Select [I].[ItemID], '' DVPath, 0 [Level], 0 [ParentID], 0 [Ordinal], [PreviousID],0 [FromType],[I].[ContentID],[I].[DTS],[I].[UserID] + ,0 [pContentID],[I].[DTS] [pDTS], [I].[UserID] [pUserID], + Cast('' as nvarchar(max)) [PPath], + Cast(Case when C.Type < 20000 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') else '1' end as nvarchar(max)) [Path], + 0 IsRNO, Cast('' as nvarchar(max)) [POrdinalPath], Cast('0001' as nvarchar(max)) [OrdinalPath] + FROM [Items] I + Join Contents C on C.ContentID=I.ContentID + WHERE I.[ItemID] = @ProcID +Union All +-- Children + select I.[ItemID], DVPath, [Level] + 1,Z.ItemID,0, I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID], + P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID] + ,PATH + --'' + case C.Type/10000 + when 2 then + case P.FromType + when 3 then @DelimStep + 'Caution' + when 4 then @DelimStep + 'Note' + when 8 then @DelimStep + 'SupInfo' + else '' end + else '' end + PPath, + Path + case C.Type/10000 + when 0 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') + when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') + else + case P.FromType + --when 1 then 'PRC' + @Delim + cast(1 as varchar(4)) + --when 2 then 'SEC' + @Delim + cast(1 as varchar(4)) + when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(4)) + when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(4)) + when 5 then @DelimStep +'RNO' + @DelimStep + when 7 then @DelimStep +'Table' + @DelimStep + when 8 then @DelimStep +'SupInfo' + @DelimStep + else case when Z.FromType < 3 then @Delim else @DelimStep end + cast(1 as varchar(4)) + end end Path, + case when P.FromType = 5 then -1 else 0 end IsRNO, + OrdinalPath + '.' + Right('000' + Cast(P.FromType as varchar(4)), 4) + '-' , + OrdinalPath + '.' + Right('000' + Cast(P.FromType as varchar(4)), 4) + '-00001' + from Itemz Z + join Parts P on P.ContentID = Z.ContentID + join Items I on I.ItemID = P.ItemID + join Contents C on C.ContentID = I.ContentID +Union All +-- Siblings + select I.[ItemID], DVPath, [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID] + ,null,null,null, + PPath, + --'1' + + PPath + case C.Type/10000 + when 0 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') + when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') + else case when .dbo.vefn_GetLastDelim(Path) = '.' THEN @DelimStep else @Delim end + cast(Ordinal + 2 as varchar(4)) + end Path, 0, + POrdinalPath, + POrdinalPath + right('00000' + cast(Z.[Ordinal] + 2 as varchar(5)), 5) + from Itemz Z + join Items I on I.PreviousID = Z.ItemID + join Contents C on C.ContentID = I.ContentID + --where Z.[Level] > 0 + +) +insert into @SiblingAndChildren +select I.[ItemID], [DvPath], [Path], I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID], + [pContentID],[pDTS],[pUserID],[IsRNO]/*,[PPath],[POrdinalPath]*/,[OrdinalPath] + from ItemZ I +OPTION (MAXRECURSION 10000) +END +RETURN +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_SiblingAndChildrenItemsByProc Succeeded' +ELSE PRINT 'TableFunction Creation: vefn_SiblingAndChildrenItemsByProc Error on Creation' +GO + + +/****** Object: StoredProcedure [vefn_RemoveRange] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_RemoveRange]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) + DROP FUNCTION [vefn_RemoveRange]; +GO + +/* +SELECT ContentID, text, [dbo].[vefn_RemoveRange](text,'') StrippedText +from contents +where contentid in (select top 25 ContentID from contents where text like '%[[]END>%') + +select top 25 * from contents where text like '%[[]END>%' + +SELECT ContentID, [dbo].[vefn_RemoveRange](text,'') StrippedText +from contents +where contentid =189 +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_RemoveRange](@text nvarchar(MAX),@startToken nvarchar(MAX), @endToken nvarchar(MAX)) +RETURNS varchar(MAX) +WITH EXECUTE AS OWNER +AS +BEGIN + DECLARE @index int + DECLARE @index2 int + DECLARE @lenStartToken int + DECLARE @lenEndToken int + DECLARE @lastIndex int + SET @lenStartToken = len(@startToken) + SET @lenEndToken = len(@endToken) + SET @index = CHARINDEX(@startToken , @text) + SET @lastIndex = -1 + while (@index != 0) + BEGIN + SET @index2 = CHARINDEX(@endToken , @text, @index + @lenStartToken) + if (@index2>0) + SET @text = substring(@text,1,@index-1) + substring(@text,@index2+@lenEndToken,len(@text)) + SET @lastIndex = @index + SET @index = CHARINDEX(@startToken , @text) + if (@index = @lastIndex) SET @index = 0 + END + RETURN @text +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_RemoveRange Succeeded' +ELSE PRINT 'ScalarFunction Creation: vefn_RemoveRange Error on Creation' +GO + +/****** Object: StoredProcedure [ve_GetPath] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetPath]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) + DROP FUNCTION [ve_GetPath]; +GO + +/* +select ItemID, CC.Type, dbo.ve_GetPath(ItemID) +from Items II join Contents CC on II.ContentID = CC.ContentID +where ItemID in(111,265,266,267) +*/ +-- drop function ve_GetPath +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[ve_GetPath] (@ItemID int) RETURNS varchar(max) +WITH EXECUTE AS OWNER +AS +BEGIN +-- declare @STructID int +--set @StructID=11 +declare @Path varchar(max); +with Itemz(ItemCount,ItemID,PreviousID,FromType,CType,Number,Text,PPath, Path) as ( + Select 1,ItemID,PreviousID,0,C.Type/10000,C.Number,C.Text, + Cast(Case when C.Type < 20000 then '`' + Isnull(C.Number,'') +'`' + Isnull(C.Text,'') else '' end as nvarchar(max)) PPath, + Cast(Case when C.Type < 20000 then '`' + Isnull(C.Number,'') +'`' + Isnull(C.Text,'') else '1' end as nvarchar(max)) Path + from Items I + join Contents C on I.ContentID = C.ContentID + where ItemID=@ItemID + Union All +-- siblings + Select ItemCount+1,I.PreviousID,II.PreviousID,0,C.Type/10000,Z.Number,Z.Text,PPath,cast(ItemCount + 1 as nvarchar(4)) + PPath + from Items I + join Contents C on I.ContentID = C.ContentID + Join Items II on II.ItemID = I.PreviousID + Join Itemz Z on I.ItemID=Z.ItemID + where I.PreviousID != 0 + Union All +-- children + select 1,I.ItemID,I.PreviousID,P.FromType,C.Type/10000,C.Number,C.Text, + case C.Type/10000 + when 0 then '`' + Isnull(C.Number,'') +'`' + Isnull(C.Text,'') + when 1 then '`' + Isnull(C.Number,'') +'`' + Isnull(C.Text,'') +'`' + cast(ItemCount + 0 as varchar(4)) + else + case P.FromType + when 1 then 'PRC`' + cast(ItemCount + 0 as varchar(4)) + when 2 then '`SEC`' + cast(ItemCount + 0 as varchar(4)) + when 3 then '`Caution`' + cast(ItemCount + 0 as varchar(4)) + when 4 then '`Note`' + cast(ItemCount + 0 as varchar(4)) + when 5 then '`RNO`' + when 7 then '`Table`' + when 8 then '`SupInfo`' + else '`' + cast(ItemCount + 0 as varchar(4)) + end end + PPath PPath, + --'1' + + case C.Type/10000 + when 0 then '`' + Isnull(C.Number,'') +'`' + Isnull(C.Text,'') + when 1 then '`' + Isnull(C.Number,'') +'`' + Isnull(C.Text,'') +'`' + cast(ItemCount + 0 as varchar(4)) + else + case P.FromType + when 1 then 'PRC`' + cast(ItemCount + 0 as varchar(4)) + when 2 then '`SEC`' + cast(ItemCount + 0 as varchar(4)) + when 3 then '`Caution`' + cast(ItemCount + 0 as varchar(4)) + when 4 then '`Note`' + cast(ItemCount + 0 as varchar(4)) + when 5 then '`RNO' + when 7 then '`Table' + when 8 then '`SupInfo' + else '`' + cast(ItemCount + 0 as varchar(4)) + end end + PPath Path + + from Parts P + join Items I on I.ContentID = P.ContentID + join Contents C on I.ContentID = C.ContentID + join Itemz Z on P.ItemID=Z.ItemID +) +select @Path = path From Itemz where ItemCount=1 and CType=0 +OPTION (MAXRECURSION 10000) +return @Path +END; +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'ScalarFunction Creation: ve_GetPath Succeeded' +ELSE PRINT 'ScalarFunction Creation: ve_GetPath Error on Creation' +GO + + +/****** Object: StoredProcedure [vefn_ProcedureByProcID] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_ProcedureByProcID]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_ProcedureByProcID]; +GO + +/****** Object: UserDefinedFunction [dbo].[vefn_ProcedureByProcID] Script Date: 05/18/2011 11:20:48 ******/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +create FUNCTION [dbo].[vefn_ProcedureByProcID](@ProcID int) +RETURNS @SiblingAndChildren TABLE +( + [ItemID] int PRIMARY KEY + , [DVPath] nvarchar(max) + , [Path] nvarchar(max) + , [Level] int + , [FromType] int + , [Ordinal] int + , [ParentID] int + , [PreviousID] int + , [ContentID] int + , [DTS] datetime + , [UserID] nvarchar(100) + , [pContentID] int + , [pDTS] datetime + , [pUserID] nvarchar(100) + , [IsRNO] int + +-- , [PPath] nvarchar(max) +-- , [POrdinalPath] nvarchar(max) + , [OrdinalPath] nvarchar(max) +) +WITH EXECUTE AS OWNER +AS +BEGIN +Declare @Delim char(1) +Set @Delim=char(7) +Declare @DelimNumber char(1) +Set @DelimNumber=char(17) +Declare @DelimStep char(1) +Set @DelimStep='.' +BEGIN +insert into @SiblingAndChildren + Select +[I].[ItemID] +, '' DVPath +, Cast(Case when C.Type < 20000 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') else '1' end as nvarchar(max)) [Path] +,0 [Level] +,0 [FromType] +, 0 [Ordinal] +, 0 [ParentID] +, [PreviousID] +,[I].[ContentID] +,[I].[DTS] +,[I].[UserID] + ,0 [pContentID] +,[I].[DTS] [pDTS] +, [I].[UserID] [pUserID] +,0 IsRNO + , Cast('0001' as nvarchar(max)) [OrdinalPath] + FROM [Items] I + Join Contents C on C.ContentID=I.ContentID + WHERE I.[ItemID] = @ProcID +END +RETURN +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_ProcedureByProcID Succeeded' +ELSE PRINT 'TableFunction Creation: vefn_ProcedureByProcID Error on Creation' +GO + +/****** Object: StoredProcedure [vefn_FindContentText] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindContentText]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_FindContentText]; +GO + +/* +SELECT * From vefn_FindContentText('1','%RCP%') +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_FindContentText]( +@DocVersionList nvarchar(MAX) +,@SearchString varchar(MAX) +,@IncludeLinks as int +,@IncludeRtfFormatting as int +,@IncludeSpecialCharacters as int) +RETURNS @FoundContents TABLE +( + ContentID int PRIMARY KEY + ,Type int + ,Text varchar(max) +) +WITH EXECUTE AS OWNER +AS +BEGIN +DECLARE @Dashes varchar(25) +set @Dashes = '\u8209?' +if(@SearchString not like '%\u8209?%') +BEGIN +set @Dashes='-' +END +IF(ISNULL(@DocVersionList,'')='') + BEGIN + INSERT INTO @FoundContents -- Do a case insensitive search + select ContentID,Type,Text from contents + where replace(.dbo.vefn_RemoveExtraText(Replace([Text],'-','\u8209?'),@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters),'\u8209?',@Dashes) like @SearchString Collate SQL_Latin1_General_CP1_CI_AS + --where .dbo.vefn_RemoveExtraText(Replace(Replace([Text],'-','\u8209?'),'\','\u9586?'),@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) like @SearchString Collate SQL_Latin1_General_CP1_CI_AS +-- where Replace([Text],'-','\u8209?') like @SearchString Collate SQL_Latin1_General_CP1_CI_AS + --where Replace(Replace([Text],'-','\u8209?'),'\u160?',' ') like @SearchString Collate SQL_Latin1_General_CP1_CI_AS + END +ELSE + BEGIN + INSERT INTO @FoundContents -- Do a case insensitive search + select ContentID,Type,Text from contents + where [ContentID] in (select [ContentID] from vefn_DVContent(@DocVersionList)) + -- bug fix B2014-056 and B2014-102 now use vefn_RemoveExtraText which fixes searching for hard spaces and finding procedure text when it is bolded (or italics or underlined etc) + AND Replace(.dbo.vefn_RemoveExtraText(Replace([Text],'-','\u8209?'),@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters),'\u8209?',@Dashes) like @SearchString Collate SQL_Latin1_General_CP1_CI_AS + --AND .dbo.vefn_RemoveExtraText(Replace(Replace([Text],'-','\u8209?'),'\','\u9586?'),@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) like @SearchString Collate SQL_Latin1_General_CP1_CI_AS + --AND Replace([Text],'-','\u8209?') like @SearchString Collate SQL_Latin1_General_CP1_CI_AS + --AND Replace(Replace([Text],'-','\u8209?'),'\u160?',' ') like @SearchString Collate SQL_Latin1_General_CP1_CI_AS + END + +RETURN +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindContentText Succeeded' +ELSE PRINT 'TableFunction Creation: vefn_FindContentText Error on Creation' +GO + +/****** Object: StoredProcedure [vefn_FindText] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindText]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_FindText]; +GO + +/* +SELECT * From vefn_FindText('1','turbine-driven',0,0,0,1,'') +SELECT * From vefn_FindText('1','turbine\u8209?driven',0,0,0,0,'') +SELECT * From vefn_FindText('1','trip',0,0,0,0,'') +select * from vefn_FindText('1','',0,0,0,1,'20010,20008') +select * from vefn_FindText('1',null,0,0,0,1,'20010,20008') +select * from vefn_FindText('1',' ',0,0,0,1,'20010,20008') +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_FindText]( +@DocVersionList nvarchar(MAX) +,@SearchString varchar(MAX) +,@CaseSensitive as int +,@IncludeLinks as int +,@IncludeRtfFormatting as int +,@IncludeSpecialCharacters as int +,@StepTypeList varchar(MAX)) +RETURNS @FoundContents TABLE +( + ContentID int PRIMARY KEY +) +WITH EXECUTE AS OWNER +AS +BEGIN +Set @SearchString = .dbo.vefn_FixSearchString(@SearchString) +IF isnull(@SearchString,'%')='%' + BEGIN + insert into @FoundContents + select C.ContentID from (select * from Contents where ContentID in(select ContentID from vefn_DVContent(@DocVersionList))) C + where(isnull(@StepTypeList,'') = '' /*and dbo.vefn_AllSections(C.Type)>=10000*/) + or (dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))) + END +ELSE + BEGIN + Declare @SearchStringx nvarchar(200) --kbr + --set @SearchStringx = replace(@SearchString,'-','\u8209?') --kbr + --set @SearchStringx = replace(replace(@SearchString,'-','\u8209?'),'\','\u9586?') --kbr + set @SearchStringx = replace(@SearchString,'\u8209?','-') --JSJ B2016-209 not finding dashes in Word sections (FixSearchString converts '-' to '\u8209?') + IF @CaseSensitive = 0 -- Not Case Sensitive + BEGIN + insert into @FoundContents + select C.ContentID from vefn_FindContentText(@DocVersionList,@SearchString,@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) C + where + (.dbo.vefn_RemoveExtraText(C.Text,@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) like @SearchString Collate SQL_Latin1_General_CP1_CI_AS) + AND ((isnull(@StepTypeList,'') = '' /*and dbo.vefn_AllSections(C.Type)>=10000*/) + or ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))))) + UNION -- B2016-209 to find dashes in word sections + select C.ContentID from vefn_FindContentText(@DocVersionList,@SearchStringx,@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) C + where + (.dbo.vefn_RemoveExtraText(C.Text,@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) like @SearchStringx Collate SQL_Latin1_General_CP1_CI_AS) + AND ((isnull(@StepTypeList,'') = '' /*and dbo.vefn_AllSections(C.Type)>=10000*/) + or ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))))) + UNION + select C.ContentID from (select * from Contents where ContentID in(select ContentID from vefn_DVContent(@DocVersionList))) C + join Entries E on C.ContentID = E.ContentID + join Documents D on E.DocID = D.DocID + where + (Replace(D.DocAscii,nchar(176),'\''B0') like @SearchString OR Replace(D.DocAscii,nchar(176),'\''B0') like @SearchStringx Collate SQL_Latin1_General_CP1_CI_AS) + AND + ((isnull(@StepTypeList,'') = '' /*and dbo.vefn_AllSections(C.Type)>=10000*/) + or ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))))) + END + ELSE + BEGIN + IF @CaseSensitive = 1 -- Case Sensitive + BEGIN + insert into @FoundContents + select C.ContentID from vefn_FindContentText(@DocVersionList,@SearchString,@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) C + where + (.dbo.vefn_RemoveExtraText(C.Text,@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) like @SearchString Collate SQL_Latin1_General_CP1_CS_AS) + AND ((isnull(@StepTypeList,'') = '' /*and dbo.vefn_AllSections(C.Type)>=10000*/) + or ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))))) + UNION + select C.ContentID from vefn_FindContentText(@DocVersionList,@SearchStringx,@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) C + where + (.dbo.vefn_RemoveExtraText(C.Text,@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) like @SearchStringx Collate SQL_Latin1_General_CP1_CS_AS) + AND ((isnull(@StepTypeList,'') = '' /*and dbo.vefn_AllSections(C.Type)>=10000*/) + or ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))))) + + UNION -- B2016-209 to find dashes in word sections + select C.ContentID from (select * from Contents where ContentID in(select ContentID from vefn_DVContent(@DocVersionList))) C + join Entries E on C.ContentID = E.ContentID + join Documents D on E.DocID = D.DocID + where + (Replace(D.DocAscii,nchar(176),'\''B0') like @SearchString OR Replace(D.DocAscii,nchar(176),'\''B0') like @SearchStringx Collate SQL_Latin1_General_CP1_CS_AS) + AND + ((isnull(@StepTypeList,'') = '' /*and dbo.vefn_AllSections(C.Type)>=10000*/) + or ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))))) + END + END +END +RETURN +END + +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindText Succeeded' +ELSE PRINT 'TableFunction Creation: vefn_FindText Error on Creation' +GO + +-- THIS IS STUFF THAT WE FIXED IN PROMS2010.SQL AND PUT IN HERE ALSO +/****** Object: StoredProcedure [getItemAndChildren] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getItemAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getItemAndChildren]; +GO + +-- getItemAndChildren 111 +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getItemAndChildren] (@ItemID int) +WITH EXECUTE AS OWNER +AS +BEGIN +with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged]) as ( + Select 0 [Level], 0 [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] + FROM [Items] + where [ItemID]=@ItemID +Union All +-- Children + select [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + from Itemz Z + join Parts P on P.ContentID = Z.ContentID + join Items I on I.ItemID = P.ItemID +-- Siblings +Union All + select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + from Itemz Z + join Items I on I.PreviousID = Z.ItemID + where Z.[Level] > 0 +) +select I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], + C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged] from ItemZ I + join Contents C on C.ContentID = I.ContentID + order by I.[Level] , I.[FromType], I.[Ordinal] + OPTION (MAXRECURSION 10000) +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getItemAndChildren Succeeded' +ELSE PRINT 'Procedure Creation: getItemAndChildren Error on Creation' +GO + +/****** Object: StoredProcedure [getItemNextAndChildren] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getItemNextAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getItemNextAndChildren]; +GO + +-- getItemNextAndChildren 111 +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getItemNextAndChildren] (@ItemID int) +WITH EXECUTE AS OWNER +AS +BEGIN +with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged]) as ( + Select 0 [Level], 0 [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] + FROM [Items] + where [ItemID]=@ItemID +Union All +-- Children + select [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + from Itemz Z + join Parts P on P.ContentID = Z.ContentID + join Items I on I.ItemID = P.ItemID +-- Siblings +Union All + select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + from Itemz Z + join Items I on I.PreviousID = Z.ItemID +) +select I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], + C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged] from ItemZ I + join Contents C on C.ContentID = I.ContentID + order by I.[Level] , I.[FromType], I.[Ordinal] + OPTION (MAXRECURSION 10000) +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getItemNextAndChildren Succeeded' +ELSE PRINT 'Procedure Creation: getItemNextAndChildren Error on Creation' +GO + +/****** Object: StoredProcedure [ve_GetSiblingCount] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetSiblingCount]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) + DROP FUNCTION [ve_GetSiblingCount]; +GO + +/* +select top 5 CC.Number,CC.Text,Type,ItemID, dbo.ve_GetSiblingCount(ItemID) HLStepCount +from Contents CC +Join Parts PP on PP.ContentID = CC.ContentID +where CC.Type >= 10000 and CC.Type < 20000 +order by dbo.ve_GetSiblingCount(ItemID) desc + +select top 5 CC.Number,CC.Text,Type,ItemID, dbo.ve_GetSiblingCount(ItemID) SectionCount +from Contents CC +Join Parts PP on PP.ContentID = CC.ContentID +where CC.Type < 10000 +order by dbo.ve_GetSiblingCount(ItemID) desc + +select top 5 CC.Text,Type,ItemID, dbo.ve_GetSiblingCount(ItemID) SubStepCount +from Contents CC +Join Parts PP on PP.ContentID = CC.ContentID +where CC.Type >= 20000 +order by dbo.ve_GetSiblingCount(ItemID) desc + +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[ve_GetSiblingCount] (@ItemID int) RETURNS int +WITH EXECUTE AS OWNER +AS +BEGIN +declare @Count int; +with Itemz([Direction], [ItemID], [PreviousID]) as ( + Select 0 Direction,[ItemID], [PreviousID] + FROM [Items] + where [ItemID]=@ItemID +-- Siblings Previous +Union All + select -1 Direction,I.[ItemID], I.[PreviousID] + from Itemz Z + join Items I on I.PreviousID = Z.ItemID + where Z.Direction <= 0 +-- Siblings Next +Union All + select 1 Direction,I.[ItemID], I.[PreviousID] + from Itemz Z + join Items I on I.ItemID = Z.PreviousID + where Z.Direction >= 0 +) +Select @Count = Count(*) from Itemz +OPTION (MAXRECURSION 10000) +return @Count END; +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'ScalarFunction Creation: ve_GetSiblingCount Succeeded' +ELSE PRINT 'ScalarFunction Creation: ve_GetSiblingCount Error on Creation' +GO + +/****** Object: StoredProcedure [vefn_AllHighLevelSteps] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_AllHighLevelSteps]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_AllHighLevelSteps]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_AllHighLevelSteps]() +RETURNS @HighLevelStepTransitions TABLE +( + ParentID int + ,ItemID int PRIMARY KEY + ,Ordinal int + ,Path varchar(max) +) +WITH EXECUTE AS OWNER +AS +BEGIN +with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( + Select 0 [Level], ParentID [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] + ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] + FROM (select II.ItemID ParentID, PP.ItemID, PreviousID, II.ContentID, II.DTS, II.UserID, II.LastChanged from Items II +Join Contents CC on II.ContentID = CC.ContentID +Join Parts PP on PP.ContentID = II.ContentID and FromType = 6 +where CC.Type = 10000) TT +-- Siblings +Union All + select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + ,null,null,null,null + from Itemz Z + join Items I on I.PreviousID = Z.ItemID + --where Z.[Level] > 0 +) +Insert into @HighLevelStepTransitions +select [ParentID],ItemID,Ordinal,dbo.ve_GetPath([ItemID]) Path +from Itemz +Order by ParentID,ItemID +OPTION (MAXRECURSION 10000) +RETURN +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_AllHighLevelSteps Succeeded' +ELSE PRINT 'TableFunction Creation: vefn_AllHighLevelSteps Error on Creation' +GO + +/****** Object: StoredProcedure [vefn_AllHighLevelStepTransitions] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_AllHighLevelStepTransitions]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_AllHighLevelStepTransitions]; +GO + +/* +select * from vefn_AllHighLevelStepTransitions() +where ExternalTransitions > 0 +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_AllHighLevelStepTransitions]() +RETURNS @HighLevelStepTransitions TABLE +( + ParentID int + ,ItemID int PRIMARY KEY + ,Ordinal int + ,Path varchar(max) + ,TransCount int + ,ExternalTransitions int + ,ExternalChildTransitions int + ,InternalTransitions int +) +WITH EXECUTE AS OWNER +AS +BEGIN +with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( + Select 0 [Level], ParentID [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] + ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] + FROM (select II.ItemID ParentID, PP.ItemID, PreviousID, II.ContentID, II.DTS, II.UserID, II.LastChanged from Items II +Join Contents CC on II.ContentID = CC.ContentID +Join Parts PP on PP.ContentID = II.ContentID and FromType = 6 +where CC.Type = 10000) TT +-- Siblings +Union All + select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + ,null,null,null,null + from Itemz Z + join Items I on I.PreviousID = Z.ItemID + --where Z.[Level] > 0 +) +Insert into @HighLevelStepTransitions +select [ParentID],ItemID,Ordinal,dbo.ve_GetShortPath([ItemID]) Path,(Select Count(*) from Transitions where ToID=ItemID OR RangeID=ItemID ) TransCount +,(Select count(*) from vefn_FindExternalTransitions(ItemID)) ExternalTransitions +,(Select count(*) from vefn_FindExternalChildTransitions(ItemID)) ExternalChildTransitions +,(Select count(*) from vefn_FindInternalTransitions(ItemID)) InternalTransitions +from Itemz +where (Select Count(*) from Transitions where ToID=ItemID OR RangeID=ItemID ) > 0 +OR(Select count(*) from vefn_FindExternalTransitions(ItemID)) > 0 +OR(Select count(*) from vefn_FindInternalTransitions(ItemID)) > 0 +Order by ParentID,ItemID +OPTION (MAXRECURSION 10000) +RETURN +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_AllHighLevelStepTransitions Succeeded' +ELSE PRINT 'TableFunction Creation: vefn_AllHighLevelStepTransitions Error on Creation' +GO + +/****** Object: StoredProcedure [vefn_ChildItems] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_ChildItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_ChildItems]; +GO + +/* +declare @PreviousID as int +declare @ItemID as int +set @ItemID = 450 +select @PreviousID = PreviousID from items where ItemID = @ItemID + +Select * from Items where ItemID = @ItemID + +select * from Transitions +where FromID in (Select ContentID from vefn_ChildItems(@PreviousID)) +AND (ToID = @ItemID or RangeID = @ItemID) + +select CC.Text from Transitions TT +join contents CC on TT.FromID = CC.ContentID +where FromID in (Select ContentID from vefn_ChildItems(@PreviousID)) +AND (ToID = @ItemID or RangeID = @ItemID) + +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_ChildItems](@ItemID int) +RETURNS @Children TABLE +( + ItemID int PRIMARY KEY, + ContentID int +) +WITH EXECUTE AS OWNER +AS +BEGIN +with Itemz([Level], [ItemID], [ContentID]) as ( + Select 0 [Level], [ItemID], [ContentID] + FROM [Items] + where [ItemID]=@ItemID +Union All +-- Children + select [Level] + 1, I.[ItemID], I.[ContentID] + from Itemz Z + join Parts P on P.ContentID = Z.ContentID + join Items I on I.ItemID = P.ItemID +-- Siblings +Union All + select [Level] , I.[ItemID], I.[ContentID] + from Itemz Z + join Items I on I.PreviousID = Z.ItemID + where Z.[Level] > 0 +) +insert into @Children select ItemID, ContentID from Itemz +OPTION (MAXRECURSION 10000) +RETURN +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_ChildItems Succeeded' +ELSE PRINT 'TableFunction Creation: vefn_ChildItems Error on Creation' +GO + +/****** Object: StoredProcedure [vefn_ChildItemsRange] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_ChildItemsRange]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_ChildItemsRange]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_ChildItemsRange](@StartItemID int, @EndItemID int, @DestFormat int) +RETURNS @Children TABLE +( +ItemID int PRIMARY KEY, +ContentID int, +FormatID int +) +WITH EXECUTE AS OWNER +AS +BEGIN +DECLARE @FormatID int +SELECT @FormatID = isnull(@DestFormat,.dbo.vefn_GetInheritedFormat(@StartItemID,1)) +BEGIN +with Itemz([Level], [ItemID], [ContentID], [FormatID], [FoundEnd]) as ( +Select 0 [Level], [ItemID], I.[ContentID], IsNull(C.[FormatID], @FormatID), case [ItemID] when @EndItemID then 1 else 0 end [FoundEnd] +FROM [Items] I +JOIN [Contents] C on I.ContentID = C.ContentID +where [ItemID]=@StartItemID +Union All +-- Children +select [Level] + 1, I.[ItemID], I.[ContentID], IsNull(C.[FormatID], Z.[FormatID]), case I.[ItemID] when @EndItemID then 1 else 0 end [FoundEnd] +from Itemz Z +join Parts P on P.ContentID = Z.ContentID +join Items I on I.ItemID = P.ItemID +JOIN [Contents] C on I.ContentID = C.ContentID +-- Siblings +Union All +select [Level] , I.[ItemID], I.[ContentID], IsNull(C.[FormatID], Z.[FormatID]), case I.[ItemID] when @EndItemID then 1 else 0 end [FoundEnd] +from Itemz Z +join Items I on I.PreviousID = Z.ItemID +JOIN [Contents] C on I.ContentID = C.ContentID +where FoundEnd = 0 +) +insert into @Children select ItemID, ContentID, FormatID from Itemz +OPTION (MAXRECURSION 10000) + +END +RETURN +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_ChildItemsRange Succeeded' +ELSE PRINT 'TableFunction Creation: vefn_ChildItemsRange Error on Creation' +GO + +/****** Object: StoredProcedure [vefn_ChildrenItems] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_ChildrenItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_ChildrenItems]; +GO + +/* +select * from Transitions +where (ToID in(select ItemID From dbo.vefn_ChildrenItems(185,184))) OR (RangeID in(select ItemID From dbo.vefn_ChildrenItems(185,184))) +AND NOT (FromID in(Select ContentID From dbo.vefn_ChildrenItems(185,184))) +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_ChildrenItems](@ItemID int, @ParentID int) +RETURNS @Children TABLE +( + ItemID int PRIMARY KEY, + ContentID int +) +WITH EXECUTE AS OWNER +AS +BEGIN +with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( + Select 0 [Level], @ParentID [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] + ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] + FROM [Items] + where [ItemID]=@ItemID +Union All +-- Children + select [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] + from Itemz Z + join Parts P on P.ContentID = Z.ContentID + join Items I on I.ItemID = P.ItemID +-- Siblings +Union All + select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + ,null,null,null,null + from Itemz Z + join Items I on I.PreviousID = Z.ItemID + where Z.[Level] > 0 +) +insert into @Children select ItemID, ContentID from Itemz +OPTION (MAXRECURSION 10000) +RETURN +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_ChildrenItems Succeeded' +ELSE PRINT 'TableFunction Creation: vefn_ChildrenItems Error on Creation' +GO + +/****** Object: StoredProcedure [vefn_FindAffectedTransitions] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindAffectedTransitions]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_FindAffectedTransitions]; +GO + +/* +select top 1 * from items order by itemid desc +Select +FromID,.dbo.ve_GetPathFromContentID(FromID) ContentPath +,ToID,dbo.ve_GetPath(ToID) ToPath +,RangeID,dbo.ve_GetPath(RangeID) RangePath +,cc.Text +from vefn_FindAffectedTransitions(2102) ttz +join transitions tt on ttz.TransitionID = tt.TransitionID +--join items ii on ii.ItemID = tt.fromID +join contents cc on tt.FromID = cc.contentid +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_FindAffectedTransitions](@ItemID int) +RETURNS @Transitions TABLE +( + TransitionID int +) +WITH EXECUTE AS OWNER +AS +BEGIN +declare @Type int +select @Type = CC.Type from Contents CC Join Items II ON II.ContentID = CC.ContentID Where ItemID = @ItemID +BEGIN +with Itemz([Level], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( + Select 0 [Level], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] + ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] + FROM [Items] + where [ItemID]=@ItemID +Union All +-- Children + select [Level] + 1,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] + from Itemz Z + join Parts P on P.ContentID = Z.ContentID + join Items I on I.ItemID = P.ItemID +-- All Siblings +Union All + select [Level] ,Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + ,null,null,null,null + from Itemz Z + join Items I on I.PreviousID = Z.ItemID + where @Type >= 20000 OR Z.[Level] > 0 -- This would limit the siblings to the siblings of the children and not the initial ItemID +) +, Itemz2([Level], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( + Select 0 [Level], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] + ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] + FROM [Items] + where [ItemID]=@ItemID +-- All Siblings +Union All + select [Level] ,Z.[Ordinal] -1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + ,null,null,null,null + from Itemz2 Z + join Items I on Z.PreviousID = I.ItemID + where @Type >= 20000 OR Z.[Level] > 0 -- This would limit the siblings to the siblings of the children and not the initial ItemID +) +insert into @Transitions +select TransitionID from Transitions TT +where (ToID in(select ItemID from Itemz) OR RangeID in(select ItemID from Itemz)) +UNION +select TransitionID from Transitions TT +JOIN Itemz2 on ToID=ItemID and RangeID=ItemID and IsRange = 2 +OPTION (MAXRECURSION 10000) +END +RETURN +END + +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindAffectedTransitions Succeeded' +ELSE PRINT 'TableFunction Creation: vefn_FindAffectedTransitions Error on Creation' +GO + +/****** Object: StoredProcedure [vefn_FindExternalChildTransitions] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindExternalChildTransitions]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_FindExternalChildTransitions]; +GO + +/* +Select * from vefn_FindExternalChildTransitions(185) +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_FindExternalChildTransitions](@ItemID int) +RETURNS @Children TABLE +( + FromItemID int, + ToID int +) +WITH EXECUTE AS OWNER +AS +BEGIN + DECLARE @ChildList AS TABLE + ( + ItemID INT PRIMARY KEY, + ContentID INT, + Level INT + ) +INSERT INTO @ChildList SELECT * FROM vefn_ChildItemz(@ItemID) +insert into @Children +select ItemID [FromItemID], case when TT.ToID in(select ItemID from @ChildList) then TT.ToID else TT.RangeID end [ToID] + from Transitions TT + join Items II on II.ContentID=TT.FromID +where (ToID in(select ItemID from @ChildList where Level > 0) OR RangeID in(select ItemID from @ChildList where Level > 0)) +AND FromID not in(Select ContentID from @ChildList) +OPTION (MAXRECURSION 10000) +RETURN +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindExternalChildTransitions Succeeded' +ELSE PRINT 'TableFunction Creation: vefn_FindExternalChildTransitions Error on Creation' +GO + +/****** Object: StoredProcedure [vefn_FindExternalTransitions] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindExternalTransitions]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_FindExternalTransitions]; +GO + +/* +Select * from vefn_FindExternalTransitions(185) +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_FindExternalTransitions](@ItemID int) +RETURNS @Children TABLE +( + [FromItemID] int, + [TransitionID] [int] NOT NULL, + [FromID] [int] NOT NULL, + [ToID] [int] NOT NULL, + [RangeID] [int] NOT NULL, + [Config] [nvarchar](max) NULL +) +WITH EXECUTE AS OWNER +AS +BEGIN + DECLARE @ChildList AS TABLE + ( + ItemID INT PRIMARY KEY, + ContentID INT, + Level INT + ) +INSERT INTO @ChildList SELECT * FROM vefn_ChildItemz(@ItemID) +insert into @Children +select ItemID [FromItemID], TT.[TransitionID], TT.[FromID], TT.[ToID], TT.[RangeID], TT.[Config] + from Transitions TT + join Items II on II.ContentID=TT.FromID +where (ToID in(select ItemID from @ChildList) OR RangeID in(select ItemID from @ChildList)) +AND FromID not in(Select ContentID from @ChildList) +OPTION (MAXRECURSION 10000) +RETURN +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindExternalTransitions Succeeded' +ELSE PRINT 'TableFunction Creation: vefn_FindExternalTransitions Error on Creation' +GO + +/****** Object: StoredProcedure [vefn_ChildItemz] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_ChildItemz]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_ChildItemz]; +GO + +/* +Select * from vefn_ChildItemz(185) +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2015 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_ChildItemz](@ItemID int) +RETURNS @Children TABLE +( + ItemID int PRIMARY KEY, + ContentID int, + Level int +) +WITH EXECUTE AS OWNER +AS +BEGIN +with Itemz([Level], [ItemID], [ContentID]) as ( + Select 0 [Level], [ItemID], [ContentID] + FROM [Items] + where [ItemID]=@ItemID +Union All +-- Children + select [Level] + 1, I.[ItemID], I.[ContentID] + from Itemz Z + join Parts P on P.ContentID = Z.ContentID + join Items I on I.ItemID = P.ItemID +-- Siblings +Union All + select [Level] , I.[ItemID], I.[ContentID] + from Itemz Z + join Items I on I.PreviousID = Z.ItemID + where Z.[Level] > 0 +) +insert into @Children select ItemID, ContentID, Level from Itemz +OPTION (MAXRECURSION 10000) +RETURN +END + +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_ChildItemz Succeeded' +ELSE PRINT 'TableFunction Creation: vefn_ChildItemz Error on Creation' +GO + +/****** Object: StoredProcedure [vefn_FindInternalTransitions] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindInternalTransitions]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_FindInternalTransitions]; +GO + +/* +Select * from vefn_FindInternalTransitions(185) +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_FindInternalTransitions](@ItemID int) +RETURNS @Children TABLE +( + FromItemID int, + ToID int +) +WITH EXECUTE AS OWNER +AS +BEGIN +with Itemz([Level], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( + Select 0 [Level], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] + ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] + FROM [Items] + where [ItemID]=@ItemID +Union All +-- Children + select [Level] + 1,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] + from Itemz Z + join Parts P on P.ContentID = Z.ContentID + join Items I on I.ItemID = P.ItemID +-- Siblings +Union All + select [Level] ,Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + ,null,null,null,null + from Itemz Z + join Items I on I.PreviousID = Z.ItemID + where Z.[Level] > 0 +) +insert into @Children +select ItemID [FromItemID], case when TT.ToID in(select ItemID from Itemz) then TT.ToID else TT.RangeID end [ToID] + from Transitions TT + join Items II on II.ContentID=TT.FromID +where (ToID in(select ItemID from Itemz) OR RangeID in(select ItemID from Itemz)) +AND FromID in(Select ContentID from ItemZ) +OPTION (MAXRECURSION 10000) +RETURN +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindInternalTransitions Succeeded' +ELSE PRINT 'TableFunction Creation: vefn_FindInternalTransitions Error on Creation' +GO + +/****** Object: StoredProcedure [vefn_FindInternalTransitionsForCopy] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindInternalTransitionsForCopy]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_FindInternalTransitionsForCopy]; +GO + +/* +Select * from vefn_FindInternalTransitionsForCopy(10277) +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_FindInternalTransitionsForCopy](@ItemID int) +RETURNS @Transitions TABLE +( + TransitionID int, + FromID int, + TranType int, + ToID int, + RangeID int, + OldTransition int +) +WITH EXECUTE AS OWNER +AS +BEGIN +with Itemz([Level], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( + Select 0 [Level], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] + ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] + FROM [Items] + where [ItemID]=@ItemID +Union All +-- Children + select [Level] + 1,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] + from Itemz Z + join Parts P on P.ContentID = Z.ContentID + join Items I on I.ItemID = P.ItemID +-- Siblings +Union All + select [Level] ,Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + ,null,null,null,null + from Itemz Z + join Items I on I.PreviousID = Z.ItemID + where Z.[Level] > 0 +) +insert into @Transitions +select TransitionID, FromID, TT.TranType, TT.ToID, TT.RangeID, CAST(TT.Config as int) --case when TT.ToID in(select ItemID from Itemz) then TT.ToID else TT.RangeID end [ToID] + from Transitions TT + join Items II on II.ContentID=TT.FromID +where (ToID in(select ItemID from Itemz) OR RangeID in(select ItemID from Itemz)) +AND FromID in(Select ContentID from ItemZ) +OPTION (MAXRECURSION 10000) +RETURN +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindInternalTransitionsForCopy Succeeded' +ELSE PRINT 'TableFunction Creation: vefn_FindInternalTransitionsForCopy Error on Creation' +GO + +/****** Object: StoredProcedure [vefn_GetInheritedFormat] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetInheritedFormat]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) + DROP FUNCTION [vefn_GetInheritedFormat]; +GO + +/* Samples +Select TranType, .dbo.vefn_GetInheritedFormat(355) TransFormat + from(Select 1 TranType UNION Select 2 TranType UNION Select 3 TranType UNION + Select 4 TranType UNION Select 5 TranType UNION Select 6 TranType UNION + Select 7 TranType UNION Select 8 TranType UNION Select 9 TranType UNION Select 10 TranType) TT + +Select top 25 ItemID, TranType, .dbo.vefn_GetInheritedFormat(ItemID) TransFormat + From Transitions TR + Join Items II on II.ContentID = TR.FromID + +*/ +/* + local is a 'boolean' (0=false, 1=true) to state whether to look at the item itself or + only its parent +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_GetInheritedFormat] (@ItemID int, @local int) RETURNS int +WITH EXECUTE AS OWNER +AS +BEGIN + DECLARE @FormatID as int + -- First get the Active Format + begin + with Itemz([Level], [PreviousID], [ItemID], [ParentID], [FolderID], [FormatID]) as ( + Select 0 [Level], [PreviousID], [ItemID], null, null, + case when @local = 1 then (Select FormatID from Contents CC where [CC].[ContentID] = [II].[ContentID]) + else null end FormatID + FROM [Items] II + where [ItemID]=@ItemID + Union All + -- Parent Item + select [Level] + 1, I.[PreviousID], I.[ItemID], null, null, C.FormatID + from Itemz Z + join Parts P on P.ItemID = Z.ItemID + join Items I on I.ContentID = P.ContentID + join Contents C on C.ContentID = P.ContentID + where Z.FormatID is null + -- Siblings Item + Union All + select [Level] , I.[PreviousID] , I.[ItemID], null, null, Z.FormatID + from Itemz Z + join Items I on Z.PreviousID = I.ItemID + where Z.FormatID is null + Union All + -- DocVersion From Item + select [Level] + 1, null, null, DV.FolderID, null, DV.FormatID + from Itemz Z + join DocVersions DV on DV.ItemID = Z.ItemID + where Z.FormatID is null + Union All + -- Folders + select [Level] + 1, null, null, FF.ParentID, FF.FolderID, FF.FormatID + from Itemz Z + join Folders FF on FF.FolderID = Z.ParentID and FF.ParentID <> FF.FolderID + where Z.FormatID is null + ) + Select @FormatID = FormatID from Itemz ZZ Where FormatID is not null + OPTION (MAXRECURSION 10000) + END + RETURN @FormatID +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_GetInheritedFormat Succeeded' +ELSE PRINT 'ScalarFunction Creation: vefn_GetInheritedFormat Error on Creation' +GO + +/****** Object: StoredProcedure [vefn_HighLevelStepTransitions] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_HighLevelStepTransitions]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_HighLevelStepTransitions]; +GO + +/* +select * from vefn_HighLevelStepTransitions(105,104) +where TransCount > 0 +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_HighLevelStepTransitions](@ItemID int, @ParentID int) +RETURNS @HighLevelStepTransitions TABLE +( + ParentID int + ,ItemID int PRIMARY KEY + ,Path varchar(max) + ,TransCount int + ,ExternalTransitions int + ,InternalTransitions int +) +WITH EXECUTE AS OWNER +AS +BEGIN +with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( + Select 0 [Level], @ParentID [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] + ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] + FROM [Items] + where [ItemID]=@ItemID +-- Siblings +Union All + select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + ,null,null,null,null + from Itemz Z + join Items I on I.PreviousID = Z.ItemID + --where Z.[Level] > 0 +) +Insert into @HighLevelStepTransitions +select [ParentID],ItemID,dbo.ve_GetPath([ItemID]) ,(Select Count(*) from Transitions where ToID=ItemID OR RangeID=ItemID ) TransCount +,(Select count(*) from vefn_FindExternalTransitions(ItemID)) ExternalTransitions +,(Select count(*) from vefn_FindInternalTransitions(ItemID)) InternalTransitions +from Itemz +OPTION (MAXRECURSION 10000) +RETURN +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_HighLevelStepTransitions Succeeded' +ELSE PRINT 'TableFunction Creation: vefn_HighLevelStepTransitions Error on Creation' +GO + +/****** Object: StoredProcedure [vefn_SiblingChildrenItems] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_SiblingChildrenItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_SiblingChildrenItems]; +GO + +/* +select * from Transitions +where (ToID in(select ItemID From dbo.vefn_ChildrenItems(185,184))) OR (RangeID in(select ItemID From dbo.vefn_ChildrenItems(185,184))) +AND NOT (FromID in(Select ContentID From dbo.vefn_ChildrenItems(185,184))) +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_SiblingChildrenItems](@ItemID int) +RETURNS @SiblingChildren TABLE +( + ItemID int PRIMARY KEY, + ContentID int +) +WITH EXECUTE AS OWNER +AS +BEGIN +with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( + Select 0 [Level], 0 [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] + ,0 as [pContentID],[DTS] As [pDTS], [UserID] As [pUserID], [LastChanged] As [pLastChanged] + FROM [Items] + where [ItemID]=@ItemID +Union All +-- Children + select [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + ,P.[ContentID] as [pContentID],P.[DTS] As [pDTS],P.[UserID] As [pUserID],P.[LastChanged] As [pLastChanged] + from Itemz Z + join Parts P on P.ContentID = Z.ContentID + join Items I on I.ItemID = P.ItemID +-- Siblings +Union All + select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + ,null,null,null,null + from Itemz Z + join Items I on I.PreviousID = Z.ItemID +) +insert into @SiblingChildren select ItemID, ContentID from Itemz +OPTION (MAXRECURSION 10000) +RETURN +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_SiblingChildrenItems Succeeded' +ELSE PRINT 'TableFunction Creation: vefn_SiblingChildrenItems Error on Creation' +GO + +/****** Object: Table Function [vefn_SiblingItems] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_SiblingItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_SiblingItems]; +GO + +/* +select * from Transitions +where (ToID in(select ItemID From dbo.vefn_ChildrenItems(185,184))) OR (RangeID in(select ItemID From dbo.vefn_ChildrenItems(185,184))) +AND NOT (FromID in(Select ContentID From dbo.vefn_ChildrenItems(185,184))) +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_SiblingItems](@ItemID int, @ParentID int) +RETURNS @Siblings TABLE +( + ItemID int PRIMARY KEY, + ContentID int, + Ordinal int +) +WITH EXECUTE AS OWNER +AS +BEGIN +with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( + Select 0 [Level], @ParentID [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] + ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] + FROM [Items] + where [ItemID]=@ItemID +-- Siblings +Union All + select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + ,null,null,null,null + from Itemz Z + join Items I on I.PreviousID = Z.ItemID +) +insert into @Siblings select ItemID, ContentID, Ordinal from Itemz +OPTION (MAXRECURSION 10000) +RETURN +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_SiblingItems Succeeded' +ELSE PRINT 'TableFunction Creation: vefn_SiblingItems Error on Creation' +GO + +/****** Object: StoredProcedure [vesp_CleanUpItems] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_CleanUpItems]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_CleanUpItems]; +GO + +/* +select *, .dbo.ve_GetParts(ContentID,6) SubSteps from items +where contentid in(select contentid from contents where text like 'DISPATCH operator to open breaker%') + + +select * from items +where itemid in(298,299,436,440) + +select itemid from items +where previousid is null and itemid not in (select itemid from parts) + +--select * from contents where text like 'foldout cip%' + +select count(*) from parts +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE procedure [dbo].[vesp_CleanUpItems] +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + BEGIN +with Itemz(ItemID) as( +select itemid from items +where previousid is null +and itemid not in(1) +and itemid not in (select itemid from parts) +UNION ALL +select ii.itemid from items ii join itemz zz on zz.itemid = ii.previousid +) +delete from items where itemid in (select itemid from itemz) +OPTION (MAXRECURSION 10000) + END + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_CleanUpItems Succeeded' +ELSE PRINT 'Procedure Creation: vesp_CleanUpItems Error on Creation' +GO + +/****** Object: StoredProcedure [vesp_ListChildren] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_ListChildren]; +GO + +-- vesp_ListChildren 17 +-- drop procedure [getItemAndChildren] +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_ListChildren] (@ItemID int) +WITH EXECUTE AS OWNER +AS +BEGIN +with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged]) as ( + Select 0 [Level], 0 [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] + FROM [Items] + where [ItemID]=@ItemID +Union All +-- Children + select [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + from Itemz Z + join Parts P on P.ContentID = Z.ContentID + join Items I on I.ItemID = P.ItemID +-- Siblings +Union All + select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + from Itemz Z + join Items I on I.PreviousID = Z.ItemID + where Z.[Level] > 0 +) +select I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], + C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], + (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], + (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], + (SELECT COUNT(*) FROM [Items] [Children] WHERE [Children].[PreviousID]=[I].[ItemID]) [NextCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount] + from ItemZ I + join Contents C on C.ContentID = I.ContentID + order by I.[Level] , I.[FromType], I.[Ordinal] + OPTION (MAXRECURSION 10000) +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListChildren Succeeded' +ELSE PRINT 'Procedure Creation: vesp_ListChildren Error on Creation' +GO + +/****** Object: StoredProcedure [vesp_ListContentPath] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListContentPath]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_ListContentPath]; +GO + +-- vesp_ListContentPath 148 +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +create PROCEDURE [dbo].[vesp_ListContentPath] + ( + @ContentID int + ) +WITH EXECUTE AS OWNER +AS +BEGIN +with ContentZ(BaseID,ContentID,ItemID,Number,Text,Item,Level,PreviousID) as ( + Select II.ItemID,CC.ContentID,II.ItemID,CC.Number,CC.Text,1,1,II.PreviousID + from Items II join Contents CC on CC.ContentID=II.ContentID where @ContentID=II.ContentID + Union All +-- + Select BaseID,CC.ContentID,II.ItemID,CC.Number,CC.Text,ZZ.Item+1,ZZ.Level,II.PreviousID + FROM ContentZ ZZ + Join Items II on II.ItemID = ZZ.PreviousID + Join Contents CC on II.ContentID = CC.ContentID + where ZZ.PreviousID is not null + Union All + Select BaseID,CC.ContentID,II.ItemID,CC.Number,CC.Text,1,ZZ.Level+1,II.PreviousID + FROM ContentZ ZZ + Join Parts PP on ZZ.ItemID = PP.ItemID + Join Contents CC on PP.ContentID = CC.ContentID + Join Items II on II.ContentID = CC.ContentID + where ZZ.PreviousID is null --and ZZ.ItemID in(717,715,711,662) +) +Select ZZ.BaseID,ZZ.Level,MaxItem,ZZ.Number,ZZ.Text from ContentZ ZZ +join (select BaseID, Level, max(item) MaxItem from ContentZ group by BaseID,Level) T1 on T1.BaseID=ZZ.BaseID and T1.Level = ZZ.Level +where Item=1 +order by ZZ.BaseID,ZZ.Level Desc, Item Desc +OPTION (MAXRECURSION 10000) +end +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListContentPath Succeeded' +ELSE PRINT 'Procedure Creation: vesp_ListContentPath Error on Creation' +GO + +/****** Object: StoredProcedure [vesp_ListItemAndChildren] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListItemAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_ListItemAndChildren]; +GO + +-- vesp_ListItemAndChildren 1,0 +-- drop procedure [vesp_ListItemAndChildren] +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_ListItemAndChildren] (@ItemID int, @ParentID int) +WITH EXECUTE AS OWNER +AS +BEGIN +with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( + Select 0 [Level], @ParentID [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] + ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] + FROM [Items] + where [ItemID]=@ItemID +Union All +-- Children + select [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] + from Itemz Z + join Parts P on P.ContentID = Z.ContentID + join Items I on I.ItemID = P.ItemID +-- Siblings +Union All + select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + ,null,null,null,null + from Itemz Z + join Items I on I.PreviousID = Z.ItemID + where Z.[Level] > 0 +) +select I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], + C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], + [pContentID],[pDTS],[pUserID],[pLastChanged], + (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], + (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], + (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=[I].[ItemID]) [NextCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], + (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], + (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], + (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], + (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], + (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], + (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], + (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] + from ItemZ I + join Contents C on C.ContentID = I.ContentID + order by I.[Level] , I.[FromType], I.[Ordinal] + OPTION (MAXRECURSION 10000) +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItemAndChildren Succeeded' +ELSE PRINT 'Procedure Creation: vesp_ListItemAndChildren Error on Creation' +GO + +-- THIS IS STUFF THAT WE FIXED IN PROMStoCM.SQL AND PUT IN HERE ALSO +/****** Object: StoredProcedure [getItemAuditsByItemID] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getItemAuditsByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getItemAuditsByItemID]; +GO + +/* +getitemauditsbyitemid 10183 + +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getItemAuditsByItemID] +( + @ItemID int +) + +WITH EXECUTE AS OWNER +AS +/* + with Itemz([AuditType],[Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged]) as ( + Select 'root' [AuditType], 0 [Level], 0 [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] + FROM [Items] + where [ItemID]= @ItemID + Union All + -- Children + select 'chld' [AuditType], [Level] + 2,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + from Itemz Z + join Parts P on P.ContentID = Z.ContentID + join Items I on I.ItemID = P.ItemID + -- Siblings + Union All + select 'sibl' [AuditType], [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + from Itemz Z + join Items I on I.PreviousID = Z.ItemID + where Z.[Level] > 0 + ) +*/ + +select * from +( + --get deleted previous item + select 0 Level,ia.*,dbo.[ve_GetPartType](@ItemID) ItemType from + itemaudits ia + inner join itemaudits iaa on ia.itemid = iaa.previousid + where iaa.itemid = @ItemID + and ia.itemid not in (select itemid from items where itemid = ia.itemid) + and ia.deletestatus in (select max(deletestatus) from itemaudits where itemid = ia.itemid) + union + --get deleted next item +/* + select 1 Level,ia.*,@itemtype ItemType from itemaudits ia + where ia.previousid = @ItemID + and ia.itemid not in (select itemid from items where itemid = ia.itemid) + and ia.deletestatus in (select max(deletestatus) from itemaudits where itemid = ia.itemid) +*/ + select 1 Level, + ia.[AuditID], + ia.[ItemID], + ia.[PreviousID], + ia.[ContentID], + ia.[DTS], + ia.[UserID], + ti.[DeleteStatus] +,dbo.[ve_GetPartType](@ItemID) ItemType + from itemaudits ia + inner join tblitems ti on ia.itemid = ti.itemid + where ia.previousid = @ItemID + and ti.deletestatus > 0 +and ia.dts = ti.dts + union + --get chillins + select 2 Level,ia.*, +case +when pa.fromtype = 1 then 'Procedure' +when pa.fromtype = 2 then 'Section' +when pa.fromtype = 3 then 'Caution' +when pa.fromtype = 4 then 'Note' +when pa.fromtype = 5 then 'RNO' +when pa.fromtype = 6 then 'Step' +when pa.fromtype = 7 then 'Table' +else 'Unknown' +end itemtype + from itemaudits ia + inner join partaudits pa on ia.itemid = pa.itemid + inner join items ii on pa.contentid = ii.contentid + where ii.itemid = @ItemID + and ia.itemid not in (select itemid from items where itemid = ia.itemid) + and ia.deletestatus in (select max(deletestatus) from itemaudits where itemid = ia.itemid) +) ia +order by deletestatus desc +OPTION (MAXRECURSION 10000) +--select * from itemz order by parentid,ordinal + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getItemAuditsByItemID Succeeded' +ELSE PRINT 'Procedure Creation: getItemAuditsByItemID Error on Creation' +GO + +-- THIS IS STUFF THAT WE FIXED IN PROMStoAPPR.SQL AND PUT IN HERE ALSO +/****** Object: StoredProcedure [vefn_FindExternalFromTransitions] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindExternalFromTransitions]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_FindExternalFromTransitions]; +GO + +/* +Select * from vefn_FindExternalFromTransitions(185) +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +create FUNCTION [dbo].[vefn_FindExternalFromTransitions](@ItemID int) +RETURNS @Children TABLE +( + [FromItemID] int, + [TransitionID] [int] NOT NULL, + [FromID] [int] NOT NULL, + [ToID] [int] NOT NULL, + [RangeID] [int] NOT NULL, + [Config] [nvarchar](max) NULL +) +WITH EXECUTE AS OWNER +AS +BEGIN +with Itemz([Level], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( + Select 0 [Level], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] + ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] + FROM [Items] + where [ItemID]=@ItemID +Union All +-- Children + select [Level] + 1,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] + from Itemz Z + join Parts P on P.ContentID = Z.ContentID + join Items I on I.ItemID = P.ItemID +-- Siblings +Union All + select [Level] ,Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + ,null,null,null,null + from Itemz Z + join Items I on I.PreviousID = Z.ItemID + where Z.[Level] > 0 +) +insert into @Children +select ItemID [FromItemID], TT.[TransitionID], TT.[FromID], TT.[ToID], TT.[RangeID], TT.[Config] + from Transitions TT + join Items II on II.ContentID=TT.FromID +where (ToID not in(select ItemID from Itemz) OR RangeID not in(select ItemID from Itemz)) +AND FromID in(Select ContentID from ItemZ) +OPTION (MAXRECURSION 10000) +RETURN +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindExternalFromTransitions Succeeded' +ELSE PRINT 'TableFunction Creation: vefn_FindExternalFromTransitions Error on Creation' +GO + +/****** Object: StoredProcedure [dbo].[getAnnotationAuditsChronologyByItemIDandUnitID] Script Date: 10/10/2012 14:45:33 ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAnnotationAuditsChronologyByItemIDandUnitID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getAnnotationAuditsChronologyByItemIDandUnitID]; +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +/****** Object: StoredProcedure [getAnnotationAuditsChronologyByItemIDandUnitID] ******/ +/* +getAnnotationAuditsChronologyByItemIDandUnitID 13,13,1 +getAnnotationAuditsChronologyByItemIDandUnitID 30,8570,1 +getAnnotationAuditsChronologyByItemIDandUnitID 1,1,1 +getAnnotationAuditsChronologyByItemIDandUnitID 30,8505,1 +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +create procedure [dbo].[getAnnotationAuditsChronologyByItemIDandUnitID] +( + @ProcItemID int, + @ItemID int, + @UnitID int, + @DTS datetime +) +WITH EXECUTE AS OWNER +AS +begin +-- declare @dts datetime +-- set @dts = (select dts from items where itemid = @procitemid) + declare @tci table + ( + ItemID int, + IContentID int, + IDeleteStatus int, + ProcDTS datetime, + Path nvarchar(max), + OrdinalPath nvarchar(max) + ) + insert into @tci + select * from vefn_tblchilditems(@ProcItemID,@ItemID,0) + select + case + when lastauditid is null and dts > itemdts then 'Added' + when deletestatus > 0 then 'Deleted' + when lastauditid = deletedauditid then 'Restored' + else 'Changed' + end ActionWhat + ,case + when lastauditid is null and dts > itemdts then dts + when deletestatus > 0 then ActionDTS + when lastauditid = deletedauditid then ActionDTS + else dts + end ActionWhen + ,* + from + ( + select + cast(ident_current('annotationaudits') + 1 as bigint) auditid + -- (select max(auditid) + 1 from annotationaudits) auditid + -- 0 auditid + ,aa.annotationid + ,aa.itemid + ,aa.typeid + ,aa.rtftext + ,aa.searchtext + ,aa.config + ,aa.dts + ,aa.userid + ,0 deletestatus + ,aa.ActionDTS + ,ii.contentid icontentid + ,(select min(dts) from tblitems where itemid = ii.itemid) ItemDTS + ,(select max(auditid) from annotationaudits where annotationid = aa.annotationid and itemid = ii.itemid) LastAuditID + ,(select max(auditid) from annotationaudits where annotationid = aa.annotationid and itemid = ii.itemid and deletestatus > 0 and aa.dts = dts) DeletedAuditID +,tci.ordinalpath + from tblannotations aa + inner join items ii on aa.itemid = ii.itemid +join @tci tci on tci.itemid = ii.itemid + where aa.deletestatus = 0 + union + select + aa.auditid + ,aa.annotationid + ,aa.itemid + ,aa.typeid + ,aa.rtftext + ,aa.searchtext + ,aa.config + ,aa.dts + ,aa.userid + ,aa.deletestatus + ,aa.ActionDTS + ,ii.contentid icontentid + ,(select min(dts) from tblitems where itemid = ii.itemid) ItemDTS + ,(select max(auditid) from annotationaudits where annotationid = aa.annotationid and itemid = ii.itemid and aa.auditid > auditid ) LastAuditID + ,(select max(auditid) from annotationaudits where annotationid = aa.annotationid and itemid = ii.itemid and aa.auditid > auditid and deletestatus > 0 and aa.dts = dts) DeletedAuditID +,tci.ordinalpath + from annotationaudits aa + inner join items ii on aa.itemid = ii.itemid +join @tci tci on tci.itemid = ii.itemid + ) ah + where itemid in (select itemid from vefn_tblchilditems (@procitemid,@itemid,0)) + and dts > @dts + and (dbo.ve_GetItemDerivedApplicability(ItemID) = '-1' or ',' + dbo.ve_GetItemDerivedApplicability(ItemID) + ',' like '%,' + cast(@UnitID as varchar(10)) + ',%') + --(select dts from versions where versionid = (select max(versionid) from revisions rr inner join versions vv on rr.revisionid = vv.revisionid + --inner join stages ss on vv.stageid = ss.stageid where itemid = @procitemid and ss.isapproved = 1)) + order by ordinalpath,annotationid,auditid--actionwhen +end +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getAnnotationAuditsChronologyByItemIDandUnitID Succeeded' +ELSE PRINT 'Procedure Creation: getAnnotationAuditsChronologyByItemIDandUnitID Error on Creation' +GO + +/****** Object: StoredProcedure [dbo].[getContentAuditsChronologyByItemIDandUnitID] Script Date: 10/10/2012 12:48:39 ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getContentAuditsChronologyByItemIDandUnitID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getContentAuditsChronologyByItemIDandUnitID]; +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +/****** Object: StoredProcedure [getContentAuditsChronologyByItemIDandUnitID] ******/ +/* +getContentAuditsChronologyByItemIDandUnitID 10154,10154,0,1 +getContentAuditsChronologyByItemIDandUnitID 42,42,0,1 +getContentAuditsChronologyByItemIDandUnitID 1,1,0,1 +getContentAuditsChronologyByItemIDandUnitID 146,146,1,1 +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getContentAuditsChronologyByItemIDandUnitID] +( + @ProcedureItemID int, + @SelectedItemID int, + @IncludeDeletedChildren int, + @UnitID int, + @DTS datetime +) + +WITH EXECUTE AS OWNER +AS +begin + select * from vefn_GetMyChronology(@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren,@DTS) +-- select distinct [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName,ordinalpath +-- from +-- ( +-- select +-- case +-- when lastauditid is null then 'Added' +-- when r.deletestatus > 0 then 'Deleted' +-- when lastauditid = -1 then 'Changed' +-- when DeletedAuditID is not null then 'Restored' +---- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' +-- else 'Changed' +-- end actionwhat +--,actiondts actionwhen +---- ,case +---- when lastauditid is null then dts +---- when r.deletestatus > 0 then ActionDTS +---- when lastauditid = -1 then dts +---- when DeletedAuditID is not null then ActionDTS +---- else dts +---- end actionwhen +--,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName +-- ,* +-- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t +-- inner join vefn_chronologyreport(@ProcedureItemID) r +-- on t.icontentid = r.contentid +---- where ActionDTS > procdts or dts > procdts +-- ) ah + where dbo.ve_GetItemDerivedApplicability(ItemID) = '-1' or ',' + dbo.ve_GetItemDerivedApplicability(ItemID) + ',' like '%,' + cast(@UnitID as varchar(10)) + ',%' +-- order by OrdinalPath, contentid,auditid--actionwhen + RETURN +end +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getContentAuditsChronologyByItemIDandUnitID Succeeded' +ELSE PRINT 'Procedure Creation: getContentAuditsChronologyByItemIDandUnitID Error on Creation' +GO + +/****** Object: StoredProcedure [dbo].[getContentAuditsSummaryByItemIDandUnitID] Script Date: 10/10/2012 12:56:01 ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getContentAuditsSummaryByItemIDandUnitID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getContentAuditsSummaryByItemIDandUnitID]; +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +/****** Object: StoredProcedure [getContentAuditsSummaryByItemIDandUnitID] ******/ +/* +getContentAuditsSummaryByItemIDandUnitID 146,146,0,1 +getContentAuditsSummaryByItemIDandUnitID 42,42,0,1 +getContentAuditsSummaryByItemIDandUnitID 1,1,0,1 +getContentAuditsSummaryByItemIDandUnitID 146,146,1,1 +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +create PROCEDURE [dbo].[getContentAuditsSummaryByItemIDandUnitID] +( + @ProcedureItemID int, + @SelectedItemID int, + @IncludeDeletedChildren int, + @UnitID int, + @DTS datetime +) + +WITH EXECUTE AS OWNER +AS +begin + DECLARE @ProcId Int + Set @ProcID = @ProcedureItemID + DECLARE @Apples TABLE + ( + ProcID int, + ItemId int, + ContentID int Primary Key, + Apple nvarchar(255), + DerApple nvarchar(255) + ) +--Build Applicabilty table for the specified Procedure ID + BEGIN + with Itemz([Level],[Apple],[DerApple],[ParApple],[ItemID], [ContentID]) as + (Select 0 + ,xMasterSlave.value('@Applicability','nvarchar(255)') Apple + ,IsNull(xMasterSlave.value('@Applicability','nvarchar(255)'),dbo.ve_getItemDerivedApplicability(@ProcID)) DerApple + ,cast(dbo.ve_getItemDerivedApplicability(@ProcID) as nvarchar(255)) ParApple + ,[II].[ItemID], [II].[ContentID] + FROM [Items] II + JOIN (Select ContentID, cast(config as XML) xConfig FROM Contents) CC ON II.ContentID = CC.ContentID + outer apply xConfig.nodes('//MasterSlave') tMasterSlave(xMasterSlave) + Where II.[ItemID] = @ProcID + Union All + -- Children + select ZZ.Level + 1 Level + ,xMasterSlave.value('@Applicability','nvarchar(255)') Apple + ,IsNull(xMasterSlave.value('@Applicability','nvarchar(255)'),ZZ.DerApple) DerApple + ,ZZ.DerApple ParApple + , II.[ItemID], II.[ContentID] + from Itemz ZZ + join Parts PP on PP.ContentID = ZZ.ContentID + join Items II on II.ItemID = PP.ItemID + JOIN (Select ContentID, cast(config as XML) xConfig FROM Contents) CC ON II.ContentID = CC.ContentID + outer apply xConfig.nodes('//MasterSlave') tMasterSlave(xMasterSlave) + Union All + -- Siblings + select ZZ.Level + ,xMasterSlave.value('@Applicability','nvarchar(255)') Apple + ,IsNull(xMasterSlave.value('@Applicability','nvarchar(255)'),ZZ.ParApple) DerApple + ,ZZ.ParApple + , II.[ItemID], II.[ContentID] + from Itemz ZZ + join Items II on II.PreviousID = ZZ.ItemID + JOIN (Select ContentID, cast(config as XML) xConfig FROM Contents) CC ON II.ContentID = CC.ContentID + outer apply xConfig.nodes('//MasterSlave') tMasterSlave(xMasterSlave) + Where Level >= 1 + ) + insert into @Apples + select @ProcID ProcID, ItemID, ContentID, Apple, DerApple--, [ItemID], [ContentID] + from ItemZ II + OPTION (MAXRECURSION 10000) +END + + +DECLARE @Chrono TABLE +( +[AuditID] bigint, +[ContentID] int, +[Number] nvarchar(max), +[Text] nvarchar(max), +[Type] int, +[FormatID] int, +[Config] nvarchar(max), +[DTS] datetime, +[UserID] nvarchar(max), +[DeleteStatus] int, +[ActionDTS] datetime, +[ActionWhat] nvarchar(max), +[ActionWhen] datetime, +[Path] nvarchar(max), +ItemID int, +TypeName nvarchar(max), +ordinalpath nvarchar(max) +) + +-- Use the Applicability Table to limit Items included in the list of changes +insert into @Chrono +select Distinct VC.* from vefn_GetMyChronology(@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren,@DTS) VC +Left JOIN @Apples AA ON AA.ContentID = VC.ContentID +Where aa.ContentID is null or AA.DerApple = '-1' or ',' + AA.DerApple + ',' like '%,' + cast(@UnitID as varchar(10)) + ',%' + +Declare @Audits TABLE +( +AuditID int primary key +) +-- Create a Unique list of Minimum and Maximum AuditIDs for Each ContentID +insert into @Audits +select min(auditID) from @Chrono group by contentid UNION select max(auditID) from @Chrono group by contentid +-- Return the List Of Changes with the first Audit Record and the Last Audit Record +select * from @Chrono +where AuditID is null OR AuditID in (select AuditID from @Audits) +order by OrdinalPath, contentid,auditid + + RETURN +end +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getContentAuditsSummaryByItemIDandUnitID Succeeded' +ELSE PRINT 'Procedure Creation: getContentAuditsSummaryByItemIDandUnitID Error on Creation' +GO + +/****** Object: StoredProcedure [dbo].[getCurrentRevisionByItemIDandUnitID] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[getCurrentRevisionByItemIDandUnitID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) +DROP PROCEDURE [dbo].[getCurrentRevisionByItemIDandUnitID]; +GO + +/****** Object: StoredProcedure [dbo].[getCurrentRevisionByItemIDandUnitID] Script Date: 06/22/2012 16:58:12 ******/ +/* +getCurrentRevisionByItemID 41 +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getCurrentRevisionByItemIDandUnitID] +( + @ItemID int, + @UnitID int +) +WITH EXECUTE AS OWNER +AS + SELECT + [Revisions].[RevisionID], + [ItemID], + [TypeID], + [RevisionNumber], + [RevisionDate], + [Notes], + [Config], + [DTS], + [UserID], + [LastChanged], + (SELECT COUNT(*) FROM [Checks] WHERE [Checks].[RevisionID]=[Revisions].[RevisionID]) [CheckCount], + (SELECT COUNT(*) FROM [Versions] WHERE [Versions].[RevisionID]=[Revisions].[RevisionID]) [VersionCount] + FROM [Revisions] +inner join +( +select top 1 revisionid,mxvid from +( +select rr.revisionid,max(vv.versionid) mxvid +from items ii +inner join revisions rr on ii.itemid = rr.itemid +inner join versions vv on rr.revisionid = vv.revisionid +inner join stages ss on vv.stageid = ss.stageid +cross apply rr.config.nodes('Config/Applicability') t1(r1) +where ss.isapproved = 1 +and ii.itemid = @ItemID +and r1.value('@Index','int') = @UnitID +group by rr.revisionid +union +select null,null +) ds +order by mxvid desc +) rr on [Revisions].revisionid = rr.revisionid +-- WHERE [ItemID] = @ItemID +-- ORDER BY [RevisionID] DESC + RETURN +GO +IF (@@Error = 0) PRINT 'StoredProcedure [getCurrentRevisionByItemIDandUnitID] Succeeded' +ELSE PRINT 'StoredProcedure [getCurrentRevisionByItemIDandUnitID] Error on Creation' +GO + +/****** Object: StoredProcedure [dbo].[getDocumentByLibDoc] Script Date: 01/30/2012 14:08:10 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getDocumentByLibDoc]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getDocumentByLibDoc]; +GO + +-- [dbo].[getDocumentByLibDoc] 'DOC_0000',4 +-- [dbo].[getDocumentByLibDoc] 'DOC_0000',3 +-- [dbo].[getDocumentByLibDoc] 'DOC_0000',2 +-- [dbo].[getDocumentByLibDoc] 'DOC_0000',1 +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getDocumentByLibDoc] + +( + @LibDoc varchar(12), + @VersionID int +) +WITH EXECUTE AS OWNER +AS + DECLARE @DocID int + select @DocID = docid + from + ( + select + distinct ah.docid,.dbo.vefn_GetVersionIDByItemID(ii.itemid) versionid + from + ( + select dd.docid,ofn.value('@OriginalFileName','varchar(20)') origfilename,dts + from (select docid,cast(config as xml) xconfig,dts from documents) dd + cross apply xconfig.nodes('//History') t1(ofn) + ) ah + inner join entries ee on ah.docid = ee.docid + inner join items ii on ee.contentid = ii.itemid + where origfilename = @LibDoc + '.LIB' + ) ah + where versionid = @VersionID + +-- from (select docid,cast(config as xml) xconfig from documents) ah +-- cross apply xconfig.nodes('//Config/History') t1(roc) +-- where roc.value('@OriginalFileName','varchar(12)') = @LibDoc + '.LIB' + + SELECT + [DocID], + [LibTitle], + [DocContent], + [DocAscii], + [Config], + [DTS], + [UserID], + [LastChanged], + [FileExtension], + (SELECT COUNT(*) FROM [DROUsages] WHERE [DROUsages].[DocID]=[Documents].[DocID]) [DROUsageCount], + (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[DocID]=[Documents].[DocID]) [EntryCount], + (SELECT COUNT(*) FROM [Pdfs] WHERE [Pdfs].[DocID]=[Documents].[DocID]) [PdfCount] + FROM [Documents] + WHERE [DocID]=@DocID + + SELECT + [DROUsages].[DROUsageID], + [DROUsages].[DocID], + [DROUsages].[ROID], + [DROUsages].[Config], + [DROUsages].[DTS], + [DROUsages].[UserID], + [DROUsages].[LastChanged], + [DROUsages].[RODbID], + [RODbs].[ROName] [RODb_ROName], + [RODbs].[FolderPath] [RODb_FolderPath], + [RODbs].[DBConnectionString] [RODb_DBConnectionString], + [RODbs].[Config] [RODb_Config], + [RODbs].[DTS] [RODb_DTS], + [RODbs].[UserID] [RODb_UserID] + FROM [DROUsages] + JOIN [RODbs] ON + [RODbs].[RODbID]=[DROUsages].[RODbID] + WHERE + [DROUsages].[DocID]=@DocID + + + SELECT + [Entries].[ContentID], + [Entries].[DocID], + [Entries].[DTS], + [Entries].[UserID], + [Entries].[LastChanged], + [Contents].[Number] [Content_Number], + [Contents].[Text] [Content_Text], + [Contents].[Type] [Content_Type], + [Contents].[FormatID] [Content_FormatID], + [Contents].[Config] [Content_Config], + [Contents].[DTS] [Content_DTS], + [Contents].[UserID] [Content_UserID] + FROM [Entries] + JOIN [Contents] ON + [Contents].[ContentID]=[Entries].[ContentID] + WHERE + [Entries].[DocID]=@DocID + + + SELECT + [Pdfs].[DocID], + [Pdfs].[DebugStatus], + [Pdfs].[TopRow], + [Pdfs].[PageLength], + [Pdfs].[LeftMargin], + [Pdfs].[PageWidth], + [Pdfs].[PageCount], + [Pdfs].[DocPdf], + [Pdfs].[DTS], + [Pdfs].[UserID], + [Pdfs].[LastChanged] + FROM [Pdfs] + WHERE + [Pdfs].[DocID]=@DocID + + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getDocumentByLibDoc Succeeded' +ELSE PRINT 'Procedure Creation: getDocumentByLibDoc Error on Creation' +GO + +/****** Object: StoredProcedure [dbo].[getRevisionByItemIDandRevisionNumberAndUnitID] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[getRevisionByItemIDandRevisionNumberAndUnitID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) +DROP PROCEDURE [dbo].[getRevisionByItemIDandRevisionNumberAndUnitID]; +GO + +/****** Object: StoredProcedure [dbo].[getRevisionByItemIDandRevisionNumberAndUnitID] Script Date: 06/25/2012 23:05:17 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getRevisionByItemIDandRevisionNumberAndUnitID] + +( + @ItemID int, + @RevisionNumber nvarchar(50), + @UnitID int +) +WITH EXECUTE AS OWNER +AS +declare @RevisionID int +set @RevisionID = (select revisionid from revisions rr cross apply rr.config.nodes('//Applicability') t1(r1) where itemid = @itemid and revisionnumber = @RevisionNumber and r1.value('@Index','int') = @UnitID) + SELECT + [RevisionID], + [ItemID], + [TypeID], + [RevisionNumber], + [RevisionDate], + [Notes], + [Config], + [DTS], + [UserID], + [LastChanged], + (SELECT COUNT(*) FROM [Checks] WHERE [Checks].[RevisionID]=[Revisions].[RevisionID]) [CheckCount], + (SELECT COUNT(*) FROM [Versions] WHERE [Versions].[RevisionID]=[Revisions].[RevisionID]) [VersionCount] + FROM [Revisions] + WHERE [RevisionID]=@RevisionID + + SELECT + [Checks].[CheckID], + [Checks].[RevisionID], + [Checks].[StageID], + [Checks].[ConsistencyChecks], + [Checks].[DTS], + [Checks].[UserID], + [Checks].[LastChanged], + [Stages].[Name] [Stage_Name], + [Stages].[Description] [Stage_Description], + [Stages].[IsApproved] [Stage_IsApproved], + [Stages].[DTS] [Stage_DTS], + [Stages].[UserID] [Stage_UserID] + FROM [Checks] + JOIN [Stages] ON + [Stages].[StageID]=[Checks].[StageID] + WHERE + [Checks].[RevisionID]=@RevisionID + + + SELECT + [Versions].[VersionID], + [Versions].[RevisionID], + [Versions].[StageID], + [Versions].[DTS], + [Versions].[UserID], + [Versions].[LastChanged], + [Versions].[PDF], + [Versions].[SummaryPDF], + [Stages].[Name] [Stage_Name], + [Stages].[Description] [Stage_Description], + [Stages].[IsApproved] [Stage_IsApproved], + [Stages].[DTS] [Stage_DTS], + [Stages].[UserID] [Stage_UserID] + FROM [Versions] + JOIN [Stages] ON + [Stages].[StageID]=[Versions].[StageID] + WHERE + [Versions].[RevisionID]=@RevisionID + + RETURN +GO +IF (@@Error = 0) PRINT 'StoredProcedure [getRevisionByItemIDandRevisionNumberAndUnitID] Succeeded' +ELSE PRINT 'StoredProcedure [getRevisionByItemIDandRevisionNumberAndUnitID] Error on Creation' +GO + +/****** Object: StoredProcedure [dbo].[getRevisionsByItemIDandUnitID] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[getRevisionsByItemIDandUnitID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) +DROP PROCEDURE [dbo].[getRevisionsByItemIDandUnitID]; +GO + +/****** Object: StoredProcedure [dbo].[getRevisionsByItemIDandUnitID] Script Date: 06/26/2012 16:22:32 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getRevisionsByItemIDandUnitID] +( + @ItemID int, + @UnitID int +) +WITH EXECUTE AS OWNER +AS + SELECT + [RevisionID], + [ItemID], + [TypeID], + [RevisionNumber], + [RevisionDate], + [Notes], + [Config], + [DTS], + [UserID], + [LastChanged], + (SELECT COUNT(*) FROM [Checks] WHERE [Checks].[RevisionID]=[Revisions].[RevisionID]) [CheckCount], + (SELECT COUNT(*) FROM [Versions] WHERE [Versions].[RevisionID]=[Revisions].[RevisionID]) [VersionCount] + FROM [Revisions] +cross apply config.nodes('//Applicability') t1(r1) + WHERE [ItemID] = @ItemID +and r1.value('@Index','int') = @UnitID +and (SELECT COUNT(*) FROM [Versions] WHERE [Versions].[RevisionID]=[Revisions].[RevisionID]) > 0 + ORDER BY [RevisionID] DESC + RETURN +GO +IF (@@Error = 0) PRINT 'StoredProcedure [getRevisionsByItemIDandUnitID] Succeeded' +ELSE PRINT 'StoredProcedure [getRevisionsByItemIDandUnitID] Error on Creation' +GO + +/****** Object: UserDefinedFunction [dbo].[vefn_GetItemApplicability] Script Date: 03/28/2012 17:58:48 ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetItemApplicability]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) + DROP FUNCTION [ve_GetItemApplicability]; +GO +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[ve_GetItemApplicability] (@ItemID int) RETURNS varchar(max) +WITH EXECUTE AS OWNER +AS +BEGIN + declare @apple varchar(max) + select @apple = r2.value('@Applicability','varchar(max)') + from + ( + select itemid,cast(config as xml) xconfig from items ii join contents cc on ii.contentid = cc.contentid + ) t1 + outer apply xconfig.nodes('//MasterSlave') t2(r2) + where itemid = @ItemID + return @apple +END +GO +IF (@@Error = 0) PRINT 'ScalerFunction [vefn_GetItemApplicability] Succeeded' +ELSE PRINT 'ScalerFunction [vefn_GetItemApplicability] Error on Creation' +go + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_ParentItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_ParentItems]; +GO +/****** Object: UserDefinedFunction [dbo].[vefn_ParentItems] Script Date: 10/12/2012 16:12:01 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +/* +select * from [dbo].[vefn_ParentItems](212) +select * from [dbo].[vefn_ParentItems](48) +select * from [dbo].[vefn_ParentItems](49) +select * from [dbo].[vefn_ParentItems](50) +select * from [dbo].[vefn_ParentItems](51) +select * from [dbo].[vefn_ParentItems](52) +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_ParentItems](@ItemID int) +RETURNS @Parents TABLE +( + ItemID int PRIMARY KEY, + ContentID int +) +WITH EXECUTE AS OWNER +AS +BEGIN +with Itemz([Relationship], [ItemID], [ContentID], [PreviousID]) as ( + Select 1 [Relationship], [ItemID], [ContentID], [PreviousID] + FROM [Items] + where [ItemID]=@ItemID +Union All +-- Parents + select 2 [Relationship], I.[ItemID], I.[ContentID], I.[PreviousID] + from Itemz Z + join Parts P on P.ItemID = Z.ItemID + join Items I on I.ContentID = P.ContentID +-- Siblings +Union All + select 0 [Relationship] , I.[ItemID], I.[ContentID], I.[PreviousID] + from Itemz Z + join Items I on Z.PreviousID = I.ItemID +) +insert into @Parents select ItemID, ContentID from Itemz where Relationship > 0 +OPTION (MAXRECURSION 10000) +RETURN +END +GO +-- Display the status of TableFunction creation +IF (@@Error = 0) PRINT 'Function: vefn_ParentItems Succeeded' +ELSE PRINT 'Function: vefn_ParentItems Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetItemDerivedApplicability]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) + DROP FUNCTION [ve_GetItemDerivedApplicability]; +GO + +/****** Object: UserDefinedFunction [dbo].[ve_GetItemDerivedApplicability] Script Date: 10/13/2012 00:57:34 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +/* +select [dbo].[ve_GetItemDerivedApplicability](48) +select [dbo].[ve_GetItemDerivedApplicability](49) +select [dbo].[ve_GetItemDerivedApplicability](50) +select [dbo].[ve_GetItemDerivedApplicability](51) +select [dbo].[ve_GetItemDerivedApplicability](52) +--Prairie Island +select [dbo].[ve_GetItemDerivedApplicability](29544) [ParentChild] +select [dbo].[ve_GetItemDerivedApplicability](123816) [ParentChild] +select [dbo].[ve_GetItemDerivedApplicability](125916) [ParentChild] +select [dbo].[ve_GetItemDerivedApplicability](26955) [NonParentChild] +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[ve_GetItemDerivedApplicability] (@ItemID int) RETURNS varchar(max) +WITH EXECUTE AS OWNER +AS +BEGIN + declare @apple varchar(max) + select @apple = dbo.ve_getitemapplicability(@ItemID) + if @apple is null + begin + declare @ParentID int + select @ParentID = dbo.ve_getparentitem(@ItemID) + if @parentid is not null + set @apple = dbo.ve_GetItemDerivedApplicability(@ParentID) + else + begin + select @apple = coalesce(@apple + ',','') + r2.value('@index','varchar(max)') from + (select cast(config as xml) xconfig from docversions + where versionid = dbo.vefn_GetVersionIDByItemID(@ItemID)) ah + cross apply xconfig.nodes('//Slave') t2(r2) + if(@apple is null) -- Non PC P/C Item + BEGIN -- Get maximum Applicabilty + declare @n int + select @n=max(xSlave.value('@index','int')) from ( + select versionID, Cast(config as xml) xConfig from DocVersions) t1 + cross apply xconfig.nodes('//Slave') tSlave(xSlave) + if(@n is not null) + begin -- Build a list based upon the maximum + with cte(ii) as (select 1 ii union all select ii+1 from cte where ii < @n) + select @apple = coalesce(@apple+',','') + cast(ii as varchar(max)) from cte + end + if(@apple is null)Set @Apple='' + END + end + end + return @apple +END +GO +-- Display the status of TableFunction creation +IF (@@Error = 0) PRINT 'Function: ve_GetItemDerivedApplicability Succeeded' +ELSE PRINT 'Function: ve_GetItemDerivedApplicability Error on Creation' +GO +------- + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetItemAppliedApplicability]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) + DROP FUNCTION [ve_GetItemAppliedApplicability]; +GO + +/****** Object: UserDefinedFunction [dbo].[ve_GetItemAppliedApplicability] Script Date: 09/17/2018 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +/* +select [dbo].[ve_GetItemAppliedApplicability](48) +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2018 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[ve_GetItemAppliedApplicability] (@ItemID int) RETURNS varchar(max) +WITH EXECUTE AS OWNER +AS +BEGIN + declare @apple varchar(max) + select @apple = dbo.ve_getitemapplicability(@ItemID) + if(@apple is null)Set @Apple='' + /*** + begin + declare @ParentID int + select @ParentID = dbo.ve_getparentitem(@ItemID) + if @parentid is not null + set @apple = dbo.ve_GetItemDerivedApplicability(@ParentID) + else + begin + select @apple = coalesce(@apple + ',','') + r2.value('@index','varchar(max)') from + (select cast(config as xml) xconfig from docversions + where versionid = dbo.vefn_GetVersionIDByItemID(@ItemID)) ah + cross apply xconfig.nodes('//Slave') t2(r2) + if(@apple is null) -- Non PC P/C Item + BEGIN -- Get maximum Applicabilty + declare @n int + select @n=max(xSlave.value('@index','int')) from ( + select versionID, Cast(config as xml) xConfig from DocVersions) t1 + cross apply xconfig.nodes('//Slave') tSlave(xSlave) + if(@n is not null) + begin -- Build a list based upon the maximum + with cte(ii) as (select 1 ii union all select ii+1 from cte where ii < @n) + select @apple = coalesce(@apple+',','') + cast(ii as varchar(max)) from cte + end + if(@apple is null)Set @Apple='' + END + end + end + ***/ + return @apple +END +GO +-- Display the status of TableFunction creation +IF (@@Error = 0) PRINT 'Function: ve_GetItemDerivedApplicability Succeeded' +ELSE PRINT 'Function: ve_GetItemDerivedApplicability Error on Creation' +GO + +------- +/****** Object: UserDefinedFunction [dbo].[vefn_GetParentItem] Script Date: 03/28/2012 17:58:48 ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetParentItem]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) + DROP FUNCTION [ve_GetParentItem]; +GO +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[ve_GetParentItem] (@ItemID int) RETURNS int +WITH EXECUTE AS OWNER +AS +BEGIN +DECLARE @ParentID int; +WITH Itemz([ItemID],[IsFound]) as +( +select ii.itemid,0 from items ii where ii.itemid = @ItemID +union all +select ii.previousid,0 from items ii +join itemz zz on ii.itemid = zz.itemid +where ii.previousid is not null +and zz.isfound = 0 +union all +select ii.itemid,1 +from parts pp +join itemz zz on pp.itemid = zz.itemid +join items ii on ii.contentid = pp.contentid +) +select top 1 @ParentID = itemid from itemz +where isfound = 1 OPTION (MAXRECURSION 10000) +RETURN @ParentID +END +GO + +IF (@@Error = 0) PRINT 'ScalerFunction [vefn_GetParentItem] Succeeded' +ELSE PRINT 'ScalerFunction [vefn_GetParentItem] Error on Creation' +go + +/****** Object: UserDefinedFunction [dbo].[vefn_CanTransitionBeCreated] Script Date: 10/14/2012 02:03:30 ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_CanTransitionBeCreated]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) + DROP FUNCTION [vefn_CanTransitionBeCreated]; +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +/* +select dbo.vefn_CanTransitionBeCreated(49,51) +select dbo.vefn_CanTransitionBeCreated(51,49) +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_CanTransitionBeCreated](@fromID int, @toID int) RETURNS int +AS BEGIN + declare @rv int + declare @tCount int + declare @uCount int + set @rv = 0 + select @tCount = count(*) from vefn_SplitInt([dbo].[ve_GetItemDerivedApplicability](@toID),',') + select @uCount = count(*) from + ( + select * from vefn_SplitInt([dbo].[ve_GetItemDerivedApplicability](@fromID),',') + union + select * from vefn_SplitInt([dbo].[ve_GetItemDerivedApplicability](@toID),',') + ) ah + if (@tCount = 0) or (@tCount >= @uCount) begin + set @rv = 1 + end + return @rv +END +GO +-- Display the status of TableFunction creation +IF (@@Error = 0) PRINT 'Function: vefn_CanTransitionBeCreated Succeeded' +ELSE PRINT 'Function: vefn_CanTransitionBeCreated Error on Creation' +GO + +/****** Object: UserDefinedFunction [dbo].[vefn_GetVersionIDByItemID] Script Date: 02/03/2012 16:48:32 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetVersionIDByItemID]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) + DROP FUNCTION [vefn_GetVersionIDByItemID]; +GO + +/* +select dbo.vefn_GetVersionIDByItemID(41) +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +create function [dbo].[vefn_GetVersionIDByItemID] +(@ItemID int) +returns int +as begin + declare @VersionID int; + with itemz + ( + itemid,previousid,versionid + ) as + ( + select itemid,previousid,null + from items ii + join contents cc on ii.contentid = cc.contentid + where itemid = @ItemID + --siblins + union all + select ii.itemid,ii.previousid,null + from items ii + join contents cc on ii.contentid = cc.contentid + join itemz zz on zz.previousid = ii.itemid + where zz.versionid is null + --chillins + union all + select ii.itemid,ii.previousid,null + from parts pp + join items ii on ii.contentid = pp.contentid + join contents cc on ii.contentid = cc.contentid + join itemz zz on zz.itemid = pp.itemid + where zz.versionid is null + --docversions + union all + select 0,0,dv.versionid + from docversions dv + join itemz zz on dv.itemid = zz.itemid + where zz.versionid is null + ) + select @VersionID = versionid from itemz zz + where versionid is not null + OPTION (MAXRECURSION 10000) + return @VersionID +end +GO +-- Display the status of Func creation +IF (@@Error = 0) PRINT 'Function Creation: vefn_GetVersionIDByItemID Succeeded' +ELSE PRINT 'Function Creation: vefn_GetVersionIDByItemID Error on Creation' +GO + +/****** Object: UserDefinedFunction [dbo].[vefn_WillTransitionBeValidFrom] Script Date: 10/16/2012 18:17:37 ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_WillTransitionBeValidFrom]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) + DROP FUNCTION [vefn_WillTransitionBeValidFrom]; +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +/* +select dbo.vefn_WillTransitionBeValidFrom(194,'2') +select dbo.vefn_WillTransitionBeValidFrom(216,'2') +select dbo.vefn_WillTransitionBeValidFrom(246,'2') +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_WillTransitionBeValidFrom](@toID int, @newAppl varchar(max)) RETURNS int +AS BEGIN + declare @rv int + declare @tCount int + declare @uCount int + set @rv = 0 + select @tCount = count(*) from vefn_SplitInt([dbo].[ve_GetItemDerivedApplicability](@toID),',') + select @uCount = count(*) from + ( + select * from vefn_SplitInt(@newAppl,',') + union + select * from vefn_SplitInt([dbo].[ve_GetItemDerivedApplicability](@toID),',') + ) ah + if @tCount >= @uCount begin + set @rv = 1 + end + return @rv +END +GO +-- Display the status of TableFunction creation +IF (@@Error = 0) PRINT 'Function: vefn_WillTransitionBeValidFrom Succeeded' +ELSE PRINT 'Function: vefn_WillTransitionBeValidFrom Error on Creation' +GO + +/****** Object: UserDefinedFunction [dbo].[vefn_WillTransitionBeValidTo] Script Date: 10/16/2012 18:20:23 ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_WillTransitionBeValidTo]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) + DROP FUNCTION [vefn_WillTransitionBeValidTo]; +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +/* +select dbo.vefn_WillTransitionBeValidTo(10617,'2') +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_WillTransitionBeValidTo](@toID int, @newAppl varchar(max)) RETURNS int +AS BEGIN + declare @rv int + declare @tCount int + declare @uCount int + set @rv = 0 + select @tCount = count(*) from vefn_SplitInt(@newAppl,',') + select @uCount = count(*) from + ( + select * from vefn_SplitInt(@newAppl,',') + union + select * from vefn_SplitInt([dbo].[ve_GetItemDerivedApplicability](@toID),',') + ) ah + if @tCount >= @uCount begin + set @rv = 1 + end + return @rv +END +GO +-- Display the status of TableFunction creation +IF (@@Error = 0) PRINT 'Function: vefn_WillTransitionBeValidTo Succeeded' +ELSE PRINT 'Function: vefn_WillTransitionBeValidTo Error on Creation' +GO + +/****** Object: StoredProcedure [dbo].[vesp_CanTransitionBeCreated] Script Date: 10/15/2012 14:37:32 ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_CanTransitionBeCreated]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_CanTransitionBeCreated]; +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +/* +exec vesp_CanTransitionBeCreated 46,180 +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_CanTransitionBeCreated] +( + @fromItemID int, + @toItemID int +) +AS BEGIN + select dbo.vefn_CanTransitionBeCreated(@fromItemID,@toItemID) Status, + dbo.ve_GetItemDerivedApplicability(@fromItemID) fromAppl, + dbo.ve_GetItemDerivedApplicability(@toItemID) toAppl, + dbo.ve_GetShortPath(@fromItemID) fromStep, + dbo.ve_GetShortPath(@toItemID) toStep +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_CanTransitionBeCreated Succeeded' +ELSE PRINT 'Procedure Creation: vesp_CanTransitionBeCreated Error on Creation' +GO + +/****** Object: StoredProcedure [dbo].[vesp_ListItemAndChildrenByUnit] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[vesp_ListItemAndChildrenByUnit]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) +DROP PROCEDURE [dbo].[vesp_ListItemAndChildrenByUnit]; +GO + +/****** Object: StoredProcedure [dbo].[vesp_ListItemAndChildrenByUnit] Script Date: 05/02/2012 23:16:53 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +-- vesp_ListItemAndChildrenByUnit 29546,0,'8' +-- drop procedure [vesp_ListItemAndChildren] +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_ListItemAndChildrenByUnit] (@ItemID int, @ParentID int, @UnitID varchar(max)) +WITH EXECUTE AS OWNER +AS +BEGIN +with Itemz([apple],[Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( + Select 1 [apple],0 [Level], @ParentID [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] + ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] + FROM [Items] + where [ItemID]=@ItemID +Union All +-- Children + select case when s1.value('@Applicability','varchar(max)') is null or ',' + s1.value('@Applicability','varchar(max)') + ',' like '%,' + @UnitID + ',%' then 1 else 0 end apple +,[Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] + from Itemz Z + join Parts P on P.ContentID = Z.ContentID + join Items I on I.ItemID = P.ItemID + join (select ContentID,cast(Config as xml) xConfig from Contents) C on C.ContentID = I.ContentID + outer apply C.xConfig.nodes('//MasterSlave') m1(s1) +where Z.[Apple] = 1 +-- Siblings +Union All + select case when s1.value('@Applicability','varchar(max)') is null or ',' + s1.value('@Applicability','varchar(max)') + ',' like '%,' + @UnitID + ',%' then 1 else 0 end apple +,[Level] ,Z.[ParentID], +case when Z.[Apple] = 1 then Z.[Ordinal] +1 else Z.[Ordinal] end, I.[ItemID], +case when Z.[Apple] = 1 then I.[PreviousID] else Z.[PreviousID] end, [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + ,null,null,null,null + from Itemz Z + join Items I on I.PreviousID = Z.ItemID + join (select ContentID,cast(Config as xml) xConfig from Contents) C on C.ContentID = I.ContentID + outer apply C.xConfig.nodes('//MasterSlave') m1(s1) + where Z.[Level] > 0 +) +select I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], + C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], + [pContentID],[pDTS],[pUserID],[pLastChanged], + (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], + (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], + (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=[I].[ItemID]) [NextCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], + (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], + (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], + (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], + (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], + (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], + CASE WHEN I.ItemID IN (SELECT ParentID FROM ItemZ WHERE apple = 1) THEN (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) ELSE 0 END [cPartCount], + (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], + (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] + from ItemZ I + join Contents C on C.ContentID = I.ContentID +where i.apple = 1 + order by I.[Level] , I.[FromType], I.[Ordinal] + OPTION (MAXRECURSION 10000) +END +GO +-- Display the status of Procedure Creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItemAndChildrenByUnit Succeeded' +ELSE PRINT 'Procedure Creation: vesp_ListItemAndChildrenByUnit Error on Creation' +GO + +/****** Object: StoredProcedure [dbo].[vesp_WillTransitionsBeValid] Script Date: 10/15/2012 14:37:32 ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_WillTransitionsBeValid]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_WillTransitionsBeValid]; +GO +/* +dbo.vesp_WillTransitionsBeValid 10616,'2' +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2017 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [DBO].[vesp_WillTransitionsBeValid] +( + @ItemID int, + @NewAppl varchar(max) +) +WITH EXECUTE AS OWNER +AS BEGIN + select *, dbo.ve_GetShortPath(@ItemID) SrcStep, dbo.ve_GetShortPath(myitemid) TgtStep + from + ( + select tt.toid MyItemID, dbo.vefn_WillTransitionBeValidFrom(tt.toid,@NewAppl) Valid, @NewAppl SrcAppl, dbo.ve_GetItemDerivedApplicability(tt.toid) TgtAppl + from transitions tt + inner join items ii on tt.fromid = ii.contentid + where fromid in (select contentid from dbo.vefn_childitems(@ItemID)) + union + select ii.itemid MyItemID, dbo.vefn_WillTransitionBeValidTo(ii.itemid,@NewAppl) Valid, dbo.ve_GetItemDerivedApplicability(ii.itemid) SrcAppl, @NewAppl TgtAppl + from transitions tt + inner join items ii on tt.fromid = ii.contentid + where toid in (select itemid from dbo.vefn_childitems(@ItemID)) + ) ah + where Valid = 0 +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_WillTransitionsBeValid Succeeded' +ELSE PRINT 'Procedure Creation: vesp_WillTransitionsBeValid Error on Creation' +GO + +/****** Object: StoredProcedure [dbo].[vefn_NextCount] Script Date: 02/05/2013 11:58:00 ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_NextCount]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) + DROP Function [vefn_NextCount]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +Create FUNCTION [dbo].[vefn_NextCount](@ItemID int) +RETURNS Int +WITH EXECUTE AS OWNER +AS +BEGIN +declare @Count int; +with Itemz([NextCnt], [ItemID], [PreviousID]) as ( + Select 0 [NextCnt], [ItemID], [PreviousID] + FROM [Items] + where [ItemID]=@ItemID +-- Siblings +Union All + select Z.[NextCnt] +1, I.[ItemID], I.[PreviousID] + from Itemz Z + join Items I on I.PreviousID = Z.ItemID +) +Select @Count = Count(*) from Itemz +OPTION (MAXRECURSION 10000) +RETURN @Count +END +GO +IF (@@Error = 0) PRINT 'Function Creation: vefn_NextCount Succeeded' +ELSE PRINT 'Function Creation: vefn_NextCount Error on Creation' +GO +/****** Object: StoredProcedure [vesp_ListItems] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListItems]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_ListItems]; +GO + +--vesp_ListItems 1 + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_ListItems] +( +@ItemID int = 0 +) +WITH EXECUTE AS OWNER +AS +BEGIN +with Itemz(knt, ItemID,PreviousID,ContentID,[DTS],[UserID],[LastChanged]) as ( + Select 0 knt, ItemID,PreviousID,ContentID,[DTS],[UserID],[LastChanged] + from Items + where ItemID=@ItemID + Union All +-- + Select Z.knt + 1,C.ItemID,C.PreviousID,C.ContentID,C.[DTS],C.[UserID],C.[LastChanged] + from Items C + Join Itemz Z on C.PreviousID=Z.ItemID +) +Select ItemID,PreviousID,ContentID,[DTS],[UserID],[LastChanged], + (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[Itemz].[ItemID]) [AnnotationCount], + (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[Itemz].[ItemID]) [DocVersionCount], + (SELECT COUNT(*) FROM [Items] [Children] WHERE [Children].[PreviousID]=[Itemz].[ItemID]) [NextCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[Itemz].[ItemID]) [PartCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[Itemz].[ItemID]) [Transition_RangeIDCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[Itemz].[ItemID]) [Transition_ToIDCount] +from Itemz order by knt +OPTION (MAXRECURSION 10000) +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItems Succeeded' +ELSE PRINT 'Procedure Creation: vesp_ListItems Error on Creation' +GO + +/****** Object: StoredProcedure [vesp_ListItemsAndContent] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListItemsAndContent]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_ListItemsAndContent]; +GO + +--vesp_ListItemsAndContent 1 + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_ListItemsAndContent] +( +@ItemID int = 0 +) +WITH EXECUTE AS OWNER +AS +BEGIN +with Itemz(knt, ItemID,PreviousID,ContentID,[DTS],[UserID],[LastChanged]) as ( + Select 0 knt, ItemID,PreviousID,ContentID,[DTS],[UserID],[LastChanged] + from Items + where ItemID=@ItemID + Union All +-- + Select z.knt + 1, I.ItemID,I.PreviousID,I.ContentID,I.[DTS],I.[UserID],I.[LastChanged] + from Items I + Join Itemz Z on I.PreviousID=Z.ItemID +) +Select I.ItemID,I.PreviousID,I.ContentID,I.[DTS],I.[UserID],I.[LastChanged], + C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], + (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], + (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], + (SELECT COUNT(*) FROM [Items] [Children] WHERE [Children].[PreviousID]=[I].[ItemID]) [NextCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], + (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], + (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], + (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], + (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], + (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], + (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], + (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] +from Itemz I Join Contents C on I.ContentID = C.ContentID Order by knt +OPTION (MAXRECURSION 10000) +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItemsAndContent Succeeded' +ELSE PRINT 'Procedure Creation: vesp_ListItemsAndContent Error on Creation' +GO +/****** Object: StoredProcedure [vesp_SortProcedures] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SortProcedures]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_SortProcedures]; +GO + +/* +select versionid, ff.folderid, ff.name,itemid +from docversions dv +join folders ff on dv.folderid=ff.folderid + +Westinghouse Data +exec vesp_SortProcedures 1 -- Abnormal Procedures +--exec vesp_SortProcedures 4 -- Emergency Operating Procedures - Rev 2 +exec vesp_SortProcedures 5 -- System Operating Procedures +exec vesp_SortProcedures 6 -- Maintenance, Test, Inspection, Surveillance Procedures +--exec vesp_SortProcedures 7 -- Severe Accident Management Guidelines +--exec vesp_SortProcedures 8 -- Emergency Response Guidelines +exec vesp_SortProcedures 9 -- General Operating Procedures +exec vesp_SortProcedures 11 -- Post 72-Hour Procedures 103811 +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2013 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_SortProcedures]( @VersionID int ) +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + DECLARE @TopID int + select @TopID = ItemID from DocVersions where versionID = @VersionID + DECLARE @Procs TABLE + ( + ItemID int PRIMARY KEY, + ProcNum nvarchar(255) + ) + DECLARE @Organize TABLE + ( + ItemID int PRIMARY KEY, + NewPreviousID int + ) + DECLARE @NewTopID as int + INSERT INTO @Procs select ZZ.ItemID, isnull(Replace(CC.Number,'\u8209?','-'),'') + ':' + substring('0000000000000000' + cast(ItemID as varchar(16)), 1+ len( cast(ItemID as varchar(16))), 16) ProcNum from vefn_SiblingItems(@TopID,0) ZZ Join Contents CC on CC.ContentID = ZZ.ContentID + --INSERT INTO @Procs select ZZ.ItemID, isnull(Replace(Replace(CC.Number,'\u8209?','-'),'\','\u9586?'),'') + ':' + substring('0000000000000000' + cast(ItemID as varchar(16)), 1+ len( cast(ItemID as varchar(16))), 16) ProcNum from vefn_SiblingItems(@TopID,0) ZZ Join Contents CC on CC.ContentID = ZZ.ContentID + --select * from @Procs order by ProcNum + cast(ItemID as nvarchar(max)) + select top 1 @NewTopID = ItemID from @Procs order by ProcNum + INSERT INTO @Organize + select ItemID, (select top 1 ItemID from @Procs P2 where P1.ProcNum > P2.ProcNum order by P2.ProcNum DESC ) NewPreviousID + from @Procs P1 order by isnull(ProcNum,'') + cast(ItemID as nvarchar(max)) + --select * from @Organize + Update DocVersions Set ItemID = @NewTopID where versionID = @VersionID + Update II Set II.PreviousID = ZZ.NewPreviousID + from Items II join @Organize ZZ On II.ItemID = ZZ.ItemID + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SortProcedures Succeeded' +ELSE PRINT 'Procedure Creation: vesp_SortProcedures Error on Creation' +GO + +/****** Object: StoredProcedure [vefn_RemoveExtraText] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_RemoveExtraText]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) + DROP FUNCTION [vefn_RemoveExtraText]; +GO + +/* +select text, .dbo.vefn_RemoveExtraText(text,2,0,0) StrippedText from Contents where ContentID=373 +select text, .dbo.vefn_RemoveExtraText(text,1,0,0) StrippedText from Contents where ContentID=373 +select text, .dbo.vefn_RemoveExtraText(text,0,0,0) StrippedText ,.dbo.vefn_FirstLink(text,0), PATINDEX('%[' + nchar(9516) + nchar(9574) + char(21) + ']%' , text) from Contents where ContentID=373 +select .dbo.vefn_RemoveExtraText('\b Bold\b0',0,0,0) +select .dbo.vefn_RemoveExtraText('\b Bold\b0',0,1,0) +select .dbo.vefn_RemoveExtraText('A\u1?B\u12?C\u123?D\u1234?E',0,0,0) +select .dbo.vefn_RemoveExtraText('A\u1?B\u12?C\u123?D\u1234?E',0,0,1) +*/ + + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_RemoveExtraText](@text nvarchar(MAX),@includeLink int, @includeRtfFormatting int , @includeSpecialCharacters int) +RETURNS varchar(MAX) +WITH EXECUTE AS OWNER +AS +BEGIN +DECLARE @index int +DECLARE @index2 int +-- Replace Hard Hyphen with Hyphen +SET @text = replace(@text,'\u8209?','-') +--SET @text = replace(replace(@text,'\u8209?','-'),'\u9586?','\') +-- Replace Hard Space with Space +-- commenting out the bottom two lines will fix the global search for hard space bug (B2014-056) +--SET @text = replace(@text,'\u160?',' ') +--set @text = replace(@text,nchar(160),' ') +-- Strip Links +IF @includeLink = 0 -- Remove Links + SET @text = [dbo].[vefn_RemoveRange](@text,'') +IF @includeLink < 2 -- Remove Comments + SET @text = [dbo].[vefn_RemoveRange](@text,'\v' ,'\v0') +if(@includeRtfFormatting=0) + -- Remove Rtf Formatting + BEGIN + SET @text = Replace(@text, '\b0 ', ''); + SET @text = Replace(@text, '\b ', ''); + SET @text = Replace(@text, '\ulnone ', ''); + SET @text = Replace(@text, '\ul0 ', ''); + SET @text = Replace(@text, '\ul ', ''); + SET @text = Replace(@text, '\i0 ', ''); + SET @text = Replace(@text, '\i ', ''); + SET @text = Replace(@text, '\super ', ''); + SET @text = Replace(@text, '\sub ', ''); + SET @text = Replace(@text, '\nosupersub ', ''); + SET @text = Replace(@text, '\up2 ', ''); + SET @text = Replace(@text, '\up0 ', ''); + SET @text = Replace(@text, '\up3 ', ''); + SET @text = Replace(@text, '\dn2 ', ''); + SET @text = Replace(@text, '\dn3 ', ''); + SET @text = Replace(@text, '\b0', ''); + SET @text = Replace(@text, '\b', ''); + SET @text = Replace(@text, '\ul0', ''); + SET @text = Replace(@text, '\ul', ''); + SET @text = Replace(@text, '\i0', ''); + SET @text = Replace(@text, '\i', ''); + SET @text = Replace(@text, '\super', ''); + SET @text = Replace(@text, '\sub', ''); + SET @text = Replace(@text, '\nosupersub', ''); + SET @text = Replace(@text, '\up2', ''); + SET @text = Replace(@text, '\up0', ''); + SET @text = Replace(@text, '\up3', ''); + SET @text = Replace(@text, '\dn2', ''); + SET @text = Replace(@text, '\dn3', ''); + END +if(@includeSpecialCharacters=0) + -- Remove Special Characters + BEGIN + SET @index = PATINDEX('%\u[0-9]?%',@text) + while(@index != 0) + BEGIN + SET @text = substring(@text,1,@index-1) + substring(@text,@index+4,len(@text)) + SET @index = PATINDEX('%\u[0-9]?%',@text) + END + SET @index = PATINDEX('%\u[0-9][0-9]?%',@text) + while(@index != 0) + BEGIN + SET @text = substring(@text,1,@index-1) + substring(@text,@index+5,len(@text)) + SET @index = PATINDEX('%\u[0-9][0-9]?%',@text) + END + SET @index = PATINDEX('%\u[0-9][0-9][0-9]?%',@text) + while(@index != 0) + BEGIN + SET @text = substring(@text,1,@index-1) + substring(@text,@index+6,len(@text)) + SET @index = PATINDEX('%\u[0-9][0-9][0-9]?%',@text) + END + SET @index = PATINDEX('%\u[0-9][0-9][0-9][0-9]?%',@text) + while(@index != 0) + BEGIN + SET @text = substring(@text,1,@index-1) + substring(@text,@index+7,len(@text)) + SET @index = PATINDEX('%\u[0-9][0-9][0-9][0-9]?%',@text) + END + SET @index = PATINDEX('%\''[0-9A-Fa-f][0-9A-Fa-f]%',@text) + while(@index != 0) + BEGIN + SET @text = substring(@text,1,@index-1) + substring(@text,@index+4,len(@text)) + SET @index = PATINDEX('%\''[0-9A-Fa-f][0-9A-Fa-f]%',@text) + END + + END + -- Replace Hyphen with Hard Hyphen +SET @text = replace(@text,'-','\u8209?') +--SET @text = replace(replace(@text,'-','\u8209?'),'\','\u9586?') + +RETURN @text +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_RemoveExtraText Succeeded' +ELSE PRINT 'ScalarFunction Creation: vefn_RemoveExtraText Error on Creation' +GO + + +/****** Object: Table Function [vefn_FindSpecialChars] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindSpecialChars]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_FindSpecialChars]; +GO + +/* + +select * from vefn_FindSpecialChars('\u160?\ulnone \u8209?') + +select MIN(ContentID) MinContentID,Count(*) HowMany,UChar SpecialChar from Contents +cross apply vefn_FindSpecialChars(text) SC +where text like '%\u[0-9]%' +group by UChar + +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2013 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_FindSpecialChars](@text varchar(MAX)) +RETURNS @SpecialChars TABLE +( + uchar varchar(10) +) +WITH EXECUTE AS OWNER +AS +BEGIN + DECLARE @index1 int + DECLARE @index2 int + SET @index1 = -1 + SET @index1 = PATINDEX('%\u[0-9]%' , @text) + WHILE (@index1 > 0) + BEGIN + SET @index2 = CHARINDEX('?' , @text, @index1 + 3) + if @index2 > 0 + BEGIN + INSERT INTO @SpecialChars VALUES (substring(@text,@index1,1 + @index2-@index1)) + SET @Text = substring(@text,@index2 + 1,len(@text)) + END + SET @index1 = PATINDEX('%\u[0-9]%' , @text) + END + RETURN +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindSpecialChars Succeeded' +ELSE PRINT 'TableFunction Creation: vefn_FindSpecialChars Error on Creation' +GO + +/****** Object: Table Function [vefn_FindSpecialChars2] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindSpecialChars2]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_FindSpecialChars2]; +GO + +/* + +select * from vefn_FindSpecialChars2(nchar(255) + nchar(8209) + nchar(160)) + +select MIN(ContentID) MinContentID,Count(*) HowMany,UChar SpecialChar from Contents +cross apply vefn_FindSpecialChars2(text) SC +group by UChar + +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_FindSpecialChars2](@text nvarchar(MAX)) +RETURNS @SpecialChars TABLE +( + uchar int +) +WITH EXECUTE AS OWNER +AS +BEGIN + WHILE (len(@text) > 0) + BEGIN + if(unicode(@text) > 127) + INSERT INTO @SpecialChars VALUES (unicode(@text)) + SET @Text = substring(@text,2,len(@text)) + END + RETURN +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindSpecialChars2 Succeeded' +ELSE PRINT 'TableFunction Creation: vefn_FindSpecialChars2 Error on Creation' +GO +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[MoveItem]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [MoveItem]; +GO +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2013 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[MoveItem](@ItemID int, @Index int) +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + DECLARE @ItemsChanged TABLE + ( + ItemID int Primary Key + ) + DECLARE @Siblings TABLE + ( + ItemID int PRIMARY KEY, + Ordinal int + ) + DECLARE @OldPreviousID int + SELECT @OldPreviousID = PreviousID FROM [Items] where ItemID = @ItemID + DECLARE @OldNextID int + SELECT @OldNextID = ItemID FROM [Items] where PreviousID = @ItemID + insert into @Siblings select * from vefn_AllSiblingItems(@ItemID) + DECLARE @NewNextID int + SELECT @NewNextID = ItemID from @Siblings where Ordinal = @index + DECLARE @NewPreviousID int + SELECT @NewPreviousID = ItemID from @Siblings where Ordinal = @index -1 + --PRINT '****************************************************************' + --PRINT '@ItemID = ' + isnull(Cast( @ItemID as varchar(20)),'{null}') + --PRINT '@OldPreviousID = ' + isnull(Cast( @OldPreviousID as varchar(20)),'{null}') + --PRINT '@OldNextID = ' + isnull(Cast( @OldNextID as varchar(20)),'{null}') + --PRINT '@NewPreviousID = ' + isnull(Cast( @NewPreviousID as varchar(20)),'{null}') + --PRINT '@NewNextID = ' + isnull(Cast( @NewNextID as varchar(20)),'{null}') + Update Items set PreviousID = @NewPreviousID where ItemID = @ItemID + Insert INTO @ItemsChanged Select @ItemID + IF @OldNextID is not Null + BEGIN + Update Items set PreviousID = @OldPreviousID where ItemID = @OldNextID + Insert INTO @ItemsChanged Select @OldNextID + END + IF @NewNextID is not Null + BEGIN + Update Items set PreviousID = @ItemID where ItemID = @NewNextID + Insert INTO @ItemsChanged Select @NewNextID + END + IF @OldPreviousID is null + BEGIN + Update Parts set ItemID = @OldNextID where ItemID = @ItemID + Update DocVersions set ItemID = @OldNextID where ItemID = @ItemID + END + IF @NewPreviousID is null + BEGIN + Update Parts set ItemID = @ItemID where ItemID = @NewNextID + Update DocVersions set ItemID = @ItemID where ItemID = @NewNextID + END + SELECT + ii.[ItemID], + [PreviousID], + ii.[ContentID], + ii.[DTS], + ii.[UserID], + ii.[LastChanged], + (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=ii.[ItemID]) [AnnotationCount], + (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=ii.[ItemID]) [DocVersionCount], + (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=ii.[ItemID]) [NextCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=ii.[ItemID]) [PartCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=ii.[ItemID]) [Transition_RangeIDCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=ii.[ItemID]) [Transition_ToIDCount] + FROM [Items] ii + WHERE ItemID in (Select ItemID from @ItemsChanged) + IF( @@TRANCOUNT > 0 ) + BEGIN + PRINT 'COMMIT' + COMMIT + END +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) + BEGIN + PRINT 'ROLLBACK' + ROLLBACK -- Only rollback if top level + END + ELSE IF( @@TRANCOUNT > 1 ) + BEGIN + PRINT 'COMMIT' + COMMIT -- Otherwise commit. Top level will rollback + END + EXEC vlnErrorHandler +END CATCH +GO +IF (@@Error = 0) PRINT 'Procedure Creation: MoveItem Succeeded' +ELSE PRINT 'Procedure Creation: MoveItem Error on Creation' +GO +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_AllSiblingItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_AllSiblingItems]; +GO +/* +DECLARE @ItemID int +select @ItemID = ItemID from DocVersions where VersionID = 1 +Select * from vefn_AllSiblingItems(@ItemID) order by Ordinal +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2013 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_AllSiblingItems](@ItemID int) +RETURNS @Siblings TABLE +( + ItemID int, + Ordinal int +) +WITH EXECUTE AS OWNER +AS +BEGIN +with Itemz([ItemID], [PreviousID], [Ordinal]) as ( + Select [ItemID], [PreviousID], case when [PreviousID] is null then 0 else -1 end + FROM [Items] + where [ItemID]=@ItemID +-- Previous Siblings +Union All + select I.[ItemID], I.[PreviousID] ,case when I.[PreviousID] is null then 0 else Z.[Ordinal] -1 end + from Itemz Z + join Items I on I.ItemID = Z.PreviousID + where Z.Ordinal < 0 +-- Next Siblings +Union All + select I.[ItemID], I.[PreviousID] ,Z.[Ordinal] +1 + from Itemz Z + join Items I on I.PreviousID = Z.ItemID + where Z.Ordinal >= 0 +) +insert into @Siblings select ItemID, Ordinal from Itemz Where Ordinal >= 0 +OPTION (MAXRECURSION 10000) +RETURN +END + +GO +IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_AllSiblingItems Succeeded' +ELSE PRINT 'TableFunction Creation: vefn_AllSiblingItems Error on Creation' +GO +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_JustSiblingItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_JustSiblingItems]; +GO +/* +DECLARE @ItemID int +select @ItemID = ItemID from DocVersions where VersionID = 1 +Select * from vefn_JustSiblingItems(@ItemID) order by Ordinal + +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_JustSiblingItems](@FirstItemID int) +RETURNS @Siblings TABLE +( + ItemID int PRIMARY KEY, + Ordinal int +) +WITH EXECUTE AS OWNER +AS +BEGIN +with Itemz([ItemID],[Ordinal]) as ( + Select [ItemID],0 + FROM [Items] + where [ItemID]=@FirstItemID +-- Siblings +Union All + select I.[ItemID],Z.[Ordinal] +1 + from Itemz Z + join Items I on I.PreviousID = Z.ItemID +) +insert into @Siblings select ItemID, Ordinal from Itemz +OPTION (MAXRECURSION 10000) +RETURN +END +GO +IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_JustSiblingItems Succeeded' +ELSE PRINT 'TableFunction Creation: vefn_JustSiblingItems Error on Creation' +GO + +/****** Object: StoredProcedure [vesp_ResetFolderManualOrder] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ResetFolderManualOrder]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_ResetFolderManualOrder]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_ResetFolderManualOrder] +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION +update fld + set Fld.ManualOrder =Fld.MyRow +from (Select ROW_NUMBER() OVER(Partition by ParentID Order BY FolderID) MyRow,* from folders ) fld + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ResetFolderManualOrder Succeeded' +ELSE PRINT 'Procedure Creation: vesp_ResetFolderManualOrder Error on Creation' +GO + +/****** Object: StoredProcedure [vesp_ResetFolderManualOrderAlphabetical] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ResetFolderManualOrderAlphabetical]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_ResetFolderManualOrderAlphabetical]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_ResetFolderManualOrderAlphabetical] +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION +update fld + set Fld.ManualOrder =Fld.MyRow +from (Select case when FolderID <> ParentID then ROW_NUMBER() OVER(Partition by ParentID Order BY Name) else 0 end MyRow,* from folders) fld + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ResetFolderManualOrderAlphabetical Succeeded' +ELSE PRINT 'Procedure Creation: vesp_ResetFolderManualOrderAlphabetical Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[tr_Documents_Delete]') AND OBJECTPROPERTY(id,N'IsTrigger') = 1) + DROP TRIGGER [tr_Documents_Delete]; + + /****** Object: Trigger [dbo].[tr_Documents_Delete] Script Date: 03/28/2013 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +/****** Object: Trigger [tr_Documents_Delete] ******/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2013 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE trigger [dbo].[tr_Documents_Delete] on [dbo].[Documents] instead of delete as + begin + update ii set DeleteStatus = Isnull((select max(DeleteID) from DeleteLog where SPID = @@spid),-1), DTS = getdate(), + UserID = IsNull((select top 1 UserID from DeleteLog where SPID = @@spid order by deleteid desc),ii.UserID) + from tblDocuments ii inner join deleted dd on dd.DocID = ii.DocID + insert into DocumentAudits(DocID,LibTitle,DocContent,DocAscii,Config,DTS,UserID,FileExtension,DeleteStatus) + select ii.DocID,ii.LibTitle,ii.DocContent,ii.DocAscii,ii.Config,ii.DTS,ii.UserID,ii.FileExtension,ii.DeleteStatus + from tblDocuments ii inner join deleted dd on dd.DocID = ii.DocID + where ii.DeleteStatus != 0 + end +GO +-- Display the status of Trigger alter +IF (@@Error = 0) PRINT 'Trigger alteration: tr_Documents_Delete Succeeded' +ELSE PRINT 'Trigger alteration: tr_Documents_Delete Error on Alteration' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetVersionItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_GetVersionItems]; +GO +/****** Object: UserDefinedFunction [dbo].[vefn_GetVersionItems] ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +/* +Select * from vefn_GetVersionItems('') +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2013 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_GetVersionItems](@DocVersionList varchar(MAX)) +RETURNS @VersionItems TABLE +( + VersionID int, + ItemID int, + ContentID int primary key +) +WITH EXECUTE AS OWNER +AS +BEGIN + BEGIN + with Itemz([VersionID], [ItemID], [ContentID]) as + (Select DV.VersionID, [I].[ItemID], [I].[ContentID] + FROM [Items] I + JOIN vefn_DocVersionSplit(@DocVersionList) DV + ON I.[ItemID] = DV.[ItemID] + Union All + -- Children + select Z.VersionID, I.[ItemID], I.[ContentID] + from Itemz Z + join Parts P on P.ContentID = Z.ContentID + join Items I on I.ItemID = P.ItemID + Union All + -- Siblings + select Z.VersionID, I.[ItemID], I.[ContentID] + from Itemz Z + join Items I on I.PreviousID = Z.ItemID + ) + insert into @VersionItems + select VersionID, [ItemID], [ContentID] + from ItemZ I + --Select * From rousages RU Where RU.ContentID in (Select ContentID from ItemZ) + OPTION (MAXRECURSION 10000) + END +RETURN +END + +go +IF (@@Error = 0) PRINT 'TableFunction [vefn_GetVersionItems] Succeeded' +ELSE PRINT 'TableFunction [vefn_GetVersionItems] Error on Creation' + +/****** Object: StoredProcedure [getAffectedRoUsages] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAffectedRoUsages]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getAffectedRoUsages]; +GO + +/* +getAffectedROUsages 1, '00010000019c0000', 'KBR Test', 'Changed', 'KBR' +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getAffectedRoUsages] +( + @RODbID int, + @ROID nvarchar(16), + @RODesc nvarchar(MAX), + @Command nvarchar(10), + @UserID nvarchar(100), + @VersionList nvarchar(MAX) +) +WITH EXECUTE AS OWNER +AS + BEGIN + DECLARE @JustThisVersion TABLE + ( + ContentID int primary key + ) + Insert INTO @JustThisVersion + SELECT Distinct ContentID From vefn_GetVersionItems(@VersionList) + DECLARE @typeID int + SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' + -- Add "Verification Required" Annotation for each ROUsage + INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) + SELECT ItemID, @typeID,'Referenced Object (' + @RODesc + ') ' + @Command,@UserID + FROM Items where CONTENTID in (SELECT ContentID FROM ROUSAGES + where RODbID = @RODbID AND ROID = @ROID AND ContentID in (select ContentID from @JustThisVersion)) + SELECT + [RoUsages].[ROUsageID], + [RoUsages].[ContentID], + [RoUsages].[ROID], + [RoUsages].[Config], + [RoUsages].[DTS], + [RoUsages].[UserID], + [RoUsages].[LastChanged], + [RoUsages].[RODbID], + [Contents].[Number] [Content_Number], + [Contents].[Text] [Content_Text], + [Contents].[Type] [Content_Type], + [Contents].[FormatID] [Content_FormatID], + [Contents].[Config] [Content_Config], + [Contents].[DTS] [Content_DTS], + [Contents].[UserID] [Content_UserID] + FROM [RoUsages] + JOIN [Contents] ON + [Contents].[ContentID]=[RoUsages].[ContentID] + WHERE + [RoUsages].[RODbID]=@RODbID AND [RoUsages].[ROID]=@ROID + AND [Contents].ContentID in (select ContentID from @JustThisVersion) +END +RETURN + +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getAffectedRoUsages Succeeded' +ELSE PRINT 'Procedure Creation: getAffectedRoUsages Error on Creation' +GO + +/****** Object: StoredProcedure [getAffectedDRoUsages] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAffectedDRoUsages]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getAffectedDRoUsages]; +GO + +/* +getAffectedDROUsages 1, '00010000019c0000', 'KBR Test', 'Changed', 'KBR','' +getAffectedDROUsages 1, '000300003D8E', 'KBR Test', 'Changed', 'KBR','' + +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getAffectedDRoUsages] +( + @RODbID int, + @ROID nvarchar(16), + @RODesc nvarchar(MAX), + @Command nvarchar(10), + @UserID nvarchar(100), + @VersionList nvarchar(max) +) +WITH EXECUTE AS OWNER +AS + BEGIN + DECLARE @JustThisVersion TABLE + ( + ContentID int primary key + ) + Insert INTO @JustThisVersion + SELECT Distinct ContentID From vefn_GetVersionItems(@VersionList) + DECLARE @typeID int + SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' + DECLARE @DRoUsages TABLE + ( + DRoUsageID int primary key + ) + Insert INTO @DRoUsages + select DRoUsageID from DRoUsages where ROID like substring(@ROID,1,12) + '%' AND dbo.vefn_CompareROIDS(ROID,@ROID) > 0 + + -- Add "Verification Required" Annotation for each ROUsage + INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) + SELECT ItemID, @typeID,'Referenced Object (' + @RODesc + ') ' + @Command,@UserID + FROM Items where CONTENTID in (SELECT ContentID + FROM (select dr.* from DRoUsages dr join @DRoUsages dd on dr.DRoUsageid = dd.DRoUsageid) DR + JOIN Entries EE on EE.DocID = DR.DocID + where RODbID = @RODbID AND ContentID in (select ContentID from @JustThisVersion)) + SELECT + [DROUsages].[DROUsageID], + [DROUsages].[DocID], + [DROUsages].[ROID], + [DROUsages].[Config], + [DROUsages].[DTS], + [DROUsages].[UserID], + [DROUsages].[LastChanged], + [DROUsages].[RODbID], + [Documents].[LibTitle] [Document_LibTitle], + [Documents].[DocContent] [Document_DocContent], + [Documents].[DocAscii] [Document_DocAscii], + [Documents].[Config] [Document_Config], + [Documents].[DTS] [Document_DTS], + [Documents].[UserID] [Document_UserID], + [Documents].[FileExtension] [Document_FileExtension] + FROM [DRoUsages] + JOIN [Documents] ON + [Documents].[DocID]=[DROUsages].[DocID] + WHERE + [DRoUsages].[DRoUsageID] in (select DRoUsageid from @DRoUsages) + AND [Documents].[DocID] in (select EE.DocID from Entries EE where ContentID in (select ContentID from @JustThisVersion)) + RETURN + END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getAffectedDRoUsages Succeeded' +ELSE PRINT 'Procedure Creation: getAffectedDRoUsages Error on Creation' +GO + +/****** Object: StoredProcedure [deleteAnnotationType] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteAnnotationType]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [deleteAnnotationType]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[deleteAnnotationType] + +( + @TypeID int +) +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + DELETE [tblAnnotations] + WHERE [TypeID]=@TypeID + DELETE [AnnotationTypes] + WHERE [TypeID] = @TypeID + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: deleteAnnotationType Succeeded' +ELSE PRINT 'Procedure Creation: deleteAnnotationType Error on Creation' +GO + +/****** Object: StoredProcedure [getJustFormat] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getJustFormat]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getJustFormat]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getJustFormat] + +( + @FormatID int +) +WITH EXECUTE AS OWNER +AS + SELECT + [FormatID], + [ParentID], + [Name], + [Description], + [Data], + [GenMac], + [DTS], + [UserID], + [LastChanged], + (SELECT COUNT(*) FROM [Contents] WHERE [Contents].[FormatID]=[Formats].[FormatID]) [ContentCount], + (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[FormatID]=[Formats].[FormatID]) [DocVersionCount], + (SELECT COUNT(*) FROM [Folders] WHERE [Folders].[FormatID]=[Formats].[FormatID]) [FolderCount], + (SELECT COUNT(*) FROM [Formats] [Children] WHERE [Children].[ParentID]=[Formats].[FormatID]) [ChildCount] + FROM [Formats] + WHERE [FormatID]=@FormatID + + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getJustFormat Succeeded' +ELSE PRINT 'Procedure Creation: getJustFormat Error on Creation' +GO + +/****** Object: StoredProcedure [vesp_TurnChangeManagerOFF] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_TurnChangeManagerOFF]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_TurnChangeManagerOFF]; +GO +/****** Object: StoredProcedure [dbo].[vesp_TurnChangeManagerOFF] Script Date: 03/20/2012 16:02:54 ******/ +/* +exec vesp_TurnChangeManagerOFF +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_TurnChangeManagerOFF] WITH EXECUTE AS OWNER AS +BEGIN + DECLARE @cmd VARCHAR(MAX) + SET @cmd = 'DISABLE TRIGGER tr_Annotations_Delete ON Annotations' + EXEC (@cmd) + SET @cmd = 'DISABLE TRIGGER tr_Contents_Delete ON Contents' + EXEC (@cmd) + SET @cmd = 'DISABLE TRIGGER tr_Documents_Delete ON Documents' + EXEC (@cmd) + SET @cmd = 'DISABLE TRIGGER tr_Entries_Delete ON Entries' + EXEC (@cmd) + SET @cmd = 'DISABLE TRIGGER tr_GridAudits_insert ON GridAudits' + EXEC (@cmd) + SET @cmd = 'DISABLE TRIGGER tr_Grids_Delete ON Grids' + EXEC (@cmd) + SET @cmd = 'DISABLE TRIGGER tr_Images_Delete ON Images' + EXEC (@cmd) + SET @cmd = 'DISABLE TRIGGER tr_Items_Delete ON Items' + EXEC (@cmd) + SET @cmd = 'DISABLE TRIGGER tr_Parts_Delete ON Parts' + EXEC (@cmd) + SET @cmd = 'DISABLE TRIGGER tr_ROUsages_Delete ON ROUsages' + EXEC (@cmd) + SET @cmd = 'DISABLE TRIGGER tr_tblAnnotations_Update ON tblAnnotations' + EXEC (@cmd) + SET @cmd = 'DISABLE TRIGGER tr_tblContents_Update ON tblContents' + EXEC (@cmd) + SET @cmd = 'DISABLE TRIGGER tr_tblDocuments_Update ON tblDocuments' + EXEC (@cmd) + SET @cmd = 'DISABLE TRIGGER tr_tblEntries_Update ON tblEntries' + EXEC (@cmd) + SET @cmd = 'DISABLE TRIGGER tr_tblGrids_Update ON tblGrids' + EXEC (@cmd) + SET @cmd = 'DISABLE TRIGGER tr_tblImages_Update ON tblImages' + EXEC (@cmd) + SET @cmd = 'DISABLE TRIGGER tr_tblItems_Update ON tblItems' + EXEC (@cmd) + SET @cmd = 'DISABLE TRIGGER tr_tblParts_Update ON tblParts' + EXEC (@cmd) + SET @cmd = 'DISABLE TRIGGER tr_tblROUsages_Update ON tblROUsages' + EXEC (@cmd) + SET @cmd = 'DISABLE TRIGGER tr_tblTransitions_Update ON tblTransitions' + EXEC (@cmd) + SET @cmd = 'DISABLE TRIGGER tr_Transitions_Delete ON Transitions' + EXEC (@cmd) + PRINT '***** Change Manager has been turned OFF *****' +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_TurnChangeManagerOFF Succeeded' +ELSE PRINT 'Procedure Creation: vesp_TurnChangeManagerOFF Error on Creation' +GO + +/****** Object: StoredProcedure [vesp_TurnChangeManagerON] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_TurnChangeManagerON]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_TurnChangeManagerON]; +GO +/****** Object: StoredProcedure [dbo].[vesp_TurnChangeManagerON] Script Date: 03/20/2012 16:02:54 ******/ +/* +exec vesp_TurnChangeManagerON +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_TurnChangeManagerON] WITH EXECUTE AS OWNER AS +BEGIN + DECLARE @cmd VARCHAR(MAX) + SET @cmd = 'ENABLE TRIGGER tr_Annotations_Delete ON Annotations' + EXEC (@cmd) + SET @cmd = 'ENABLE TRIGGER tr_Contents_Delete ON Contents' + EXEC (@cmd) + SET @cmd = 'ENABLE TRIGGER tr_Documents_Delete ON Documents' + EXEC (@cmd) + SET @cmd = 'ENABLE TRIGGER tr_Entries_Delete ON Entries' + EXEC (@cmd) + SET @cmd = 'ENABLE TRIGGER tr_GridAudits_insert ON GridAudits' + EXEC (@cmd) + SET @cmd = 'ENABLE TRIGGER tr_Grids_Delete ON Grids' + EXEC (@cmd) + SET @cmd = 'ENABLE TRIGGER tr_Images_Delete ON Images' + EXEC (@cmd) + SET @cmd = 'ENABLE TRIGGER tr_Items_Delete ON Items' + EXEC (@cmd) + SET @cmd = 'ENABLE TRIGGER tr_Parts_Delete ON Parts' + EXEC (@cmd) + SET @cmd = 'ENABLE TRIGGER tr_ROUsages_Delete ON ROUsages' + EXEC (@cmd) + SET @cmd = 'ENABLE TRIGGER tr_tblAnnotations_Update ON tblAnnotations' + EXEC (@cmd) + SET @cmd = 'ENABLE TRIGGER tr_tblContents_Update ON tblContents' + EXEC (@cmd) + SET @cmd = 'ENABLE TRIGGER tr_tblDocuments_Update ON tblDocuments' + EXEC (@cmd) + SET @cmd = 'ENABLE TRIGGER tr_tblEntries_Update ON tblEntries' + EXEC (@cmd) + SET @cmd = 'ENABLE TRIGGER tr_tblGrids_Update ON tblGrids' + EXEC (@cmd) + SET @cmd = 'ENABLE TRIGGER tr_tblImages_Update ON tblImages' + EXEC (@cmd) + SET @cmd = 'ENABLE TRIGGER tr_tblItems_Update ON tblItems' + EXEC (@cmd) + SET @cmd = 'ENABLE TRIGGER tr_tblParts_Update ON tblParts' + EXEC (@cmd) + SET @cmd = 'ENABLE TRIGGER tr_tblROUsages_Update ON tblROUsages' + EXEC (@cmd) + SET @cmd = 'ENABLE TRIGGER tr_tblTransitions_Update ON tblTransitions' + EXEC (@cmd) + SET @cmd = 'ENABLE TRIGGER tr_Transitions_Delete ON Transitions' + EXEC (@cmd) + PRINT '***** Change Manager has been turned ON *****' +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_TurnChangeManagerON Succeeded' +ELSE PRINT 'Procedure Creation: vesp_TurnChangeManagerON Error on Creation' +GO +/****** Object: TableFunction [vefn_FindROUsageIDs] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindROUsageIDs]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_FindROUsageIDs]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_FindROUsageIDs](@ContentAuditID int) +RETURNS @IDs TABLE +( + ROUsageID int PRIMARY KEY, + ROUsageAction char(3) +) +WITH EXECUTE AS OWNER +AS +BEGIN + + DECLARE @ContentID int + DECLARE @text varchar(max) + SELECT @ContentID = ContentID,@text = Text FROM ContentAudits WHERE AuditID = @ContentAuditID + DECLARE @index1 int + DECLARE @index2 int + DECLARE @tid varchar(max) + DECLARE @trid int + WHILE (LEN(@text) > 0) + BEGIN + SET @index1 = CHARINDEX('#Link:ReferencedObject' , @text) + IF (@index1 > 0) + BEGIN + SET @text = RIGHT(@text, (LEN(@text) - (22 + @index1))) + SET @index1 = CHARINDEX(' ', @text) + SET @tid = LTRIM(LEFT(@text, @index1)) + SET @trid = CAST(@tid AS INT) + IF EXISTS (SELECT ROUsageID FROM tblROUsages WHERE ROUsageID = @trid AND DeleteStatus < 0) + INSERT INTO @IDs VALUES (@trid, 'ADD') + ELSE + INSERT INTO @IDs VALUES (@trid, NULL) + END + ELSE + SET @text = '' + END + INSERT INTO @IDs SELECT tt.ROUsageID,'DEL' FROM tblROUsages tt LEFT JOIN @IDs ti ON tt.ROUsageID = ti.ROUsageID WHERE tt.ContentID = @ContentID + AND ti.ROUsageID IS NULL + DELETE FROM @IDs WHERE ROUsageAction IS NULL + RETURN +END +GO +-- Display the status of func creation +IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindROUsageIDs Succeeded' +ELSE PRINT 'TableFunction Creation: vefn_FindROUsageIDs Error on Creation' +GO +/****** Object: TableFunction [vefn_GetVersionFormatItems] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetVersionFormatItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_GetVersionFormatItems]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_GetVersionFormatItems](@DocVersionList varchar(MAX)) +RETURNS @VersionItems TABLE +( + VersionID int, + ItemID int, + ContentID int primary key, + FormatID int +) +WITH EXECUTE AS OWNER +AS +BEGIN + BEGIN + with Itemz([VersionID], [ItemID], [ContentID], [FormatID], [ParentFormatID]) as + (Select DV.VersionID, [I].[ItemID], [I].[ContentID], + isnull(C.[FormatID],isnull(DV2.[FormatID],isnull(F.[FormatID],P.[FormatID]))), + isnull(DV2.[FormatID],isnull(F.[FormatID],P.[FormatID])) + FROM [Items] I + JOIN vefn_DocVersionSplit(@DocVersionList) DV ON I.[ItemID] = DV.[ItemID] + join docversions DV2 on DV.[VersionID] = DV2.[VersionID] + join folders F on DV2.[FolderID] = F.[FolderID] + join folders P on P.[FolderID] = F.[ParentID] + join Contents C on I.ContentID = C.ContentID + + Union All + -- Children + select Z.VersionID, I.[ItemID], I.[ContentID], isnull(C.[FormatID],Z.[FormatID]), Z.[FormatID] + from Itemz Z + join Parts P on P.ContentID = Z.ContentID + join Items I on I.ItemID = P.ItemID + join Contents C on I.ContentID = C.ContentID + Union All + -- Siblings + select Z.VersionID, I.[ItemID], I.[ContentID], isnull(C.[FormatID],Z.[ParentFormatID]), Z.[ParentFormatID] + from Itemz Z + join Items I on I.PreviousID = Z.ItemID + join Contents C on I.ContentID = C.ContentID + ) + insert into @VersionItems + select VersionID, [ItemID], [ContentID], [FormatID] + from ItemZ I + --Select * From rousages RU Where RU.ContentID in (Select ContentID from ItemZ) + OPTION (MAXRECURSION 10000) + END +RETURN +END +GO +-- Display the status of func creation +IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_GetVersionFormatItems Succeeded' +ELSE PRINT 'TableFunction Creation: vefn_GetVersionFormatItems Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getDRoUsagesByROIDsAndVersions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getDRoUsagesByROIDsAndVersions]; +GO +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getDRoUsagesByROIDsAndVersions] +( + @ROIDs nvarchar(MAX), + @Versions nvarchar(MAX) +) +WITH EXECUTE AS OWNER +AS + SELECT + [DROUsages].[DROUsageID], + [DROUsages].[DocID], + [DROUsages].[ROID], + [DROUsages].[Config], + [DROUsages].[DTS], + [DROUsages].[UserID], + [DROUsages].[LastChanged], + [DROUsages].[RODbID], + [Documents].[LibTitle] [Document_LibTitle], + [Documents].[DocContent] [Document_DocContent], + [Documents].[DocAscii] [Document_DocAscii], + [Documents].[Config] [Document_Config], + [Documents].[DTS] [Document_DTS], + [Documents].[UserID] [Document_UserID], + [Documents].[FileExtension] [Document_FileExtension] + FROM [DRoUsages] + JOIN vefn_SplitROSearch(@ROIDs) SS + ON [DRoUsages].RODBID = SS.[RODBID] and [DRoUsages].[ROID] like SS.[ROID] + '%' + JOIN [Documents] ON + [Documents].[DocID]=[DROUsages].[DocID] + Where [Documents].[DocID] in + (Select Distinct [DocID] from [ENTRIES] + JOIN [VEFN_GetVersionItems](@Versions) VV ON [Entries].ContentID = VV.ContentID) + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getDRoUsagesByROIDsAndVersions Succeeded' +ELSE PRINT 'Procedure Creation: getDRoUsagesByROIDsAndVersions Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getRoUsagesByROIDsAndVersions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getRoUsagesByROIDsAndVersions]; +GO + +CREATE PROCEDURE [dbo].[getRoUsagesByROIDsAndVersions] +( + @ROIDs nvarchar(MAX), + @Versions nvarchar(MAX) +) +WITH EXECUTE AS OWNER +AS + SELECT + [RoUsages].[ROUsageID], + [RoUsages].[ContentID], + [RoUsages].[ROID], + [RoUsages].[Config], + [RoUsages].[DTS], + [RoUsages].[UserID], + [RoUsages].[LastChanged], + [RoUsages].[RODbID], + [Contents].[Number] [Content_Number], + [Contents].[Text] [Content_Text], + [Contents].[Type] [Content_Type], + [Contents].[FormatID] [Content_FormatID], + [Contents].[Config] [Content_Config], + [Contents].[DTS] [Content_DTS], + [Contents].[UserID] [Content_UserID] + FROM [RoUsages] + JOIN vefn_SplitROSearch(@ROIDs) SS + ON [RoUsages].RODBID = SS.[RODBID] and [RoUsages].[ROID] like SS.[ROID] + '%' + JOIN [Contents] ON + [Contents].[ContentID]=[RoUsages].[ContentID] + JOIN [VEFN_GetVersionItems](@Versions) VV ON [Contents].ContentID = VV.ContentID + RETURN +GO + +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getRoUsagesByROIDsAndVersions Succeeded' +ELSE PRINT 'Procedure Creation: getRoUsagesByROIDsAndVersions Error on Creation' +GO + +/****** Object: TableFunction [vefn_GetROTokens] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetROTokens]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_GetROTokens]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2013 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ + +CREATE FUNCTION [dbo].[vefn_GetROTokens](@text varchar(MAX)) +RETURNS @Tokens TABLE +( + Token varchar(MAX) +) +WITH EXECUTE AS OWNER +AS +BEGIN +DECLARE @index int +SET @index = -1 +DECLARE @indexb int +DECLARE @indexc int +DECLARE @indexd int +DECLARE @indexNext int +DECLARE @indexReturn int +WHILE (LEN(@text) > 0) + BEGIN + SET @index = PATINDEX('%<[A-Z]-%' , @text) + SET @indexb = PATINDEX('%<[A-Z][A-Z0-9]-%' , @text) + if((@index=0 and @indexb>0) or (@indexb > 0 and @index > @indexb)) + SET @index = @indexb + SET @indexc = PATINDEX('%<[A-Z][A-Z][A-Z0-9]-%' , @text) + if((@index=0 and @indexc>0) or (@indexc > 0 and @index > @indexc)) + SET @index = @indexc + SET @indexd = PATINDEX('%<[A-Z][A-Z][A-Z][A-Z0-9]-%' , @text) + if((@index=0 and @indexd>0) or (@indexd > 0 and @index > @indexd)) + SET @index = @indexd + IF @index = 0 + BREAK + SET @indexNext = @index + CHARINDEX('<' , substring(@text,@index+1,len(@text))) + IF @IndexNext=@index + SET @IndexNext = len(@text)+ 3 + SET @indexReturn = @index + CHARINDEX(char(13) , substring(@text,@index+1,len(@text))) + IF @IndexReturn=@index + SET @IndexReturn = len(@text)+3 + DECLARE @index2 int + SET @index2 = @index + CHARINDEX('>' , substring(@text,@index,len(@text))) + if @index2 = @index + BREAK + if(@index2 > @indexNext or @index2 > @indexReturn) + SET @text = RIGHT(@text, (LEN(@text) - @index)) + else + BEGIN + INSERT INTO @Tokens VALUES (substring(@text, @index,@index2-@index)) + if(len(@text) > @index2) + SET @text = substring(@text, @index2 , len(@text)) + else + SET @Text = '' + END + END + RETURN +END +GO +-- Display the status of func creation +IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_GetROTokens Succeeded' +ELSE PRINT 'TableFunction Creation: vefn_GetROTokens Error on Creation' +GO + +/****** Object: TableFunction [vefn_GetVersionNames] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetVersionNames]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_GetVersionNames]; +GO + +-- +-- select * from vefn_GetVersionNames() +-- + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2013 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ + +CREATE FUNCTION [dbo].[vefn_GetVersionNames]() +RETURNS @Versions TABLE +( + VersionID int primary Key, + GrandParentName nvarchar(100), + ParentName nvarchar(100), + FolderName nvarchar(100) +) +WITH EXECUTE AS OWNER +AS +BEGIN + INSERT INTO @Versions + select versionid,gf.name GrandParentName, pf.name ParentName, ff.name FolderName + from docversions dv + Join folders ff on ff.FolderID = DV.FolderID + Join folders pf on pf.FolderID = ff.parentID + Join folders gf on gf.FolderID = pf.parentid + RETURN +END +GO +-- Display the status of func creation +IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_GetVersionNames Succeeded' +ELSE PRINT 'TableFunction Creation: vefn_GetVersionNames Error on Creation' +GO + + + + +-- =========================================== End of Functions and Procedures + +-- Turn off Auto Close and Auto Shrink +declare @CMD varchar(max) +set @CMD = 'ALTER DATABASE [' + db_name() +'] SET AUTO_CLOSE OFF' +exec(@CMD) +GO +declare @CMD varchar(max) +set @CMD = 'ALTER DATABASE [' + db_name() +'] SET AUTO_SHRINK OFF' +exec(@CMD) +GO + +--added by JCB for Security and MultiUser support +--ALTER TABLE Sessions add MachineName and ProcessID columns if they do not exist +IF COL_LENGTH('Sessions','MachineName') IS NULL + ALTER TABLE Sessions ADD [MachineName] [nvarchar](100) NOT NULL,[ProcessID] [int] NOT NULL; +GO +--ALTER TABLE Sessions change DTSActivity column to not null +ALTER TABLE sessions ALTER COLUMN [DTSActivity] [datetime] NOT NULL +GO +--ALTER TABLE Sessions set DTSActivity column default value to getdate() +IF OBJECT_ID('DF_Sessions_DTSActivity', 'D') IS NULL + ALTER TABLE sessions ADD CONSTRAINT [DF_Sessions_DTSActivity] DEFAULT (getdate()) for [DTSActivity]; +GO + +/****** Object: StoredProcedure [purgeData] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[purgeData]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [purgeData]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[purgeData] + +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + delete from [AnnotationAudits] + dbcc checkident([AnnotationAudits],reseed,0) + delete from [Applicabilities] + dbcc checkident([Applicabilities],reseed,0) + delete from [ApplicableStructures] + delete from [Assignments] + dbcc checkident([Assignments],reseed,0) + delete from [Associations] + dbcc checkident([Associations],reseed,0) + delete from [Checks] + dbcc checkident([Checks],reseed,0) + delete from [ContentAudits] + dbcc checkident([ContentAudits],reseed,0) + delete from [DeleteLog] + dbcc checkident([DeleteLog],reseed,0) + delete from [Details] + dbcc checkident([Details],reseed,0) + delete from [DocumentAudits] + dbcc checkident([DocumentAudits],reseed,0) + delete from [DocVersions] + dbcc checkident([DocVersions],reseed,0) + delete from [DROUsages] + dbcc checkident([DROUsages],reseed,0) + delete from [EntryAudits] + dbcc checkident([EntryAudits],reseed,0) + delete from [Figures] + dbcc checkident([Figures],reseed,0) + delete from [Folders] + dbcc checkident([Folders],reseed,0) + delete from [GridAudits] + dbcc checkident([GridAudits],reseed,0) + delete from [ImageAudits] + dbcc checkident([ImageAudits],reseed,0) + delete from [ItemAudits] + dbcc checkident([ItemAudits],reseed,0) + delete from [Memberships] + dbcc checkident([Memberships],reseed,0) + delete from [PartAudits] + dbcc checkident([PartAudits],reseed,0) + delete from [Pdfs] + delete from [Permissions] + dbcc checkident([Permissions],reseed,0) + delete from [ROFsts] + dbcc checkident([ROFsts],reseed,0) + delete from [ROImages] + dbcc checkident([ROImages],reseed,0) + delete from [Roles] + dbcc checkident([Roles],reseed,0) + delete from [ROUsageAudits] + dbcc checkident([ROUsageAudits],reseed,0) + delete from [tblAnnotations] + dbcc checkident([tblAnnotations],reseed,0) + delete from [tblEntries] + delete from [tblGrids] + delete from [tblImages] + delete from [tblParts] + delete from [tblROUsages] + dbcc checkident([tblROUsages],reseed,0) + delete from [TransitionAudits] + dbcc checkident([TransitionAudits],reseed,0) + delete from [Users] + dbcc checkident([Users],reseed,0) + delete from [Versions] + dbcc checkident([Versions],reseed,0) + delete from [ZContents] + delete from [ZTransitions] + delete from [AnnotationTypes] + dbcc checkident([AnnotationTypes],reseed,0) + delete from [Connections] + dbcc checkident([Connections],reseed,0) + delete from [Groups] + dbcc checkident([Groups],reseed,0) + delete from [Revisions] + dbcc checkident([Revisions],reseed,0) + delete from [RODbs] + dbcc checkident([RODbs],reseed,0) + delete from [Stages] + dbcc checkident([Stages],reseed,0) + delete from [tblDocuments] + dbcc checkident([tblDocuments],reseed,0) + delete from [tblTransitions] + dbcc checkident([tblTransitions],reseed,0) + delete from [tblItems] + dbcc checkident([tblItems],reseed,0) + delete from [tblContents] + dbcc checkident([tblContents],reseed,0) + delete from [Formats] + dbcc checkident([Formats],reseed,0) + delete from [Sessions] + dbcc checkident([Sessions],reseed,0) + delete from [Owners] + dbcc checkident([Owners],reseed,0) + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: purgeData Succeeded' +ELSE PRINT 'Procedure Creation: purgeData Error on Creation' +GO + +/****** Object: StoredProcedure [getSessions] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getSessions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getSessions]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getSessions] + +WITH EXECUTE AS OWNER +AS + SELECT + [SessionID], + [UserID], + [DTSDtart], + [DTSEnd], + [DTSActivity], + [LastChanged], + [MachineName], + [ProcessID], + (select convert(bigint,max(lastchanged)) from contents) LastContentChange + FROM [Sessions] + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getSessions Succeeded' +ELSE PRINT 'Procedure Creation: getSessions Error on Creation' +GO + +/****** Object: StoredProcedure [updateSession] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateSession]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [updateSession]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[updateSession] + +( + @SessionID int, + @UserID nvarchar(100), + @DTSDtart datetime, + @DTSEnd datetime=null, + @DTSActivity datetime, + @LastChanged timestamp, + @MachineName nvarchar(100), + @ProcessID int, + @newLastChanged timestamp output +) +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + UPDATE [Sessions] + SET + [UserID]=@UserID, + [DTSDtart]=@DTSDtart, + [DTSEnd]=@DTSEnd, + [DTSActivity]=@DTSActivity, + [MachineName]=@MachineName, + [ProcessID]=@ProcessID + WHERE [SessionID]=@SessionID AND [LastChanged]=@LastChanged + IF @@ROWCOUNT = 0 + BEGIN + IF NOT exists(select * from [Sessions] WHERE [SessionID]=@SessionID) + RAISERROR('Session record has been deleted by another user', 16, 1) + ELSE + RAISERROR('Session has been edited by another user', 16, 1) + END + + SELECT @newLastChanged=[LastChanged] + FROM [Sessions] WHERE [SessionID]=@SessionID + + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: updateSession Succeeded' +ELSE PRINT 'Procedure Creation: updateSession Error on Creation' +GO + +/****** Object: StoredProcedure [addSession] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addSession]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [addSession]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[addSession] + +( + @UserID nvarchar(100), + @DTSDtart datetime, + @DTSEnd datetime=null, + @DTSActivity datetime, + @MachineName nvarchar(100), + @ProcessID int, + @newSessionID int output, + @newLastChanged timestamp output +) +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + INSERT INTO [Sessions] + ( + [UserID], + [DTSDtart], + [DTSEnd], + [DTSActivity], + [MachineName], + [ProcessID] + ) + VALUES + ( + @UserID, + @DTSDtart, + @DTSEnd, + @DTSActivity, + @MachineName, + @ProcessID + ) + SELECT @newSessionID= SCOPE_IDENTITY() + SELECT @newLastChanged=[LastChanged] + FROM [Sessions] WHERE [SessionID]=@newSessionID + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: addSession Succeeded' +ELSE PRINT 'Procedure Creation: addSession Error on Creation' +GO + +/****** Object: StoredProcedure [deleteSession] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteSession]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [deleteSession]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[deleteSession] + +( + @SessionID int +) +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + DELETE [Sessions] + WHERE [SessionID] = @SessionID + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: deleteSession Succeeded' +ELSE PRINT 'Procedure Creation: deleteSession Error on Creation' +GO + +/****** Object: StoredProcedure [getSession] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getSession]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getSession]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getSession] + +( + @SessionID int +) +WITH EXECUTE AS OWNER +AS + SELECT + [SessionID], + [UserID], + [DTSDtart], + [DTSEnd], + [DTSActivity], + [LastChanged], + [MachineName], + [ProcessID], + (select convert(bigint,max(lastchanged)) from contents) LastContentChange + FROM [Sessions] + WHERE [SessionID]=@SessionID + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getSession Succeeded' +ELSE PRINT 'Procedure Creation: getSession Error on Creation' +GO + +/****** Object: StoredProcedure [existsSession] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsSession]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [existsSession]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[existsSession] + +( + @SessionID int +) +WITH EXECUTE AS OWNER +AS + SELECT COUNT(*) + FROM [Sessions] WHERE [SessionID]=@SessionID + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: existsSession Succeeded' +ELSE PRINT 'Procedure Creation: existsSession Error on Creation' +GO + +/****** Object: StoredProcedure [vesp_SessionCleanup] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SessionBegin]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_SessionBegin]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_SessionBegin] + +( + @UserID nvarchar(100), + @MachineName nvarchar(100), + @ProcessID int +) +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + -- Cleanup Old Records before checking for Owner Records + --delete old closed sessions + DELETE FROM Sessions WHERE UserID = @UserID and DTSEnd is not null + --delete old owners from inactive sessions + DELETE FROM Owners WHERE SessionID in (SELECT SessionID FROM Sessions WHERE UserID = @UserID and DTSEnd is null and DTSActivity < DATEADD(minute, -5, getdate())) + DELETE FROM Owners WHERE SessionID in (SELECT SessionID FROM Sessions WHERE DTSEnd is null and DTSActivity < DATEADD(minute, -15, getdate())) + --delete inactive sessions where last activity is before 15 minutes ago + DELETE FROM Sessions WHERE UserID = @UserID and DTSEnd is null and DTSActivity < DATEADD(minute, -5, getdate()) + DELETE FROM Sessions WHERE DTSEnd is null and DTSActivity < DATEADD(minute, -15, getdate()) + DELETE FROM Owners WHERE SessionID not in (SELECT SessionID FROM Sessions) + DECLARE @oCount int + SELECT @oCount = count(*) FROM Owners WHERE OwnerType = 4 + IF @oCount > 0 BEGIN + SELECT + [SessionID], + [UserID], + [DTSDtart], + [DTSEnd], + [DTSActivity], + [LastChanged], + [MachineName], + [ProcessID], + (select convert(bigint,max(lastchanged)) from contents) LastContentChange + FROM [Sessions] + WHERE [SessionID]=0 + END + ELSE BEGIN + INSERT INTO [Sessions]([UserID],[MachineName],[ProcessID]) + VALUES (@UserID, @MachineName, @ProcessID) + SELECT + [SessionID], + [UserID], + [DTSDtart], + [DTSEnd], + [DTSActivity], + [LastChanged], + [MachineName], + [ProcessID], + (select convert(bigint,max(lastchanged)) from contents) LastContentChange + FROM [Sessions] + WHERE [SessionID]=SCOPE_IDENTITY() + IF( @@TRANCOUNT > 0 ) COMMIT + END +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SessionBegin Succeeded' +ELSE PRINT 'Procedure Creation: vesp_SessionBegin Error on Creation' +GO + +/****** Object: StoredProcedure [vesp_SessionPing] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SessionPing]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_SessionPing]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2017 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_SessionPing] +( + @SessionID int +) +WITH EXECUTE AS OWNER +AS +BEGIN + --update active session dtsactivity value + UPDATE Sessions SET DTSActivity = getdate() WHERE SessionID = @SessionID +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SessionPing Succeeded' +ELSE PRINT 'Procedure Creation: vesp_SessionPing Error on Creation' +GO + +/****** Object: StoredProcedure [vesp_SessionPing] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SessionEnd]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_SessionEnd]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2017 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_SessionEnd] +( + @SessionID int +) +WITH EXECUTE AS OWNER +AS +BEGIN + --delete unclosed owners for session being closed + DELETE FROM Owners WHERE SessionID = @SessionID + --update active session dtsend value + UPDATE Sessions SET DTSEnd = getdate() WHERE SessionID = @SessionID +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SessionEnd Succeeded' +ELSE PRINT 'Procedure Creation: vesp_SessionEnd Error on Creation' +GO + +/****** Object: StoredProcedure [getOwners] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getOwners]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getOwners]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getOwners] + +WITH EXECUTE AS OWNER +AS + SELECT + [OwnerID], + [SessionID], + [OwnerType], + [OwnerItemID], + [DTSStart], + [LastChanged] + FROM [Owners] + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getOwners Succeeded' +ELSE PRINT 'Procedure Creation: getOwners Error on Creation' +GO + +/****** Object: StoredProcedure [getOwnersBySessionID] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getOwnersBySessionID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getOwnersBySessionID]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getOwnersBySessionID] +( + @SessionID int +) + +WITH EXECUTE AS OWNER +AS + SELECT + [OwnerID], + [SessionID], + [OwnerType], + [OwnerItemID], + [DTSStart], + [LastChanged] + FROM [Owners] + WHERE [SessionID] = @SessionID + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getOwnersBySessionID Succeeded' +ELSE PRINT 'Procedure Creation: getOwnersBySessionID Error on Creation' +GO + +/****** Object: StoredProcedure [updateOwner] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateOwner]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [updateOwner]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[updateOwner] + +( + @OwnerID int, + @SessionID int, + @OwnerType tinyint, + @OwnerItemID int, + @DTSStart datetime, + @LastChanged timestamp, + @newLastChanged timestamp output +) +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + UPDATE [Owners] + SET + [SessionID]=@SessionID, + [OwnerType]=@OwnerType, + [OwnerItemID]=@OwnerItemID, + [DTSStart]=@DTSStart + WHERE [OwnerID]=@OwnerID AND [LastChanged]=@LastChanged + IF @@ROWCOUNT = 0 + BEGIN + IF NOT exists(select * from [Owners] WHERE [OwnerID]=@OwnerID) + RAISERROR('Owner record has been deleted by another user', 16, 1) + ELSE + RAISERROR('Owner has been edited by another user', 16, 1) + END + + SELECT @newLastChanged=[LastChanged] + FROM [Owners] WHERE [OwnerID]=@OwnerID + + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: updateOwner Succeeded' +ELSE PRINT 'Procedure Creation: updateOwner Error on Creation' +GO + +/****** Object: StoredProcedure [addOwner] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addOwner]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [addOwner]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[addOwner] + +( + @SessionID int, + @OwnerType tinyint, + @OwnerItemID int, + @DTSStart datetime, + @newOwnerID int output, + @newLastChanged timestamp output +) +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + INSERT INTO [Owners] + ( + [SessionID], + [OwnerType], + [OwnerItemID], + [DTSStart] + ) + VALUES + ( + @SessionID, + @OwnerType, + @OwnerItemID, + @DTSStart + ) + SELECT @newOwnerID= SCOPE_IDENTITY() + SELECT @newLastChanged=[LastChanged] + FROM [Owners] WHERE [OwnerID]=@newOwnerID + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: addOwner Succeeded' +ELSE PRINT 'Procedure Creation: addOwner Error on Creation' +GO + +/****** Object: StoredProcedure [deleteOwner] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteOwner]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [deleteOwner]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[deleteOwner] + +( + @OwnerID int +) +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + DELETE [Owners] + WHERE [OwnerID] = @OwnerID + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: deleteOwner Succeeded' +ELSE PRINT 'Procedure Creation: deleteOwner Error on Creation' +GO + +/****** Object: StoredProcedure [getOwner] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getOwner]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getOwner]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getOwner] + +( + @OwnerID int +) +WITH EXECUTE AS OWNER +AS + SELECT + [OwnerID], + [SessionID], + [OwnerType], + [OwnerItemID], + [DTSStart], + [LastChanged] + FROM [Owners] + WHERE [OwnerID]=@OwnerID + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getOwner Succeeded' +ELSE PRINT 'Procedure Creation: getOwner Error on Creation' +GO + +/****** Object: StoredProcedure [existsOwner] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsOwner]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [existsOwner]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[existsOwner] + +( + @OwnerID int +) +WITH EXECUTE AS OWNER +AS + SELECT COUNT(*) + FROM [Owners] WHERE [OwnerID]=@OwnerID + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: existsOwner Succeeded' +ELSE PRINT 'Procedure Creation: existsOwner Error on Creation' +GO + +/****** Object: StoredProcedure [vesp_SessionCanCheckOutItem] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SessionCanCheckOutItem]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_SessionCanCheckOutItem]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +/* +exec dbo.vesp_SessionCanCheckOutItem 17012,0 +exec dbo.vesp_SessionCanCheckOutItem 17066,0 +exec dbo.vesp_SessionCanCheckOutItem 17119,0 +exec dbo.vesp_SessionCanCheckOutItem 554,1 +exec dbo.vesp_SessionCanCheckOutItem 13,2 +exec dbo.vesp_SessionCanCheckOutItem 8,2 +exec dbo.vesp_SessionCanCheckOutItem 2,2 +exec dbo.vesp_SessionCanCheckOutItem 9,3 +*/ +CREATE PROCEDURE [dbo].[vesp_SessionCanCheckOutItem] +( + @ObjectID int, + @ObjectType int +) +WITH EXECUTE AS OWNER +AS +BEGIN + DECLARE @CheckOuts TABLE + ( + SessionID int + ) + --look to see if anyone else has a session. if they do, then cannot check out + DECLARE @sCount int + SELECT @sCount = count(*) FROM Sessions + IF @ObjectType = 4 BEGIN + SELECT + [SessionID], + [UserID], + [DTSDtart], + [DTSEnd], + [DTSActivity], + [LastChanged], + [MachineName], + [ProcessID], + (select convert(bigint,max(lastchanged)) from contents) LastContentChange + FROM [Sessions] + WHERE DTSEnd IS NULL + END + ELSE + BEGIN + DECLARE @ObjectAndEnhancedIDs Table + ( + ObjectID int + ) + IF @ObjectType = 0 BEGIN + INSERT INTO @ObjectAndEnhancedIDs + select ItemID from vefn_GetEnhancedProcedures(@ObjectID) + END + ELSE IF @ObjectType = 2 BEGIN + INSERT INTO @ObjectAndEnhancedIDs + select VersionID from vefn_GetEnhancedDocVersions(@ObjectID) + END + ELSE IF @ObjectType = 3 BEGIN + INSERT INTO @ObjectAndEnhancedIDs + select FolderID from vefn_GetEnhancedFolders(@ObjectID) + END + ELSE BEGIN + INSERT INTO @ObjectAndEnhancedIDs select @ObjectID + END + INSERT INTO @CheckOuts SELECT DISTINCT SessionID FROM Owners + WHERE OwnerItemID in (select ObjectID from @ObjectAndEnhancedIDs) AND OwnerType = @ObjectType + IF @ObjectType = 2 + BEGIN + with ItemZ (VersionID,ItemID,PreviousID,SessionID) + as( + --> Procedure Owners + select null,II.ItemID, PreviousID, SessionID + from Owners OO + Join Items II on OO.OwnerItemID= II.ItemID + Where OO.OwnerType=0 + UNION ALL --> Document Owners + select null,II.ItemID, PreviousID, SessionID + from Owners OO + Join Entries EE ON OO.OwnerItemID = EE.DocID + Join Items II on EE.ContentID= II.ContentID + Where OO.OwnerType=1 + UNION ALL --> Previous Owners + Select null, ii.ItemID, ii.PreviousID,ZZ.SessionID From ItemZ ZZ + Join Items II ON II.ItemID = ZZ.PreviousID + Where ZZ.VersionID IS NULL and ZZ.PreviousID IS NOT NULL + UNION ALL -- Parts Owners + Select null, II.ItemID, II.PreviousID, ZZ.SessionID + from ItemZ ZZ + Join Parts PP ON PP.ItemID = ZZ.ItemID + Join Items II ON II.ContentID = PP.ContentID + Where ZZ.VersionID IS NULL + UNION ALL -- Version Owners + Select DV.VersionID,null,null,ZZ.SessionID From ItemZ ZZ + Join DocVersions DV ON ZZ.ItemID = DV.ItemID + Where ZZ.VersionID IS NULL AND ZZ.PreviousID IS NULL + ) + --Select Distinct 'Phase 2b' Result, * from Itemz + INSERT INTO @CheckOuts + Select DIstinct SessionID from ItemZ + where VersionID in(select ObjectID FROM @ObjectAndEnhancedIDs) + OPTION (MAXRECURSION 10000) -- B2017-144 Crash on Maximum Recursion + END + --look to see if object type is folder that no part of folder passed is checked out + IF @ObjectType = 3 BEGIN + with ItemZ (VersionID,ItemID,PreviousID,SessionID) + as( + --> Procedure Owners + select null,II.ItemID, PreviousID, SessionID + from Owners OO + Join Items II on OO.OwnerItemID= II.ItemID + Where OO.OwnerType=0 + UNION ALL --> Document Owners + select null,II.ItemID, PreviousID, SessionID + from Owners OO + Join Entries EE ON OO.OwnerItemID = EE.DocID + Join Items II on EE.ContentID= II.ContentID + Where OO.OwnerType=1 + UNION ALL --> Previous Owners + Select null, ii.ItemID, ii.PreviousID,ZZ.SessionID From ItemZ ZZ + Join Items II ON II.ItemID = ZZ.PreviousID + Where ZZ.VersionID IS NULL and ZZ.PreviousID IS NOT NULL + UNION ALL -- Parts Owners + Select null, II.ItemID, II.PreviousID, ZZ.SessionID + from ItemZ ZZ + Join Parts PP ON PP.ItemID = ZZ.ItemID + Join Items II ON II.ContentID = PP.ContentID + Where ZZ.VersionID IS NULL + UNION ALL -- Version Owners + Select DV.VersionID,null,null,ZZ.SessionID From ItemZ ZZ + Join DocVersions DV ON ZZ.ItemID = DV.ItemID + Where ZZ.VersionID IS NULL AND ZZ.PreviousID IS NULL + ) + --Select Distinct 'Phase 2b' Result, * from Itemz + INSERT INTO @CheckOuts + Select DIstinct SessionID from ItemZ + where VersionID in(select ObjectID FROM @ObjectAndEnhancedIDs) + OPTION (MAXRECURSION 10000) -- B2017-144 Crash on Maximum Recursion + END + SELECT + [SessionID], + [UserID], + [DTSDtart], + [DTSEnd], + [DTSActivity], + [LastChanged], + [MachineName], + [ProcessID], + (select convert(bigint,max(lastchanged)) from contents) LastContentChange + FROM [Sessions] + WHERE [SessionID] IN (SELECT SessionID FROM @CheckOuts) + END +END +GO + +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SessionCanCheckOutItem Succeeded' +ELSE PRINT 'Procedure Creation: vesp_SessionCanCheckOutItem Error on Creation' +GO + +/****** Object: StoredProcedure [vesp_SessionCheckOutItem] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SessionCheckOutItem]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_SessionCheckOutItem]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_SessionCheckOutItem] +( + @SessionID int, + @ItemID int, + @ItemType int, + @OwnerID int OUTPUT +) +WITH EXECUTE AS OWNER +AS +BEGIN + INSERT INTO Owners (SessionID, OwnerItemID, OwnerType) VALUES (@SessionID, @ItemID, @ItemType) + SELECT @OwnerID = SCOPE_IDENTITY() +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SessionCheckOutItem Succeeded' +ELSE PRINT 'Procedure Creation: vesp_SessionCheckOutItem Error on Creation' +GO + +/****** Object: StoredProcedure [vesp_SessionCheckInItem] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SessionCheckInItem]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_SessionCheckInItem]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_SessionCheckInItem] +( + @OwnerID int +) +WITH EXECUTE AS OWNER +AS +BEGIN + DELETE FROM Owners WHERE OwnerID = @OwnerID +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SessionCheckInItem Succeeded' +ELSE PRINT 'Procedure Creation: vesp_SessionCheckInItem Error on Creation' +GO + +/****** Object: StoredProcedure [getOwnerByItemID] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getOwnerByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getOwnerByItemID]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getOwnerByItemID] + +( + @ItemID int, + @ItemType int +) +WITH EXECUTE AS OWNER +AS + SELECT + [OwnerID], + [SessionID], + [OwnerType], + [OwnerItemID], + [DTSStart], + [LastChanged] + FROM [Owners] + WHERE [OwnerItemID]=@ItemID AND [OwnerType]=@ItemType + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getOwnerByItemID Succeeded' +ELSE PRINT 'Procedure Creation: getOwnerByItemID Error on Creation' +GO + +/****** Object: StoredProcedure [getOwnerBySessionIDandVersionID] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getOwnerBySessionIDandVersionID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getOwnerBySessionIDandVersionID]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getOwnerBySessionIDandVersionID] + +( + @SessionID int, + @VersionID int +) +WITH EXECUTE AS OWNER +AS + SELECT + [OwnerID], + [SessionID], + [OwnerType], + [OwnerItemID], + [DTSStart], + [LastChanged] + FROM [Owners] oo + INNER JOIN + ( + SELECT 0 ObjectType,ItemID ObjectID FROM dbo.vefn_GetVersionItems(@VersionID) + UNION + SELECT 1 ObjectType,ee.DocID ObjectID FROM dbo.vefn_GetVersionItems(@VersionID) vi + INNER JOIN Contents cc ON vi.ContentID = cc.ContentID + INNER JOIN Entries ee ON vi.ContentID = ee.ContentID + UNION + SELECT 2 ObjectType, @VersionID ObjectID + ) tt ON oo.OwnerType = tt.ObjectType and oo.OwnerItemID = tt.ObjectID + WHERE [SessionID] = @SessionID + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getOwnerBySessionIDandVersionID Succeeded' +ELSE PRINT 'Procedure Creation: getOwnerBySessionIDandVersionID Error on Creation' +GO + +/****** Object: StoredProcedure [getUserByUserID] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getUserByUserID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getUserByUserID]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getUserByUserID] + +( + @UserID varchar(100) +) +WITH EXECUTE AS OWNER +AS + SELECT + [UID], + [UserID], + [FirstName], + [MiddleName], + [LastName], + [Suffix], + [CourtesyTitle], + [PhoneNumber], + [CFGName], + [UserLogin], + [UserName], + [Config], + [DTS], + [UsrID], + [LastChanged], + (SELECT COUNT(*) FROM [Memberships] WHERE [Memberships].[UID]=[Users].[UID]) [MembershipCount] + FROM [Users] + WHERE [UserID]=@UserID + + SELECT + [Memberships].[UGID], + [Memberships].[UID], + [Memberships].[GID], + [Memberships].[StartDate], + [Memberships].[EndDate], + [Memberships].[Config], + [Memberships].[DTS], + [Memberships].[UsrID], + [Memberships].[LastChanged], + [Groups].[GroupName] [Group_GroupName], + [Groups].[GroupType] [Group_GroupType], + [Groups].[Config] [Group_Config], + [Groups].[DTS] [Group_DTS], + [Groups].[UsrID] [Group_UsrID] + FROM [Memberships] + JOIN [Groups] ON + [Groups].[GID]=[Memberships].[GID] + JOIN [Users] ON [Memberships].[UID] = [Users].[UID] + WHERE + [Users].[UserID]=@UserID + + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getUserByUserID Succeeded' +ELSE PRINT 'Procedure Creation: getUserByUserID Error on Creation' +GO + +--need to check to see if security is already defined. if not then do this stuff +declare @aCount int +select @aCount = count(*) from assignments +if @aCount = 0 +begin +--clean up security related tables + EXEC sp_executesql N' + delete from [Assignments]' + EXEC sp_executesql N' + dbcc checkident([Assignments],reseed,0)' + EXEC sp_executesql N' + delete from [Memberships]' + EXEC sp_executesql N' + dbcc checkident([Memberships],reseed,0)' + EXEC sp_executesql N' + delete from [Permissions]' + EXEC sp_executesql N' + dbcc checkident([Permissions],reseed,0)' + EXEC sp_executesql N' + delete from [Roles]' + EXEC sp_executesql N' + dbcc checkident([Roles],reseed,0)' + EXEC sp_executesql N' + delete from [Users]' + EXEC sp_executesql N' + dbcc checkident([Users],reseed,0)' + EXEC sp_executesql N' + delete from [Groups]' + EXEC sp_executesql N' + dbcc checkident([Groups],reseed,0)' + + --define Roles + EXEC sp_executesql N' + insert into Roles (Name,Title,DTS,UsrID) values + (''Administrator'',''Manage Generic Data;Manage Security;Edit RO Values,Create FST,Update RO Values;Update Formats;PROMS Settings;Create/Update/Delete Folders,DocVersions,Procedures,Sections,Steps,All Annotations'',getdate(),''VEPROMS'')' + EXEC sp_executesql N' + insert into Roles (Name,Title,DTS,UsrID) values + (''Set Administrator'',''Edit RO Values,Create FST,Update RO Values;Create/Update/Delete Folders,DocVersions,Procedures,Sections,Steps,All Set Annotations'',getdate(),''VEPROMS'')' + EXEC sp_executesql N' + insert into Roles (Name,Title,DTS,UsrID) values + (''Writer'',''Create/Update/Delete Procedures,Sections,Steps,All Set Annotations'',getdate(),''VEPROMS'')' + EXEC sp_executesql N' + insert into Roles (Name,Title,DTS,UsrID) values + (''Reviewer'',''Create/Update/Delete User Annotations'',getdate(),''VEPROMS'')' + EXEC sp_executesql N' + insert into Roles (Name,Title,DTS,UsrID) values + (''RO Editor'',''Edit RO Values,Create FST'',getdate(),''VEPROMS'')' + + --define Permissions for Roles + EXEC sp_executesql N' + declare @rid int; + select @rid = rid from roles where name = ''Administrator''; + insert into permissions (rid,permlevel,versiontype,permvalue,permad,startdate,dts,usrid) values + (@rid,1,3,15,0,getdate(),getdate(),''VEPROMS'')' + EXEC sp_executesql N' + declare @rid int; + select @rid = rid from roles where name = ''Set Administrator''; + insert into permissions (rid,permlevel,versiontype,permvalue,permad,startdate,dts,usrid) values + (@rid,2,3,15,0,getdate(),getdate(),''VEPROMS'')' + EXEC sp_executesql N' + declare @rid int; + select @rid = rid from roles where name = ''Writer''; + insert into permissions (rid,permlevel,versiontype,permvalue,permad,startdate,dts,usrid) values + (@rid,4,3,15,0,getdate(),getdate(),''VEPROMS'')' + EXEC sp_executesql N' + declare @rid int; + select @rid = rid from roles where name = ''Reviewer''; + insert into permissions (rid,permlevel,versiontype,permvalue,permad,startdate,dts,usrid) values + (@rid,7,3,15,0,getdate(),getdate(),''VEPROMS'')' + EXEC sp_executesql N' + declare @rid int; + select @rid = rid from roles where name = ''RO Editor''; + insert into permissions (rid,permlevel,versiontype,permvalue,permad,startdate,dts,usrid) values + (@rid,3,3,15,0,getdate(),getdate(),''VEPROMS'')' + + --define adminstrator Group + EXEC sp_executesql N' + insert into groups (groupname,dts,usrid) + select name + ''s'',getdate(),''VEPROMS'' from roles where name = ''Administrator''' + + --define administrator Assignment + EXEC sp_executesql N' + insert into assignments (gid,rid,folderid,startdate,dts,usrid) + select gg.gid,rr.rid,1,getdate(),getdate(),''VEPROMS'' from roles rr inner join groups gg on rr.name + ''s'' = gg.groupname' + EXEC sp_executesql N' + print ''MultiUser and Security Created''' +end +else begin + EXEC sp_executesql N' + print ''MultiUser and Security Exists''' +end +GO + +--added jcb 1st round fixes multiuser and security testting +--ALTER TABLE Groups change GroupName column to 100 characters +ALTER TABLE groups ALTER COLUMN [GroupName] [nvarchar](100) NOT NULL +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ResetSecurity]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_ResetSecurity]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_ResetSecurity] +AS +BEGIN + DELETE FROM [Memberships] + DELETE FROM [Assignments] WHERE [AID] != 1 + DELETE FROM [Groups] WHERE [GID] != 1 + DELETE FROM [Users] + DECLARE @gid VARCHAR(10) + SELECT @gid = x1.value('@Group','varchar(10)') + FROM + ( + SELECT folderid,CAST(config as xml) xconfig FROM folders ff WHERE ff.folderid = 1 + ) ah + CROSS APPLY xconfig.nodes('//Security') t1(x1) + UPDATE folders SET config = replace(config,'Security Group="' + @gid + '"','Security Group="1"') WHERE folderid = 1 +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ResetSecurity Succeeded' +ELSE PRINT 'Procedure Creation: vesp_ResetSecurity Error on Creation' +GO + +/****** Object: StoredProcedure [getRevisionsByItemID] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getRevisionsByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getRevisionsByItemID]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getRevisionsByItemID] +( + @ItemID int +) +WITH EXECUTE AS OWNER +AS + SELECT + [RevisionID], + [ItemID], + [TypeID], + [RevisionNumber], + [RevisionDate], + [Notes], + [Config], + [DTS], + [UserID], + [LastChanged], + (SELECT COUNT(*) FROM [Checks] WHERE [Checks].[RevisionID]=[Revisions].[RevisionID]) [CheckCount], + (SELECT COUNT(*) FROM [Versions] WHERE [Versions].[RevisionID]=[Revisions].[RevisionID]) [VersionCount] + FROM [Revisions] + WHERE [ItemID] = @ItemID +and (SELECT COUNT(*) FROM [Versions] WHERE [Versions].[RevisionID]=[Revisions].[RevisionID]) > 0 + ORDER BY [RevisionID] DESC + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getRevisionsByItemID Succeeded' +ELSE PRINT 'Procedure Creation: getRevisionsByItemID Error on Creation' +GO +/****** Object: StoredProcedure [getRoUsagesForDocVersion] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getRoUsagesForDocVersion]') AND OBJECTPROPERTY + +(id,N'IsProcedure') = 1) + DROP PROCEDURE [getRoUsagesForDocVersion]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getRoUsagesForDocVersion] +( + @VersionID int +) +WITH EXECUTE AS OWNER +AS + SELECT + [ROUsageID], + rr.[ContentID], + [ROID], + [Config], + [DTS], + [UserID], + [LastChanged], + [RODbID] + FROM [RoUsages] rr + INNER JOIN vefn_getversionitems(@VersionID) vi on rr.contentid = vi.contentid + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getRoUsagesForDocVersion Succeeded' +ELSE PRINT 'Procedure Creation: getRoUsagesForDocVersion Error on Creation' +GO + +/****** Object: StoredProcedure [vesp_ListTables3] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListTables3]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_ListTables3]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE procedure [dbo].[vesp_ListTables3] +WITH EXECUTE AS OWNER +AS +begin +select o.name TableName,c.name ColumnName, +case c.system_type_id + when 56 then 'int' + when 231 then 'nvarchar' + when 165 then 'varbinary' + when 167 then 'varchar' + when 239 then 'nchar' + when 175 then 'char' + when 61 then 'datetime' + when 104 then 'bit' + when 48 then 'TinyInt' + when 127 then 'BigInt' + when 241 then 'Xml' + when 62 then 'float' + when 189 then 'timestamp' + else '???' + cast(c.system_type_id as varchar(10)) end ItemType, +case c.system_type_id + when 56 then '0' + when 231 then case c.max_length when -1 then 'Max' else cast(c.max_length/2 as varchar(10)) end + when 165 then case c.max_length when -1 then 'Max' else cast(c.max_length as varchar(10)) end + when 167 then case c.max_length when -1 then 'Max' else cast(c.max_length as varchar(10)) end + when 239 then case c.max_length when -1 then 'Max' else cast(c.max_length/2 as varchar(10)) end + when 175 then case c.max_length when -1 then 'Max' else cast(c.max_length as varchar(10)) end + when 61 then '0' + when 104 then '0' + when 48 then '0' + when 189 then '0' + else '0' end ItemSize, + + case when c.is_nullable=1 then 'Yes' else '' end AllowNulls, + case when c.is_identity=1 then 'Identity' else dc.definition end DefaultValue, + x.value Description +from sys.objects o +join sys.columns c on o.object_id=c.object_id +left join sysconstraints cn on o.object_id=cn.id and c.column_id=cn.colid +left join sys.default_constraints dc on dc.object_id = cn.constid +left join sys.extended_properties x on x.major_id = o.OBJECT_ID AND x.minor_id=c.column_id AND x.Name='MS_Description' +where o.type='U' +order by o.name,c.column_id +end +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListTables3 Succeeded' +ELSE PRINT 'Procedure Creation: vesp_ListTables3 Error on Creation' +GO + +/****** Object: StoredProcedure [getOwnersByVersionID] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getOwnersByVersionID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getOwnersByVersionID]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getOwnersByVersionID] +( + @VersionID int +) + +WITH EXECUTE AS OWNER +AS + SELECT + [OwnerID], + [SessionID], + [OwnerType], + [OwnerItemID], + [DTSStart], + oo.[LastChanged] + FROM [Owners] oo + JOIN vefn_GetVersionItems(@VersionID) vi ON oo.OwnerItemID = vi.ItemID + WHERE oo.OwnerType = 0 + UNION + SELECT + [OwnerID], + [SessionID], + [OwnerType], + [OwnerItemID], + [DTSStart], + oo.[LastChanged] + FROM [Owners] oo + JOIN [Entries] ee on oo.OwnerItemID = ee.DocID + JOIN vefn_GetVersionItems(@VersionID) vi on ee.ContentID = vi.ContentID + WHERE oo.OwnerType = 1 + UNION + SELECT + [OwnerID], + [SessionID], + [OwnerType], + [OwnerItemID], + [DTSStart], + oo.[LastChanged] + FROM [Owners] oo + WHERE oo.OwnerType = 2 + AND oo.OwnerItemID = @VersionID + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getOwnersByVersionID Succeeded' +ELSE PRINT 'Procedure Creation: getOwnersByVersionID Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_CompareROIDs]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) + DROP FUNCTION [vefn_CompareROIDs]; +/****** Object: UserDefinedFunction [dbo].[vefn_CompareROIDs] Script Date: 07/21/2014 17:50:44 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2017 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +create function [DBO].[vefn_CompareROIDs] (@roid1 varchar(16), @roid2 varchar(16)) +returns int +as begin + declare @len1 int + declare @len2 int + if @roid1 = @roid2 + return 1 + set @len1 = len(@roid1) + set @len2 = len(@roid2) + if @len1 = @len2 + begin + if @len1 = 16 and substring(@roid1,13,4) = '0000' and substring(@roid2,13,4) = '0041' + return 2 + if @len1 = 16 and substring(@roid2,13,4) = '0000' and substring(@roid1,13,4) = '0041' + return 3 + return 0 + end + if substring(@roid1,1,12) = substring(@roid2,1,12) + return 4 + return 0 +end +GO +-- Display the status of ScalarFunction creation +IF (@@Error = 0) PRINT 'Function: vefn_CompareROIDs Succeeded' +ELSE PRINT 'Function: vefn_CompareROIDs Error on Creation' +GO + +/****** Object: Index [IX_tblContentsForCopy] Script Date: 8/26/2014 8:55:16 PM ******/ +IF NOT EXISTS (SELECT * FROM dbo.sysindexes WHERE name = 'IX_tblContentsForCopy') +BEGIN +CREATE NONCLUSTERED INDEX [IX_tblContentsForCopy] ON [dbo].[tblContents] +( + [DTS] ASC, + [UserID] ASC, + [Type] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +END +GO + +/****** Object: Index [IX_tblItemsForCopy1] Script Date: 8/27/2014 5:26:31 PM ******/ +IF NOT EXISTS (SELECT * FROM dbo.sysindexes WHERE name = 'IX_tblItemsForCopy1') +BEGIN +CREATE NONCLUSTERED INDEX [IX_tblItemsForCopy1] ON [dbo].[tblItems] +( + [ContentID] ASC, + [DTS] ASC, + [UserID] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +END +GO + +/****** Object: Index [IX_tblItemsForCopy2] Script Date: 8/27/2014 5:26:37 PM ******/ +IF NOT EXISTS (SELECT * FROM dbo.sysindexes WHERE name = 'IX_tblItemsForCopy2') +BEGIN +CREATE NONCLUSTERED INDEX [IX_tblItemsForCopy2] ON [dbo].[tblItems] +( + [PreviousID] ASC, + [DTS] ASC, + [UserID] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +END +GO + +/****** Object: Index [IX_contentsLastChanged] Script Date: 3/21/2017 11:24:00 AM ******/ +IF EXISTS (SELECT * FROM dbo.sysIndexes WHERE name like 'IX_contentsLastChanged') + DROP INDEX [IX_ContentsLastChanged] ON [dbo].[tblContents]; +GO +CREATE NONCLUSTERED INDEX [IX_contentsLastChanged] ON [dbo].[tblContents] +( + [DeleteStatus] ASC, + [LastChanged] DESC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +GO +PRINT 'Added IX_contentsLastChanged Index. Speeds up session queries' +GO + +/****** Object: StoredProcedure [CopyItemAndChildren] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[CopyItemAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [CopyItemAndChildren]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[CopyItemAndChildren] +( + @StartItemID INT, + @DestFormatID INT, + @UserID NVARCHAR(100), + @NewStartItemID int output +) +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + +--+-----------------------------------------------------------------+ +--& BEGIN TRANSACTION to make these changes temporary & +--+-----------------------------------------------------------------+ + BEGIN TRANSACTION + if exists (select * from tblitems where itemid = @StartItemID and DeleteStatus !=0) + BEGIN + RAISERROR ('###Cannot Paste Step###This step has been deleted',16,1) + RETURN + END +DECLARE @Children AS TABLE +( + ItemID INT PRIMARY KEY, + NewItemID INT, + ContentID INT, + NewContentID INT, + FormatID INT, + NewFormatID INT +) +DECLARE @NewDocuments AS TABLE +( + DocID INT PRIMARY KEY, + NewDocID INT +) +-- Locals +DECLARE @DTS DATETIME -- DTS of all New Items +DECLARE @StartContentID INT +Select @StartContentID = ContentID from Items where ItemID = @StartItemID +SET @DTS = GETDATE() -- Get the current Date and Time +-- Get a list of all of the Items to be copied based upon StartItemID and EndItemID +-- If the StartItemID = EndItemID then it is a single item and it's children +INSERT INTO @Children SELECT ItemID,ItemID,ContentID,ContentID,FormatID,FormatID FROM vefn_ChildItemsRange(@StartItemID,@StartItemID,null) +-- <<< Copy Contents >>> +-- Create new content rows to match the existing rows. Set the type to the Current ContentID temporarily +-- so that the new content rows can be associated with the existing content rows. +INSERT INTO Contents + ([Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID]) + select CASE when [ContentID] = @StartContentID and [Type]<20000 then 'Copy Of ' + [Number] else [Number] end, + [Text],[ContentID],[FormatID],[Config],@DTS,@UserID + from Contents where ContentID in(Select ContentID from @Children) +-- Update the @Children with the NewConentIDs +--print 'A ' + cast(datediff(s,@dts,getdate()) as varchar(100)) +UPDATE NN set NN.NewContentID = CC.ContentID +From Contents CC +Join @Children NN on NN.ContentID = CC.Type AND CC.DTS = @DTS and CC.UserID = @UserID +-- Reset the Type column in the Contents table with the Type column from the original Records. +--print 'B ' + cast(datediff(s,@dts,getdate()) as varchar(100)) +DECLARE @SourceType INT +Select @SourceType = Type from Contents where ContentID = @StartContentID +if @SourceType = 0 + BEGIN + UPDATE CC set CC.Type = CC2.Type, CC.DTS = CC2.DTS, CC.UserID = CC2.UserID + From Contents CC + Join @Children NN on NN.NewContentID = CC.ContentID + Join Contents CC2 on NN.ContentID = CC2.ContentID + END +else + BEGIN +UPDATE CC set CC.Type = CC2.Type +From Contents CC +Join @Children NN on NN.NewContentID = CC.ContentID +Join Contents CC2 on NN.ContentID = CC2.ContentID + END +--print 'B1 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) +-- Contents are done + -- SELECT * From Contents where DTS = @DTS and UserID = @UserID +-- <<< Copy Grids >>> +INSERT INTO [Grids]([ContentID],[Data],[Config],[DTS],[UserID]) + SELECT NN.[NewContentID],[Data],[Config],@DTS,@UserID + FROM [Grids] GG Join @Children NN on GG.ContentID = NN.ContentID +-- <<< Copy Images >>> +--print 'B2 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) +INSERT INTO [Images]([ContentID],[ImageType],[FileName],[Data],[Config],[DTS],[UserID]) + SELECT NN.[NewContentID],[ImageType],[FileName],[Data],[Config],@DTS,@UserID + FROM [Images] II Join @Children NN on II.ContentID = NN.ContentID +-- Create new item rows based upon the current item rows and the @Children table, with the NewContentIDs +--print 'B3 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) +INSERT INTO [Items] ([PreviousID],[ContentID],[DTS],[UserID]) + SELECT II.[PreviousID], -- Leave the PreviousID as is for now + NN.NewContentID, @DTS, @UserID + from @Children NN + join Items II on II.ContentID = NN.ContentID +-- Update the @Children with the NewItemIDs +--print 'B4 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) +UPDATE NN set NN.NewItemID = II.ItemID +From Items II +Join @Children NN on NN.NewContentID = II.ContentID AND II.DTS = @DTS and II.UserID = @UserID +DECLARE @NewItemID int +SELECT @NewItemID = NewItemID + FROM @Children + WHERE ItemID = @StartItemID +--print 'B5 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) +UPDATE NN SET NN.[NewFormatID] = CC.[FormatID] + FROM @Children NN + Join vefn_ChildItemsRange(@NewItemID,@NewItemID,@DestFormatID) CC + ON NN.NewItemID = CC.ItemID +-- The @Children table is now complete + --SELECT * From @Children +-- Update the PreviousID in the new Item rows, to the new ItemIDs based upon the old ItemIDs +--print 'B6 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) +Update II Set II.[PreviousID] = NN.NewItemID +from Items II +Join @Children NN on NN.ItemID = II.PreviousID AND II.DTS = @DTS and II.UserID = @UserID +-- Get the new ItemIDs based upon the old ItemIDs +SELECT @NewStartItemID = NewItemID from @Children where ItemID = @StartItemID +--SELECT @NewEndItemID = NewItemID from @Children where ItemID = @EndItemID +-- Set the PreviousID for the starting Item to null temporarily. +-- This will be adjusted based upon where the step is inserted. +--print 'B7 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) +Update Items Set PreviousID = null where ItemID = @NewStartItemID +if @SourceType = 0 + BEGIN + UPDATE II SET II.DTS = II2.DTS, II.UserID = II2.UserID + From Items II + Join @Children NN on NN.NewItemID = II.ItemID + Join Items II2 on NN.ItemID = II2.ItemID + WHERE NN.ItemID = @StartItemID + END +--print 'C ' + cast(datediff(s,@dts,getdate()) as varchar(100)) +-- Items are done + --SELECT * From Items where DTS = @DTS and UserID = @UserID +-- <<< Copy Parts >>> +INSERT INTO [Parts] ([ContentID],[FromType],[ItemID],[DTS],[UserID]) +Select NNF.NewContentID,[FromType],NNT.NewItemID, @DTS, @UserID from Parts PP +JOIN @Children NNF on PP.ContentID = NNF.ContentID +JOIN @Children NNT on PP.ItemID = NNT.ItemID +--print 'D ' + cast(datediff(s,@dts,getdate()) as varchar(100)) +-- Parts are done + -- SELECT * From Parts where DTS = @DTS and UserID = @UserID +-- <<< Copy Annotations >>> +INSERT INTO [Annotations] ([ItemID],[TypeID],[RtfText],[SearchText],[Config],[DTS],[UserID]) + Select NewItemID, TypeID, RtfText, SearchText, Config, @DTS, @UserID + from Annotations AA Join @Children NN on AA.ItemID = NN.ItemID +--print 'E ' + cast(datediff(s,@dts,getdate()) as varchar(100)) +-- Annotations are done + -- SELECT * From Annotations where DTS = @DTS and UserID = @UserID +-- <<< Copy Documents and Entries>>> +-- logic to create Entries for Library Documents +INSERT INTO [Entries] ([ContentID],[DocID],[DTS],[UserID]) + SELECT NN.[NewContentID],EE.[DocID],@DTS,@UserID + FROM [Entries] EE JOIN @Children NN on NN.ContentID = EE.ContentID + JOIN [Documents] DD on EE.[DocID] = DD.[DocID] and Isnull(LibTitle,'') <> '' +-- Logic to create new documents for any documents used that do not have libtitles +INSERT INTO [Documents] ([LibTitle],[DocContent],[DocAscii],[Config],[DTS],[UserID],[FileExtension]) + OUTPUT CAST(INSERTED.[LibTitle] as INT),INSERTED.[DocID] INTO @NewDocuments + SELECT str(DD.[DocID]),[DocContent],[DocAscii],[Config],@DTS,@UserID,[FileExtension] + FROM [Entries] EE JOIN @Children NN on NN.ContentID = EE.ContentID + JOIN [Documents] DD on EE.[DocID] = DD.[DocID] and Isnull(LibTitle,'') = '' +UPDATE DD SET LibTitle = '' + FROM Documents DD JOIN @NewDocuments ND on DD.[DocID] = ND.[NewDocID] + where DTS = @DTS and UserID = @UserID +--print 'F ' + cast(datediff(s,@dts,getdate()) as varchar(100)) +-- Documents are Done + -- SELECT * From Documents where DTS = @DTS and UserID = @UserID +-- Logic to create entries for these newly created documents +INSERT INTO [Entries] ([ContentID],[DocID],[DTS],[UserID]) + SELECT NN.[NewContentID],ND.[NewDocID],@DTS,@UserID + FROM [Entries] EE JOIN @Children NN on NN.ContentID = EE.ContentID + JOIN @NewDocuments ND on EE.[DocID] = ND.[DocID] +-- Logic to Create DROUsages for these newly created documents +INSERT INTO [DROUsages] ([DocID],[ROID],[Config],[DTS],[UserID],[RODbID]) + SELECT ND.[NewDocID],[ROID],[Config],@DTS,@UserID,[RODbID] + FROM [DROUsages] RR + JOIN @NewDocuments ND on RR.[DocID] = ND.[DocID] + +--print 'G ' + cast(datediff(s,@dts,getdate()) as varchar(100)) +-- Entries are done + -- SELECT * From Entries EE JOIN Documents DD on ee.DocID = DD.DocID where EE.DTS = @DTS and EE.UserID = @UserID +-- <<< Copy RoUsages >>> +INSERT INTO [RoUsages] ([ContentID],[ROID],[Config],[DTS],[UserID],[RODbID]) + SELECT NN.[NewContentID],CAST([ROUsageID] as nvarchar(16)),[Config],@DTS,@UserID,[RODbID] + FROM [RoUsages] RR Join @Children NN on RR.ContentID = NN.ContentID +-- Update content records for newly copied records to use correct RO usage ids in the RO tags +DECLARE @RowsAffected int +SET @RowsAffected=1 +WHILE @RowsAffected > 0 +BEGIN + UPDATE CC SET [TEXT] = C2.NewText + FROM CONTENTS CC + JOIN (SELECT C1.ContentID, .dbo.vefn_FixROText(C1.Text, CAST([ROID] as int), [ROUsageID]) NewText + FROM CONTENTS C1 + JOIN @Children NN on C1.ContentID = NN.NewContentID + JOIN RoUsages RO on NN.NewContentID = RO.ContentID where Len([ROID]) < 12) C2 ON CC.ContentID = C2.ContentID + WHERE [TEXT] <> C2.NewText + SET @RowsAffected = @@RowCount +END +-- Update grid records for newly copied records to use correct RO usage ids in the RO tags +SET @RowsAffected=1 +WHILE @RowsAffected > 0 +BEGIN + UPDATE GG SET [Data] = G2.NewData + FROM GRIDS GG + JOIN (SELECT G1.ContentID, .dbo.vefn_FixROData(G1.Data, CAST([ROID] as int), [ROUsageID]) NewData + FROM GRIDS G1 + JOIN @Children NN on G1.ContentID = NN.NewContentID + JOIN RoUsages RO on NN.NewContentID = RO.ContentID where Len([ROID]) < 12) G2 ON GG.ContentID = G2.ContentID + WHERE Cast([Data] as nvarchar(max)) <> cast(G2.NewData as nvarchar(max)) + SET @RowsAffected = @@RowCount +END +UPDATE RON SET [ROID] = ROO.[ROID] + FROM RoUsages RON + JOIN @Children NN on RON.ContentID = NN.NewContentID + JOIN RoUsages ROO on CAST(RON.ROID as int) = ROO.RoUsageID + where Len(RON.[ROID]) < 12 +--print 'H ' + cast(datediff(s,@dts,getdate()) as varchar(100)) +-- RoUsages are done + -- SELECT * From RoUsages where DTS = @DTS and UserID = @UserID + +-- <<< Copy Transtions >>> +-- Note that the inserted record has the 'TranType' field set to old transitionid. This is done +-- so that the next step can replace the old transitionid with the new transitionid in the +-- content record's transition tokens. The TranType gets reset after the content records are +-- updated. +-- Also note that the 'toid/rangeid' may need converted to newly copied ids or may not. If it's +-- not a range, then it always is converted to new, if there is a new. If it's a range, both +-- the toid & the rangeid must be new in order for the conversion to be correct. You cannot +-- have part of the range pointing to the new and part of the range pointing to the original +-- locations. + +INSERT INTO .[dbo].[Transitions] ([FromID],[ToID],[RangeID],[IsRange],[TranType],[Config],[DTS],[UserID]) + SELECT NNF.[NewContentID], + -- if both toid & range are null, use the original toid & rangeid + CASE WHEN NNT.[NewItemID] is null or NNR.[NewItemID] is null THEN [ToID] ELSE NNT.[NewItemID] END, + CASE WHEN NNT.[NewItemID] is null or NNR.[NewItemID] is null THEN [RangeID] ELSE NNR.[NewItemID] END, + [IsRange],[TransitionID],[Config],@DTS,@UserID + FROM .[dbo].[Transitions] TT + JOIN @Children NNF on TT.[FromID] = NNF.[ContentID] + LEFT JOIN @Children NNT on TT.[ToID] = NNT.[ItemID] + LEFT JOIN @Children NNR on TT.[RangeID] = NNR.[ItemID] +--print 'H1 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) +-- -- Update content records for newly copied records to use correct TransitionIDs in the Transition tags +SET @RowsAffected=1 +WHILE @RowsAffected > 0 +BEGIN +UPDATE CC SET [TEXT] = C2.NewText + FROM CONTENTS CC + JOIN (SELECT C1.ContentID, .dbo.vefn_FixTransitionTextForCopy(C1.Text, TRO.TransitionID, TRO.TranType, TRO.[ToID], TRO.[RangeID],TR.[TransitionID], TR.[ToID], TR.[RangeID], .dbo.vefn_GetNewTranType(NN.FormatID, NN.NewFormatID, TRO.TranType)) NewText + FROM CONTENTS C1 + JOIN @Children NN on C1.ContentID = NN.NewContentID + JOIN Transitions TR on NN.NewContentID = TR.FromID + JOIN Transitions TRO on TR.TranType = TRO.TransitionID) C2 ON CC.ContentID = C2.ContentID + WHERE [TEXT] <> C2.NewText + SET @RowsAffected = @@RowCount +END +--print 'H2 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) +--set nocount off +-- -- Update grid records for newly copied records to use correct TransitionIDs in the Transition tags +declare @grids table +( +contentid int primary key, +data xml +) +insert into @grids select gg.contentid,gg.data from GRIDS GG + where gg.contentid in (select nn.newcontentid from + @Children NN + JOIN Transitions TR on NN.NewContentID = TR.FromID + JOIN Transitions TRO on TR.TranType = TRO.TransitionID) +--print 'H2.1 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) +--select * from @grids +SET @RowsAffected=1 +WHILE @RowsAffected > 0 +BEGIN +UPDATE GG SET [DATA] = G2.NewData + FROM @GRIDS GG + JOIN (SELECT G1.ContentID, .dbo.vefn_FixTransitionDataForCopy(G1.Data, TRO.TransitionID, TRO.TranType, TRO.[ToID], TRO.[RangeID],TR.[TransitionID], TR.[ToID], TR.[RangeID], .dbo.vefn_GetNewTranType(NN.FormatID, NN.NewFormatID, TRO.TranType)) NewData + FROM @GRIDS G1 + JOIN @Children NN on G1.ContentID = NN.NewContentID + JOIN Transitions TR on NN.NewContentID = TR.FromID + JOIN Transitions TRO on TR.TranType = TRO.TransitionID) G2 ON GG.ContentID = G2.ContentID + WHERE Cast([DATA] as nvarchar(max)) <> CAST(G2.NewData as nvarchar(max)) + SET @RowsAffected = @@RowCount +END +--print 'H2.2 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) +update GG set data = g1.data from Grids gg join @grids g1 on gg.contentid = g1.contentid +--print 'H3 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) +--set nocount on +-- Add 'Verification Required' AnnotationType + DECLARE @typeID int + SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' + IF(@typeID IS NULL) + BEGIN + INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian') + SELECT @typeID = SCOPE_IDENTITY() + END + -- Add "Verification Required" Annotation for each Transition whose transition format changes +INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) + SELECT NN.NewItemID, @typeID,'Verify Transition Format',@UserID + FROM Transitions TR + JOIN @Children NN on TR.FromID = NN.NewContentID + JOIN Transitions TRO on TR.TranType = TRO.TransitionID + WHERE .dbo.vefn_CompareTranFormat(NN.FormatID, NN.NewFormatID, TRO.TranType) <> 0 +--print 'H4 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) +UPDATE TR SET TR.[TranType] = .dbo.vefn_GetNewTranType(NN.FormatID, NN.NewFormatID, TRO.TranType) + FROM Transitions TR + JOIN @Children NN on TR.FromID = NN.NewContentID + JOIN Transitions TRO on TR.TranType = TRO.TransitionID +--print 'H5 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) +-- Transitions are done + -- SELECT * From Transitions where DTS = @DTS and UserID = @UserID +--print 'Z ' + cast(datediff(s,@dts,getdate()) as varchar(100)) +--foldouts fixing code +if exists (select * from contents where contentid in (select newcontentid from @children) and config like '%FloatingFoldout%') +begin + --insert into #mytemp + select cc.contentid,xsteps.value('@FloatingFoldout','int') oldfoldoutid,(select newitemid + from @children + where itemid = xsteps.value('@FloatingFoldout','int')) newfoldoutid,xconfig + into #mytemp + from (select *,cast(config as xml) xconfig from contents where contentid in (select newcontentid from @children)) cc + cross apply xconfig.nodes('Config/Step') tsteps(xsteps) + --build @cmd string + declare @cmd nvarchar(max) + declare cmds cursor for + select distinct 'update #mytemp set xconfig.modify(''replace value of (Config/Step/@FloatingFoldout)[1] with "' + + cast(newfoldoutid as varchar(10)) + + '"'') where xconfig.value(''(Config/Step/@FloatingFoldout)[1]'',''int'') = ' + + cast(oldfoldoutid as varchar(10)) + from #mytemp + --execute cursor over rows + open cmds + fetch next from cmds into @cmd + while @@fetch_status = 0 + begin + exec sp_executesql @cmd + fetch next from cmds into @cmd + end + close cmds + deallocate cmds + --actually update contents + update cc set config = cast(xconfig as varchar(max)) from contents cc join #mytemp mt on cc.contentid = mt.contentid + --get rid of #mytemp + drop table #mytemp +end +--end foldouts fixing code +--section start +DECLARE @NewContentID int +Select @NewContentID = NewContentID from @Children where ItemID = @StartItemID +DECLARE @Config varchar(max) +DECLARE @XConfig xml +select @Config = config from contents where contentid = @NewContentID +select @XConfig = cast(@Config as xml) +if @Config like '%SectionStart%' begin + DECLARE @SectionStart int + select @SectionStart = xproc.value('@SectionStart','int') from @xconfig.nodes('Config/Procedure') tproc(xproc) + DECLARE @NewSectionStart int + select @NewSectionStart = newitemid from @children where itemid = @SectionStart + DECLARE @cmd2 nvarchar(max) + set @cmd2 = ' + declare @XConfig xml; + set @XConfig = cast(''' + @Config + ''' as xml); + set @XConfig.modify(''replace value of (Config/Procedure/@SectionStart)[1] with "' + cast(@NewSectionStart as nvarchar(10)) + '"''); + update contents set config = cast(@XConfig as varchar(max)) where contentid = ' + cast(@NewContentID as nvarchar(10)) + ';' + exec sp_executesql @cmd2 +end +--end section start + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +go +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: CopyItemAndChildren Succeeded' +ELSE PRINT 'Procedure Creation: CopyItemAndChildren Error on Creation' +GO +Delete From Formats where name like 'WPS%' or name like 'WEP%' or name like 'WPB%' or name like 'VCBEPP%' +PRINT 'Kewaunee, Point Beach, un-used Summer formats removed' +GO + +/****** Object: StoredProcedure [CopyItemAndChildren] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DeleteItemAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [DeleteItemAndChildren]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[DeleteItemAndChildren] +( + @ItemID int, + @UserID AS VARCHAR(100) +) +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + declare @DeleteID int + DECLARE @ContentID AS INT + DECLARE @NextItemID AS INT + DECLARE @PreviousItemID AS INT + DECLARE @ExternalChildCount AS INT + DECLARE @ExternalCount AS INT + DECLARE @ItemType AS INT + DECLARE @Path AS VARCHAR(MAX) + DECLARE @Children AS TABLE + ( + ItemID INT PRIMARY KEY, + ContentID INT + ) + DECLARE @ExternalTrans TABLE + ( + [FromItemID] int, + [TransitionID] [int] NOT NULL, + [FromID] [int] NOT NULL, + [ToID] [int] NOT NULL, + [RangeID] [int] NOT NULL, + [Config] [nvarchar](max) NULL + ) + SET NOCOUNT ON + SELECT @ContentID = ContentID, @PreviousItemID = PreviousID FROM Items WHERE ItemID = @ItemID + SELECT @NextItemID = ItemID FROM Items WHERE PreviousID = @ItemID + SET @Path = [dbo].[ve_GetShortPath](@ItemID) + + SELECT @ExternalCount = count(*) FROM vefn_FindExternalTransitions(@ItemID) where rangeid = toid or toid = @ItemID + IF @ExternalCount > 0 AND @NextItemID is null + BEGIN + RAISERROR ('###Cannot Delete Item###Step %d has External Transitions and has no next step - (%s)',16,1,@ItemID,@Path) + RETURN + END + + IF @ExternalCount > 0 AND @ItemType < 10000 + BEGIN + RAISERROR ('###Cannot Delete Item###Procedure %d has External Transitions to Procedure - (%s)',16,1,@ItemID,@Path) + RETURN + END + + SELECT @ExternalChildCount = count(*) FROM vefn_FindExternalChildTransitions(@ItemID) + SELECT @ItemType = Type FROM Contents Where ContentID = @ContentID + -- Check to see if External Transitions point to the current item + IF @ExternalChildCount > 0 + BEGIN + RAISERROR ('###Cannot Delete Item###Step %d has External Transitions to it''s children - (%s)',16,1,@ItemID,@Path) + RETURN + END + --deletelog + INSERT INTO DeleteLog (UserID) values (@UserID) + Select @DeleteID = SCOPE_IDENTITY() + --end deletelog + -- Get list of Children + INSERT INTO @Children SELECT * FROM vefn_ChildItems(@ItemID) + -- UPDATE PreviousID in Items WHERE ItemID = @NextItemID + UPDATE Items SET PreviousID = @PreviousItemID WHERE ItemID=@NextItemID + -- UPDATE DocVersion + UPDATE DocVersions SET ItemID=@NextItemID where ItemID = @ItemID + -- UPDATE Parts + IF @NextItemID is not NULL -- Remove Part Record + BEGIN + UPDATE PARTS SET ItemID = @NextItemID where ItemID=@ItemID + END + ELSE + BEGIN + DELETE FROM Parts WHERE ItemID=@ItemID + END + -- Get external transitions that point to the specified Item + -- These will need to be adjusted to point to the next Item. + INSERT INTO @ExternalTrans SELECT * FROM vefn_FindExternalTransitions(@ItemID); + DECLARE @typeID int -- AnnotationType + SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' + IF(@typeID IS NULL) + BEGIN + INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian') + SELECT @typeID = SCOPE_IDENTITY() + END + -- Add 'Verification Required' annotions for transtions that point to different step + INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) + SELECT ItemID, @typeID,'Verify Transition Destination',@UserID + FROM Items where ItemID in (SELECT FromItemID FROM @ExternalTrans) + -- Update content records for the transitions + Update CC + Set Text = DBO.vefn_FixTransitionText(Text,TT.TransitionID,TT.TranType,TT.ToID,TT.RangeID,@ItemID,@NextItemID) + From CONTENTS CC + JOIN Transitions TT ON TT.FromID = CC.ContentID + WHERE TransitionID in(Select TransitionID from @ExternalTrans where RangeID != @ItemID or RangeID = ToID) + Update CC + Set Text = DBO.vefn_FixTransitionText(Text,TT.TransitionID,TT.TranType,TT.ToID,TT.RangeID,@ItemID,@PreviousItemID) + From CONTENTS CC + JOIN Transitions TT ON TT.FromID = CC.ContentID + WHERE TransitionID in(Select TransitionID from @ExternalTrans where RangeID = @ItemID and RangeID != ToID) + -- Update transitions that point to @ItemID to Point to @NextItemID + UPDATE TRANSITIONS + SET ToID = case when ToID = @ItemID then @NextItemID else ToID END, + RangeID = case when RangeID = @ItemID then @NextItemID else RangeID END + WHERE TransitionID in(Select TransitionID from @ExternalTrans where RangeID != @ItemID or RangeID = ToID) + UPDATE TRANSITIONS + SET ToID = case when ToID = @ItemID then @NextItemID else ToID END, + RangeID = case when RangeID = @ItemID then @PreviousItemID else RangeID END + WHERE TransitionID in(Select TransitionID from @ExternalTrans where RangeID = @ItemID and RangeID != ToID) + -- Delete Annotations for @ItemID and children + DELETE from Annotations where ItemID in(Select ItemID from @Children) + -- Delete Details associated with @ContentID and children + DELETE from Details where ContentID in(Select ContentID from @Children) + -- Delete Grids associated with @ContentID and children + DELETE from Grids where ContentID in(Select ContentID from @Children) + -- Delete Images associated with @ContentID and children + DELETE from Images where ContentID in(Select ContentID from @Children) + -- Delete Entries associated with @ContentID and children + DELETE from Entries where ContentID in(Select ContentID from @Children) + -- Delete ROUsages associated with @ContentID and children + DELETE from RoUsages where ContentID in(Select ContentID from @Children) + -- Delete ZTransitions records associated with @ContentID and children + DELETE FROM ZTransitions where TransitionID + in(SELECT TransitionID from Transitions where FromID in(SELECT ContentID FROM @Children) or FromID = @ContentID) + -- Delete Transitions associated with @ContentID and children + DELETE FROM Transitions where FromID in(SELECT ContentID FROM @Children) or FromID = @ContentID + -- Delete Parts associated with @ContentID and children + DELETE from Parts where ContentID in(Select ContentID from @Children) + -- Delete ZContents associated with @ContentID and children + DELETE from ZContents where ContentID in(Select ContentID from @Children) + -- Disconnect Items from Each Other + DELETE from Items where ItemID in(Select ItemID from @Children) and PreviousID Is Not Null + -- Disconnect Items to be deleted from each other + Update Items set PreviousID = null where ItemID in (Select ItemID from @Children) and PreviousID Is Not Null + -- Delete Item Records + DELETE from Items where ItemID in(Select ItemID from @Children) + -- Remove Previously deleted transitions + DELETE from tblTransitions where deletestatus = -1 and FromID in(SELECT ContentID FROM @Children) + -- Remove Previously deleted rousages + DELETE from tblrousages where deletestatus = -1 and contentID in(SELECT ContentID FROM @Children) + -- DELETE Contents + DELETE from Contents where ContentID in(Select ContentID from @Children) + --purge deletelog + DELETE from DeleteLog where DeleteID = @DeleteID + --end purge deletelog + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: DeleteItemAndChildren Succeeded' +ELSE PRINT 'Procedure Creation: DeleteItemAndChildren Error on Creation' +GO + +/****** Object: StoredProcedure [vefn_FixTransitionDataForCopy] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FixTransitionDataForCopy]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) + DROP FUNCTION [vefn_FixTransitionDataForCopy]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_FixTransitionDataForCopy] +(@data XML,@TransitionID int,@TranType int,@OldToID int,@OldRangeID int, @NewID int, @NewToID int, @NewRangeID int, @NewTranType int) +RETURNS XML +WITH EXECUTE AS OWNER +AS +BEGIN + + -- Build Search String and Replace String + DECLARE @offset int + DECLARE @lookFor nvarchar(MAX) + DECLARE @replaceWith nvarchar(MAX) + DECLARE @text nvarchar(MAX) + SET @text = Cast(@data as nvarchar(max)) + SET @lookFor = '#Link:Transition:' + ltrim(str(@TranType)) + ' ' + ltrim(str(@TransitionID)) + SET @offset = CHARINDEX(@lookFor,@text) + if(@offset = 0) + BEGIN + + SET @lookFor = '#Link:TransitionRange:' + ltrim(str(@TranType)) + ' ' + ltrim(str(@TransitionID)) + SET @offset = CHARINDEX(@lookFor,@text) + SET @replaceWith = '#Link:TransitionRange:' + ltrim(str(@NewTranType)) + ' ' + ltrim(str(@NewID)) + + ' ' + ltrim(str(@NewToID)) + ' ' + ltrim(str(@NewRangeID)) + SET @lookFor = @lookFor + ' ' + ltrim(str(@OldToID)) + ' ' + ltrim(str(@OldRangeID)) + END + ELSE + BEGIN + SET @replaceWith = '#Link:Transition:' + ltrim(str(@NewTranType)) + ' ' + ltrim(str(@NewID)) + + ' ' + ltrim(str(@NewToID)) + SET @lookFor = @lookFor + ' ' + ltrim(str(@OldToID)) + END + return Cast(replace(@text,@lookFor,@replaceWith) as XML) +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_FixTransitionDataForCopy Succeeded' +ELSE PRINT 'ScalarFunction Creation: vefn_FixTransitionDataForCopy Error on Creation' +GO + +/****** Object: StoredProcedure [vefn_FixROData] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FixROData]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) + DROP FUNCTION [vefn_FixROData]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +Create FUNCTION [dbo].[vefn_FixROData] +(@data XML,@ROUsageID int,@NewROUsageID int) +RETURNS XML +WITH EXECUTE AS OWNER +AS +BEGIN + -- Build Search String and Replace String + DECLARE @lookFor varchar(MAX) + DECLARE @replaceWith varchar(MAX) + SET @lookFor = '#Link:ReferencedObject:' + ltrim(str(@ROUsageID)) + ' ' + SET @replaceWith = '#Link:ReferencedObject:' + ltrim(str(@NewROUsageID)) + ' ' + return CAST(replace(CAST(@data AS NVarChar(max)),@lookFor,@replaceWith) AS XML) +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_FixROData Succeeded' +ELSE PRINT 'ScalarFunction Creation: vefn_FixROData Error on Creation' +GO + +/****** Object: UserDefinedFunction [dbo].[vefn_GetVersionProcedureItems] Script Date: 1/5/2015 3:58:49 PM ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetVersionProcedureItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_GetVersionProcedureItems]; +GO +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +/* +Select * from vefn_GetVersionProcedureItems('') where procid = 63589 +Select * from vefn_GetVersionProcedureItems('1') where procid = 63589 +Select * from vefn_GetVersionProcedureItems('4') where procid = 63589 +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2013 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_GetVersionProcedureItems](@DocVersionList varchar(MAX)) +RETURNS @VersionItems TABLE +( + VersionID int, + ProcID int, + ItemID int primary key, + ContentID int +) +WITH EXECUTE AS OWNER +AS +BEGIN + BEGIN + with Itemz([VersionID], ProcID, [ItemID], [ContentID]) as + (Select DV.VersionID, DV.ItemID ProcID, [I].[ItemID], [I].[ContentID] + FROM [Items] I + JOIN vefn_DocVersionSplit(@DocVersionList) DV + ON I.[ItemID] = DV.[ItemID] + Union All + -- Children + select Z.VersionID, Z.ProcID, I.[ItemID], I.[ContentID] + from Itemz Z + join Parts P on P.ContentID = Z.ContentID + join Items I on I.ItemID = P.ItemID + Union All + -- Siblings + select Z.VersionID, case when z.ProcID = z.ItemID then I.ItemID else Z.ProcID end ProcID, I.[ItemID], I.[ContentID] + from Itemz Z + join Items I on I.PreviousID = Z.ItemID + ) + insert into @VersionItems + select VersionID, ProcID, [ItemID], [ContentID] + from ItemZ I + --Select * From rousages RU Where RU.ContentID in (Select ContentID from ItemZ) + OPTION (MAXRECURSION 10000) + END +RETURN +END +GO +IF (@@Error = 0) PRINT 'TableFunction vefn_GetVersionProcedureItems Succeeded' +ELSE PRINT 'TableFunction vefn_GetVersionProcedureItems Error on Creation' + +/****** Object: StoredProcedure [getTransitionSearchResults] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SearchTransitions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [dbo].[vesp_SearchTransitions]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +/****** Object: StoredProcedure [dbo].[vesp_SearchTransitions] Script Date: 1/7/2015 6:15:17 PM ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO +/* +exec vesp_searchtransitions '1,2,4,6,7,11,12',6,'' +*/ + +CREATE PROCEDURE [dbo].[vesp_SearchTransitions] +( + @DocVersionList varchar(max), + @TranType int, + @TranCategory varchar(20), + -- added stepTypeList to fix bug B2015-055 - allows transition search in specified step elements + @StepTypeList varchar(MAX) +) +WITH EXECUTE AS OWNER +AS +BEGIN + Declare @Delim char(1) + Set @Delim=char(7) + Declare @DelimNumber char(1) + Set @DelimNumber=char(17) + Declare @DelimStep char(1) + Set @DelimStep='.' + declare @itmp table + ( + vid int, + pid int, + iid int primary key, + cid int + ) + declare @ctmp table + ( + vid int, + pid int, + iid int, + cid int primary key + ) + declare @ttmp table + ( + itemid int, + dvpath varchar(max), + UnitPrefix varchar(MAX) + ) + insert into @itmp select * from vefn_getversionprocedureitems(@DocVersionList) + insert into @ctmp select * from @itmp + if @TranType = -1 and @TranCategory = '' begin + insert into @ttmp + select ii.ItemID,dv.DVPath,dv.UnitPrefix + from vefn_DocVersionSplit(@DocVersionList) dv + join @ctmp ct on dv.VersionID = ct.vid + join Items ii on ct.cid = ii.ContentID + join Transitions tt on ii.ContentID = tt.FromID + end else if @TranType > -1 and @TranCategory = '' begin + insert into @ttmp + select ii.ItemID,dv.DVPath,dv.UnitPrefix + from vefn_DocVersionSplit(@DocVersionList) dv + join @ctmp ct on dv.VersionID = ct.vid + join Items ii on ct.cid = ii.ContentID + join Transitions tt on ii.ContentID = tt.FromID + where tt.TranType = @TranType + end else if @TranType = -1 and @TranCategory != '' begin + insert into @ttmp + select ii.ItemID,dv.DVPath,dv.UnitPrefix + from vefn_DocVersionSplit(@DocVersionList) dv + join @ctmp ct on dv.VersionID = ct.vid + join Items ii on ct.cid = ii.ContentID + join Transitions tt on ii.ContentID = tt.FromID + join @itmp it on tt.ToID = it.iid + where case when it.vid = ct.vid then case when it.pid = ct.pid then 'Internal' else 'External' end else 'Outside' end = @TranCategory + end else begin + insert into @ttmp + select ii.ItemID,dv.DVPath,dv.UnitPrefix + from vefn_DocVersionSplit(@DocVersionList) dv + join @ctmp ct on dv.VersionID = ct.vid + join Items ii on ct.cid = ii.ContentID + join Transitions tt on ii.ContentID = tt.FromID + join @itmp it on tt.ToID = it.iid + where tt.TranType = @TranType and case when it.vid = ct.vid then case when it.pid = ct.pid then 'Internal' else 'External' end else 'Outside' end = @TranCategory + end + BEGIN + with Itemz(DVPath, [Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], + [pDTS],[pUserID],[pLastChanged],PPath, Path, IsRNO, POrdinalPath, OrdinalPath, UnitPrefix) as ( + Select DVPath, 0 [Level], 0 [ParentID], 0 [Ordinal], [I].[ItemID], [PreviousID],0 [FromType],[I].[ContentID],[I].[DTS],[I].[UserID],[I].[LastChanged] + ,0 [pContentID],[I].[DTS] [pDTS], [I].[UserID] [pUserID], [I].[LastChanged] [pLastChanged], + Cast('' as nvarchar(max)) PPath, + Cast(Case when C.Type < 20000 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') else '1' end as nvarchar(max)) Path, + 0 IsRNO, Cast('' as nvarchar(max)) POrdinalPath, Cast('0001' as nvarchar(max)) OrdinalPath, UnitPrefix + FROM [Items] I + Join Contents C on C.ContentID=I.ContentID + JOIN vefn_DocVersionSplit(@DocVersionList) DV + ON I.[ItemID] = DV.[ItemID] + Union All +-- Children + select DVPath, [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] + ,PATH + --'' + case C.Type/10000 + when 2 then + case P.FromType + when 3 then @DelimStep + 'Caution' + when 4 then @DelimStep + 'Note' + when 8 then @DelimStep + 'SupInfo' + else '' end + else '' end + PPath, + Path + case C.Type/10000 + when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') + when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') + else + case P.FromType + --when 1 then 'PRC' + @Delim + cast(1 as varchar(4)) + --when 2 then 'SEC' + @Delim + cast(1 as varchar(4)) + when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(4)) + when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(4)) + when 5 then @DelimStep +'RNO' + @DelimStep + when 7 then @DelimStep +'Table' + @DelimStep + when 8 then @DelimStep +'SupInfo' + @DelimStep + else case when Z.FromType < 3 then @Delim else @DelimStep end + cast(1 as varchar(4)) + end end Path, + case when P.FromType = 5 then -1 else 0 end IsRNO, + OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-' , + OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-0001', UnitPrefix + from Itemz Z + join Parts P on P.ContentID = Z.ContentID + join Items I on I.ItemID = P.ItemID + join Contents C on C.ContentID = I.ContentID + Union All +-- Siblings + select DVPath, [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + ,null,null,null,null + ,PPath, + --'1' + + PPath + case C.Type/10000 + when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') + when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') + else case when .dbo.vefn_GetLastDelim(Path) = '.' then @DelimStep else @Delim end + cast(Ordinal + 2 as varchar(4)) + end Path, 0, + POrdinalPath, + POrdinalPath + right('0000' + cast(Z.[Ordinal] + 2 as varchar(4)), 4), UnitPrefix + from Itemz Z + join Items I on I.PreviousID = Z.ItemID + join Contents C on C.ContentID = I.ContentID + ) + SELECT + tt.dvpath,Z.Path, + I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], + C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], + (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], + (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], + (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=[I].[ItemID]) [NextCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], + (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], + (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], + (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], + (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], + (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], + (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], + (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] + FROM Itemz Z + join [Items] I on Z.ItemID = I.ItemID + join @ttmp tt on I.ItemID = tt.itemid + join Contents C on C.ContentID = I.ContentID + left join Parts P on i.ItemID = P.ItemID + -- Where clase added for bug fix B2015-055 to allow transition search within selected step elements + Where + ((isnull(@StepTypeList,'') = '' /*and dbo.vefn_AllSections(C.Type)>=10000*/) + or ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))))) + OPTION (MAXRECURSION 10000) + RETURN + END +END +GO + +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SearchTransitions Succeeded' +ELSE PRINT 'Procedure Creation: vesp_SearchTransitions Error on Creation' +GO + +/****** Object: TableFunction [vefn_GetVersionFormatSections] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetVersionFormatSections]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_GetVersionFormatSections]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_GetVersionFormatSections](@DocVersionList varchar(MAX)) +RETURNS @VersionItems TABLE +( + VersionID int, + ItemID int, + ContentID int primary key, + FormatID int +) +WITH EXECUTE AS OWNER +AS +BEGIN + BEGIN + with Itemz([VersionID], [ItemID], [ContentID], [FormatID], [ParentFormatID]) as + (Select DV.VersionID, [I].[ItemID], [I].[ContentID], + isnull(C.[FormatID],isnull(DV2.[FormatID],isnull(F.[FormatID],P.[FormatID]))), + isnull(DV2.[FormatID],isnull(F.[FormatID],P.[FormatID])) + FROM [Items] I + JOIN vefn_DocVersionSplit(@DocVersionList) DV ON I.[ItemID] = DV.[ItemID] + join docversions DV2 on DV.[VersionID] = DV2.[VersionID] + join folders F on DV2.[FolderID] = F.[FolderID] + join folders P on P.[FolderID] = F.[ParentID] + join Contents C on I.ContentID = C.ContentID + + Union All + -- Children + select Z.VersionID, I.[ItemID], I.[ContentID], isnull(C.[FormatID],Z.[FormatID]), Z.[FormatID] + from Itemz Z + join Parts P on P.ContentID = Z.ContentID + join Items I on I.ItemID = P.ItemID + join Contents C on I.ContentID = C.ContentID + where c.Type < 20000 + Union All + -- Siblings + select Z.VersionID, I.[ItemID], I.[ContentID], isnull(C.[FormatID],Z.[ParentFormatID]), Z.[ParentFormatID] + from Itemz Z + join Items I on I.PreviousID = Z.ItemID + join Contents C on I.ContentID = C.ContentID + ) + insert into @VersionItems + select VersionID, [ItemID], [ContentID], [FormatID] + from ItemZ I + --Select * From rousages RU Where RU.ContentID in (Select ContentID from ItemZ) + OPTION (MAXRECURSION 10000) + END +RETURN +END +GO +-- Display the status of func creation +IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_GetVersionFormatSections Succeeded' +ELSE PRINT 'TableFunction Creation: vefn_GetVersionFormatSections Error on Creation' +GO + +/****** Object: StoredProcedure [vesp_GetFormatVersions] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetFormatVersions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [dbo].[vesp_GetFormatVersions]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2017 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +/****** Object: StoredProcedure [dbo].[vesp_GetFormatVersions] Script Date: 1/7/2015 6:15:17 PM ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO +CREATE PROCEDURE [dbo].[vesp_GetFormatVersions] +WITH EXECUTE AS OWNER +AS +BEGIN + select ff.Name + ' - ' + ff.Description Title,vfi.FormatID,vn.VersionID + from vefn_GetVersionNames() vn + join vefn_GetVersionFormatSections('') vfi on vn.VersionID = vfi.VersionID + join Formats ff on vfi.FormatID = ff.FormatID + group by ff.Name + ' - ' + ff.Description,vfi.formatid,vn.VersionID + return +END +GO + +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetFormatVersions Succeeded' +ELSE PRINT 'Procedure Creation: vesp_GetFormatVersions Error on Creation' +GO + +/****** Object: StoredProcedure [vesp_GetTranTypesByFormatID] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetTranTypesByFormatID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [dbo].[vesp_GetTranTypesByFormatID]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2017 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +/****** Object: StoredProcedure [dbo].[vesp_GetTranTypesByFormatID] Script Date: 1/7/2015 6:15:17 PM ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO +/* +vesp_GetTranTypesByFormatID 102 +*/ +CREATE PROCEDURE [dbo].[vesp_GetTranTypesByFormatID] +( + @FormatID int +) +WITH EXECUTE AS OWNER +AS +BEGIN + declare @t1 table + ( + formatid int, + transindex int, + transmenu varchar(max) + ) + declare @t2 table + ( + transindex int, + formatid int + ) + insert into @t1 + select ff.formatid,r1.value('@Index','int') transindex, r1.value('@TransMenu','varchar(max)') transmenu + from Formats ff + cross apply ff.Data.nodes('//TransTypes') t1(r1) + where ff.FormatID = @FormatID + union + select ff.formatid,r1.value('@Index','int') transindex, r1.value('@TransMenu','varchar(max)') transmenu + from Formats ff + cross apply ff.Data.nodes('//TransTypes') t1(r1) + where ff.FormatID = 1 + insert into @t2 + select transindex,max(formatid) formatid from @t1 group by transindex + select t1.transindex,t1.transmenu + from @t1 t1 + join @t2 t2 on t1.formatid = t2.formatid and t1.transindex = t2.transindex + order by t1.transindex + RETURN +END +GO + +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetTranTypesByFormatID Succeeded' +ELSE PRINT 'Procedure Creation: vesp_GetTranTypesByFormatID Error on Creation' +GO + +/****** Object: StoredProcedure [vesp_GetTransitionReportData] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetTransitionReportData]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [dbo].[vesp_GetTransitionReportData]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2017 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +/****** Object: StoredProcedure [dbo].[vesp_GetTransitionReportData] Script Date: 1/7/2015 6:15:17 PM ******/ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO +/* +vesp_GetTransitionReportData 5, 6078 +*/ +CREATE PROCEDURE [dbo].[vesp_GetTransitionReportData] +( + @VersionID int, + @ProcedureID int +) +WITH EXECUTE AS OWNER +AS +BEGIN + declare @itmp table + ( + vid int, + pid int, + iid int primary key, + cid int + ) + declare @ctmp table + ( + vid int, + pid int, + iid int, + cid int primary key + ) + declare @ttmp table + ( + tid int primary key + ) + insert into @itmp select * from vefn_getversionprocedureitems('') + insert into @ctmp select * from @itmp + insert into @ttmp + select tt.TransitionID from Transitions tt join @ctmp ct on tt.FromID = ct.cid join @itmp it on tt.ToID = it.iid + where ct.pid = @ProcedureID or it.pid = @ProcedureID + --internal + select 1 level,tt.*, + (SELECT COUNT(*) FROM [ZTransitions] WHERE [ZTransitions].[TransitionID]=tt.[TransitionID]) [ZTransitionCount] + from Transitions tt + join @ttmp tp on tt.TransitionID = tp.tid + join @ctmp ct on tt.FromID = ct.cid + join @itmp it on tt.ToID = it.iid + where ct.vid = it.vid and ct.pid = @ProcedureID and it.pid = @ProcedureID + --external from + union + select 2 level,tt.*, + (SELECT COUNT(*) FROM [ZTransitions] WHERE [ZTransitions].[TransitionID]=tt.[TransitionID]) [ZTransitionCount] + from Transitions tt + join @ttmp tp on tt.TransitionID = tp.tid + join @ctmp ct on tt.FromID = ct.cid + join @itmp it on tt.ToID = it.iid + where ct.vid = it.vid and ct.pid = @ProcedureID and it.pid != @ProcedureID + --external to + union + select 3 level,tt.*, + (SELECT COUNT(*) FROM [ZTransitions] WHERE [ZTransitions].[TransitionID]=tt.[TransitionID]) [ZTransitionCount] + from Transitions tt + join @ttmp tp on tt.TransitionID = tp.tid + join @ctmp ct on tt.FromID = ct.cid + join @itmp it on tt.ToID = it.iid + where ct.vid = it.vid and ct.pid != @ProcedureID and it.pid = @ProcedureID + --outside from + union + select 4 level,tt.*, + (SELECT COUNT(*) FROM [ZTransitions] WHERE [ZTransitions].[TransitionID]=tt.[TransitionID]) [ZTransitionCount] + from Transitions tt + join @ttmp tp on tt.TransitionID = tp.tid + join @ctmp ct on tt.FromID = ct.cid + join @itmp it on tt.ToID = it.iid + where ct.vid != it.vid and ct.pid = @ProcedureID-- and ii.ItemID not in (select iid from @itmp) + --outside to + union + select 5 level,tt.*, + (SELECT COUNT(*) FROM [ZTransitions] WHERE [ZTransitions].[TransitionID]=tt.[TransitionID]) [ZTransitionCount] + from Transitions tt + join @ttmp tp on tt.TransitionID = tp.tid + join @itmp it on tt.ToID = it.iid + join @ctmp ct on tt.FromID = ct.cid + where ct.vid != it.vid and it.pid = @ProcedureID --and ii.ContentID not in (select cid from @ctmp) + RETURN +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetTransitionReportData Succeeded' +ELSE PRINT 'Procedure Creation: vesp_GetTransitionReportData Error on Creation' +GO + + +/****** Object: StoredProcedure [PasteItemChild] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[PasteItemChild]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [PasteItemChild]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2015 - Volian Enterprises, Inc. All rights reserved. + +Copies & Pastes into a level above the copied item, for example copied item is step pasted into a section. + +Example test: + +declare @NewItemID int +declare @dts datetime +set @newitemid = 0 +set @dts = getdate() +exec PasteItemChild 1493,484,20041,2,@dts,'KATHY',@NewItemID output + +*****************************************************************************/ + +CREATE PROCEDURE [dbo].[PasteItemChild] +( + @ItemID int=null, @StartItemID int=null, -- ItemID is destination, StartItemID is top of copy + @Type int=null, @FromType int=null, @DTS datetime, @UserID nvarchar(100), -- Type is step/section type for content record, fromtype is for parts + @NewItemID int output +) +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + if exists (select * from tblitems where itemid = @ItemID and DeleteStatus !=0) + BEGIN + RAISERROR ('###Cannot Paste Step###This current step has been deleted in another session',16,1) + RETURN + END + -- First make a copy of the input StartItemID + -- DestFormatID is the formatid for the destination parent's format + DECLARE @DestFormatID int + SET @DestFormatID = .dbo.vefn_GetInheritedFormat(@ItemID, 0) + EXECUTE CopyItemAndChildren @StartItemID, @DestFormatID, @UserID, @NewItemID OUTPUT + -- print 'testing PasteItemChild 1 ' + cast(dbo.ve_GetTransitionErrorCount() as varchar(20)) + DECLARE @ChildID int, @ContentID int, @ParentContentID int, @LastChanged timestamp + , @newLastChanged timestamp, @Error int, @Rowcount int, @ChildDeleted int + SELECT @ChildID = pp.[ItemID],@ParentContentID = ii.ContentID, @LastChanged = pp.LastChanged + FROM [ITEMS] ii + LEFT JOIN [PARTS] pp on pp.ContentID=ii.ContentID and pp.FromType=@FromType + WHERE ii.[ItemID]=@ItemID + IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[tblParts]') AND OBJECTPROPERTY(id,N'IsTable') = 1) + BEGIN + SELECT @ChildDeleted = pp.[ItemID],@ParentContentID = ii.ContentID, @LastChanged = pp.LastChanged + FROM [ITEMS] ii + LEFT JOIN [tblPARTS] pp on pp.ContentID=ii.ContentID and pp.FromType=@FromType + WHERE ii.[ItemID]=@ItemID and pp.DeleteStatus > 0 + END + -- No existing child - Add Parts record. Note that don't need to update any transition records if no existing children + IF @ChildID is null + BEGIN + IF @ChildDeleted is not null + DELETE FROM [tblParts] WHERE ItemID = @ChildDeleted + EXECUTE AddPart @ParentContentID, @FromType, @newItemID, @DTS, @UserID, @newLastChanged output + END + ELSE -- Children exist: Update existing Parts record and adjust transition records that may have pointed to 1st child. + BEGIN + EXECUTE UpdatePart @ParentContentID, @FromType, @newItemID, @DTS, @UserID, @LastChanged, @newLastChanged output + UPDATE [Items] SET [PreviousID]=@newItemID WHERE [ItemID]=@ChildID + + -- Update content records for the transitions, this only fixes the link portion. Code fixes the text. + Update CC + Set Text = DBO.vefn_FixTransitionText(Text,TT.TransitionID,TT.TranType,TT.ToID,TT.RangeID,@ChildID,@newItemID) + From CONTENTS CC + JOIN Transitions TT ON TT.FromID = CC.ContentID + WHERE TT.ToID = @ChildID OR TT.RangeID = @ChildID + -- Update transitions that pointed to @ItemID to point to @newItemID + Update TRANSITIONS + Set ToID = CASE ToID WHEN @ChildID THEN @newItemID ELSE ToID END, + RangeID = CASE RangeID WHEN @ChildID THEN @newItemID ELSE RangeID END + WHERE ToID = @ChildID OR RangeID = @ChildID + END + -- Add 'Verification Required' AnnotationType + DECLARE @typeID int + SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' + IF(@typeID IS NULL) + BEGIN + INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian') + SELECT @typeID = SCOPE_IDENTITY() + END + -- Add "Verification Required" Annotation for each Transition that points to @newItemID or @NextID + -- I don't expect to see any transitions that point to @ChildID. They should have changed in + -- the update above to point to @newItemID. This is here for consistency with the other insert + -- stored procedures + INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) + SELECT ItemID, @typeID,'Verify Transition Destination',@UserID + FROM Items where CONTENTID in (SELECT FromID FROM TRANSITIONS + where ToID IN(@ChildID,@newItemID) OR RangeID IN(@ChildID,@newItemID)) + -- Transition Text gets updated in ItemInsertExt.cs + IF( @@TRANCOUNT > 0 ) COMMIT + PRINT 'Child Added ' + ltrim(str(@newItemID)) + EXECUTE GetItem @newItemID + delete from itemaudits where itemid in (select itemid from vefn_ChildItems(@newitemid)) + delete from contentaudits where contentid in (select contentid from vefn_ChildItems(@newitemid)) +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: PasteItemChild Succeeded' +ELSE PRINT 'Procedure Creation: PasteItemChild Error on Creation' +GO + + +/****** Object: StoredProcedure [PasteDocVersionChild] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[PasteDocVersionChild]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [PasteDocVersionChild]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2014 - Volian Enterprises, Inc. All rights reserved. + +Copies & Pastes into a docversion that does NOT have any existing procedures. + +Example test: + +declare @NewItemID int +declare @dts datetime +set @newitemid = 0 +set @dts = getdate() +exec PasteDocVersionChild 5,30,@dts,'KATHY',@NewItemID output + +*****************************************************************************/ +CREATE PROCEDURE [dbo].[PasteDocVersionChild] +( + @VersionID int=null, @StartItemID int=null, -- VersionID is destination (docversion), StartItemID is top of copy (i.e. procedure) + @DTS datetime, @UserID nvarchar(100), + @ThisVersionID int output +) +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + if not exists (select * from DocVersions where versionid = @VersionID) + BEGIN + RAISERROR ('###Cannot Paste Procedure###This document version has been deleted in another session',16,1) + RETURN + END + -- First make a copy of the input StartItemID (Procedure) + -- DestFormatID is the formatid for the destination parent's format + DECLARE @NewItemID int + DECLARE @DestFormatID int + SET @ThisVersionID = @VersionID + SET @DestFormatID = .dbo.vefn_GetDocVersionInheritedFormat(@VersionID) + EXECUTE CopyItemAndChildren @StartItemID, @DestFormatID, @UserID, @NewItemID OUTPUT + UPDATE [DOCVERSIONS] SET [ItemID] = @NewItemID where [VersionID]=@VersionID + IF( @@TRANCOUNT > 0 ) COMMIT + PRINT 'Child Added ' + ltrim(str(@newItemID)) + EXECUTE GetDocVersion @ThisVersionID + delete from itemaudits where itemid in (select itemid from vefn_ChildItems(@newitemid)) + delete from contentaudits where contentid in (select contentid from vefn_ChildItems(@newitemid)) +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: PasteDocVersionChild Succeeded' +ELSE PRINT 'Procedure Creation: PasteDocVersionChild Error on Creation' +GO + + +/****** Object: StoredProcedure [vefn_GetDocVersionInheritedFormat] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetDocVersionInheritedFormat]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) + DROP FUNCTION [vefn_GetDocVersionInheritedFormat]; +GO + +CREATE FUNCTION [dbo].[vefn_GetDocVersionInheritedFormat] (@VersionID int) RETURNS int +WITH EXECUTE AS OWNER +AS +BEGIN +DECLARE @FormatID as int + -- First get format for the input doc version + begin + with Itemz([Level], [VersionID], [FolderID], [ParentID], [FormatID]) as ( + -- DocVersion From Item + select 0 [Level], DV.VersionID, DV.FolderID, null, DV.FormatID + from DocVersions DV + where [VersionID] = @VersionID + Union All + -- Folders + select [Level] + 1, null, FF.ParentID, FF.FolderID, FF.FormatID + from Itemz Z + join Folders FF on FF.FolderID = Z.ParentID and FF.ParentID <> FF.FolderID + where Z.FormatID is null + ) + Select @FormatID = FormatID from Itemz ZZ Where FormatID is not null + OPTION (MAXRECURSION 10000) + END + RETURN @FormatID +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_GetDocVersionInheritedFormat Succeeded' +ELSE PRINT 'ScalarFunction Creation: vefn_GetDocVersionInheritedFormat Error on Creation' +GO + +/*********the following funcion is for debugging copy/paste where transition text in content records does not get updated */ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetTransitionErrorCount]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) + DROP FUNCTION [ve_GetTransitionErrorCount]; +/****** Object: UserDefinedFunction [dbo].[vefn_ChronologyReport] Script Date: 03/20/2012 17:50:44 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +/* +select dbo.ve_GetTransitionErrorCount () +print 'testing ' + cast(dbo.ve_GetTransitionErrorCount() as varchar(20)) +*/ + +CREATE FUNCTION [dbo].[ve_GetTransitionErrorCount] () RETURNS int +WITH EXECUTE AS OWNER +AS +BEGIN +DECLARE @Count int +select @Count = count(*) from ( +select dbo.ve_GetShortPathFromContentId(contentid) location, * from ( +select contentid, text, tt.*, +case when text like '%'+ case when tt.toid = tt.rangeid and tt.IsRange = 0 +then +'#Link:Transition:' + cast(TranType as nvarchar(2)) + +' ' + cast(TransitionID as nvarchar(10)) + ' ' + cast(ToID as nvarchar(10)) + '%' +else +'#Link:TransitionRange:' + cast(TranType as nvarchar(2)) + +' ' + cast(TransitionID as nvarchar(10)) + ' ' + cast(ToID as nvarchar(10)) + ' ' + cast(RangeID as nvarchar(10))+ '%' +end then 'matches' else 'different' end ContentMatchesTrans, +case when text like '%'+ +'#Link:TransitionRange:' + cast(TranType as nvarchar(2)) + +' ' + cast(TransitionID as nvarchar(10)) + ' ' + cast(ToID as nvarchar(10)) + ' ' + cast(RangeID as nvarchar(10))+ '%' +then 'matches' else 'different' end ContentMatchesRangeTrans +from Contents cc +join transitions tt on tt.fromid = cc.contentid) mm +where ContentMatchesTrans = 'different') mm +return @Count +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'ScalarFunction Creation: ve_GetTransitionErrorCount Succeeded' +ELSE PRINT 'ScalarFunction Creation: ve_GetTransitionErrorCount Error on Creation' +GO + +--added by JCB for storing procedure xml for approved version +--ALTER TABLE Versions add ApprovedXML if it does not exist +IF COL_LENGTH('Versions','ApprovedXML') IS NULL + ALTER TABLE Versions ADD [ApprovedXML] [NVARCHAR](MAX) NULL; +GO + +/****** Object: StoredProcedure [addVersion] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addVersion]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [addVersion]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[addVersion] + +( + @RevisionID int, + @StageID int, + @PDF varbinary(MAX)=null, + @SummaryPDF varbinary(MAX)=null, + @ApprovedXML nvarchar(MAX)=null, + @DTS datetime, + @UserID nvarchar(200), + @newVersionID int output, + @newLastChanged timestamp output +) +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + INSERT INTO [Versions] + ( + [RevisionID], + [StageID], + [PDF], + [SummaryPDF], + [ApprovedXML], + [DTS], + [UserID] + ) + VALUES + ( + @RevisionID, + @StageID, + @PDF, + @SummaryPDF, + @ApprovedXML, + @DTS, + @UserID + ) + SELECT @newVersionID= SCOPE_IDENTITY() + SELECT @newLastChanged=[LastChanged] + FROM [Versions] WHERE [VersionID]=@newVersionID + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: addVersion Succeeded' +ELSE PRINT 'Procedure Creation: addVersion Error on Creation' +GO + +/****** Object: StoredProcedure [getVersion] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getVersion]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getVersion]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getVersion] + +( + @VersionID int +) +WITH EXECUTE AS OWNER +AS + SELECT + [VersionID], + [RevisionID], + [StageID], + [PDF], + [SummaryPDF], + [ApprovedXML], + [DTS], + [UserID], + [LastChanged] + FROM [Versions] + WHERE [VersionID]=@VersionID + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getVersion Succeeded' +ELSE PRINT 'Procedure Creation: getVersion Error on Creation' +GO + +/****** Object: StoredProcedure [getVersions] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getVersions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getVersions]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getVersions] + +WITH EXECUTE AS OWNER +AS + SELECT + [VersionID], + [RevisionID], + [StageID], + [PDF], + [SummaryPDF], + [ApprovedXML], + [DTS], + [UserID], + [LastChanged] + FROM [Versions] + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getVersions Succeeded' +ELSE PRINT 'Procedure Creation: getVersions Error on Creation' +GO + +/****** Object: StoredProcedure [getVersionsByRevisionID] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getVersionsByRevisionID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getVersionsByRevisionID]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getVersionsByRevisionID] + +( + @RevisionID int +) +WITH EXECUTE AS OWNER +AS + + SELECT + [Versions].[VersionID], + [Versions].[RevisionID], + [Versions].[StageID], + [Versions].[PDF], + [Versions].[SummaryPDF], + [Versions].[ApprovedXML], + [Versions].[DTS], + [Versions].[UserID], + [Versions].[LastChanged], + [Stages].[Name] [Stage_Name], + [Stages].[Description] [Stage_Description], + [Stages].[IsApproved] [Stage_IsApproved], + [Stages].[DTS] [Stage_DTS], + [Stages].[UserID] [Stage_UserID] + FROM [Versions] + JOIN [Stages] ON + [Stages].[StageID]=[Versions].[StageID] + WHERE + [Versions].[RevisionID]=@RevisionID + + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getVersionsByRevisionID Succeeded' +ELSE PRINT 'Procedure Creation: getVersionsByRevisionID Error on Creation' +GO + +/****** Object: StoredProcedure [getVersionsByStageID] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getVersionsByStageID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getVersionsByStageID]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getVersionsByStageID] + +( + @StageID int +) +WITH EXECUTE AS OWNER +AS + + SELECT + [Versions].[VersionID], + [Versions].[RevisionID], + [Versions].[StageID], + [Versions].[PDF], + [Versions].[SummaryPDF], + [Versions].[ApprovedXML], + [Versions].[DTS], + [Versions].[UserID], + [Versions].[LastChanged], + [Revisions].[ItemID] [Revision_ItemID], + [Revisions].[TypeID] [Revision_TypeID], + [Revisions].[RevisionNumber] [Revision_RevisionNumber], + [Revisions].[RevisionDate] [Revision_RevisionDate], + [Revisions].[Notes] [Revision_Notes], + [Revisions].[Config] [Revision_Config], + [Revisions].[DTS] [Revision_DTS], + [Revisions].[UserID] [Revision_UserID] + FROM [Versions] + JOIN [Revisions] ON + [Revisions].[RevisionID]=[Versions].[RevisionID] + WHERE + [Versions].[StageID]=@StageID + + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getVersionsByStageID Succeeded' +ELSE PRINT 'Procedure Creation: getVersionsByStageID Error on Creation' +GO + +/****** Object: StoredProcedure [updateVersion] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateVersion]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [updateVersion]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[updateVersion] + +( + @VersionID int, + @RevisionID int, + @StageID int, + @PDF varbinary(MAX)=null, + @SummaryPDF varbinary(MAX)=null, + @ApprovedXML nvarchar(MAX)=null, + @DTS datetime, + @UserID nvarchar(200), + @LastChanged timestamp, + @newLastChanged timestamp output +) +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + UPDATE [Versions] + SET + [RevisionID]=@RevisionID, + [StageID]=@StageID, + [PDF]=@PDF, + [SummaryPDF]=@SummaryPDF, + [ApprovedXML]=@ApprovedXML, + [DTS]=@DTS, + [UserID]=@UserID + WHERE [VersionID]=@VersionID AND [LastChanged]=@LastChanged + IF @@ROWCOUNT = 0 + BEGIN + IF NOT exists(select * from [Versions] WHERE [VersionID]=@VersionID) + RAISERROR('Version record has been deleted by another user', 16, 1) + ELSE + RAISERROR('Version has been edited by another user', 16, 1) + END + + SELECT @newLastChanged=[LastChanged] + FROM [Versions] WHERE [VersionID]=@VersionID + + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: updateVersion Succeeded' +ELSE PRINT 'Procedure Creation: updateVersion Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetDisconnectedItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_GetDisconnectedItems]; +GO +/****** Object: UserDefinedFunction [dbo].[vefn_GetDisconnectedItems] ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +-- select * from vefn_GetDisconnectedItems() + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2017 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ + +CREATE FUNCTION [dbo].[vefn_GetDisconnectedItems]() +RETURNS @DiscItems TABLE +( + ItemID int primary Key, + ContentID int, + UNIQUE (ContentID) +) +WITH EXECUTE AS OWNER +AS +BEGIN + declare @UsedItems Table + ( itemid int primary key, contentid int) + insert into @UsedItems + Select ItemID, ContentID from vefn_GetVersiontblItems('') + insert into @DiscItems + select itemid,ii.contentid from ( + Select ItemID,ii.ContentID from tblItems II + where ItemID not in(select ItemID from @UsedItems)) ii + Join Contents CC ON CC.ContentID = II.ContentID + And CC.Type is not null + UNION + Select ItemId, ContentID from vefn_GetZeroFromType() + RETURN +END +GO +IF (@@Error = 0) PRINT 'TableFunction [vefn_GetDisconnectedItems] Succeeded' +ELSE PRINT 'TableFunction [vefn_GetDisconnectedItems] Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_TransitionsToDisconnected]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_TransitionsToDisconnected]; +GO +/****** Object: UserDefinedFunction [dbo].[vefn_TransitionsToDisconnected] ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +-- select * from vefn_TransitionsToDisconnected('1') + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2013 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ + +CREATE FUNCTION dbo.vefn_TransitionsToDisconnected(@DocVersionList nvarchar(MAX)) +RETURNS @Transitions TABLE +( + [TransitionID] int primary key + ,[FromID] int + ,[ToID] int + ,[RangeID] int + ,[IsRange] int + ,[TranType] int + ,[Config] nvarchar(max) + ,[DTS] datetime + ,[UserID] nvarchar(100) + ,UNIQUE(FromID,TransitionID) + ,UNIQUE(ToID,TransitionID) +) +WITH EXECUTE AS OWNER +AS +BEGIN + insert into @Transitions + select [TransitionID],[FromID],[ToID],[RangeID],[IsRange],[TranType],[Config],[DTS],[UserID] + from Transitions tt + join vefn_GetVersionItems(@DocVersionList) vi on tt.FromID = vi.ContentID + join vefn_GetDisconnectedItems() di on tt.ToID = di.ItemID + RETURN +END +GO +IF (@@Error = 0) PRINT 'TableFunction [vefn_TransitionsToDisconnected] Succeeded' +ELSE PRINT 'TableFunction [vefn_TransitionsToDisconnected] Error on Creation' +GO + +/****** Object: StoredProcedure [getTransitionsToDisconnected] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getTransitionsToDisconnected]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getTransitionsToDisconnected]; +GO + +/* +exec getTransitionsToDisconnected +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getTransitionsToDisconnected] +( + @DocVersionList nvarchar(MAX) +) +WITH EXECUTE AS OWNER +AS + SELECT + TT.[TransitionID], + TT.[FromID], + TT.[ToID], + TT.[RangeID], + TT.[IsRange], + TT.[TranType], + TT.[Config], + TT.[DTS], + TT.[UserID], + TT.[LastChanged], + (SELECT COUNT(*) FROM [ZTransitions] WHERE [ZTransitions].[TransitionID]=TT.[TransitionID]) [ZTransitionCount] + from transitions tt + join vefn_TransitionsToDisconnected(@DocVersionList) td on tt.TransitionID = td.TransitionID + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getTransitionsToDisconnected Succeeded' +ELSE PRINT 'Procedure Creation: getTransitionsToDisconnected Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetNonEditableItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_GetNonEditableItems]; +GO +/****** Object: UserDefinedFunction [dbo].[vefn_GetNonEditableItems] ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +-- select * from vefn_GetNonEditableItems() + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2017 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ + +CREATE FUNCTION [DBO].[vefn_GetNonEditableItems]() +RETURNS @NonEditItems TABLE +( + ItemID int primary Key, + ContentID int, + UNIQUE (ContentID) +) +WITH EXECUTE AS OWNER +AS +BEGIN + insert into @NonEditItems + select ii.ItemID,ah.ContentID + from + ( + select cast(Config as xml) xconfig,ContentID from Contents where ContentID in + ( + select p1.ContentID from Parts p1 + join Parts p2 on p1.ContentID = p2.ContentID + where p1.FromType = 2 and p2.FromType = 6 + ) + and Config like '%edit%' + ) ah + cross apply xconfig.nodes('//SubSection') tSubsection(xSubsection) + join Items ii on ah.ContentID = ii.ContentID + where isnull(xSubsection.value('@Edit','varchar(1)'),'N') = 'N' + RETURN +END +GO +IF (@@Error = 0) PRINT 'TableFunction [vefn_GetNonEditableItems] Succeeded' +ELSE PRINT 'TableFunction [vefn_GetNonEditableItems] Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_TransitionsToNonEditable]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_TransitionsToNonEditable]; +GO +/****** Object: UserDefinedFunction [dbo].[vefn_TransitionsToNonEditable] ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +-- select * from vefn_TransitionsToNonEditable('1') + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2013 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ + +CREATE FUNCTION dbo.vefn_TransitionsToNonEditable(@DocVersionList nvarchar(MAX)) +RETURNS @Transitions TABLE +( + [TransitionID] int primary key + ,[FromID] int + ,[ToID] int + ,[RangeID] int + ,[IsRange] int + ,[TranType] int + ,[Config] nvarchar(max) + ,[DTS] datetime + ,[UserID] nvarchar(100) + ,UNIQUE(FromID,TransitionID) + ,UNIQUE(ToID,TransitionID) +) +WITH EXECUTE AS OWNER +AS +BEGIN + insert into @Transitions + select [TransitionID],[FromID],[ToID],[RangeID],[IsRange],[TranType],[Config],[DTS],[UserID] + from Transitions tt + join vefn_GetVersionItems(@DocVersionList) vi on tt.FromID = vi.ContentID + join vefn_GetNonEditableItems() di on tt.ToID in (select ItemID from vefn_StepChildItems(di.ItemID)) + RETURN +END +GO +IF (@@Error = 0) PRINT 'TableFunction [vefn_TransitionsToNonEditable] Succeeded' +ELSE PRINT 'TableFunction [vefn_TransitionsToNonEditable] Error on Creation' +GO + +/****** Object: StoredProcedure [getTransitionsToNonEditable] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getTransitionsToNonEditable]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getTransitionsToNonEditable]; +GO + +/* +exec getTransitionsToNonEditable '8' +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getTransitionsToNonEditable] +( + @DocVersionList nvarchar(MAX) +) +WITH EXECUTE AS OWNER +AS + SELECT + TT.[TransitionID], + TT.[FromID], + TT.[ToID], + TT.[RangeID], + TT.[IsRange], + TT.[TranType], + TT.[Config], + TT.[DTS], + TT.[UserID], + TT.[LastChanged], + (SELECT COUNT(*) FROM [ZTransitions] WHERE [ZTransitions].[TransitionID]=TT.[TransitionID]) [ZTransitionCount] + from transitions tt + join vefn_TransitionsToNonEditable(@DocVersionList) td on tt.TransitionID = td.TransitionID + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getTransitionsToNonEditable Succeeded' +ELSE PRINT 'Procedure Creation: getTransitionsToNonEditable Error on Creation' +GO + +/****** Object: StoredProcedure [vefn_StepChildItems] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_StepChildItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_StepChildItems]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_StepChildItems](@ItemID int) +RETURNS @Children TABLE +( + ItemID int PRIMARY KEY, + ContentID int +) +WITH EXECUTE AS OWNER +AS +BEGIN +with Itemz([Level], [ItemID], [ContentID]) as ( + Select 0 [Level], [ItemID], [ContentID] + FROM [Items] + where [ItemID]=@ItemID +Union All +-- Children + select [Level] + 1, I.[ItemID], I.[ContentID] + from Itemz Z + join Parts P on P.ContentID = Z.ContentID and (Z.Level > 0 or p.FromType = 6) + join Items I on I.ItemID = P.ItemID +-- Siblings +Union All + select [Level] , I.[ItemID], I.[ContentID] + from Itemz Z + join Items I on I.PreviousID = Z.ItemID + where Z.[Level] > 0 +) +insert into @Children select ItemID, ContentID from Itemz +OPTION (MAXRECURSION 10000) +RETURN +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_StepChildItems Succeeded' +ELSE PRINT 'TableFunction Creation: vefn_StepChildItems Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getJustStage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) +DROP PROCEDURE [getJustStage]; +GO +/****** Object: StoredProcedure [dbo].[getJustStage] ******/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +Create PROCEDURE [dbo].[getJustStage] +( + @StageID int +) +WITH EXECUTE AS OWNER +AS + SELECT + [StageID], + [Name], + [Description], + [IsApproved], + [DTS], + [UserID], + [LastChanged], + (SELECT COUNT(*) FROM [Checks] WHERE [Checks].[StageID]=[Stages].[StageID]) [CheckCount], + (SELECT COUNT(*) FROM [Versions] WHERE [Versions].[StageID]=[Stages].[StageID]) [VersionCount] + FROM [Stages] + WHERE [StageID]=@StageID + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getJustStage Succeeded' +ELSE PRINT 'Procedure Creation: getJustStage Error on Creation' +GO + +/****** Object: StoredProcedure [vesp_DeletePDFs] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_DeletePDFs]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_DeletePDFs]; +GO + +/* +exec vesp_DeletePDFs +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2017 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_DeletePDFs] +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + DELETE FROM [Pdfs] + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_DeletePDFs Succeeded' +ELSE PRINT 'Procedure Creation: vesp_DeletePDFs Error on Creation' +GO + +/****** Object: StoredProcedure [getROImageByRODbID_FileName] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getROImagesByRODbID_FileName]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getROImagesByRODbID_FileName]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getROImagesByRODbID_FileName] +( + @RODbID int, + @FileName nvarchar(255) +) +WITH EXECUTE AS OWNER +AS + SELECT + [ImageID], + [RODbID], + [FileName], + [Content], + [Config], + [DTS], + [UserID], + [LastChanged], + (SELECT COUNT(*) FROM [Figures] WHERE [Figures].[ImageID]=[ROImages].[ImageID]) [FigureCount] + FROM [ROImages] + WHERE [RODbID]=@RODbID AND [FileName]=@FileName Order By [DTS] + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getROImagesByRODbID_FileName Succeeded' +ELSE PRINT 'Procedure Creation: getROImagesByRODbID_FileName Error on Creation' +GO + +/****** Object: StoredProcedure [vesp_GetDisconnectedItemsCount] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetDisconnectedItemsCount]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_GetDisconnectedItemsCount]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_GetDisconnectedItemsCount] +WITH EXECUTE AS OWNER +AS + SELECT COUNT(*) HowMany FROM vefn_GetDisconnectedItems() + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetDisconnectedItemsCount Succeeded' +ELSE PRINT 'Procedure Creation: vesp_GetDisconnectedItemsCount Error on Creation' +GO + +/****** Object: StoredProcedure [vesp_GetNonEditableItems] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetNonEditableItems]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE vesp_GetNonEditableItems; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_GetNonEditableItems] +WITH EXECUTE AS OWNER +AS + SELECT + I.[ItemID], + I.[PreviousID], + I.[ContentID], + I.[DTS], + I.[UserID], + I.[LastChanged], + (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], + (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], + (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=[I].[ItemID]) [NextCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount] + FROM [Items] I + JOIN vefn_GetNonEditableItems() NE on I.ItemID = NE.ItemID + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetNonEditableItems Succeeded' +ELSE PRINT 'Procedure Creation: vesp_GetNonEditableItems Error on Creation' +GO + +/****** Object: StoredProcedure [vesp_GetDatabaseSessions] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetDatabaseSessions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE vesp_GetDatabaseSessions; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2017 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_GetDatabaseSessions] +WITH EXECUTE AS OWNER +AS + select t1.SessionID,t1.UserID,t1.MachineName,t1.OwnerTypeName,t1.HowMany,t1.Status, + t2.FolderName,t2.GrandParentName,t2.ParentName,t2.ItemPath,t2.DTSStart from + ( + select ss.SessionID,UserID,MachineName,ISNULL(OwnerType,0) OwnerType,ISNULL(OwnerTypeName,'Nothing') OwnerTypeName,ISNULL(HowMany,0) HowMany, + case when DATEDIFF(SECOND,DTSActivity,GETDATE()) > 60 then 'IN-ACTIVE (' + CAST(DATEDIFF(SECOND,DTSActivity,GETDATE()) as varchar(10)) + ' Seconds)' else 'Active' end Status + from Sessions ss + left join + (select SessionID,OwnerType,case OwnerType when 0 then 'Procedure' when 1 then 'Document' when 2 then 'Working Draft' else 'Database' end OwnerTypeName,count(*) HowMany from Owners group by SessionID,OwnerType) oo on ss.SessionID = oo.SessionID + where ss.DTSEnd is null + ) t1 + left join + ( + select oo.SessionID,oo.OwnerID,oo.DTSStart,oo.OwnerType, + dbo.ve_GetShortPath(oo.OwnerItemID) ItemPath, + vn.FolderName,vn.GrandParentName,vn.ParentName + from Owners oo + join vefn_GetVersionItems('') vi on oo.OwnerItemID = vi.ItemID + join vefn_GetVersionNames() vn on vi.VersionID = vn.VersionID + where oo.OwnerType = 0 + union + select distinct oo.SessionID,oo.OwnerID,oo.DTSStart,oo.OwnerType, + case when isnull(LibTitle,'') = '' then dbo.ve_getshortpathfromcontentid(ee.contentid) else 'Library Document: ' + LibTitle end ItemPath, + vn.FolderName,vn.GrandParentName,vn.ParentName + from Owners oo + join Documents dd on oo.OwnerItemID = dd.DocID + join Entries ee on oo.OwnerItemID = ee.DocID + join vefn_GetVersionItems('') vi on ee.ContentID = vi.ContentID + join vefn_GetVersionNames() vn on vi.VersionID = vn.VersionID + where oo.OwnerType = 1 + union + select oo.SessionID,oo.OwnerID,oo.DTSStart,oo.OwnerType, + dv.Name ItemPath,vn.FolderName,vn.GrandParentName,vn.ParentName + from Owners oo + join DocVersions dv on oo.OwnerItemID = dv.VersionID + join vefn_GetVersionNames() vn on dv.VersionID = vn.VersionID + where oo.OwnerType = 2 + ) t2 on t1.SessionID = t2.SessionID and t1.OwnerType = t2.OwnerType + order by t1.SessionID,t1.OwnerType + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetDatabaseSessions Succeeded' +ELSE PRINT 'Procedure Creation: vesp_GetDatabaseSessions Error on Creation' +GO + +/****** Object: StoredProcedure [vesp_ListContentsAfterLastChanged] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListContentsAfterLastChanged]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE vesp_ListContentsAfterLastChanged; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2017 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_ListContentsAfterLastChanged] +( + @LastChanged timestamp +) +WITH EXECUTE AS OWNER +AS +BEGIN + SELECT + cc.[ContentID], + cc.[Number], + cc.[Text], + cc.[Type], + cc.[FormatID], + cc.[Config], + cc.[DTS], + cc.[UserID], + cc.[LastChanged], + (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=cc.[ContentID]) [DetailCount], + (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=cc.[ContentID]) [EntryCount], + (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=cc.[ContentID]) [GridCount], + (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=cc.[ContentID]) [ImageCount], + (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=cc.[ContentID]) [ItemCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=cc.[ContentID]) [PartCount], + (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=cc.[ContentID]) [RoUsageCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=cc.[ContentID]) [TransitionCount], + (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=cc.[ContentID]) [ZContentCount] + FROM [Contents] cc + WHERE cc.LastChanged > @LastChanged + RETURN +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListContentsAfterLastChanged Succeeded' +ELSE PRINT 'Procedure Creation: vesp_ListContentsAfterLastChanged Error on Creation' +GO + +/****** Object: StoredProcedure [vesp_ListContentsAfterLastChanged2] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListContentsAfterLastChanged2]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE vesp_ListContentsAfterLastChanged2; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2017 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_ListContentsAfterLastChanged2] +( + @LastChanged bigint, + @UserID nvarchar(100) +) +WITH EXECUTE AS OWNER +AS +BEGIN + SELECT + cc.[ContentID], + CONVERT(bigint,cc.[LastChanged]) LastContentChange + FROM [Contents] cc + WHERE CONVERT(bigint,cc.LastChanged) > @LastChanged +-- AND cc.UserID != @UserID + ORDER BY LastChanged + RETURN +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListContentsAfterLastChanged2 Succeeded' +ELSE PRINT 'Procedure Creation: vesp_ListContentsAfterLastChanged2 Error on Creation' +GO + +/****** Object: StoredProcedure[getOwnerBySessionIDandFolderID] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getOwnerBySessionIDandFolderID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE getOwnerBySessionIDandFolderID; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2015 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getOwnerBySessionIDandFolderID] +( + @SessionID int, + @FolderID int +) +WITH EXECUTE AS OWNER +AS +BEGIN + DECLARE @VersionID int + SELECT @VersionID = VersionID from DocVersions WHERE FolderID = @FolderID + SELECT + [OwnerID], + [SessionID], + [OwnerType], + [OwnerItemID], + [DTSStart], + [LastChanged] + FROM [Owners] oo + INNER JOIN + ( + -- 0 is procedures + SELECT 0 ObjectType,ItemID ObjectID FROM dbo.vefn_GetVersionItems(@VersionID) + UNION + -- 1 is documents + SELECT 1 ObjectType,ee.DocID ObjectID FROM dbo.vefn_GetVersionItems(@VersionID) vi + INNER JOIN Contents cc ON vi.ContentID = cc.ContentID + INNER JOIN Entries ee ON vi.ContentID = ee.ContentID + UNION + -- 2 is DocVersions + SELECT 2 ObjectType, @VersionID ObjectID + UNION + -- 3 is Folders + SELECT 3 ObjectType, @FolderID ObjectID + ) tt ON oo.OwnerType = tt.ObjectType and oo.OwnerItemID = tt.ObjectID + WHERE [SessionID] = @SessionID + RETURN +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getOwnerBySessionIDandFolderID Succeeded' +ELSE PRINT 'Procedure Creation: getOwnerBySessionIDandFolderID Error on Creation' +GO + +/****** Object: StoredProcedure [vesp_ListItemsAfterLastChanged] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListItemsAfterLastChanged]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE vesp_ListItemsAfterLastChanged; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2017 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_ListItemsAfterLastChanged] +( + @LastChanged bigint, + @UserID nvarchar(100) +) +WITH EXECUTE AS OWNER +AS +BEGIN + SELECT + isnull(dbo.ve_GetParentItem(ii.[ItemID]),0) ParentID,MAX(CONVERT(bigint,ii.[LastChanged])) LastItemChange + FROM [Items] ii + WHERE CONVERT(bigint,ii.LastChanged) > @LastChanged +-- AND cc.UserID != @UserID + GROUP BY dbo.ve_GetParentItem(ii.[ItemID]) + ORDER BY MAX(CONVERT(bigint,ii.[LastChanged])) + RETURN +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItemsAfterLastChanged Succeeded' +ELSE PRINT 'Procedure Creation: vesp_ListItemsAfterLastChanged Error on Creation' +GO + +/****** Object: StoredProcedure [ve_GetShortPath] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetShortPath]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) + DROP FUNCTION [ve_GetShortPath]; +GO + +/* +select ItemID, CC.Type, dbo.ve_GetPath(ItemID) +from Items II join Contents CC on II.ContentID = CC.ContentID +where ItemID in(111,265,266,267) +*/ +-- drop function ve_GetPath +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[ve_GetShortPath] (@ItemID int) RETURNS varchar(max) +WITH EXECUTE AS OWNER +AS +BEGIN +-- declare @STructID int +--set @StructID=11 +declare @Path varchar(max); +with Itemz(ItemCount,ItemID,PreviousID,FromType,CType,Number,Text,PPath, Path) as ( + Select 1,ItemID,PreviousID,0,C.Type/10000,C.Number,C.Text, + Cast(Case when C.Type < 20000 then '`' + [dbo].[ve_GetShortPart](C.Number,C.Text) else '' end as nvarchar(max)) PPath, + Cast(Case when C.Type < 20000 then '`' + [dbo].[ve_GetShortPart](C.Number,C.Text) else '1' end as nvarchar(max)) Path + from Items I + join Contents C on I.ContentID = C.ContentID + where ItemID=@ItemID + Union All +-- siblings + Select ItemCount+1,I.PreviousID,II.PreviousID,0,C.Type/10000,Z.Number,Z.Text,PPath,cast(ItemCount + 1 as nvarchar(4)) + PPath + from Items I + join Contents C on I.ContentID = C.ContentID + Join Items II on II.ItemID = I.PreviousID + Join Itemz Z on I.ItemID=Z.ItemID + where I.PreviousID != 0 + Union All +-- children + select 1,I.ItemID,I.PreviousID,P.FromType,C.Type/10000,C.Number,C.Text, + case C.Type/10000 + when 0 then '`' + [dbo].[ve_GetShortPart](C.Number,C.Text) + when 1 then '`' + [dbo].[ve_GetShortPart](C.Number,C.Text) +'`' + cast(ItemCount + 0 as varchar(4)) + else + case P.FromType + when 1 then 'PRC`' + cast(ItemCount + 0 as varchar(4)) + when 2 then '`SEC`' + cast(ItemCount + 0 as varchar(4)) + when 3 then '`Caution`' + cast(ItemCount + 0 as varchar(4)) + when 4 then '`Note`' + cast(ItemCount + 0 as varchar(4)) + when 5 then '`RNO`' + when 7 then '`Table`' + when 8 then '`SupInfo`' + else '`' + cast(ItemCount + 0 as varchar(4)) + end end + PPath PPath, + --'1' + + case C.Type/10000 + when 0 then '`' + [dbo].[ve_GetShortPart](C.Number,C.Text) + when 1 then '`' + [dbo].[ve_GetShortPart](C.Number,C.Text) +'`' + cast(ItemCount + 0 as varchar(4)) + else + case P.FromType + when 1 then 'PRC`' + cast(ItemCount + 0 as varchar(4)) + when 2 then '`SEC`' + cast(ItemCount + 0 as varchar(4)) + when 3 then '`Caution`' + cast(ItemCount + 0 as varchar(4)) + when 4 then '`Note`' + cast(ItemCount + 0 as varchar(4)) + when 5 then '`RNO' + when 7 then '`Table' + when 8 then '`SupInfo' + else '`' + cast(ItemCount + 0 as varchar(4)) + end end + PPath Path + + from Parts P + join Items I on I.ContentID = P.ContentID + join Contents C on I.ContentID = C.ContentID + join Itemz Z on P.ItemID=Z.ItemID +) +select @Path = path From Itemz where ItemCount=1 and CType=0 +OPTION (MAXRECURSION 10000) +return REPLACE(REPLACE(@Path,'\u8209?','-'),'u9586?','\\') +END; +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'ScalarFunction Creation: ve_GetShortPath Succeeded' +ELSE PRINT 'ScalarFunction Creation: ve_GetShortPath Error on Creation' +GO +/****** Object: StoredProcedure [addROImage] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addROImage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE addROImage; +GO +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[addROImage] + +( + @RODbID int, + @FileName nvarchar(255), + @Content varbinary(MAX), + @Config nvarchar(MAX)=null, + @DTS datetime, + @UserID nvarchar(100), + @newImageID int output, + @newLastChanged timestamp output +) +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + IF exists(select * from ROImages where @rodbid = rodbid and @FileName=FileName and @DTS = DTS) + BEGIN + select @newImageID = ImageID from ROImages where @rodbid = rodbid and @FileName=FileName and @DTS = DTS + END + ELSE + BEGIN + INSERT INTO [ROImages] + ( + [RODbID], + [FileName], + [Content], + [Config], + [DTS], + [UserID] + ) + VALUES + ( + @RODbID, + @FileName, + @Content, + @Config, + @DTS, + @UserID + ) + SELECT @newImageID= SCOPE_IDENTITY() + END + SELECT @newLastChanged=[LastChanged] + FROM [ROImages] WHERE [ImageID]=@newImageID + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +IF (@@Error = 0) PRINT 'Procedure Creation: addROImage Succeeded' +ELSE PRINT 'Procedure Creation: addROImage Error on Creation' +GO +PRINT '20150808 Improved performance for delete procedure' + +/****** Object: UserDefinedFunction [dbo].[vefn_GetEnhancedFolders] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetEnhancedFolders]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_GetEnhancedFolders]; +GO + +/* +select * from vefn_GetEnhancedFolders(11) +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ + +CREATE FUNCTION dbo.[vefn_GetEnhancedFolders](@FolderID as int) +RETURNS @AllValues TABLE +( + FolderID int PRIMARY KEY, + [Type] int, + [Name] varchar(100), + VersionID int +) + +WITH EXECUTE AS OWNER +AS +BEGIN + +INSERT INTO @AllValues +select DISTINCT ddenh.folderid, xxEnhanced.value('@Type', 'int') xxType, xxEnhanced.value('@Name', 'varchar(20)') xxName, + xxEnhanced.value('@VersionID', 'int') xxVersionID from + (select *, cast(config as xml) xconfig from docversions) dv + cross apply xconfig.nodes('//Enhanced') tEnhanced(xEnhanced) + join (select *, cast(config as xml) xconfig from docversions) + denh on xEnhanced.value('@VersionID', 'int') = denh.VersionID + cross apply denh.xconfig.nodes('//Enhanced') ttEnhanced(xxEnhanced) + join (select *, cast(config as xml) xconfig from docversions) + ddenh on xxEnhanced.value('@VersionID', 'int') = ddenh.VersionID + where denh.FolderID = @FolderID or dv.folderid = @FolderID + + RETURN +END +GO + +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_GetEnhancedFolders Succeeded' +ELSE PRINT 'TableFunction Creation: vefn_GetEnhancedFolders Error on Creation' +GO + +/****** Object: UserDefinedFunction [dbo].[vefn_GetEnhancedDocVersions] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetEnhancedDocVersions]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_GetEnhancedDocVersions]; +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +/* +select * from vefn_GetEnhancedDocVersions(6) +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ + +CREATE FUNCTION dbo.[vefn_GetEnhancedDocVersions](@VersionID as int) +RETURNS @AllValues TABLE +( + VersionID int PRIMARY KEY, + [Type] int, + [Name] varchar(100), + FolderID int +) + +WITH EXECUTE AS OWNER +AS +BEGIN + +INSERT INTO @AllValues +select DISTINCT xxEnhanced.value('@VersionID', 'int') xxVersionID, xxEnhanced.value('@Type', 'int') xxType, + xxEnhanced.value('@Name', 'varchar(20)') xxName, ddenh.folderid from + (select *, cast(config as xml) xconfig from docversions) dv + cross apply xconfig.nodes('//Enhanced') tEnhanced(xEnhanced) + join (select *, cast(config as xml) xconfig from docversions) + denh on xEnhanced.value('@VersionID', 'int') = denh.VersionID + cross apply denh.xconfig.nodes('//Enhanced') ttEnhanced(xxEnhanced) + join (select *, cast(config as xml) xconfig from docversions) + ddenh on xxEnhanced.value('@VersionID', 'int') = ddenh.VersionID + where denh.VersionID = @VersionID or dv.VersionID = @VersionID + + RETURN +END +GO + +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_GetEnhancedDocVersions Succeeded' +ELSE PRINT 'TableFunction Creation: vefn_GetEnhancedDocVersions Error on Creation' +GO + +/****** Object: UserDefinedFunction [dbo].[vefn_GetEnhancedProcedures] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetEnhancedProcedures]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION vefn_GetEnhancedProcedures; +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ + +CREATE FUNCTION dbo.[vefn_GetEnhancedProcedures](@ItemID int) +RETURNS @VersionItems TABLE +( + VersionID int, + ItemID int primary key, + ContentID int +) +WITH EXECUTE AS OWNER +AS +BEGIN + with ItemZ(ItemId, EnhID, Level) as + (Select ItemID,xEnhanced.value('@ItemID','int') EnhID, 0 from Items II Join (Select ContentID, cast(config as xml) xconfig From Contents) + CC On CC.ContentID = II.ContentID outer apply xconfig.nodes('//Enhanced') tEnhanced(xEnhanced) Where ItemID = @ItemID + Union ALL + Select II.ItemID,xEnhanced.value('@ItemID','int') EnhID, ZZ.Level+1 from Items II Join ItemZ ZZ on ZZ.EnhID = II.ItemID + Join (Select ContentID, cast(config as xml) xconfig From Contents) CC On CC.ContentID = II.ContentID + outer apply xconfig.nodes('//Enhanced') tEnhanced(xEnhanced) Where zz.Level < 2) + INSERT INTO @VersionItems + Select distinct dbo.vefn_GetVersionIDByItemID(ZZ.ItemID) VersionID, ZZ.ItemID, II.ContentID from ItemZ ZZ Join Items II on II.ItemID = ZZ.ItemID + OPTION (MAXRECURSION 10000) + RETURN +END +GO + +-- Display the status +IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_GetEnhancedProcedures Succeeded' +ELSE PRINT 'TableFunction Creation: vefn_GetEnhancedProcedures Error on Creation' +GO + +PRINT '20160106 Enhanced Documents' + +GO +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetVersionTblItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_GetVersionTblItems]; +GO +/****** Object: UserDefinedFunction [dbo].[vefn_GetVersionTblItems] ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +/* +Select * from vefn_GetVersionTblItems('') +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_GetVersionTblItems](@DocVersionList varchar(MAX)) +RETURNS @VersionItems TABLE +( + VersionID int, + ItemID int, + ContentID int primary key +) +WITH EXECUTE AS OWNER +AS +BEGIN + BEGIN + with Itemz([VersionID], [ItemID], [ContentID]) as + (Select DV.VersionID, [I].[ItemID], [I].[ContentID] + FROM [tblItems] I + JOIN vefn_DocVersionSplit(@DocVersionList) DV + ON I.[ItemID] = DV.[ItemID] + Union All + -- Children + select Z.VersionID, I.[ItemID], I.[ContentID] + from Itemz Z + join tblParts P on P.ContentID = Z.ContentID + join tblItems I on I.ItemID = P.ItemID + Union All + -- Siblings + select Z.VersionID, I.[ItemID], I.[ContentID] + from Itemz Z + join tblItems I on I.PreviousID = Z.ItemID + ) + insert into @VersionItems + select VersionID, [ItemID], [ContentID] + from ItemZ I + --Select * From rousages RU Where RU.ContentID in (Select ContentID from ItemZ) + OPTION (MAXRECURSION 10000) + END +RETURN +END + +go +IF (@@Error = 0) PRINT 'TableFunction [vefn_GetVersionTblItems] Succeeded' +ELSE PRINT 'TableFunction [vefn_GetVersionTblItems] Error on Creation' + +GO +/****** Object: StoredProcedure [addROImage] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_PurgeDisconnectedData]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE vesp_PurgeDisconnectedData; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2017 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_PurgeDisconnectedData] +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + delete from tblParts where FromType=0 + declare @UsedItems Table + ( itemid int primary key, contentID int ) + insert into @UsedItems + Select ItemID, ContentID from vefn_GetVersiontblItems('') + + select 'Working Drafts' Query, FolderName,Dv.* from DocVersions DV + JOIN VEFN_GetVersionNames() VN ON DV.VersionID = VN.VersionID + + declare @DiscItems Table + ( itemid int primary key, ContentID int) + insert into @DiscItems + Select ItemID, II.ContentID from tblItems II + Join tblContents CC ON CC.ContentID = II.ContentID + where ItemID not in(select ItemID from @UsedItems) + And CC.Type is not null + + delete from [Checks] where RevisionID in (select RevisionID from Revisions where ItemID in (select itemid from @DiscItems)) + delete from [Versions] where RevisionID in (select RevisionID from Revisions where ItemID in (select itemid from @DiscItems)) + delete from [Revisions] where ItemID in (select itemid from @DiscItems) + delete from [AnnotationAudits] where ItemID in (select itemid from @DiscItems) + delete from [ItemAudits] where ItemID in (select itemid from @DiscItems) + delete from [tblParts] where ItemID in (select itemid from @DiscItems) + delete from [DocVersions] where ItemID in (select itemid from @DiscItems) + delete from [PartAudits] where ItemID in (select itemid from @DiscItems) + delete from [tblAnnotations] where ItemID in (select itemid from @DiscItems) + + delete from [Details] where contentID in (select contentid from @DiscItems) + delete from [ZContents] where contentID in (select contentid from @DiscItems) + delete from [tblGrids] where contentID in (select contentid from @DiscItems) + delete from [tblImages] where contentID in (select contentid from @DiscItems) + delete from [ContentAudits] where contentID in (select contentid from @DiscItems) + delete from [tblROUsages] where contentID in (select contentid from @DiscItems) + delete from [EntryAudits] where contentID in (select contentid from @DiscItems) + delete from [tblEntries] where contentID in (select contentid from @DiscItems) + delete from [GridAudits] where contentID in (select contentid from @DiscItems) + delete from [ImageAudits] where contentID in (select contentid from @DiscItems) + delete from [ItemAudits] where contentID in (select contentid from @DiscItems) + delete from [tblParts] where contentID in (select contentid from @DiscItems) + delete from [PartAudits] where contentID in (select contentid from @DiscItems) + delete from [ROUsageAudits] where contentID in (select contentid from @DiscItems) + delete from [ztransitions] where transitionid in(select transitionid from [tblTransitions] where fromid in (select contentid from @DiscItems)) + delete from [ztransitions] where transitionid in(select transitionid from [tblTransitions] where toid in (select itemid from @DiscItems)) + delete from [ztransitions] where transitionid in(select transitionid from [tblTransitions] where rangeid in (select itemid from @DiscItems)) + delete from [tblTransitions] where fromid in (select contentid from @DiscItems) + delete from [tblTransitions] where toid in (select itemid from @DiscItems) + delete from [tblTransitions] where rangeid in (select itemid from @DiscItems) + delete from [tblItems] where PreviousID in (select itemid from @DiscItems) + delete from [tblItems] where ItemID in (select itemid from @DiscItems) + delete from [tblItems] where contentID in (select contentid from @DiscItems) + delete from [tblContents] where contentID in (select contentid from @DiscItems) + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_PurgeDisconnectedData Succeeded' +ELSE PRINT 'Procedure Creation: vesp_PurgeDisconnectedData Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'ClearCBOverrideForProcedure') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE ClearCBOverrideForProcedure; +GO +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ + +CREATE PROCEDURE [dbo].ClearCBOverrideForProcedure +( + @ItemID int=null +) +WITH EXECUTE AS OWNER +AS +begin +DECLARE @CBConfigs TABLE +( +[ContentID] int, +xConfig xml +) +insert into @CBConfigs select ContentID, cast(Config as xml) xConfig +from Contents where config like '%CBOverride%' and contentid in (select icontentid from vefn_tblchilditems(@ItemID,@ItemID,0)) + +Update @CBConfigs Set xConfig.modify('delete //@CBOverride') From @CBConfigs +Update @CBConfigs Set xConfig.modify('delete //Step[not(node())and not(./@*)]') From @CBConfigs + +UPDATE CC SET config = cast(xconfig as varchar(max)) +FROM CONTENTS CC +Join @CBConfigs CB on cc.contentid = cb.contentid +where cc.contentid in (select contentid from @CBConfigs) + +SELECT + [ContentID], + [Number], + [Text], + [Type], + [FormatID], + [Config], + [DTS], + [UserID], + [LastChanged], + (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[Contents].[ContentID]) [DetailCount], + (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[Contents].[ContentID]) [EntryCount], + (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[Contents].[ContentID]) [GridCount], + (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[Contents].[ContentID]) [ImageCount], + (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[Contents].[ContentID]) [ItemCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[Contents].[ContentID]) [PartCount], + (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[Contents].[ContentID]) [RoUsageCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[Contents].[ContentID]) [TransitionCount], + (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[Contents].[ContentID]) [ZContentCount] + FROM [Contents] + where contentid in (select contentid from @CBConfigs) +end +go + +-- Display the status of ClearCBOverrideForProcedure +IF (@@Error = 0) PRINT 'StoredProcedure [ClearCBOverrideForProcedure] Succeeded' +ELSE PRINT 'StoredProcedure [ClearCBOverrideForProcedure] Error on Creation' +go +PRINT '20160126 Improved performance for checkouts' +PRINT '20160226 11:00 SQL Code Version ' + +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_PurgeEnhanced]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_PurgeEnhanced]; +GO +/* +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_PurgeEnhanced] + +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + declare @Enh TABLE + ( + ID int, + xConfig xml + ) + insert into @Enh + SELECT VersionID,xConfig FROM (Select cast(config as xml) xconfig,* from DocVersions) t1 + Cross Apply xconfig.nodes('//Enhanced[1]') tEnhanced(xEnhanced) + + Update @Enh Set xConfig.modify('delete //Enhanced') From @Enh + Update DV Set Config = cast(xconfig as varchar(max)) From Docversions DV + Join @Enh EE ON EE.ID = DV.VersionID + + --select * from @Enh + + delete from @enh + + insert into @enh + SELECT ContentID,xConfig FROM (Select cast(config as xml) xconfig,* from Contents) t1 + Cross Apply xconfig.nodes('//Enhanced[1]') tEnhanced(xEnhanced) + + Update @Enh Set xConfig.modify('delete //Enhanced') From @Enh + Update CC Set Config = cast(xconfig as varchar(max)) From Contents CC + Join @Enh EE ON EE.ID = CC.ContentID + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'StoredProcedure [vesp_PurgeEnhanced] Succeeded' +ELSE PRINT 'StoredProcedure [vesp_PurgeEnhanced] Error on Creation' +go + + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ConvertEnhancedDocVersions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_ConvertEnhancedDocVersions]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_ConvertEnhancedDocVersions] +( + @svid int, + @enhvid int, + @enhid int, + @enhttl varchar(255), + @enhx int, + @enhtok varchar(1) +) +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION +--print 'BGDV-1' +update docversions set config = replace(config,'>', + '>') + where VersionID =@svid +--print 'BGDV-2' +update docversions set config = replace(config,'>', + '>') + where VersionID =@enhvid + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'StoredProcedure [vesp_ConvertEnhancedDocVersions] Succeeded' +ELSE PRINT 'StoredProcedure [vesp_ConvertEnhancedDocVersions] Error on Creation' +go + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ConvertEnhancedItems]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_ConvertEnhancedItems]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_ConvertEnhancedItems] +( + @svid int, + @bvid int, + @dvid int +) +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION +declare @EnhItems TABLE +( + ItemID int, + ContentID int, + SrcConfig1 varchar(255), + SrcConfig2 varchar(255), + ProcName varchar(8), + RecID varchar(8), + BGItemID int, + BGContentID int, + BGConfig varchar(255), + DVItemID int, + DVContentID int, + DVConfig varchar(255) +) +-- Procedures +Insert into @EnhItems +select VI.ItemID, VI.ContentID + ,case when vibg.itemid is null then '' else '' end + ,case when vidv.itemid is null then '' else '' end + , VI.ProcName,null RecID +, VIBG.ItemID BGItemID, VIBG.ContentID BGContentID, case when vibg.itemid is null then '' else '' end +, VIDV.ItemID DVItemID, VIDV.ContentID DVContentID, case when vidv.itemid is null then '' else '' end +from vefn_GetOldEnhancedProcs(@svid) VI +Left Join vefn_GetOldEnhancedProcs(@bvid) VIBG ON VI.ProcName = VIBG.ProcName +Left Join vefn_GetOldEnhancedProcs(@dvid) VIDV ON VI.ProcName = VIDV.ProcName +WHERE VIBG.ItemID is not null or VIDV.ItemID is not null +--Sections and Steps +Insert into @EnhItems +select VI.ItemID, VI.ContentID + ,case when vibg.itemid is null then '' else '' end + ,case when vidv.itemid is null then '' else '' end + , VI.ProcName,VI.RecID +, VIBG.ItemID BGItemID, VIBG.ContentID BGContentID, case when vibg.itemid is null then '' else '' end +, VIDV.ItemID DVItemID, VIDV.ContentID DVContentID, case when vidv.itemid is null then '' else '' end +from vefn_GetOldEnhancedItems(@svid) VI +Left Join vefn_GetOldEnhancedItems(@bvid) VIBG ON VI.ProcName = VIBG.ProcName AND '0L' + substring(VI.RecID,3,6) = VIBG.RecID +Left Join vefn_GetOldEnhancedItems(@dvid) VIDV ON VI.ProcName = VIDV.ProcName AND '0L' + substring(VI.RecID,3,6) = VIDV.RecID +WHERE VIBG.ItemID is not null or VIDV.ItemID is not null + +--select * from @EnhItems + +Declare @EnhEach Table +( + ContentID int primary key, + Change1 varchar(255), + Change2 varchar(255) +) +insert into @EnhEach +Select EI.ContentID,EI.SrcConfig1,EI.srcConfig2 +from @EnhItems EI +Join Contents CC ON CC.ContentID = EI.ContentID + +insert into @EnhEach +Select EI.bgContentID,EI.BGConfig,null +from @EnhItems EI +Join Contents CC ON CC.ContentID = EI.bgContentID + +insert into @EnhEach +Select EI.dvContentID,EI.DVConfig,null +from @EnhItems EI +Join Contents CC ON CC.ContentID = EI.dvContentID + +Update CC +Set Config = cast(cast(Replace(Replace(Config,'>' + Change1 +'' + isnull(Change2,'') +' 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'StoredProcedure [vesp_ConvertEnhancedItems] Succeeded' +ELSE PRINT 'StoredProcedure [vesp_ConvertEnhancedItems] Error on Creation' +go + + +-- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetEnhancedLinks]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_GetEnhancedLinks]; +GO + + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_GetEnhancedLinks]() +RETURNS @Enhanced TABLE +( + svid int, + bvid int, + dvid int +) +WITH EXECUTE AS OWNER +AS +BEGIN +declare @tbl table +( + FolderName varchar(255), + VersionID int, + ItemID int, + ContentID int, + ProcName varchar(10), + LinkType varchar(4), + RecID int, + ShortName varchar(20) +) + + +insert into @tbl +select vn.FolderName,VI.VersionID, VI.ItemID, t1.ContentID, ProcName, case substring(RecIDText,2,1) when '0' then 'None' when 'L' then 'Link' else substring(RecIDText,2,1) end LinkType +, cast(substring(RecIDText,3,6) as int) RecID, ff.ShortName +from (select cc.Contentid + +, xHistory.value('@ProcName','varchar(20)') ProcName, xHistory.value('@RecID','varchar(20)') RecIDText +from (select *, cast(config as xml) xconfig from contents) cc +cross apply xconfig.nodes('//History') tHistory(xHistory)) t1 +Join vefn_getversionItems('') vi on t1.contentID = vi.contentID +JOIN VEFN_GetVersionNames() VN ON VI.VersionID = VN.VersionID +JOIN DocVersions DV ON VI.VersionID = DV.VersionID +Join Folders FF ON FF.FolderID = DV.FolderID + + + +DECLARE @LinkCounts TABLE +( + EnhancedID int, + LinkFolder varchar(255), + LinkShortName varchar(20), + SourceID int, + SourceFolder varchar(255), + SourceShortName varchar(20), + HowMany int, + AllLinks int +) +insert into @LinkCounts +select t3.*,t4.HowMany AllLinks from (select t1.versionID EnhancedID, t1.FolderName LinkFolder, t1.ShortName LinkShortName, t2.VersionID SourceID, t2.FolderName SourceFolder, T2.ShortName SourceShortName, Count(*) HowMany from +(select * from @tbl where LinkType = 'Link') t1 +join (select * from @tbl where LinkType != 'Link') t2 on t1.ProcName = t2.ProcName and T1.RecID = T2.RecID +group by t1.versionID, t1.FolderName, T1.ShortName, t2.versionID, t2.FolderName, t2.ShortName) t3 +Join +(select FolderName LinkFolder, 'All' SourceFolder, count(*) HowMany from @tbl where LinkType = 'Link' +group by FolderName) t4 on t3.LinkFolder = t4.linkfolder +Order By LinkFolder, T3.HowMany Desc + +--print '---3---' +--select * from @LinkCounts +declare @LinkSummary TABLE +( + EnhancedID int, + LinkFolder varchar(255), + LinkShortName varchar(25), + SourceID int, + SourceFolder varchar(255), + SourceShortName varchar(25), + HowMany int, + AllLinks int, + RowNo int +) +begin +WITH TOP3 AS ( + SELECT *, ROW_NUMBER() + over ( + PARTITION BY [EnhancedID] + order by [HowMany] DESC + ) AS RowNo + FROM @LinkCounts +) +insert into @linkSummary +SELECT * FROM TOP3 WHERE RowNo <= 1 +end + +declare @myXML xml +set @myXML=cast(' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +' as xml) +declare @linktbl TABLE +( +Plant VARCHAR(25), +LinkType VARCHAR(25), +FolderFrom VARCHAR(25), +FolderTo VARCHAR(25) +) +insert into @linktbl +select +xLink.value('@Plant','varchar(25)') Plant +,xLink.value('@Type','varchar(25)') LinkType +,xLink.value('@From','varchar(25)') FolderFrom +,xLink.value('@To','varchar(25)') FolderTo +from @myxml.nodes('//Link') tLink(xLink) + +declare @LnkPaths table +( + Plant VarChar(20), + FolderFrom Varchar(20), + Background Varchar(20), + Deviation Varchar(20) +) +Insert into @LnkPaths +select distinct plant,FolderFrom +, (select min(FolderTo) from @linktbl lt1 + where lt1.plant=lt.plant and lt1.folderfrom = lt.folderfrom + and lt1.linktype='bck.lnk') Background +, (select min(FolderTo) from @linktbl lt1 +where lt1.plant=lt.plant and lt1.folderfrom = lt.folderfrom and lt1.linktype='dvt.lnk') Deviation + from @linktbl lt +where LinkType in('BCK.LNK','DVT.LNK') + +insert into @Enhanced +select isnull(SourceID,0) svid,isnull(BackgroundID,0) bvid,isnull(DeviationID,0) dvid from (select Plant +,T1.SourceID,FolderFrom +,isnull(BackgroundID,LS1.EnhancedID) BackgroundID,BackGround +,isnull(DeviationID, LS2.EnhancedID) DeviationID, Deviation + from (select distinct Plant, +(select Min(VersionID) from DocVersions dv Join Folders ff on dv.folderid = ff.folderid where ShortName = FolderFrom and ff.title like '%' + plant + '%') SourceID, +FolderFrom, +(select Min(VersionID) from DocVersions dv Join Folders ff on dv.folderid = ff.folderid where ShortName = Background and ff.title like '%' + plant + '%') BackgroundID, +Background, +(select Min(VersionID) from DocVersions dv Join Folders ff on dv.folderid = ff.folderid where ShortName = Deviation and ff.title like '%' + plant + '%') DeviationID, +Deviation + from + @LnkPaths where Plant IN(Select Distinct Plant from @LnkPaths LP +Join Folders FF ON FF.Title Like '%' + Plant + '%')) T1 +left Join @LinkSummary LS1 ON T1.SourceID = LS1.SourceID AND LS1.LinkShortName like '%.BCK' +left Join @LinkSummary LS2 ON T1.SourceID = LS2.SourceID AND LS2.LinkShortName like '%.DVT' +Where T1.SourceID is not null) T2 +where BackgroundID is not null or DeviationID is not null +Return +END +GO +IF (@@Error = 0) PRINT 'TableFunction [vefn_GetEnhancedLinks] Succeeded' +ELSE PRINT 'TableFunction [vefn_GetEnhancedLinks] Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetOldEnhancedProcs]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_GetOldEnhancedProcs]; +GO +/* + +-- Byron +USE VEPROMS_BYR +select VI.ItemID, VI.ContentID, VI.ProcName +, VIBG.ItemID BGItemID, VIBG.ContentID BGContentID +, VIDV.ItemID DVItemID, VIDV.ContentID DVContentID +from vefn_GetOldEnhancedProcs(6) VI +Left Join vefn_GetOldEnhancedProcs(8) VIBG ON VI.ProcName = VIBG.ProcName +Left Join vefn_GetOldEnhancedProcs(9) VIDV ON VI.ProcName = VIDV.ProcName +USE MASTER + +-- Catawba +USE VEPROMS_CNS +select VI.ItemID, VI.ContentID, VI.ProcName +, VIBG.ItemID BGItemID, VIBG.ContentID BGContentID +, VIDV.ItemID DVItemID, VIDV.ContentID DVContentID +from vefn_GetOldEnhancedProcs(7) VI +Left Join vefn_GetOldEnhancedProcs(12) VIBG ON VI.ProcName = VIBG.ProcName +Left Join vefn_GetOldEnhancedProcs(0) VIDV ON VI.ProcName = VIDV.ProcName +USE MASTER + +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_GetOldEnhancedProcs](@VersionID as int) +RETURNS @Enhanced TABLE +( + ItemID int, + ContentID int, + ProcName varchar(8) +) +WITH EXECUTE AS OWNER +AS +BEGIN + insert into @Enhanced + select ItemID,ContentID,ProcName From ( + select ItemID,CC.ContentID + ,xHistory.value('@ProcName','varchar(8)') ProcName + ,row_Number() over(partition by xHistory.value('@ProcName','varchar(8)') order by ItemID) RowOrder + from (select ContentID, cast(config as xml) xConfig from Contents where Type = 0 ) CC + Cross Apply xConfig.nodes('//History') tHistory(xHistory) + JOIN VEFN_GETVERSIONITEMS(cast(@VersionID as varchar(12))) VI ON VI.CONTENTID = CC.CONTENTID + --JOIN VEFN_GetVersionNames() VN ON VI.VersionID = VN.VersionID + )T1 Where rowOrder = 1 +Return +END +GO +IF (@@Error = 0) PRINT 'TableFunction [vefn_GetOldEnhancedProcs] Succeeded' +ELSE PRINT 'TableFunction [vefn_GetOldEnhancedProcs] Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetOldEnhancedItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_GetOldEnhancedItems]; +GO +/* + +select count(*) from vefn_GetOldEnhancedItems(6) +select count(*) from vefn_GetOldEnhancedItems(8) where RecID like '0l%' +select count(*) from vefn_GetOldEnhancedItems(9) where RecID like '0l%' + + +-- Byron +USE VEPROMS_BYR +select VI.ItemID, VI.ContentID, VI.ProcName,VI.RecID +, VIBG.ItemID BGItemID, VIBG.ContentID BGContentID +, VIDV.ItemID DVItemID, VIDV.ContentID DVContentID +from vefn_GetOldEnhancedItems(6) VI +Left Join vefn_GetOldEnhancedItems(8) VIBG ON VI.ProcName = VIBG.ProcName AND '0L' + substring(VI.RecID,3,6) = VIBG.RecID +Left Join vefn_GetOldEnhancedItems(9) VIDV ON VI.ProcName = VIDV.ProcName AND '0L' + substring(VI.RecID,3,6) = VIDV.RecID +WHERE VIBG.ItemID is not null or VIDV.ItemID is not null +USE MASTER + +-- Catawba +USE VEPROMS_CNS +select VI.ItemID, VI.ContentID, VI.ProcName, VI.RecID +, VIBG.ItemID BGItemID, VIBG.ContentID BGContentID +, VIDV.ItemID DVItemID, VIDV.ContentID DVContentID +from vefn_GetOldEnhancedItems(7) VI +Left Join vefn_GetOldEnhancedItems(12) VIBG ON VI.ProcName = VIBG.ProcName AND '0L' + substring(VI.RecID,3,6) = VIBG.RecID +Left Join vefn_GetOldEnhancedItems(0) VIDV ON VI.ProcName = VIDV.ProcName AND '0L' + substring(VI.RecID,3,6) = VIDV.RecID +WHERE VIBG.ItemID is not null --or VIDV.ItemID is not null +USE MASTER + +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_GetOldEnhancedItems](@VersionID as int) +RETURNS @Enhanced TABLE +( + ItemID int, + ContentID int, + ProcName varchar(8), + RecID varchar(8), + Primary Key (ProcName,RecID) +) +WITH EXECUTE AS OWNER +AS +BEGIN + insert into @Enhanced + select ItemID, ContentID,ProcName,RecID From ( + select VI.ItemID, CC.ContentID + ,xHistory.value('@ProcName','varchar(8)') ProcName + ,xHistory.value('@RecID','varchar(8)') RecID + ,row_Number() over(partition by xHistory.value('@ProcName','varchar(8)'), xHistory.value('@RecID','varchar(8)') order by VI.ItemID) RowOrder + from (select ContentID, cast(config as xml) xConfig from Contents where Type != 0 ) CC + Cross Apply xConfig.nodes('//History') tHistory(xHistory) + JOIN VEFN_GETVERSIONPROCEDUREITEMS(cast(@VersionID as varchar(12))) VI ON VI.CONTENTID = CC.CONTENTID + --Where ProcID in(select ItemID from vefn_GetOldEnhancedProcs(@VersionID)) + JOIN vefn_GetOldEnhancedProcs(@VersionID) vep on vi.ProcID = VEP.ItemID AND xHistory.value('@ProcName','varchar(8)')= vep.ProcName + --JOIN VEFN_GetVersionNames() VN ON VI.VersionID = VN.VersionID + )T1 Where rowOrder = 1 +Return +END +GO +IF (@@Error = 0) PRINT 'TableFunction [vefn_GetOldEnhancedItems] Succeeded' +ELSE PRINT 'TableFunction [vefn_GetOldEnhancedItems] Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ConvertEnhanced]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_ConvertEnhanced]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_ConvertEnhanced] +( + @svid int, + @bvid int, + @dvid int +) +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + IF( @svid != 0 AND @bvid != 0) -- Background DocVersions + exec vesp_ConvertEnhancedDocVersions @svid,@bvid,1,'Background',6,'B' + IF( @svid != 0 AND @dvid != 0) -- Deviation DocVersions + exec vesp_ConvertEnhancedDocVersions @svid,@dvid,2,'Deviation',20,'D' + IF( @svid != 0 AND ( @bvid != 0 OR @dvid != 0)) -- Enhanced Items + exec vesp_ConvertEnhancedItems @svid, @bvid, @dvid + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'StoredProcedure [vesp_ConvertEnhanced] Succeeded' +ELSE PRINT 'StoredProcedure [vesp_ConvertEnhanced] Error on Creation' +go + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ConvertAllEnhanced]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_ConvertAllEnhanced]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_ConvertAllEnhanced] +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + declare @svid int + declare @bvid int + declare @dvid int + declare @source varchar(255) + declare @background varchar(255) + declare @deviation varchar(255) + Exec vesp_PurgeEnhanced + Print 'Purge Enhanced' + declare enh cursor for select * from vefn_GetEnhancedLinks() + open enh + fetch next from enh into @svid,@bvid,@dvid + while @@fetch_status = 0 + begin + SELECT @SOURCE = FOLDERNAME FROM vefn_GetVersionNames() where VersionID = @svid + SELECT @Background = FOLDERNAME FROM vefn_GetVersionNames() where VersionID = @bvid + SELECT @Deviation = FOLDERNAME FROM vefn_GetVersionNames() where VersionID = @dvid + Print 'Converting ' + @Source + ' => ' + isnull(@Background,'N/A') + ' => ' + isnull(@Deviation, 'N/A') + Exec vesp_ConvertEnhanced @svid,@bvid,@dvid + fetch next from enh into @svid,@bvid,@dvid + end + close enh + deallocate enh + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'StoredProcedure [vesp_ConvertAllEnhanced] Succeeded' +ELSE PRINT 'StoredProcedure [vesp_ConvertAllEnhanced] Error on Creation' +go +PRINT 'Added Enhanced Document Conversion Code' + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetNewEnhancedData]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_GetNewEnhancedData]; +GO +/* +select * from vefn_GetNewEnhancedData(28825) +*/ +/****** Object: Table Function [vefn_GetNewEnhancedData] ******/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_GetNewEnhancedData]( @ItemID int, @EnhType int) +RETURNS @OldEnhancedData TABLE +( + ItemID int, + ContentID int, + EItemID int, + EType int +) +WITH EXECUTE AS OWNER +AS +BEGIN + insert into @OldEnhancedData +select ii.ItemId,cc.ContentID + , xEnhanced.value('@ItemID','int') EItemID + , xEnhanced.value('@Type','int') EType from (Select *, cast(config as xml) xConfig from contents) CC +Join Items II ON II.ContentID = CC.ContentID +cross Apply xConfig.nodes('//Enhanced[@Type=sql:variable("@EnhType")]') tEnhanced(xEnhanced) +where ItemID = @ItemID +return +END +GO + +IF (@@Error = 0) PRINT 'TableFunction [vefn_GetNewEnhancedData] Succeeded' +ELSE PRINT 'TableFunction [vefn_GetNewEnhancedData] Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetOldEnhancedData]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_GetOldEnhancedData]; +GO +/* +select * from vefn_GetOldEnhancedData(28825) +*/ +/****** Object: Table Function [vefn_GetOldEnhancedData] ******/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_GetOldEnhancedData]( @ItemID int) +RETURNS @OldEnhancedData TABLE +( + ItemID int, + ContentID int, + ProcName nvarchar(10), + RecID nvarchar(10) +) +WITH EXECUTE AS OWNER +AS +BEGIN + insert into @OldEnhancedData +select ii.ItemId,cc.ContentID + , xHistory.value('@ProcName','nvarchar(10)') ProcName + , xHistory.value('@RecID','nvarchar(10)') RecID from (Select *, cast(config as xml) xConfig from contents) CC +Join Items II ON II.ContentID = CC.ContentID +cross Apply xConfig.nodes('//History') tHistory(xHistory) +where ItemID = @ItemID +return +END +GO + +IF (@@Error = 0) PRINT 'TableFunction [vefn_GetOldEnhancedData] Succeeded' +ELSE PRINT 'TableFunction [vefn_GetOldEnhancedData] Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetEnhancedItemsAndChildren]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_GetEnhancedItemsAndChildren]; +GO +/****** Object: Table Function [vefn_GetEnhancedItemsAndChildren] *****/ +/* +select * from vefn_GetEnhancedItemsAndChildren(17013,1) +select * from vefn_GetEnhancedItemsAndChildren(17067,0) +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_GetEnhancedItemsAndChildren](@ProcID int,@EnhType int) +RETURNS @VersionItems TABLE +( + [Level] int, + [FromType] int, + [Ordinal] int, + [ParentID] int, + [ItemID] int primary key, + [PreviousID] int, + [ContentID] int, + [Number] varchar(250), + [Text] NVARCHAR(MAX), + [Type] INT, + [FormatID] int, + [EItemID] int, + [EType] int +) +WITH EXECUTE AS OWNER +AS +BEGIN +with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged]) as ( + Select 0 [Level], 0 [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] + FROM [Items] + where [ItemID]=@ProcID +Union All +-- Children + select [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + from Itemz Z + join Parts P on P.ContentID = Z.ContentID + join Items I on I.ItemID = P.ItemID + --join (select * from Items where ContentID Not in(Select ContentID from entries)) I on I.ItemID = P.ItemID + where p.fromtype in(2,3,4) -- Sections, Cautions, Notes + or (z.FromType = 2 and p.FromType=6) -- High Level Step +-- Siblings +Union All + select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] + from Itemz Z + join Items I on I.PreviousID = Z.ItemID + where Z.[Level] > 0 +) +insert into @versionitems +select I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID], C.[Number],C.[Text],C.[Type] +, C.[FormatID] +, xEnhanced.value('@ItemID','int') EItemID +, xEnhanced.value('@Type','int') EType from ItemZ I + join (select * , cast(config as xml) xConfig from Contents) C on C.ContentID = I.ContentID + -- sql:variable("@EnhType") allows a variable to be used in a xPath query to limit + -- the results to Enhanced Nodes that have type = + outer apply xConfig.nodes('//Enhanced[@Type=sql:variable("@EnhType")]') tEnhanced(xEnhanced) + where I.ContentID not in (select contentid from entries) + order by I.[Level] , I.[FromType], I.[Ordinal] + OPTION (MAXRECURSION 10000) + RETURN +END +GO +IF (@@Error = 0) PRINT 'TableFunction [vefn_GetEnhancedItemsAndChildren] Succeeded' +ELSE PRINT 'TableFunction [vefn_GetEnhancedItemsAndChildren] Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetEnhancedIssues]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_GetEnhancedIssues]; +GO +/****** Object: Table Function [vefn_GetEnhancedIssues] ******/ +/* +select * from vefn_getEnhancedIssues1(17066) +select * from vefn_getEnhancedIssues1(17067) +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ + +CREATE FUNCTION [dbo].[vefn_GetEnhancedIssues]( @EnhancedID int) +RETURNS @EnhancedIssues TABLE +( + SourceID int, + [sNumber] varchar(250), + [sText] NVARCHAR(MAX), + [sType] INT, + [sProcName] NVARCHAR(10), + [sRecID] NVARCHAR(10), + EnhanceID int, + [eNumber] varchar(250), + [eeText] NVARCHAR(MAX), + [eType] INT, + [eProcName] NVARCHAR(10), + [eRecID] NVARCHAR(10), + Status varchar(10) +) +WITH EXECUTE AS OWNER +AS +BEGIN + declare @SourceID as int + select @SourceID = xEnhanced.value('@ItemID','int') from (select cast(config as xml) xConfig from contents + where contentID in(select ContentID from Items where ItemID = @EnhancedID)) CC + cross apply xConfig.nodes('//Enhanced') tEnhanced(xEnhanced) + declare @Type int + select @Type = xEnhanced.value('@Type','int') from (select cast(config as xml) xConfig from contents + where contentID in(select ContentID from Items where ItemID = @SourceID)) CC + cross apply xConfig.nodes('//Enhanced') tEnhanced(xEnhanced) where xEnhanced.value('@ItemID','int') = @EnhancedID + Insert into @EnhancedIssues + select vcs.ItemID SourceID, vcs.[Number] sNumber, vcs.[Text] sText, vcs.[Type] sType,sod.ProcName sProcName,sod.RecID sRecID + , vce.ItemID EnhancedID, vce.[Number] eNumber, vce.[Text] eText, vce.[Type] eType,eod.ProcName sProcName ,eod.RecID eRecID + , case + when ISNULL(eod.RecID,'00') like '0L%' and vcs.itemid is null then 'Delete' + when vcs.itemid is null then 'Unlinked' + when vce.itemid is null then 'Insert' + when ISNULL(vcs.text,'') != isnull(vce.Text,'') then 'Different' + else 'Same' end Status + from vefn_GetEnhancedItemsAndChildren(@SourceID,@Type) vcs + full Join vefn_GetEnhancedItemsAndChildren(@EnhancedID,0) vce on vcs.EItemID = vce.ItemID + outer apply vefn_GetOldEnhancedData(vcs.ItemID) sod + outer apply vefn_GetOldEnhancedData(vce.ItemID) eod + RETURN +END +GO + +IF (@@Error = 0) PRINT 'TableFunction [vefn_GetEnhancedIssues] Succeeded' +ELSE PRINT 'TableFunction [vefn_GetEnhancedIssues] Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetEnhancedIssueCount]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_GetEnhancedIssueCount]; +GO +/****** Object: Table Function [vefn_GetEnhancedIssueCount] ******/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_GetEnhancedIssueCount]( @EnhancedID int) +RETURNS @EnhancedIssueCount TABLE +( + Deleted int, + Inserted int, + Changed int, + Same int, + Unlinked int +) +WITH EXECUTE AS OWNER +AS +BEGIN + insert into @EnhancedIssueCount + select sum(case Status when 'Delete' then 1 else 0 end) Deleted + , sum(case Status when 'Insert' then 1 else 0 end) Inserted + , sum(case Status when 'Different' then 1 else 0 end) Changed + , sum(case Status when 'Same' then 1 else 0 end) Same + , sum(case Status when 'Unlinked' then 1 else 0 end) Unlinked + from vefn_GetEnhancedIssues(@EnhancedID) + RETURN +END +GO + +IF (@@Error = 0) PRINT 'TableFunction [vefn_GetEnhancedIssueCount] Succeeded' +ELSE PRINT 'TableFunction [vefn_GetEnhancedIssueCount] Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetEnhancedDocuments]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_GetEnhancedDocuments]; +GO +/****** Object: Table Function [vefn_GetEnhancedDocuments] ******/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ + + +CREATE FUNCTION [dbo].[vefn_GetEnhancedDocuments]() +RETURNS @EnhancedDocuments TABLE +( + VersionID int, + FolderName varchar(250), + ItemID int, + ProcNum varchar(250), + ProcName varchar(1000), + EnhType int, + EnhItemID int +) +WITH EXECUTE AS OWNER +AS +BEGIN +insert into @EnhancedDocuments +select VN.VersionID,VN.FolderName, VI.ItemID +, replace(cc.Number,'\u8209?','-') ProcNum, replace(cc.Text,'\u8209?','-') ProcName +--, replace(replace(cc.Number,'\u8209?','-'),'\u9586?','\') ProcNum, replace(replace(cc.Text,'\u8209?','-'),'\u9586?','\') ProcName +, xEnhanced.value('@Type','int') EnhType, xenhanced.value('@ItemID','int') EnhItemID +--, xEnhanced.query('.') qEnhanced +from (select *, cast(config as xml) xconfig from Contents Where config like '%Enhanced%' and Type =0) CC +JOIN VEFN_GetVersionItems('') VI ON VI.ContentID = CC.ContentID +JOIN VEFN_GetVersionNames() VN ON VI.VersionID = VN.VersionID +cross apply xconfig.nodes('//Enhanced') tEnhanced(xEnhanced) +where xEnhanced.value('@Type','int') > 0 +return +END +GO + +IF (@@Error = 0) PRINT 'TableFunction [vefn_GetEnhancedDocuments] Succeeded' +ELSE PRINT 'TableFunction [vefn_GetEnhancedDocuments] Error on Creation' +GO + + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListUnlinkedItems]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_ListUnlinkedItems]; +GO +/* Sample +vesp_ListUnlinkedItems 28825,1 +vesp_ListUnlinkedItems 28827,1 +vesp_ListUnlinkedItems 29245,1 +vesp_ListUnlinkedItems 12217,1 +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_ListUnlinkedItems] +( + @ItemID int, + @EnhType int +) +WITH EXECUTE AS OWNER +AS +BEGIN + DECLARE @EItemID int + set @EItemID = (select top 1 VIS.EItemID from vefn_AllSiblingItems(@ItemID)--Find All Siblings + outer apply vefn_GetNewEnhancedData(ItemID,@EnhType) VIS -- That are Linked + where EitemID is not null) + + if @EItemID is null + BEGIN + select @EItemID = epp.ItemID + from (select * from Parts where ItemID in(select itemID from vefn_AllSiblingItems(@ItemID)))SPP -- FindParent + JOIN ITEMS SII ON sPP.ContentID = sII.ContentID -- Get Parent Content ID + outer apply vefn_GetNewEnhancedData(SII.ItemID,@EnhType) VIS -- Get Enhanced ID for Parent + JOIN ITEMS EII ON VIS.EItemID = EII.ItemID -- Get Enhanced Parent Content ID + JOIN PARTS EPP ON EPP.ContentID = EII.ContentID and SPP.FromType = epp.FromType -- Get first Child + END + if @EItemID is null + BEGIN + select @EItemID = DV2.ItemID from (select *,cast(config as xml) xconfig from DocVersions + where ItemID in(select itemID from vefn_AllSiblingItems(@ItemID))) SDV -- Source DocVersion + cross apply (select * from vefn_GetEnhancedDocVersions(SDV.VersionID) where @EnhType = Type) EDV -- Enhanced DocVersion + Join DocVersions DV2 ON DV2.VersionID = EDV.VersionID -- First Procedure + END + Select ItemID,PreviousID,II.ContentID,II.[DTS],II.[UserID],II.[LastChanged], + (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[II].[ItemID]) [AnnotationCount], + (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[II].[ItemID]) [DocVersionCount], + (SELECT COUNT(*) FROM [Items] [Children] WHERE [Children].[PreviousID]=[II].[ItemID]) [NextCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[II].[ItemID]) [PartCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[II].[ItemID]) [Transition_RangeIDCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[II].[ItemID]) [Transition_ToIDCount] + from Items II + Left Join Entries EE ON II.ContentID = EE.ContentID + where ItemID In (select SIB.ItemID from vefn_AllSiblingItems(@EItemID) SIB + outer apply vefn_GetNewEnhancedData(ItemID,0) VIE + Where VIE.EItemID is null) + and EE.ContentID is null +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'StoredProcedure [vesp_ListUnlinkedItems] Succeeded' +ELSE PRINT 'StoredProcedure [vesp_ListUnlinkedItems] Error on Creation' +go + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListItemsToRefresh]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_ListItemsToRefresh]; +GO +/* Sample +vesp_ListItemsToRefresh 17078 +vesp_ListItemsToRefresh 17066 +vesp_ListItemsToRefresh 17083 +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_ListItemsToRefresh] +( + @ProcID int +) +WITH EXECUTE AS OWNER +AS +BEGIN + Select ItemID,PreviousID,ContentID,[DTS],[UserID],[LastChanged], + (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[II].[ItemID]) [AnnotationCount], + (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[II].[ItemID]) [DocVersionCount], + (SELECT COUNT(*) FROM [Items] [Children] WHERE [Children].[PreviousID]=[II].[ItemID]) [NextCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[II].[ItemID]) [PartCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[II].[ItemID]) [Transition_RangeIDCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[II].[ItemID]) [Transition_ToIDCount] + from Items II where ItemID In (select EnhanceID from vefn_GetEnhancedIssues(@ProcID) + where Status ='Different') +END +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'StoredProcedure [vesp_ListItemsToRefresh] Succeeded' +ELSE PRINT 'StoredProcedure [vesp_ListItemsToRefresh] Error on Creation' +go + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_PurgeEnhancedItemsAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_PurgeEnhancedItemsAndChildren]; +GO +/* +vesp_PurgeEnhancedItemsAndChildren 43092 -- caution +vesp_PurgeEnhancedItemsAndChildren 43090 -- step/caution +vesp_PurgeEnhancedItemsAndChildren 43089 -- section +vesp_PurgeEnhancedItemsAndChildren 17067 -- procedure +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_PurgeEnhancedItemsAndChildren](@EnhanceID int) + +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + declare @SourceID int + select @SourceID=EItemID from VEFN_GetNewEnhancedData(@EnhanceID,0) + DECLARE @EnhType int + select @EnhType = xEnhanced.value('@Type','int') + from (select *, cast(config as xml) xConfig from Contents where ContentID in (Select ContentID from ITEMS where ItemID = @SourceID)) CC + cross apply xconfig.nodes('//Enhanced[@ItemID=sql:variable("@EnhanceID")]') tEnhanced(xEnhanced) + declare @Enh1 TABLE + ( + ID int, + xConfig xml + ) + insert into @Enh1 + select CC.ContentID, CC.xConfig from (select *, cast(config as xml) xConfig from Contents) CC + JOIN vefn_ChildItems(@SourceID) VCI ON VCI.ContentID = CC.ContentID + cross apply VEFN_GetNewEnhancedData(VCI.itemid,@EnhType) VEN + + Update @Enh1 Set xConfig.modify('delete //Enhanced[@Type=sql:variable("@EnhType")]') From @Enh1 + + + declare @Enh2 TABLE + ( + ID int, + xConfig xml + ) + insert into @Enh2 + select CC.ContentID, CC.xConfig from (select *, cast(config as xml) xConfig from Contents) CC + JOIN vefn_ChildItems(@EnhanceID) VCI ON VCI.ContentID = CC.ContentID + cross apply VEFN_GetNewEnhancedData(VCI.itemid,0) VEN + set @EnhType=0 + Update @Enh2 Set xConfig.modify('delete //Enhanced[@Type=sql:variable("@EnhType")]') From @Enh2 + + Update CC Set Config = cast(xconfig as varchar(max)) From Contents CC + Join @Enh1 EE ON EE.ID = CC.ContentID + Update CC Set Config = cast(xconfig as varchar(max)) From Contents CC + Join @Enh2 EE ON EE.ID = CC.ContentID + + SELECT [ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[LastChanged], + (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[Contents].[ContentID]) [DetailCount], + (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[Contents].[ContentID]) [EntryCount], + (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[Contents].[ContentID]) [GridCount], + (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[Contents].[ContentID]) [ImageCount], + (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[Contents].[ContentID]) [ItemCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[Contents].[ContentID]) [PartCount], + (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[Contents].[ContentID]) [RoUsageCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[Contents].[ContentID]) [TransitionCount], + (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[Contents].[ContentID]) [ZContentCount] + FROM [Contents] where ContentID in (Select ID From @Enh1 UNION Select ID From @Enh2) + + + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'StoredProcedure [vesp_PurgeEnhancedItemsAndChildren] Succeeded' +ELSE PRINT 'StoredProcedure [vesp_PurgeEnhancedItemsAndChildren] Error on Creation' +go + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetNonEnhancedDocVersions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_GetNonEnhancedDocVersions]; +GO +CREATE PROCEDURE [dbo].[vesp_GetNonEnhancedDocVersions] + +WITH EXECUTE AS OWNER +AS +BEGIN +SELECT + [VersionID], + [FolderID], + [VersionType], + [Name], + [Title], + [ItemID], + [FormatID], + [Config], + [DTS], + [UserID], + [LastChanged], + (SELECT COUNT(*) FROM [Associations] WHERE [Associations].[VersionID]=dv.[VersionID]) [AssociationCount] + FROM (select *, cast(config as xml) xconfig from [DocVersions] ) dv + outer apply xconfig.nodes('//Enhanced') tEnhanced(xEnhanced) + Where xEnhanced is null +return +END +GO + +IF (@@Error = 0) PRINT 'StoredProcedure [vesp_GetNonEnhancedDocVersions] Succeeded' +ELSE PRINT 'StoredProcedure [vesp_GetNonEnhancedDocVersions] Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_PurgeEnhancedDocVersionsAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_PurgeEnhancedDocVersionsAndChildren]; +GO +/* +vesp_PurgeEnhancedDocVersionsAndChildren 8 -- Background +vesp_PurgeEnhancedDocVersionsAndChildren 9 -- Deviation +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_PurgeEnhancedDocVersionsAndChildren](@EnhanceID int) -- @EnhanceID -- Enhanced VersionID +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + declare @SourceID int -- Source VersionID + select @SourceID = xEnhanced.value('@VersionID','int') from (select *, cast(config as xml) xconfig from DocVersions) DV + cross apply xconfig.nodes('//Enhanced') tEnhanced(xEnhanced) + where VersionID = @EnhanceID + DECLARE @EnhType int + select @EnhType = xEnhanced.value('@Type','int') + from (select *, cast(config as xml) xConfig from DocVersions where VersionID = @SourceID) DV + cross apply xconfig.nodes('//Enhanced[@VersionID=sql:variable("@EnhanceID")]') tEnhanced(xEnhanced) + -- Fix DocVersion Records + declare @Enh TABLE + ( + ID int, + xConfig xml + ) + insert into @Enh + select DV.VersionID,DV.xConfig + from (select *, cast(config as xml) xConfig from DocVersions where VersionID in(@SourceID,@EnhanceID)) DV + Update @Enh Set xConfig.modify('delete //Enhanced[@Type=sql:variable("@EnhType")]') From @Enh + Update @Enh Set xConfig.modify('delete //Enhanced[@Type="0"]') From @Enh + declare @Enh1 TABLE + ( + ID int, + xConfig xml + ) + insert into @Enh1 -- Links to Enhanced from Source + select CC.ContentID, xConfig from (select *, cast(config as xml) xConfig from Contents) CC + JOIN VEFN_GetVersionItems(cast(@SourceID as varchar(25))) VI ON VI.ContentID = CC.ContentID + cross apply VEFN_GetNewEnhancedData(VI.itemid,@EnhType) VEN + Update @Enh1 Set xConfig.modify('delete //Enhanced[@Type=sql:variable("@EnhType")]') From @Enh1 + + declare @Enh2 TABLE + ( + ID int, + xConfig xml + ) + insert into @Enh2 -- Links to Enhanced from Source + select CC.ContentID, xConfig from (select *, cast(config as xml) xConfig from Contents) CC + JOIN VEFN_GetVersionItems(cast(@EnhanceID as varchar(25))) VI ON VI.ContentID = CC.ContentID + cross apply VEFN_GetNewEnhancedData(VI.itemid,0) VEN + set @EnhType=0 + Update @Enh2 Set xConfig.modify('delete //Enhanced[@Type=sql:variable("@EnhType")]') From @Enh2 + + Update DV Set Config = cast(xConfig as varchar(max)) From DocVersions DV -- Remove Links from DocVersions + Join @Enh EE ON EE.ID = DV.VersionID + Update CC Set Config = cast(xconfig as varchar(max)) From Contents CC -- Remove Links from Source + Join @Enh1 EE ON EE.ID = CC.ContentID + Update CC Set Config = cast(xconfig as varchar(max)) From Contents CC -- Remove Links from Enhanced + Join @Enh2 EE ON EE.ID = CC.ContentID + + SELECT [ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[LastChanged], + (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[Contents].[ContentID]) [DetailCount], + (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[Contents].[ContentID]) [EntryCount], + (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[Contents].[ContentID]) [GridCount], + (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[Contents].[ContentID]) [ImageCount], + (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[Contents].[ContentID]) [ItemCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[Contents].[ContentID]) [PartCount], + (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[Contents].[ContentID]) [RoUsageCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[Contents].[ContentID]) [TransitionCount], + (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[Contents].[ContentID]) [ZContentCount] + FROM [Contents] where ContentID in (Select ID From @Enh1 UNION Select ID From @Enh2) + + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'StoredProcedure [vesp_PurgeEnhancedDocVersionsAndChildren] Succeeded' +ELSE PRINT 'StoredProcedure [vesp_PurgeEnhancedDocVersionsAndChildren] Error on Creation' +go + +-- AddToPromsFixes_Convert16to32 +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetOldEnhancedProcItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_GetOldEnhancedProcItems]; +GO +/* + +select * from vefn_GetOldEnhancedProcItems(17012) +select * from vefn_GetOldEnhancedProcItems(17066) + +select * from vefn_GetOldEnhancedProcItems(17012) VE +join vefn_GetOldEnhancedProcItems(17066) VS on ve.Procname = vs.ProcName and substring(VE.RecID,3,8) = substring(VS.RecID,3,8) + +select * from vefn_GetOldEnhancedProcItems(17014) +select * from vefn_GetOldEnhancedProcItems(17015) +select * from vefn_GetOldEnhancedProcItems(17029) +select * from vefn_GetOldEnhancedProcItems(17033) +select * from vefn_GetOldEnhancedProcItems(17045) +select * from vefn_GetOldEnhancedProcItems(99043) + + + +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_GetOldEnhancedProcItems](@ItemID as int) +RETURNS @Enhanced TABLE +( + ItemID int, + ContentID int, + ProcName varchar(255), + RecID varchar(10) +) +WITH EXECUTE AS OWNER +AS +BEGIN + declare @ProcNum varchar(255) + select @ProcNum = replace(Number,'\u8209?','-') from contents CC + --select @ProcNum = replace(replace(Number,'\u8209?','-'),'\u9586?','\') from contents CC + join Items II on II.ContentID = CC.ContentID + Where ItemID = @ItemID + Begin + with Itemz([FromType], [Level], [ItemID], [ContentID]) as ( + Select 1 [FromType], 0 [Level], [ItemID], [ContentID] + FROM [Items] + where [ItemID]=@ItemID + Union All -- Children + select P.FromType, [Level] + 1, I.[ItemID], I.[ContentID] + from Itemz Z + join Parts P on P.ContentID = Z.ContentID + join Items I on I.ItemID = P.ItemID + where Z.FromType <= 2 + or P.FromType in (3,4) + Union All -- Siblings + select Z.FromType, [Level] , I.[ItemID], I.[ContentID] + from Itemz Z + join Items I on I.PreviousID = Z.ItemID + where Z.[Level] > 0 + ) + Insert into @Enhanced + select ItemID,ContentID,ProcName,RecID from ( select II.ItemID,II.ContentID + , isnull(xHistory.value('@ProcName','varchar(255)'),@ProcNum) ProcName + , xHistory.value('@RecID','varchar(255)') RecID + , Row_Number() over (partition by isnull(xHistory.value('@ProcName','varchar(255)'),@ProcNum) + , xHistory.value('@RecID','varchar(255)') order by ItemID) RowOrder + from Itemz II + Join (select *, Cast(config as xml) xConfig from Contents) CC ON CC.ContentID = II.ContentID + Cross Apply xConfig.nodes('//History') tHistory(xHistory) + ) T1 + where RowOrder = 1 + OPTION (MAXRECURSION 10000) + END + RETURN +END +GO +IF (@@Error = 0) PRINT 'TableFunction [vefn_GetOldEnhancedProcItems] Succeeded' +ELSE PRINT 'TableFunction [vefn_GetOldEnhancedProcItems] Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_Get16to32EnhancedProcItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_Get16to32EnhancedProcItems]; +GO +/* + +select * from vefn_Get16to32EnhancedProcItems(17012,17066,1) + +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_Get16to32EnhancedProcItems](@SourceID int, @EnhanceID int, @EnhType int) +RETURNS @EnhItems TABLE +( + SrcItemID int, + SrcContentID int, + SrcConfig varchar(255), + ProcName varchar(255), + RecID varchar(8), + EnhItemID int, + EnhContentID int, + EnhConfig varchar(255), + EnhProcName varchar(255), + EnhRecID varchar(8) +) +BEGIN +Insert into @EnhItems-- Procedures +select @SourceID SrcItemID, (select ContentID from Items Where ItemID = @SourceID) SrcContentID + ,'' SrcConfig + ,isnull(VSO.ProcName,replace(CCS.Number,'\u8209?','-')) SrcProcName, null SrcRecID + --,isnull(VSO.ProcName,replace(replace(CCS.Number,'\u8209?','-'),'\u9586?','\')) SrcProcName, null SrcRecID + ,@EnhanceID EnhItemID, (select ContentID from Items Where ItemID = @EnhanceID) EnhContentID + ,'' EnhConfig + ,isnull(VEO.ProcName ,replace(CCE.Number,'\u8209?','-')) EnhProcNam, null EnhRecID + --,isnull(VEO.ProcName ,replace(replace(CCE.Number,'\u8209?','-'),'\u9586?','\')) EnhProcNam, null EnhRecID +From vefn_GetOldEnhancedData(@SourceID) VSO +cross apply vefn_GetOldEnhancedData(@EnhanceID) VEO +JOIN Contents CCS ON VSO.ContentID = CCs.ContentID +JOIN Contents CCE ON VEO.ContentID = CCE.ContentID + +Insert into @EnhItems--Sections and Steps +select VS.ItemID, VS.ContentID + ,'' SrcConfig + ,VS.ProcName SrcProcName, VS.RecID RecID + ,VE.ItemID EnhItemID, VE.ContentID EnhContentID + ,'' EnhConfig + ,VE.ProcName EnhProcName, VE.RecID EnhRecID + from vefn_GetOldEnhancedProcItems(@SourceID) VS +join vefn_GetOldEnhancedProcItems(@EnhanceID) VE on ve.Procname = vs.ProcName and substring(VE.RecID,2,8) = 'L' + substring(VS.RecID,3,8) +--select * from @EnhItems +RETURN +END +GO +IF (@@Error = 0) PRINT 'TableFunction [vefn_Get16to32EnhancedProcItem] Succeeded' +ELSE PRINT 'TableFunction [vefn_Get16to32EnhancedProcItem] Error on Creation' +GO +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_Get16BitEnhancedContents]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_Get16BitEnhancedContents]; +GO +/* + +vesp_Get16BitEnhancedContents 17012,17066,1 + +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_Get16BitEnhancedContents](@SourceID int, @EnhanceID int, @EnhType int) -- @EnhanceID -- Enhanced VersionID +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + DECLARE @EnhItems TABLE + ( + SrcItemID int, + SrcContentID int, + SrcConfig varchar(255), + ProcName varchar(255), + RecID varchar(8), + EnhItemID int, + EnhContentID int, + EnhConfig varchar(255), + EnhProcName varchar(255), + EnhRecID varchar(8) + ) + Insert into @EnhItems + select * from vefn_Get16to32EnhancedProcItems(@SourceID,@EnhanceID,@EnhType) + + SELECT [ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[LastChanged], + (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[Contents].[ContentID]) [DetailCount], + (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[Contents].[ContentID]) [EntryCount], + (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[Contents].[ContentID]) [GridCount], + (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[Contents].[ContentID]) [ImageCount], + (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[Contents].[ContentID]) [ItemCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[Contents].[ContentID]) [PartCount], + (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[Contents].[ContentID]) [RoUsageCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[Contents].[ContentID]) [TransitionCount], + (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[Contents].[ContentID]) [ZContentCount] + FROM [Contents] where ContentID in (Select SrcContentID from @EnhItems union Select EnhContentID from @EnhItems) + + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'StoredProcedure [vesp_Get16BitEnhancedContents] Succeeded' +ELSE PRINT 'StoredProcedure [vesp_Get16BitEnhancedContents] Error on Creation' +go + + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_Convert16to32EnhancedContents]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_Convert16to32EnhancedContents]; +GO +/* + +vesp_Convert16to32EnhancedContents 17012,17066,1 + +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_Convert16to32EnhancedContents](@SourceID int, @EnhanceID int, @EnhType int) -- @EnhanceID -- Enhanced VersionID +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + DECLARE @EnhItems TABLE + ( + SrcItemID int, + SrcContentID int, + SrcConfig varchar(255), + ProcName varchar(255), + RecID varchar(8), + EnhItemID int, + EnhContentID int, + EnhConfig varchar(255), + EnhProcName varchar(255), + EnhRecID varchar(8) + ) + Insert into @EnhItems + select * from vefn_Get16to32EnhancedProcItems(@SourceID,@EnhanceID,@EnhType) + + Update CC + Set Config = cast(cast(Replace(Config,'>' + SrcConfig +'' + EnhConfig +' 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'StoredProcedure [vesp_Convert16to32EnhancedContents] Succeeded' +ELSE PRINT 'StoredProcedure [vesp_Convert16to32EnhancedContents] Error on Creation' +go + +PRINT 'Enhanced Document Synchronization code.' + +/****** Object: StoredProcedure [vesp_GetUnusedRoFstsCount] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetUnusedRoFstsCount]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_GetUnusedRoFstsCount]; +GO + +/* +exec vesp_GetUnusedRoFstsCount +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_GetUnusedRoFstsCount] +WITH EXECUTE AS OWNER +AS + Select COUNT(*) HowMany From ROFSTS where ROFstID not in(Select ROFSTID from Associations) + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetUnusedRoFstsCount Succeeded' +ELSE PRINT 'Procedure Creation: vesp_GetUnusedRoFstsCount Error on Creation' +GO + +/****** Object: StoredProcedure [vesp_GetUnusedRoFstsCount] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetUnusedFiguresCount]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_GetUnusedFiguresCount]; +GO + +/* +exec vesp_GetUnusedFiguresCount +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_GetUnusedFiguresCount] +WITH EXECUTE AS OWNER +AS + Select COUNT(*) HowMany from Figures where ROFstID not in(Select ROFSTID from Associations) + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetUnusedFiguresCount Succeeded' +ELSE PRINT 'Procedure Creation: vesp_GetUnusedFiguresCount Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_RemoveUnusedRoFstsAndFigures]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_RemoveUnusedRoFstsAndFigures]; +GO +/* +vesp_RemoveUnusedRoFstsAndFigures +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_RemoveUnusedRoFstsAndFigures] +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + Delete From Figures where ROFstID not in(Select ROFSTID from Associations) + Delete From ROFSTS where ROFstID not in(Select ROFSTID from Associations) + IF (@@TRANCOUNT > 0) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'StoredProcedure [vesp_RemoveUnusedRoFstsAndFigures] Succeeded' +ELSE PRINT 'StoredProcedure [vesp_RemoveUnusedRoFstsAndFigures] Error on Creation' +go + + +/****** Object: StoredProcedure [vesp_GetUnusedROAssociationsCount] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetUnusedROAssociationsCount]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_GetUnusedROAssociationsCount]; +GO + +/* +exec vesp_GetUnusedROAssociationsCount +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_GetUnusedROAssociationsCount] +WITH EXECUTE AS OWNER +AS + --SELECT COUNT(*) HowMany FROM vefn_GetDisconnectedItems() +begin + with cte as ( + Select *, Row_Number() over (partition by VersionID order by associationID ) MyRank from Associations + ) + select count(*) HowMany from CTE where MyRank > 1 +end +RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetUnusedROAssociationsCount Succeeded' +ELSE PRINT 'Procedure Creation: vesp_GetUnusedROAssociationsCount Error on Creation' +GO + +/****** Object: StoredProcedure [vesp_CleanUpROAssociations] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_CleanUpROAssociations]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_CleanUpROAssociations]; +GO +/* +vesp_CleanUpROAssociations +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2016 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_CleanUpROAssociations] +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + BEGIN + with cte as ( + Select *, Row_Number() over (partition by VersionID order by associationID ) MyRank from Associations + ) + delete CTE where MyRank > 1 + END +IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'StoredProcedure [vesp_CleanUpROAssociations] Succeeded' +ELSE PRINT 'StoredProcedure [vesp_CleanUpROAssociations] Error on Creation' +go + +/****** Object: StoredProcedure [addPdf] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addPdf]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [addPdf]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2012 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[addPdf] + +( + @DocID int, + @DebugStatus int, + @TopRow int, + @PageLength int, + @LeftMargin int, + @PageWidth int, + @PageCount float, + @DocPdf varbinary(MAX)=null, + @DTS datetime, + @UserID nvarchar(100), + @newLastChanged timestamp output +) +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + IF not exists(select * FROM [Pdfs] WHERE [DocID]=@DocID AND [DebugStatus]=@DebugStatus AND [TopRow]=@TopRow AND [PageLength]=@PageLength AND [LeftMargin]=@LeftMargin AND [PageWidth]=@PageWidth) + BEGIN + INSERT INTO [Pdfs] + ( + [DocID], + [DebugStatus], + [TopRow], + [PageLength], + [LeftMargin], + [PageWidth], + [PageCount], + [DocPdf], + [DTS], + [UserID] + ) + VALUES + ( + @DocID, + @DebugStatus, + @TopRow, + @PageLength, + @LeftMargin, + @PageWidth, + @PageCount, + @DocPdf, + @DTS, + @UserID + ) + END + + SELECT @newLastChanged=[LastChanged] + FROM [Pdfs] WHERE [DocID]=@DocID AND [DebugStatus]=@DebugStatus AND [TopRow]=@TopRow AND [PageLength]=@PageLength AND [LeftMargin]=@LeftMargin AND [PageWidth]=@PageWidth + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: addPdf Succeeded' +ELSE PRINT 'Procedure Creation: addPdf Error on Creation' +GO +/****** Object: Index [IX_itemsLastChanged] Script Date: 3/21/2017 11:24:00 AM ******/ +IF EXISTS (SELECT * FROM dbo.sysIndexes WHERE name like 'IX_ItemsLastChanged') + DROP INDEX [IX_ItemsLastChanged] ON [dbo].[tblItems]; +GO +CREATE NONCLUSTERED INDEX [IX_ItemsLastChanged] ON [dbo].[tblItems] +( + [DeleteStatus] ASC, + [LastChanged] DESC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +GO +PRINT 'Added IX_ItemsLastChanged Index. Speeds up session queries' +GO + +/****** Object: StoredProcedure [getJustROImage] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getJustROImage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getJustROImage]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2017 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ + +CREATE PROCEDURE [dbo].[getJustROImage] + +( + @ImageID int +) +WITH EXECUTE AS OWNER +AS + SELECT + [ImageID], + [RODbID], + [FileName], + [Content], + [Config], + [DTS], + [UserID], + [LastChanged], + (SELECT COUNT(*) FROM [Figures] WHERE [Figures].[ImageID]=[ROImages].[ImageID]) [FigureCount] + FROM [ROImages] + WHERE [ImageID]=@ImageID + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getJustROImage Succeeded' +ELSE PRINT 'Procedure Creation: getJustROImage Error on Creation' +GO +/****** Object: StoredProcedure [deleteAllDocVersionPdfs] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteAllDocVersionPdfs]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [deleteAllDocVersionPdfs]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2017 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[deleteAllDocVersionPdfs] + +( + @VersionID int +) +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + DELETE [Pdfs] + WHERE [DocID] IN(select EE.DocID from vefn_GetVersionItems(cast(@VersionID as varchar(20))) VI + Join Entries EE ON EE.ContentID= VI.ContentID) + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: deleteAllDocVersionPdfs Succeeded' +ELSE PRINT 'Procedure Creation: deleteAllDocVersionPdfs Error on Creation' +GO +/****** Object: StoredProcedure [addFiguresByROFstIDandImageIDs] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addFiguresByROFstIDandImageIDs]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [addFiguresByROFstIDandImageIDs]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2017 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[addFiguresByROFstIDandImageIDs] +( + @ROFstID int, + @ImageIDs varchar(max) +) +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + INSERT INTO [Figures] + ( [ROFstID] + ,[ImageID] + ,[Config] + ,[DTS] + ,[UserID] + ) + select distinct FF.ROFstID, II.ID ImageID, '' Config, FF.DTS, FF.UserID from ROFsts FF + , vefn_SplitInt(@ImageIDs,',') II + where ROFstID=@ROFstID and II.ID not in (select ImageID from Figures where ROFstID = @ROFstID) + + SELECT [FigureID] + ,[ROFstID] + ,[ImageID] + ,[Config] + ,[DTS] + ,[UserID] + ,[LastChanged] + FROM [Figures] + WHERE [ROFstID]=@ROFstID + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: addFiguresByROFstIDandImageIDs Succeeded' +ELSE PRINT 'Procedure Creation: addFiguresByROFstIDandImageIDs Error on Creation' +GO + + +/****** Object: StoredProcedure [vesp_FixHyphens] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_FixHyphens]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_FixHyphens]; +GO + +/* +exec vesp_DeletePDFs +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2017 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_FixHyphens] +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + Update Contents set Text = Replace(Replace(Replace(Replace(Replace(Replace(Replace(Text,'\emdash','\u8209?'),'\endash','\u8209?'),'\u8213?','\u8209?'),'\u8212?','\u8209?'),'\u8211?','\u8209?'),'\u8210?','\u8209?'),'\u8208?','\u8209?') + where Text Like '%\u8208?%' or Text Like '%\u8210?%' or Text Like '%\u8211?%' or Text Like '%\u8212?%' or Text Like '%\u8213?%' or Text Like '%\endash%' or Text Like '%\emdash%' + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_FixHyphens Succeeded' +ELSE PRINT 'Procedure Creation: vesp_FixHyphens Error on Creation' +GO + +/****** Object: StoredProcedure [getUsers] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getUsers]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getUsers]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2017 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getUsers] + +WITH EXECUTE AS OWNER +AS + SELECT + [UID], + [UserID], + [FirstName], + [MiddleName], + [LastName], + [Suffix], + [CourtesyTitle], + [PhoneNumber], + [CFGName], + [UserLogin], + [UserName], + [Config], + [DTS], + [UsrID], + [LastChanged], + (SELECT COUNT(*) FROM [Memberships] WHERE [Memberships].[UID]=[Users].[UID]) [MembershipCount] + FROM [Users] ORDER BY UserID + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getUsers Succeeded' +ELSE PRINT 'Procedure Creation: getUsers Error on Creation' +GO + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetZeroFromType]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_GetZeroFromType]; +GO +/****** Object: UserDefinedFunction [dbo].[vefn_GetZeroFromType] ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +/* +Select * from vefn_GetZeroFromType() +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2017 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_GetZeroFromType]() +RETURNS @DiscItems TABLE +( + ItemID int primary Key, + ContentID int, + UNIQUE (ContentID) +) +WITH EXECUTE AS OWNER +AS +BEGIN +with ItemZ (BaseID, ItemID, ContentID) as +(Select PP.ContentID BaseID, II.ItemID, II.ContentID from Items II +Join Parts PP ON PP.ItemID = II.ItemID +where FromType = 0 +Union All + -- Children + select z.BaseID, I.[ItemID], I.[ContentID] + from Itemz Z + join Parts P on P.ContentID = Z.ContentID + join Items I on I.ItemID = P.ItemID + Union All + -- Siblings + select z.BaseID, I.[ItemID], I.[ContentID] + from Itemz Z + join Items I on I.PreviousID = Z.ItemID + ) + --select *, dbo.ve_GetShortPath(ItemID) Location from ItemZ + insert into @DiscItems + Select ItemID, ContentID from ItemZ + RETURN +END + +go +IF (@@Error = 0) PRINT 'TableFunction [vefn_GetZeroFromType] Succeeded' +ELSE PRINT 'TableFunction [vefn_GetZeroFromType] Error on Creation' + +GO + +-- B2017-227 Added code to support Export/Import of Enhanced Documents + + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2017 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +/****** Object: Trigger [tr_tblContents_Update] ******/ +ALTER trigger [dbo].[tr_tblContents_Update] on [dbo].[tblContents] for update as + begin + if exists (select * from inserted) + begin + if update(Number) or update(Text) or update(Type) or update(FormatID) or update(DeleteStatus) + begin + insert into ContentAudits(ContentID,Number,Text,Type,FormatID,Config,DTS,UserID,DeleteStatus,ActionDTS) + select dd.ContentID,dd.Number,dd.Text,dd.Type,dd.FormatID,dd.Config,dd.DTS,dd.UserID,dd.DeleteStatus,dd.ActionDTS + from deleted dd + inner join inserted ii on dd.ContentID = ii.ContentID + where dd.Text not like '%' +-- Insert Export Node into the Source and Enhanced DocVersion records +Update DV set Config = Replace(Cast(xConfig as nvarchar(max)),'',@ExportNode + '') +from DocVersions DV +Join @DV DV2 on DV2.VersionID = DV.VersionID + + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'StoredProcedure [vesp_BuildDocVersionExport] Succeeded' +ELSE PRINT 'StoredProcedure [vesp_BuildDocVersionExport] Error on Creation' +go + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'vesp_BuildContentsExport') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_BuildContentsExport]; +GO +/* +select Count(*) AuditsBefore from ContentAudits +select top 5 CC.ContentID, xExport.query('.') qExport from (select *, Cast(config as xml) xconfig from Contents) CC +cross apply xconfig.nodes('//Export') tExport(xExport) +EXEC [vesp_BuildContentsExport] 13 +select Count(*) AuditsAfter from ContentAudits +select top 5 CC.ContentID, xExport.query('.') qExport from (select *, Cast(config as xml) xconfig from Contents) CC +cross apply xconfig.nodes('//Export') tExport(xExport) +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2017 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ + +-- Add Unique IDs for Each Enhanced Link in the Contents records + +CREATE PROCEDURE [dbo].[vesp_BuildContentsExport](@SourceID int) + +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + -- Update the DocVersion Records as the Content records are being saved with the Export node + Exec vesp_BuildDocVersionExport @SourceID + -- Create a list of Source and Enhanced VersionIDs + declare @VersionList varchar(max) +select @VersionList = Coalesce(@VersionList+',','') + cast(VersionId as varchar(10)) from ( +select VersionID from DocVersions DV +where VersionID = @SourceID +Union +select VersionID from (Select *, Cast(config as xml) xConfig from DocVersions) DV +cross apply xConfig.nodes('//Enhanced[@VersionID=sql:variable("@SourceID")]') tEnhanced(xEnhanced)) T1 +-- Temporary table of ContentID and config as XML for record in the Specified DocVersion VersionIDs that have Export Nodes +Declare @Config TABLE +( + ContentID int, + xConfig xml +) +-- Build the temporary table +Insert into @Config +select CC.ContentID, xconfig from (select *, cast(config as xml) xConfig from Contents) CC +JOIN VEFN_GetVersionItems(@VersionList) VI ON VI.ContentID = CC.ContentID +cross Apply xConfig.nodes('//Export') tExport(xExport) +-- Delete the existing Export nodes so that the new nodes can be added. +update @Config Set xConfig.modify('delete //Export') From @Config +-- Update the Config field in the Content records with the old Export node removed. +update CC set Config = cast(xConfig as NVarchar(max)) from Contents CC +join @Config C1 ON C1.ContentID = CC.ContentID +-- Temporary table with new link nodes +Declare @NewLinkData TABLE +( + ContentID int, + EContentID int, + ItemLink int, + LinkNode nvarchar(250) +) +-- The following code build the Export node based upon Dense_Rank() which is similar to a record count +-- only it is based upon the Source ItemID and returns a unique integer value +insert into @NewLinkData +select distinct t1.ContentID, II.ContentID EContentID +, DENSE_RANK() Over (Order by t1.ItemID) ItemLink +, '' LinkNode +From ( +select ItemID, vi.VersionID, VI.ContentID, xEnhanced.query('.') qEnhanced +,xEnhanced.value('@Type','int') EType +,xEnhanced.value('@ItemID','int') EItemID +from (Select *, cast(config as xml) xconfig from Contents where config Like '%Enhanced%') CC +JOIN VEFN_GetVersionItems(cast(@SourceID as nvarchar(10))) VI ON VI.ContentID = CC.ContentID +cross Apply xConfig.nodes('//Enhanced') tEnhanced(xEnhanced)) T1 +JOIN Items II ON II.ItemID = EItemID +Where EType!=0 +-- Add the Export Node created in the temprorary table for the Source document +Update CC +set Config = Replace(Config,'',LinkNode + '') +From tblContents CC +Join @NewLinkData LD ON LD.ContentID = CC.ContentID +-- Add the Export Node created in the tempoary table for the Enhanced document +Update CC +set Config = Replace(Config,'',LinkNode + '') +From tblContents CC +Join @NewLinkData LD ON LD.EContentID = CC.ContentID + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'StoredProcedure [vesp_BuildContentsExport] Succeeded' +ELSE PRINT 'StoredProcedure [vesp_BuildContentsExport] Error on Creation' +go + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'vesp_BuildContentsEnhanced') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_BuildContentsEnhanced]; +GO +/* +select Count(*) AuditsBefore from ContentAudits +select top 5 CC.ContentID, xEnhanced.query('.') qEnhanced from (select *, Cast(config as xml) xconfig from Contents) CC +cross apply xconfig.nodes('//Enhanced') tEnhanced(xEnhanced) +EXEC [vesp_BuildContentsEnhanced] 17 +select Count(*) AuditsAfter from ContentAudits +select top 5 CC.ContentID, xEnhanced.query('.') qEnhanced from (select *, Cast(config as xml) xconfig from Contents) CC +cross apply xconfig.nodes('//Enhanced') tEnhanced(xEnhanced) +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2017 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ + +-- Create Enahnced Nodes for an Enahnced document and its related Source document + +CREATE PROCEDURE [dbo].[vesp_BuildContentsEnhanced](@EnhancedID int) + +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + declare @SourceID int -- Source VersionID + -- Get SourceID from EnhancedID + select @SourceID = xEnhanced.value('@VersionID','int') from (select *, cast(config as xml) xconfig from DocVersions) DV + cross apply xconfig.nodes('//Enhanced') tEnhanced(xEnhanced) + where VersionID = @EnhancedID + + DECLARE @EnhType int + -- Get the Enhanced Type from the DocVersion record + select @EnhType = xEnhanced.value('@Type','int') + from (select *, cast(config as xml) xConfig from DocVersions where VersionID = @SourceID) DV + cross apply xconfig.nodes('//Enhanced[@VersionID=sql:variable("@EnhancedID")]') tEnhanced(xEnhanced) + -- Fix DocVersion Records + -- Temporary Table used to delete old Enhanced Nodes in the source document + declare @Enh1 TABLE + ( + ID int, + xConfig xml + ) + insert into @Enh1 -- Links to Enhanced from Source + select CC.ContentID, xConfig from (select *, cast(config as xml) xConfig from Contents) CC + JOIN VEFN_GetVersionItems(cast(@SourceID as varchar(25))) VI ON VI.ContentID = CC.ContentID + cross apply VEFN_GetNewEnhancedData(VI.itemid,@EnhType) VEN + -- delete the Enhanced node from the config + Update @Enh1 Set xConfig.modify('delete //Enhanced[@Type=sql:variable("@EnhType")]') From @Enh1 + -- Update the content record removing the Enhanced node from config + Update CC Set Config = cast(xconfig as varchar(max)) From Contents CC -- Remove Links from Source + Join @Enh1 EE ON EE.ID = CC.ContentID + -- Temporary Table used to delete old Enhanced Nodes in the enhanced document + declare @Enh2 TABLE + ( + ID int, + xConfig xml + ) + insert into @Enh2 -- Links to Source from Enhanced + select CC.ContentID, xConfig from (select *, cast(config as xml) xConfig from Contents) CC + JOIN VEFN_GetVersionItems(cast(@EnhancedID as varchar(25))) VI ON VI.ContentID = CC.ContentID + cross apply VEFN_GetNewEnhancedData(VI.itemid,0) VEN + --set @EnhType=0 + -- delete the Enhanced node from the config + Update @Enh2 Set xConfig.modify('delete //Enhanced[@Type=0]') From @Enh2 + -- Update the content record removing the Enhanced node from config + Update CC Set Config = cast(xconfig as varchar(max)) From Contents CC -- Remove Links from Enhanced + Join @Enh2 EE ON EE.ID = CC.ContentID +-- Temporary Table used to store the Export LinkID with the ContentID and the ItemID for the Source Document +declare @Source TABLE +( +Type int, +ContentID int, +ItemID int, +LinkID int primary Key +) +-- Build the table based upon the Export Nodes in the Source document +insert into @Source +Select @EnhType dvType, CC.ContentID, vi.ItemID, xExport.value('@LinkID','int') LinkID +from (select *, cast(config as xml) xConfig from Contents) CC +JOIN VEFN_GetVersionItems(cast(@SourceID as varchar(10))) VI ON VI.ContentID = CC.ContentID +Join (select *, cast(config as xml)xdvConfig from DocVersions) DV ON VI.VersionID= DV.VersionID +cross apply xConfig.nodes('//Export') tExport(xExport) +--cross apply xDVConfig.nodes('//Enhanced') tdvEnhanced(xdvEnhanced) +-- Temporary Table used to store the Export LinkID with the ContentID and the ItemID for the Enhanced Document +declare @Enhanced TABLE +( +Type int, +ContentID int, +ItemID int, +LinkID int primary key +) +-- Build the table based upon the Export Nodes in the Enhanced document +insert into @Enhanced +Select xdvEnhanced.value('@Type','int') dvType, CC.ContentID, vi.ItemID, xExport.value('@LinkID','int') LinkID +from (select *, cast(config as xml) xConfig from Contents) CC +JOIN VEFN_GetVersionItems(cast(@EnhancedID as varchar(10))) VI ON VI.ContentID = CC.ContentID +Join (select *, cast(config as xml)xdvConfig from DocVersions) DV ON VI.VersionID= DV.VersionID +cross apply xConfig.nodes('//Export') tExport(xExport) +cross apply xDVConfig.nodes('//Enhanced') tdvEnhanced(xdvEnhanced) +-- Temporary Table of ContentIDs and New Enhanced Node Text +declare @Links TABLE +( +ContentID int primary key, +LinkText nvarchar(250) +) +--Build the temporary table with the new enhanced Nodes +insert into @links +select SS.ContentID, '' EnhancedNode from @Source SS +join @Enhanced EE on EE.LinkID = SS.LinkID +UNION +select EE.ContentID, '' EnhancedNode from @Source SS +join @Enhanced EE on EE.LinkID = SS.LinkID +-- Update content records insering the Enhanced Nodes from the temporary table. +Update CC +set Config = Replace(Config,'',LinkText + '') +From Contents CC +Join @Links LD ON LD.ContentID = CC.ContentID + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'StoredProcedure [vesp_BuildContentsEnhanced] Succeeded' +ELSE PRINT 'StoredProcedure [vesp_BuildContentsEnhanced] Error on Creation' +go + +/****** Object: StoredProcedure [getChildFormats] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getChildFormats]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getChildFormats]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2018 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getChildFormats] + +( + @ParentID int +) +WITH EXECUTE AS OWNER +AS + SELECT * From (SELECT + [FormatID], + [ParentID], + [Name], + [Description], + [Data], + [GenMac], + [DTS], + [UserID], + [LastChanged], + (SELECT COUNT(*) FROM [Contents] WHERE [Contents].[FormatID]=[Formats].[FormatID]) [ContentCount], + (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[FormatID]=[Formats].[FormatID]) [DocVersionCount], + (SELECT COUNT(*) FROM [Folders] WHERE [Folders].[FormatID]=[Formats].[FormatID]) [FolderCount], + (SELECT COUNT(*) FROM [Formats] [Children] WHERE [Children].[ParentID]=[Formats].[FormatID]) [ChildCount] + FROM [Formats] ) T1 WHERE [ParentID]=@ParentID AND [FormatID]<>@ParentID + AND (Description not like '%(Unused)%' or (ContentCount + DocVersionCount + FolderCount + ChildCount > 0)) + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getChildFormats Succeeded' +ELSE PRINT 'Procedure Creation: getChildFormats Error on Creation' +GO +/****** Object: StoredProcedure [getFormats] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getFormats]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getFormats]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2018 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getFormats] + +WITH EXECUTE AS OWNER +AS + SELECT * From (SELECT + [FormatID], + [ParentID], + [Name], + [Description], + [Data], + [GenMac], + [DTS], + [UserID], + [LastChanged], + (SELECT COUNT(*) FROM [Contents] WHERE [Contents].[FormatID]=[Formats].[FormatID]) [ContentCount], + (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[FormatID]=[Formats].[FormatID]) [DocVersionCount], + (SELECT COUNT(*) FROM [Folders] WHERE [Folders].[FormatID]=[Formats].[FormatID]) [FolderCount], + (SELECT COUNT(*) FROM [Formats] [Children] WHERE [Children].[ParentID]=[Formats].[FormatID]) [ChildCount] + FROM [Formats] ) T1 + where Description not like '%(Unused)%' or (ContentCount + DocVersionCount + FolderCount + ChildCount > 0) + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getFormats Succeeded' +ELSE PRINT 'Procedure Creation: getFormats Error on Creation' +GO + +/****** Object: StoredProcedure [getAllFormats] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAllFormats]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [getAllFormats]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2018 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[getAllFormats] + +WITH EXECUTE AS OWNER +AS + SELECT * From (SELECT + [FormatID], + [ParentID], + [Name], + [Description], + [Data], + [GenMac], + [DTS], + [UserID], + [LastChanged], + (SELECT COUNT(*) FROM [Contents] WHERE [Contents].[FormatID]=[Formats].[FormatID]) [ContentCount], + (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[FormatID]=[Formats].[FormatID]) [DocVersionCount], + (SELECT COUNT(*) FROM [Folders] WHERE [Folders].[FormatID]=[Formats].[FormatID]) [FolderCount], + (SELECT COUNT(*) FROM [Formats] [Children] WHERE [Children].[ParentID]=[Formats].[FormatID]) [ChildCount] + FROM [Formats] ) T1 + RETURN +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: getAllFormats Succeeded' +ELSE PRINT 'Procedure Creation: getAllFormats Error on Creation' +GO +----- +/****** Object: StoredProcedure [vesp_SearchSepcifiedApplicability] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SearchSepcifiedApplicability]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) +DROP PROCEDURE [vesp_SearchSepcifiedApplicability]; +GO + +/* +exec vesp_SearchSepcifiedApplicability '16','','',0,0,0,0,'','3' +*/ + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2018 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_SearchSepcifiedApplicability] (@DocVersionList varchar(MAX), @StepTypeList varchar(MAX), +@SearchString varchar(MAX), @CaseSensitive as int, @IncludeLinks as int, @IncludeRtfFormatting as int, @IncludeSpecialCharacters as int, @UnitPrefix as varchar(MAX), @ApplicSetting varchar(MAX)) +WITH EXECUTE AS OWNER +AS +select ZZ.DvPath, ZZ.Path, ZZ.[Level],ZZ.[FromType],ZZ.[Ordinal], ZZ.[ParentID], ZZ.[ItemID],ZZ.[PreviousID],ZZ.[ContentID],ZZ.[DTS],ZZ.[UserID] + ,II.[LastChanged] + ,CC.[Number],CC.[Text],CC.[Type],CC.[FormatID],CC.[Config],CC.[DTS] [cDTS],CC.[UserID] [cUserID] + ,CC.[LastChanged] [cLastChanged], + PP.[ContentID] [pContentID], PP.[DTS] [pDTS],PP.[UserID] [pUserID], PP.[LastChanged] [pLastChanged], + (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=ZZ.[ItemID]) [AnnotationCount], + (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=ZZ.[ItemID]) [DocVersionCount], + (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=ZZ.[ItemID]) [NextCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=ZZ.[ItemID]) [PartCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=ZZ.[ItemID]) [Transition_RangeIDCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=ZZ.[ItemID]) [Transition_ToIDCount], + (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=CC.[ContentID]) [DetailCount], + (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=CC.[ContentID]) [EntryCount], + (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=CC.[ContentID]) [GridCount], + (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=CC.[ContentID]) [ImageCount], + (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=CC.[ContentID]) [ItemCount], + (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=CC.[ContentID]) [cPartCount], + (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=CC.[ContentID]) [RoUsageCount], + (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=CC.[ContentID]) [TransitionCount], + (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=CC.[ContentID]) [ZContentCount] +from vefn_SiblingAndChildrenItems(@DocVersionList, @UnitPrefix) ZZ + Join Items II on ZZ.ItemID=II.ItemID + Left Join Parts PP on ZZ.PContentID=PP.ContentID and ZZ.FromType = PP.FromType + Join Contents CC on CC.ContentID=ZZ.ContentID +where ZZ.ContentID in (select ContentID from vefn_FindSpecificApplicUsage(@DocVersionList, @ApplicSetting)) + order by DvPath,OrdinalPath + GO +IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SearchSepcifiedApplicability Succeeded' +ELSE PRINT 'Procedure Creation: vesp_SearchSepcifiedApplicability Error on Creation' +GO +----- +/****** Object: StoredProcedure [vefn_FindSpecificApplicUsage] ******/ +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindSpecificApplicUsage]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) + DROP FUNCTION [vefn_FindSpecificApplicUsage]; +GO + +/* +exec vefn_FindSpecificApplicUsage '16','3' +*/ +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2018 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE FUNCTION [dbo].[vefn_FindSpecificApplicUsage]( +@DocVersionList nvarchar(MAX) +,@ApplicSetting varchar(MAX)) +RETURNS @FoundContents TABLE +( + ContentID int PRIMARY KEY +) +WITH EXECUTE AS OWNER +AS +BEGIN + insert into @FoundContents + select C.ContentID from (select * from Contents where ContentID in(select ContentID from vefn_DVContent(@DocVersionList))) C + join + items ii + on ii.ContentID = C.ContentID + where ','+ dbo.ve_GetItemAppliedApplicability(ii.ItemID ) + ',' like '%,' + @ApplicSetting + ',%' +RETURN +END + +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'Procedure Creation: vefn_FindSpecificApplicUsage Succeeded' +ELSE PRINT 'Procedure Creation: vefn_FindSpecificApplicUsage Error on Creation' +GO + +----------------------------------------------------------------------------- +/* + --------------------------------------------------------------------------- + | ADD New Code Before this Block | + | Change Date and Description | + --------------------------------------------------------------------------- +*/ +----------------------------------------------------------------------------- +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetSQLCodeRevision]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) + DROP PROCEDURE [vesp_GetSQLCodeRevision]; +GO + +/***************************************************************************** + Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE + Copyright 2017 - Volian Enterprises, Inc. All rights reserved. +*****************************************************************************/ +CREATE PROCEDURE [dbo].[vesp_GetSQLCodeRevision] +WITH EXECUTE AS OWNER +AS +BEGIN TRY -- Try Block + BEGIN TRANSACTION + -- Change information in the next line when you are done + set nocount on + DECLARE @RevDate varchar(255) + DECLARE @RevDescription varchar(255) + set @RevDate = '9/27/2018 10:09 AM' + set @RevDescription = 'added vesp_SearchSepcifiedApplicability' + Select cast(@RevDate as datetime) RevDate, @RevDescription RevDescription + PRINT 'SQL Code Revision ' + @RevDate + ' - ' + @RevDescription + IF( @@TRANCOUNT > 0 ) COMMIT +END TRY +BEGIN CATCH -- Catch Block + IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level + ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback + EXEC vlnErrorHandler +END CATCH +GO +-- Display the status of Proc creation +IF (@@Error = 0) PRINT 'StoredProcedure [vesp_GetSQLCodeRevision] Succeeded' +ELSE PRINT 'StoredProcedure [vesp_GetSQLCodeRevision] Error on Creation' +go +vesp_GetSQLCodeRevision