/////////////////////////////////////////////////////////// // Bool.cs // Implementation of Class TemplateServiceResolver // CSLA type: Read-only object // Created on: 9-Nov-2007 // Object design: John // Coded: 9-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 { /// ///Resolves which workorder service template /// is the default. /// /// Checks for client template, user template and global template /// returns most responsible template in order of client, user, global /// or guid empty if none found /// [Serializable, EditorBrowsable(EditorBrowsableState.Never)] public class TemplateServiceResolver : ReadOnlyBase { #region Attributes private Guid mTemplateID; #endregion #region Constructor /// /// Private constructor to prevent direct instantiation /// private TemplateServiceResolver() { mTemplateID = Guid.Empty; } #endregion #region Static methods /// /// Returns template ID /// /// Client for workorder /// Current user ID /// Guid of template that applies public static Guid ResolveTemplate(Guid ClientID, Guid UserID) { return ((TemplateServiceResolver)DataPortal.Fetch(new Criteria(ClientID,UserID))).mTemplateID; } #endregion #region DAL DATA ACCESS /// /// protected override void DataPortal_Fetch(object Criteria) { Criteria crit = (Criteria)Criteria; Guid ClientTemplateID=Guid.Empty; Guid UserTemplateID=Guid.Empty; DBCommandWrapper cmClient = DBUtil.DB.GetSqlStringCommandWrapper( "SELECT ADEFAULTSERVICETEMPLATEID FROM aClient WHERE " + "(AID = @ID)" ); cmClient.AddInParameter("@ID", DbType.Guid, crit.ClientID); ClientTemplateID = DBUtil.ToGuid(DBUtil.DB.ExecuteScalar(cmClient)); if (crit.UserID != Guid.Empty) { DBCommandWrapper cmUser = DBUtil.DB.GetSqlStringCommandWrapper( "SELECT ADEFAULTSERVICETEMPLATEID FROM aUser WHERE " + "(AID = @ID)" ); cmUser.AddInParameter("@ID", DbType.Guid, crit.UserID); UserTemplateID = DBUtil.ToGuid(DBUtil.DB.ExecuteScalar(cmUser)); } //Client - highest precedence if (ClientTemplateID != Guid.Empty) { mTemplateID = ClientTemplateID; return; } //User - next highest precedence if (UserTemplateID != Guid.Empty) { mTemplateID = UserTemplateID; return; } //Global - lowest precedence if (AyaBizUtils.GlobalSettings.DefaultServiceTemplateID != Guid.Empty) mTemplateID = AyaBizUtils.GlobalSettings.DefaultServiceTemplateID; } #endregion #region criteria /// /// Criteria for identifying existing object /// [Serializable] private class Criteria { public Guid ClientID; public Guid UserID; public Criteria(Guid _ClientID, Guid _UserID) { ClientID = _ClientID; UserID = _UserID; } } #endregion }//end class }//end namespace GZTW.AyaNova.BLL