diff --git a/PROMS/DataLoader/PROMSFixes.Sql b/PROMS/DataLoader/PROMSFixes.Sql index 1c1d6fe8..710a671a 100644 --- a/PROMS/DataLoader/PROMSFixes.Sql +++ b/PROMS/DataLoader/PROMSFixes.Sql @@ -7676,9 +7676,11 @@ BEGIN TRY -- Try Block --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, -15, getdate())) + 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, -15, getdate()) + 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()) INSERT INTO [Sessions]([UserID],[MachineName],[ProcessID]) VALUES (@UserID, @MachineName, @ProcessID) SELECT @@ -8551,3 +8553,60 @@ GO 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 + diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/MultiUserExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/MultiUserExt.cs index 1590a329..921c3002 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/MultiUserExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/MultiUserExt.cs @@ -535,7 +535,51 @@ namespace VEPROMS.CSLA.Library } this.RaiseListChangedEvents = true; } - } + public static OwnerInfoList GetByVersionID(int versionID) + { + OwnerInfoList tmp = DataPortal.Fetch(new GetByVersionIDCriteria(versionID)); + return tmp; + } + [Serializable()] + protected class GetByVersionIDCriteria + { + private int _VersionID; + public int VersionID { get { return _VersionID; } } + public GetByVersionIDCriteria(int versionID) + { + _VersionID = versionID; + } + } + private void DataPortal_Fetch(GetByVersionIDCriteria criteria) + { + this.RaiseListChangedEvents = false; + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] OwnerInfoList.DataPortal_Fetch", GetHashCode()); + try + { + using (SqlConnection cn = Database.VEPROMS_SqlConnection) + { + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "getOwnersByVersionID"; + cm.Parameters.AddWithValue("@VersionID", criteria.VersionID); + using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader())) + { + IsReadOnly = false; + while (dr.Read()) this.Add(new OwnerInfo(dr)); + IsReadOnly = true; + } + } + } + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("OwnerInfoList.DataPortal_Fetch", ex); + throw new DbCslaException("OwberInfoList.DataPortal_Fetch", ex); + } + this.RaiseListChangedEvents = true; + } + } public partial class OwnerInfo { public static OwnerInfo GetBySessionIDandVersionID(int sessionID, int versionID) diff --git a/PROMS/Volian.Controls.Library/vlnTreeView.cs b/PROMS/Volian.Controls.Library/vlnTreeView.cs index 689a37a6..0ede6946 100644 --- a/PROMS/Volian.Controls.Library/vlnTreeView.cs +++ b/PROMS/Volian.Controls.Library/vlnTreeView.cs @@ -532,7 +532,7 @@ namespace Volian.Controls.Library if (ui.IsAdministrator() || ui.IsSetAdministrator(dvi) || ui.IsWriter(dvi)) { OwnerInfoList.Reset(); - oil = OwnerInfoList.Get(); + oil = OwnerInfoList.GetByVersionID(dvi.VersionID); cm.MenuItems.Add("Refresh Checked Out Procedures", new EventHandler(mi_Click)); cm.MenuItems.Add("New Procedure", new EventHandler(mi_Click)); if (dvi.MultiUnitCount > 1) @@ -572,7 +572,7 @@ namespace Volian.Controls.Library else { OwnerInfoList.Reset(); - oil = OwnerInfoList.Get(); + oil = OwnerInfoList.GetByVersionID(dvi.VersionID); cm.MenuItems.Add("Refresh Checked Out Procedures", new EventHandler(mi_Click)); if (dvi.MultiUnitCount > 1) {