175 lines
4.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using Csla;
using Csla.Data;
using System.ComponentModel;
namespace VEPROMS.CSLA.Library
{
// B2022-047 - refresh the Content/Text field for table. Get all grids in database.
public class CriteriaAllGridIds
{
bool _AllGridIds;
public bool AllGridIds
{
get { return _AllGridIds; }
set { _AllGridIds = value; }
}
public CriteriaAllGridIds(bool allGridIds)
{
_AllGridIds = allGridIds;
}
}
[Serializable()]
[TypeConverter(typeof(FormatInfoListConverter))]
public partial class GridInfoList : ReadOnlyListBase<GridInfoList, GridInfo>
{
#region Log4Net
private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
#endregion
internal new IList<GridInfo> Items
{ get { return base.Items; } }
private bool _Disposed = false;
private static int _CountCreated = 0;
private static int _CountDisposed = 0;
private static int _CountFinalized = 0;
private static int IncrementCountCreated
{ get { return ++_CountCreated; } }
private int _CountWhenCreated = IncrementCountCreated;
public static int CountCreated
{ get { return _CountCreated; } }
public static int CountNotDisposed
{ get { return _CountCreated - _CountDisposed; } }
public static int CountNotFinalized
{ get { return _CountCreated - _CountFinalized; } }
~GridInfoList()
{
_CountFinalized++;
}
public void Dispose()
{
if (_Disposed) return;
_CountDisposed++;
_Disposed = true;
}
public static GridInfoList _GridInfoList = null;
/// <summary>
/// Return a list of all GridInfo. Commented out - GridInfoList was added to fix B2022-047. Have this code here in
/// case it is needed in the future.
/// </summary>
//public static GridInfoList Get()
//{
// try
// {
// if (_GridInfoList != null)
// return _GridInfoList;
// GridInfoList tmp = DataPortal.Fetch<GridInfoList>();
// _GridInfoList = tmp;
// return tmp;
// }
// catch (Exception ex)
// {
// throw new DbCslaException("Error on FormatInfoList.Get", ex);
// }
//}
public static List<int> GetIds()
{
try
{
List<int> _GridInfoIdList = new List<int>();
try
{
using (SqlConnection cn = Database.VEPROMS_SqlConnection)
{
using (SqlCommand cm = cn.CreateCommand())
{
cm.CommandType = CommandType.StoredProcedure;
cm.CommandText = "getGridIds";
cm.CommandTimeout = Database.DefaultTimeout;
using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader()))
{
while (dr.Read()) _GridInfoIdList.Add(dr.GetInt32("ContentID"));
}
}
}
}
catch (Exception ex)
{
if (_MyLog.IsErrorEnabled) _MyLog.Error("CriteriaAllGridIds.DataPortal_Fetch", ex);
throw new DbCslaException("CriteriaAllGridIds.DataPortal_Fetch", ex);
}
return _GridInfoIdList;
}
catch (Exception ex)
{
throw new DbCslaException("Error on GridInfoList.Get", ex);
}
}
// Commented out - GridInfoList was added to fix B2022-047. Have this code here in
// case it is needed in the future. The associated query 'getGrids' does not exist.
//private void DataPortal_Fetch()
//{
// this.RaiseListChangedEvents = false;
// if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] GridInfoList.DataPortal_Fetch", GetHashCode());
// try
// {
// using (SqlConnection cn = Database.VEPROMS_SqlConnection)
// {
// using (SqlCommand cm = cn.CreateCommand())
// {
// cm.CommandType = CommandType.StoredProcedure;
// cm.CommandText = "getGrids";
// cm.CommandTimeout = Database.DefaultTimeout;
// using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader()))
// {
// IsReadOnly = false;
// while (dr.Read()) this.Add(new GridInfo(dr));
// IsReadOnly = true;
// }
// }
// }
// }
// catch (Exception ex)
// {
// if (_MyLog.IsErrorEnabled) _MyLog.Error("GridInfoList.DataPortal_Fetch", ex);
// throw new DbCslaException("GridInfoList.DataPortal_Fetch", ex);
// }
// this.RaiseListChangedEvents = true;
//}
}
public partial class GridInfo
{
public void ResetContent(Grid myGrid)
{
RefreshFields(myGrid);
}
public void SetData(string myData)
{
_Data = myData;
RemoveFromCache(this);
}
public static GridInfo GetNonCached(int contentID)
{
//if (!CanGetObject())
// throw new System.Security.SecurityException("User not authorized to view a Grid");
try
{
GridInfo tmp = DataPortal.Fetch<GridInfo>(new PKCriteria(contentID));
if (tmp.ErrorMessage == "No Record Found")
{
tmp.Dispose(); // Clean-up GridInfo
tmp = null;
}
return tmp;
}
catch (Exception ex)
{
throw new DbCslaException("Error on GridInfo.Get", ex);
}
}
}
}