diff --git a/PROMS/DataLoader/PROMSFixes.Sql b/PROMS/DataLoader/PROMSFixes.Sql index cf0d1445..4adfb1c1 100644 --- a/PROMS/DataLoader/PROMSFixes.Sql +++ b/PROMS/DataLoader/PROMSFixes.Sql @@ -7836,9 +7836,14 @@ GO Copyright 2012 - Volian Enterprises, Inc. All rights reserved. *****************************************************************************/ /* -exec dbo.vesp_SessionCanCheckOutItem 25915,0 +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] ( @@ -7869,18 +7874,54 @@ BEGIN 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) + --select distinct itemid from + --items ii + --join (select *, cast(config as xml) xconfig from contents + --) cc on cc.contentid = ii.contentid + --cross apply xconfig.nodes('//Enhanced') tEnhanced(xEnhanced) + --where cc.Type = 0 and (xEnhanced.value('@ItemID', 'int') = @ObjectID or + --itemid = @ObjectID) + END + ELSE IF @ObjectType = 2 BEGIN + INSERT INTO @ObjectAndEnhancedIDs + select VersionID from vefn_GetEnhancedDocVersions(@ObjectID) + --select distinct versionid from + --(select *, cast(config as xml) xconfig from docversions) dv + --cross apply xconfig.nodes('//Enhanced') tEnhanced(xEnhanced) + --where xEnhanced.value('@VersionID', 'int') = @ObjectID or versionid = @ObjectID + END + ELSE IF @ObjectType = 3 BEGIN + INSERT INTO @ObjectAndEnhancedIDs + select FolderID from vefn_GetEnhancedFolders(@ObjectID) + --select distinct dv.folderid from + --(select *, cast(config as xml) xconfig from docversions) dv + --cross apply xconfig.nodes('//Enhanced') tEnhanced(xEnhanced) + --join docversions denh on xEnhanced.value('@VersionID', 'int') = denh.VersionID + --where denh.FolderID = @ObjectID or dv.folderid = @ObjectID + END + ELSE BEGIN + INSERT INTO @ObjectAndEnhancedIDs select @ObjectID + END --look to see if object is already checked out in owner table as passed object type - INSERT INTO @CheckOuts SELECT DISTINCT SessionID FROM Owners WHERE OwnerItemID = @ObjectID AND OwnerType = @ObjectType + INSERT INTO @CheckOuts SELECT DISTINCT SessionID FROM Owners + WHERE OwnerItemID in (select ObjectID from @ObjectAndEnhancedIDs) AND OwnerType = @ObjectType --look to see if object is part of a checked out docversion as passed object type DECLARE @VersionIDList varchar(max) - SELECT @VersionIDList = COALESCE(@VersionIDList + ',','') + CAST(OwnerItemID as varchar(4)) FROM Owners WHERE OwnerType = 2 + SELECT @VersionIDList = COALESCE(@VersionIDList + ',','') + CAST(OwnerItemID as varchar(10)) FROM Owners WHERE OwnerType = 2 IF ISNULL(@VersionIDList,'') != '' AND @ObjectType = 0 BEGIN --procedure INSERT INTO @CheckOuts SELECT ss.SessionID FROM dbo.vefn_GetVersionItems(@VersionIDList) vi INNER JOIN Contents cc ON vi.ContentID = cc.ContentID INNER JOIN Owners oo ON vi.VersionID = oo.OwnerItemID INNER JOIN Sessions ss ON oo.SessionID = ss.SessionID - WHERE cc.Type = 0 AND vi.ItemID = @ObjectID + WHERE cc.Type = 0 AND vi.ItemID in (select ObjectID from @ObjectAndEnhancedIDs) END IF ISNULL(@VersionIDList,'') != '' AND @ObjectType = 1 BEGIN --document INSERT INTO @CheckOuts @@ -7889,48 +7930,57 @@ BEGIN INNER JOIN Entries ee ON vi.ContentID = ee.ContentID INNER JOIN Owners oo ON vi.VersionID = oo.OwneritemID INNER JOIN Sessions ss ON oo.SessionID = ss.SessionID - WHERE ee.DocID = @ObjectID + WHERE ee.DocID in (select ObjectID from @ObjectAndEnhancedIDs) END --look to see if object type is docversion that no part of docversion passed is checked out IF @ObjectType = 2 BEGIN - --see what procedures maybe checked out - INSERT INTO @CheckOuts - SELECT ss.SessionID FROM dbo.vefn_GetVersiONItems(@ObjectID) vi - INNER JOIN Contents cc ON vi.ContentID = cc.ContentID - INNER JOIN Owners oo ON vi.ItemID = oo.OwnerItemID - INNER JOIN Sessions ss ON oo.SessionID = ss.SessionID - WHERE cc.Type = 0 - --see what documents maybe checked out - INSERT INTO @CheckOuts - SELECT ss.SessionID FROM dbo.vefn_GetVersiONItems(@ObjectID) vi - INNER JOIN Contents cc ON vi.ContentID = cc.ContentID - INNER JOIN Entries ee ON vi.ContentID = ee.ContentID - INNER JOIN Owners oo ON ee.DocID = oo.OwnerItemID - INNER JOIN Sessions ss ON oo.SessionID = ss.SessionID + SELECT @VersionIDList = COALESCE(@VersionIDList + ',','') + CAST(ObjectID as varchar(10)) FROM @ObjectAndEnhancedIDs + IF ISNULL(@VersionIDList,'') != '' BEGIN + --see what procedures maybe checked out + INSERT INTO @CheckOuts + SELECT ss.SessionID FROM dbo.vefn_GetVersiONItems(@VersionIDList) vi + INNER JOIN Contents cc ON vi.ContentID = cc.ContentID + INNER JOIN Owners oo ON vi.ItemID = oo.OwnerItemID + INNER JOIN Sessions ss ON oo.SessionID = ss.SessionID + WHERE cc.Type = 0 + --see what documents maybe checked out + INSERT INTO @CheckOuts + SELECT ss.SessionID FROM dbo.vefn_GetVersiONItems(@VersionIDList) vi + INNER JOIN Contents cc ON vi.ContentID = cc.ContentID + INNER JOIN Entries ee ON vi.ContentID = ee.ContentID + INNER JOIN Owners oo ON ee.DocID = oo.OwnerItemID + INNER JOIN Sessions ss ON oo.SessionID = ss.SessionID + END END --look to see if object type is folder that no part of folder passed is checked out IF @ObjectType = 3 BEGIN - DECLARE @VersionID int - SELECT @VersionID = VersionID from DocVersions - WHERE FolderID = @ObjectID - -- Add this DocVersion to @Checkouts - INSERT INTO @CheckOuts SELECT DISTINCT SessionID FROM Owners WHERE OwnerItemID = @VersionID AND OwnerType = 2 - --see what procedures maybe checked out - INSERT INTO @CheckOuts - SELECT ss.SessionID FROM dbo.vefn_GetVersiONItems(isnull(@VersionID,'0')) vi - INNER JOIN Contents cc ON vi.ContentID = cc.ContentID - INNER JOIN Owners oo ON vi.ItemID = oo.OwnerItemID - INNER JOIN Sessions ss ON oo.SessionID = ss.SessionID - WHERE cc.Type = 0 - --see what documents maybe checked out - INSERT INTO @CheckOuts - SELECT ss.SessionID FROM dbo.vefn_GetVersiONItems(isnull(@VersionID,'0')) vi - INNER JOIN Contents cc ON vi.ContentID = cc.ContentID - INNER JOIN Entries ee ON vi.ContentID = ee.ContentID - INNER JOIN Owners oo ON ee.DocID = oo.OwnerItemID - INNER JOIN Sessions ss ON oo.SessionID = ss.SessionID + SELECT @VersionIDList = COALESCE(@VersionIDList + ',','') + CAST(VersionID as varchar(10)) + FROM DocVersions where FolderID in (SELECT ObjectID FROM @ObjectAndEnhancedIDs) + IF ISNULL(@VersionIDList,'') != '' BEGIN + --DECLARE @VersionID int + --SELECT @VersionID = VersionID from DocVersions + --WHERE FolderID in (select ObjectID from @ObjectAndEnhancedIDs) + -- Add this DocVersion to @Checkouts + INSERT INTO @CheckOuts SELECT DISTINCT SessionID FROM Owners + WHERE OwnerItemID in + (select VersionID from DocVersions where FolderID in (select ObjectID from @ObjectAndEnhancedIDs)) AND OwnerType = 2 + --see what procedures maybe checked out + INSERT INTO @CheckOuts + SELECT DISTINCT ss.SessionID FROM dbo.vefn_GetVersiONItems(@VersionIDList) vi + INNER JOIN Contents cc ON vi.ContentID = cc.ContentID + INNER JOIN Owners oo ON vi.ItemID = oo.OwnerItemID + INNER JOIN Sessions ss ON oo.SessionID = ss.SessionID + WHERE cc.Type = 0 and ss.SessionID not in (select SessionID FROM @CheckOuts) + --see what documents maybe checked out + INSERT INTO @CheckOuts + SELECT DISTINCT ss.SessionID FROM dbo.vefn_GetVersiONItems(@VersionIDList) vi + INNER JOIN Contents cc ON vi.ContentID = cc.ContentID + INNER JOIN Entries ee ON vi.ContentID = ee.ContentID + INNER JOIN Owners oo ON ee.DocID = oo.OwnerItemID + INNER JOIN Sessions ss ON oo.SessionID = ss.SessionID + WHERE ss.SessionID not in (select SessionID FROM @CheckOuts) + END END - SELECT [SessionID], [UserID], @@ -7946,6 +7996,7 @@ BEGIN 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' @@ -11037,3 +11088,158 @@ 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 +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +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([VersionID], [ItemID], [ContentID], [eItemID], [Level]) as + (Select DV.VersionID, [I].[ItemID], [I].[ContentID],xEnhanced1.value('@ItemID','int') eItemID, 0 Level + FROM [Items] I + Join (Select ContentID, cast(config as xml) xConfig from contents) c1 on i.cONTENTid = c1.ContentID + cross apply c1.xConfig.nodes('//Enhanced') tEnhanced1(xEnhanced1) + JOIN vefn_GetVersionItems('') DV ON I.[ItemID] = DV.[ItemID] + Where I.ItemID = @ItemID + Union All + -- Enhanced + select DV.VersionID, I2.[ItemID], I2.[ContentID],xEnhanced2.value('@ItemID','int') eItemID,Z.Level+1 + from Itemz Z + Join Items I2 ON I2.ItemID = z.eItemID + JOIN vefn_GetVersionItems('') DV ON I2.[ItemID] = DV.[ItemID] + Join (Select ContentID, cast(config as xml) xConfig from contents) c2 on i2.cONTENTid = c2.ContentID + cross apply c2.xConfig.nodes('//Enhanced') tEnhanced2(xEnhanced2) + Where Z.Level < 3 + ) + INSERT INTO @VersionItems + select distinct VersionID, ItemID, ContentID from Itemz + 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' \ No newline at end of file