///////////////////////////////////////////////////////////
// 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