/////////////////////////////////////////////////////////// // Bool.cs // Implementation of Class ContractResolver // CSLA type: Read-only object // Created on: 1-Nov-2007 // Object design: John // Coded: 1-Nov-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 496 /// ///Returns service bankable object most responsible /// for banking based on client /// [Serializable, EditorBrowsable(EditorBrowsableState.Never)] internal class ContractResolver : ReadOnlyBase { #region Attributes private Contract mContract; #endregion #region Constructor /// /// Private constructor to prevent direct instantiation /// private ContractResolver() { mContract = null; } #endregion #region Static methods /// /// Resolve the contract reponsible for client id specified /// if no contract then resolves to null /// /// /// internal static Contract ResolvedContract(Guid ID) { if (AyaBizUtils.Lite) return null; return ((ContractResolver)DataPortal.Fetch(new Criteria(ID))).mContract; } #endregion #region DAL DATA ACCESS /// /// protected override void DataPortal_Fetch(object Criteria) { Criteria crit = (Criteria)Criteria; SafeDataReader dr = null; try { dr = DBUtil.GetReaderFromSQLString( "SELECT ACLIENT.ACONTRACTID AS CCID, AHEADOFFICE.ACONTRACTID AS HOCID, " + "ACLIENT.ACONTRACTEXPIRES AS CCEXPIRES, AHEADOFFICE.ACONTRACTEXPIRES AS HOEXPIRES " + "FROM ACLIENT " + "LEFT OUTER JOIN AHEADOFFICE ON (ACLIENT.AHEADOFFICEID=AHEADOFFICE.AID) " + "WHERE ACLIENT.AID= @ID", crit.ID); if (dr.Read()) { Guid cg = dr.GetGuid("CCID"); SmartDate cd = DBUtil.ToLocal(dr.GetSmartDate("CCEXPIRES")); Guid hg = dr.GetGuid("HOCID"); SmartDate hd = DBUtil.ToLocal(dr.GetSmartDate("HOEXPIRES")); //Mirrors code in Client.ContractInEffect and head office same if ((cg != Guid.Empty) && (!cd.IsEmpty) && (cd.Date > DBUtil.CurrentWorkingDateTime)) mContract=Contract.GetItemNoMRU(cg); else if ((hg != Guid.Empty) && (!hd.IsEmpty) && (hd.Date > DBUtil.CurrentWorkingDateTime)) mContract=Contract.GetItemNoMRU(hg); //default is null contract } } finally { if (dr != null) dr.Close(); } } #endregion #region criteria /// /// Criteria for identifying existing object /// [Serializable] private class Criteria { public Guid ID; public Criteria(Guid _ID) { ID = _ID; } } #endregion }//end class }//end namespace GZTW.AyaNova.BLL