/////////////////////////////////////////////////////////// // Bool.cs // Implementation of Class ScheduledUserCountFetcher // CSLA type: Read-only object // Created on: 25-Sept-2007 // Object design: John // Coded: 25-Sept-2007 /////////////////////////////////////////////////////////// using System; using System.Data; using CSLA.Data; using GZTW.Data; using CSLA; using System.Threading; using CSLA.Security; using System.ComponentModel; namespace GZTW.AyaNova.BLL { //case 504 /// ///Gets a count of user schedulings to prevent logical data corruption ///when attempting to change user type or active status ///in the AyaNova database /// [Serializable, EditorBrowsable(EditorBrowsableState.Never)] internal class ScheduledUserCountFetcher : ReadOnlyBase { #region Attributes long _ScheduledCount = 0; // Guid _ID; #endregion #region Constructor /// /// Private constructor to prevent direct instantiation /// private ScheduledUserCountFetcher() { } #endregion #region Static methods internal static long ScheduledCount(Guid ID, bool OpenWorkordersOnly) { return ((ScheduledUserCountFetcher)DataPortal.Fetch(new Criteria(ID,OpenWorkordersOnly)))._ScheduledCount; } #endregion #region DAL DATA ACCESS /// /// protected override void DataPortal_Fetch(object Criteria) { Criteria crit = (Criteria)Criteria; if (crit.OpenWorkordersOnly) { DBCommandWrapper dbCommandWrapper = DBUtil.DB.GetSqlStringCommandWrapper( "SELECT COUNT(*) AS aquant " + "FROM " + " AWORKORDERITEMSCHEDULEDUSER " + " INNER JOIN AWORKORDERITEM ON (AWORKORDERITEMSCHEDULEDUSER.AWORKORDERITEMID = AWORKORDERITEM.AID) " + " INNER JOIN AWORKORDER ON (AWORKORDERITEM.AWORKORDERID = AWORKORDER.AID) " + "WHERE " + " (AWORKORDER.ACLOSED = @aFalse) AND " + " (AWORKORDERITEMSCHEDULEDUSER.AUSERID = @ID) "); dbCommandWrapper.AddInParameter("@ID", DbType.Guid, crit.ID); dbCommandWrapper.AddInParameter("@aFalse", DbType.Boolean, false); _ScheduledCount = DBUtil.ScalarToLong(DBUtil.DB.ExecuteScalar(dbCommandWrapper)); } else { _ScheduledCount = DBUtil.ScalarToLong(DBUtil.GetScalarFromSQLString( "SELECT COUNT(*) AS aquant FROM aWorkorderItemScheduledUser " + "where aUserID=@ID ", crit.ID )); } } #endregion #region criteria /// /// Criteria for identifying existing object /// [Serializable] private class Criteria { public Guid ID; public bool OpenWorkordersOnly; public Criteria(Guid _ID, bool _OpenWorkordersOnly) { ID = _ID; OpenWorkordersOnly = _OpenWorkordersOnly; } } #endregion }//end class }//end namespace GZTW.AyaNova.BLL