Files
ayanova7/source/bizobjects/AyaLib/GZTW.AyaNova.BLL/ScheduledUserCountFetcher.cs
2018-06-29 19:47:36 +00:00

126 lines
3.5 KiB
C#

///////////////////////////////////////////////////////////
// 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
/// <summary>
///Gets a count of user schedulings to prevent logical data corruption
///when attempting to change user type or active status
///in the AyaNova database
/// </summary>
[Serializable, EditorBrowsable(EditorBrowsableState.Never)]
internal class ScheduledUserCountFetcher : ReadOnlyBase
{
#region Attributes
long _ScheduledCount = 0;
// Guid _ID;
#endregion
#region Constructor
/// <summary>
/// Private constructor to prevent direct instantiation
/// </summary>
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
///
/// <param Bool="Criteria"></param>
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
/// <summary>
/// Criteria for identifying existing object
/// </summary>
[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