This commit is contained in:
194
source/bizobjects/AyaLib/GZTW.AyaNova.BLL/EventWindowSet.cs
Normal file
194
source/bizobjects/AyaLib/GZTW.AyaNova.BLL/EventWindowSet.cs
Normal file
@@ -0,0 +1,194 @@
|
||||
///////////////////////////////////////////////////////////
|
||||
// EventWindowSet.cs
|
||||
// Implementation of Class EventWindowSet
|
||||
// Class type: Utility (biz object layer)
|
||||
// Created on: 07-Oct-2005
|
||||
// Object design: John
|
||||
// Coded: John 07-Oct-2005
|
||||
///////////////////////////////////////////////////////////
|
||||
using System;
|
||||
using System.Collections;
|
||||
|
||||
namespace GZTW.AyaNova.BLL
|
||||
{
|
||||
#pragma warning disable 1591
|
||||
/// <summary>
|
||||
/// Manages a set of event windows for a week
|
||||
/// Serializable for easy saving to database / file etc
|
||||
/// Easily confirms if a given date/time is within an allowable
|
||||
/// window or not
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public class EventWindowSet
|
||||
{
|
||||
|
||||
//Any time or day is allowed
|
||||
//this allows a quicker short circuit
|
||||
//comparison
|
||||
private bool _AnyTime;
|
||||
private bool _IsDirty;
|
||||
//An array for each day of the week's events
|
||||
private EventWindow[] _Events;
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// An event window structure
|
||||
/// this is added to an array of structures to cover a week
|
||||
/// of day windows
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public struct EventWindow
|
||||
{
|
||||
internal bool _AnyTimeOfDay;
|
||||
internal bool _Active;
|
||||
//Only time portion is used
|
||||
internal DateTime _StartTime;
|
||||
internal DateTime _EndTime;
|
||||
|
||||
public bool AnyTimeOfDay{get{return _AnyTimeOfDay;}}
|
||||
public bool Active{get{return _Active;}}
|
||||
public DateTime StartTime{get{return _StartTime;}}
|
||||
public DateTime EndTime{get{return _EndTime;}}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public EventWindowSet()
|
||||
{
|
||||
|
||||
_Events=new EventWindow[7];
|
||||
System.DateTime dtStartDefault=new DateTime(1968,3,12,9,0,0);
|
||||
System.DateTime dtEndDefault=new DateTime(1968,3,12,17,0,0);
|
||||
|
||||
//Initialize
|
||||
|
||||
//0==sunday 6==Saturday
|
||||
for(int x=0;x<7;x++)
|
||||
{
|
||||
_Events[x]._StartTime=dtStartDefault;
|
||||
_Events[x]._EndTime=dtEndDefault;
|
||||
_Events[x]._AnyTimeOfDay=false;
|
||||
_Events[x]._Active=true;
|
||||
}
|
||||
_AnyTime=true;
|
||||
_IsDirty=false;
|
||||
}
|
||||
|
||||
public bool IsValid
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsDirty
|
||||
{
|
||||
get
|
||||
{
|
||||
return _IsDirty;
|
||||
}
|
||||
}
|
||||
|
||||
public bool AnyTime
|
||||
{
|
||||
get
|
||||
{
|
||||
return _AnyTime;
|
||||
}
|
||||
set
|
||||
{
|
||||
_AnyTime=value;
|
||||
|
||||
_IsDirty=true;
|
||||
}
|
||||
}
|
||||
|
||||
public EventWindow[] Events
|
||||
{
|
||||
get
|
||||
{
|
||||
return _Events;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sets an event for day indicated.
|
||||
/// </summary>
|
||||
/// <param name="Day">int value of DayOfWeek enum (0=Sunday...6=Saturday)</param>
|
||||
/// <param name="AnyTimeOfDay">true=deliver any time of day if active</param>
|
||||
/// <param name="Active">True=day is enabled for deliver, false=no delivery on this day</param>
|
||||
/// <param name="StartTime">Starting time window for delivery (time only is used date is irrelevant)</param>
|
||||
/// <param name="EndTime">Ending time window for delivery (time only is used date is irrelevant)</param>
|
||||
public void SetEvent(int Day,
|
||||
bool AnyTimeOfDay,
|
||||
bool Active,
|
||||
DateTime StartTime,
|
||||
DateTime EndTime)
|
||||
{
|
||||
_IsDirty=true;
|
||||
|
||||
|
||||
_Events[Day]._AnyTimeOfDay=AnyTimeOfDay;
|
||||
_Events[Day]._Active=Active;
|
||||
_Events[Day]._StartTime=StartTime;
|
||||
_Events[Day]._EndTime=EndTime;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Returns true if a given date/time is within
|
||||
/// an event window.
|
||||
///
|
||||
/// False if not.
|
||||
/// </summary>
|
||||
/// <param name="dtValue"></param>
|
||||
/// <returns></returns>
|
||||
public bool InEventWindow(System.DateTime dtValue)
|
||||
{
|
||||
//Short circuit tests...
|
||||
|
||||
if(this._AnyTime) return true;
|
||||
|
||||
int nDay=(int)dtValue.DayOfWeek;
|
||||
|
||||
//Not an active day anyway?
|
||||
if(!_Events[nDay]._Active) return false;
|
||||
|
||||
//Any time of day ok?
|
||||
if(_Events[nDay]._AnyTimeOfDay) return true;
|
||||
|
||||
//ok, it's not a simple one, so let's compare times...
|
||||
|
||||
|
||||
double dbCompareValue=dtValue.TimeOfDay.TotalMinutes;
|
||||
|
||||
//Is it in the window?
|
||||
if(dbCompareValue >= _Events[nDay]._StartTime.TimeOfDay.TotalMinutes &&
|
||||
dbCompareValue <= _Events[nDay]._EndTime.TimeOfDay.TotalMinutes)
|
||||
return true;
|
||||
|
||||
//Guess not
|
||||
return false;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------
|
||||
}// End of class
|
||||
#pragma warning restore 1591
|
||||
}//End of namespace
|
||||
Reference in New Issue
Block a user