Files
ayanova7/source/bizobjects/AyaLib/GZTW.AyaNova.BLL/TemplateServiceResolver.cs
2018-06-29 19:47:36 +00:00

144 lines
4.1 KiB
C#

///////////////////////////////////////////////////////////
// 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
{
/// <summary>
///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
/// </summary>
[Serializable, EditorBrowsable(EditorBrowsableState.Never)]
public class TemplateServiceResolver : ReadOnlyBase
{
#region Attributes
private Guid mTemplateID;
#endregion
#region Constructor
/// <summary>
/// Private constructor to prevent direct instantiation
/// </summary>
private TemplateServiceResolver()
{
mTemplateID = Guid.Empty;
}
#endregion
#region Static methods
/// <summary>
/// Returns template ID
/// </summary>
/// <param name="ClientID">Client for workorder</param>
/// <param name="UserID">Current user ID</param>
/// <returns>Guid of template that applies</returns>
public static Guid ResolveTemplate(Guid ClientID, Guid UserID)
{
return ((TemplateServiceResolver)DataPortal.Fetch(new Criteria(ClientID,UserID))).mTemplateID;
}
#endregion
#region DAL DATA ACCESS
///
/// <param Bool="Criteria"></param>
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
/// <summary>
/// Criteria for identifying existing object
/// </summary>
[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