/////////////////////////////////////////////////////////// // ClientNotificationList.cs // Implementation of Class ClientNotificationList // CSLA type: Read only collection // Created on: 11-Dec-2008 // Object design: John // Coded: 11-Dec-2008 /////////////////////////////////////////////////////////// using System; using System.Data; using GZTW.Data; using CSLA.Data; using CSLA; namespace GZTW.AyaNova.BLL { /// /// List of ClientNotifications for processing by GenProcessClientNotifications /// /// [Serializable] internal class ClientNotificationList : ReadOnlyCollectionBase { #region Data structure /// /// /// [Serializable] public struct ClientNotificationListInfo { internal Guid mID; /// /// /// /// public bool Equals(ClientNotificationListInfo obj) { return this.mID.Equals(obj.mID); } }//end ClientNotificationListInfo #endregion #region Constructor protected ClientNotificationList() { // AllowSort=false; // AllowFind=true; // AllowEdit=false; // AllowNew=false; // AllowRemove=false; } #endregion #region Business properties and methods /// /// Get item by index /// /// public ClientNotificationListInfo this[int Item] { get { return (ClientNotificationListInfo) List[Item]; } } /// /// Returns ClientNotificationListInfo item that matches passed in itemid value /// /// public ClientNotificationListInfo this[Guid ItemID] { get { foreach (ClientNotificationListInfo child in List) { if(child.mID==ItemID) return child; } throw new ArgumentException("ClientNotificationList: ID not found:\r\n"+ItemID.ToString()); } } #endregion #region contains /// /// Check if item in collection /// /// public bool Contains(ClientNotificationListInfo obj) { foreach (ClientNotificationListInfo child in List) { if(child.Equals(obj)) return true; } return false; } #endregion #region Static methods /// /// Get all /// /// public static ClientNotificationList GetList() { return (ClientNotificationList) DataPortal.Fetch(new Criteria()); } #endregion #region DAL DATA ACCESS /// /// protected override void DataPortal_Fetch(object Criteria) { Criteria crit = (Criteria)Criteria; SafeDataReader dr = null; try { //case 1163 //SmartDate rightnow=new SmartDate(DateTime.Now); DateTime dtNowUTC = DateTime.Now.ToUniversalTime(); dr=DBUtil.GetReaderFromSQLString( //************************************************************ "SELECT AID, ADELIVERAFTER FROM ACLIENTNOTIFYEVENT ORDER BY ACREATED" //************************************************************ ) ; while(dr.Read()) { //******************************************* ClientNotificationListInfo info=new ClientNotificationListInfo(); info.mID=dr.GetGuid("aID"); //case 1163 - this kind of stuff should go exclusively by utc no local involved at all //if(DBUtil.ToLocal(dr.GetSmartDate("ADELIVERAFTER")).Date > rightnow.Date) continue; if (dr.GetSmartDate("ADELIVERAFTER").Date > dtNowUTC) continue; InnerList.Add(info); //******************************************* } } finally { if(dr!=null) dr.Close(); } } #endregion #region criteria /// /// Criteria for identifying existing object /// [Serializable] private class Criteria { // public bool Regional; public Criteria(/*bool _Regional*/ ) { //Regional = _Regional; } } #endregion }//end ClientNotificationList }//end namespace GZTW.AyaNova.BLL