diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/AnnotationExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/AnnotationExt.cs index 6661ffaf..375cb7ac 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/AnnotationExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/AnnotationExt.cs @@ -53,7 +53,7 @@ namespace VEPROMS.CSLA.Library { return _Name; } - } + } public partial class AnnotationTypeInfo { public static List AllList() @@ -65,7 +65,69 @@ namespace VEPROMS.CSLA.Library { return _Name; } - } + public static AnnotationTypeInfo GetByName(string name) + { + try + { + AnnotationTypeInfo tmp = DataPortal.Fetch(new GetByNameCriteria(name)); + if (tmp.ErrorMessage == "No Record Found") + { + tmp.Dispose(); // Clean-up AnnotationTypeInfo + tmp = null; + } + return tmp; + } + catch (Exception ex) + { + throw new DbCslaException("Error on AnnotationTypeInfo.GetByName", ex); + } + } + [Serializable()] + protected class GetByNameCriteria + { + private string _Name; + public string Name { get { return _Name; } } + public GetByNameCriteria(string name) + { + _Name = name; + } + } + private void DataPortal_Fetch(GetByNameCriteria criteria) + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] AnnotationTypeInfo.DataPortal_Fetch", GetHashCode()); + try + { + using (SqlConnection cn = Database.VEPROMS_SqlConnection) + { + ApplicationContext.LocalContext["cn"] = cn; + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "getAnnotationTypeByName"; + cm.Parameters.AddWithValue("@Name", criteria.Name); + using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader())) + { + if (!dr.Read()) + { + _ErrorMessage = "No Record Found"; + return; + } + ReadData(dr); + } + } + // removing of item only needed for local data portal + if (ApplicationContext.ExecutionLocation == ApplicationContext.ExecutionLocations.Client) + ApplicationContext.LocalContext.Remove("cn"); + } + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("AnnotationTypeInfo.DataPortal_Fetch", ex); + _ErrorMessage = ex.Message; + throw new DbCslaException("AnnotationTypeInfo.DataPortal_Fetch", ex); + } + } + } public partial class AnnotationTypeInfoList { public static void Refresh() diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/MultiUserExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/MultiUserExt.cs index 921c3002..d81a8d84 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/MultiUserExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/MultiUserExt.cs @@ -12,7 +12,7 @@ namespace VEPROMS.CSLA.Library #region Enum stuff public enum CheckOutType : int { - Procedure = 0, Document = 1, DocVersion = 2 + Procedure = 0, Document = 1, DocVersion = 2, Folder = 3 } #endregion #region SessionInfoList stuff @@ -105,6 +105,25 @@ namespace VEPROMS.CSLA.Library SessionInfoList sil = DataPortal.Fetch(new SessionInfoList.CanCheckOutItemCriteria(objectID, objectType)); if (sil.Count == 0) return true; + if (objectType == CheckOutType.Folder) + { + if (sil.Count == 1) + { + OwnerInfoList oil = OwnerInfoList.GetBySessionID(sil[0].SessionID); + if (oil.Count == 0) + return true; + else + { + message = "Export Procedure Set and Import Procedure Set are not available because you have open procedures or documents"; + return false; + } + } + else + { + message = "Export Procedure Set and Import Procedure Set are not available because there are other sessions open in the database"; + return false; + } + } bool rv = true; foreach (SessionInfo si in sil) { @@ -256,7 +275,73 @@ namespace VEPROMS.CSLA.Library // } //} } - public class ResetSecurity : CommandBase + public class TurnChangeManagerOff : CommandBase + { + private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + #region Factory Methods + public static void Execute() + { + TurnChangeManagerOff cmd = new TurnChangeManagerOff(); + DataPortal.Execute(cmd); + } + #endregion + #region Server-Side code + protected override void DataPortal_Execute() + { + try + { + using (SqlConnection cn = Database.VEPROMS_SqlConnection) + { + using (SqlCommand cmd = new SqlCommand("vesp_TurnChangeManagerOFF", cn)) + { + cmd.CommandType = CommandType.StoredProcedure; + cmd.CommandTimeout = 0; + cmd.ExecuteNonQuery(); + } + } + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("TurnChangeManagerOff Error", ex); + throw new ApplicationException("Failure on TurnChangeManagerOff", ex); + } + } + #endregion + } + public class TurnChangeManagerOn : CommandBase + { + private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + #region Factory Methods + public static void Execute() + { + TurnChangeManagerOn cmd = new TurnChangeManagerOn(); + DataPortal.Execute(cmd); + } + #endregion + #region Server-Side code + protected override void DataPortal_Execute() + { + try + { + using (SqlConnection cn = Database.VEPROMS_SqlConnection) + { + using (SqlCommand cmd = new SqlCommand("vesp_TurnChangeManagerON", cn)) + { + cmd.CommandType = CommandType.StoredProcedure; + cmd.CommandTimeout = 0; + cmd.ExecuteNonQuery(); + } + } + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("TurnChangeManagerOn Error", ex); + throw new ApplicationException("Failure on TurnChangeManagerOn", ex); + } + } + #endregion + } + public class ResetSecurity : CommandBase { private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); #region Factory Methods