276 lines
9.1 KiB
C#
276 lines
9.1 KiB
C#
///////////////////////////////////////////////////////////
|
|
// Bool.cs
|
|
// Implementation of Class WorkorderIDFetcher
|
|
// CSLA type: Read-only object
|
|
// Created on: 24-Oct-2006
|
|
// Object design: John
|
|
// Coded: John 24-Oct-2006
|
|
///////////////////////////////////////////////////////////
|
|
|
|
using System;
|
|
using System.Data;
|
|
using CSLA.Data;
|
|
using GZTW.Data;
|
|
using CSLA;
|
|
using System.Threading;
|
|
using CSLA.Security;
|
|
|
|
|
|
|
|
namespace GZTW.AyaNova.BLL
|
|
{
|
|
/// <summary>
|
|
/// Used to quickly fetch a workorder id
|
|
/// from the database give an descendant object id
|
|
/// Returns Guid.empty on fail
|
|
/// </summary>
|
|
[Serializable]
|
|
public class WorkorderIDFetcher : ReadOnlyBase
|
|
{
|
|
|
|
#region Attributes
|
|
private Guid mID;
|
|
|
|
#endregion
|
|
|
|
#region Constructor
|
|
|
|
/// <summary>
|
|
/// Private constructor to prevent direct instantiation
|
|
/// </summary>
|
|
private WorkorderIDFetcher()
|
|
{
|
|
|
|
}
|
|
#endregion
|
|
|
|
#region Business properties
|
|
|
|
|
|
/// <summary>
|
|
/// ID of workorder
|
|
/// </summary>
|
|
public Guid ID
|
|
{
|
|
get
|
|
{
|
|
return mID;
|
|
}
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region System.Object overrides
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public override string ToString()
|
|
{
|
|
return "WorkorderID:"+mID.ToString();
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
#region Static methods
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// Fetch existing Workorder ID by related item ID
|
|
///
|
|
/// Given a rootobjectType and an ID returns the Guid of
|
|
/// the work order that hosts
|
|
/// that rootobject type and ID
|
|
/// </summary>
|
|
/// <returns>Workorder</returns>
|
|
/// <param name="_ID">Related objec (child/grandchild etc) Guid</param>
|
|
/// <param name="RootObject">RootObject enum from object in Workorder Hiearchy, i.e. WorkorderItemScheduledUser etc</param>
|
|
/// <example>
|
|
/// The following example shows usage of this method
|
|
/// <code>
|
|
/// //example travel id
|
|
/// Guid MyTravelID = new Guid("A46993E7-CB1B-40D6-9EB3-667CC18BBC22");
|
|
///
|
|
/// //Get the workorder ID by relative
|
|
/// Guid woID=WorkorderIDFetcher.GetWorkorderByRelative(RootObjectTypes.WorkorderItemTravel, MyTravelID);
|
|
///
|
|
/// //Fetch the workorder and display some info from it...
|
|
/// Workorder w = Workorder.GetItem(woID);
|
|
/// MessageBox.Show(w.NameAndAddress);
|
|
/// </code></example>
|
|
public static Guid GetWorkorderByRelative(RootObjectTypes RootObject, Guid _ID)
|
|
{
|
|
|
|
//case 1387 *really* not necessary to do this security check here
|
|
|
|
//if(AyaBizUtils.Right("Object.xxWorkorder")>(int)SecurityLevelTypes.NoAccess)
|
|
//{
|
|
return ((WorkorderIDFetcher)DataPortal.Fetch(new Criteria(RootObject,_ID))).ID;
|
|
//}
|
|
//else
|
|
// throw new System.Security.SecurityException(
|
|
// string.Format(
|
|
// LocalizedTextTable.GetLocalizedTextDirect("Error.Security.NotAuthorizedToRetrieve"),
|
|
// LocalizedTextTable.GetLocalizedTextDirect("O.Workorder")));
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
#region DAL DATA ACCESS
|
|
///
|
|
/// <param Bool="Criteria"></param>
|
|
protected override void DataPortal_Fetch(object Criteria)
|
|
{
|
|
Criteria crit = (Criteria)Criteria;
|
|
Guid WorkorderIDToFetch=crit.ID;
|
|
|
|
|
|
switch(crit.RootObjectType)
|
|
{
|
|
case RootObjectTypes.Workorder:
|
|
;//Do nothing, we already have the workorder id in crit.ID
|
|
break;
|
|
case RootObjectTypes.WorkorderItem:
|
|
WorkorderIDToFetch=DBUtil.ToGuid(DBUtil.GetScalarFromSQLString(
|
|
"SELECT TOP 1 aWorkorderItem.aWorkorderID " +
|
|
"FROM aWorkorderItem WHERE (aWorkorderItem.aID = @ID)"
|
|
,crit.ID));
|
|
break;
|
|
case RootObjectTypes.WorkorderItemLabor:
|
|
WorkorderIDToFetch=DBUtil.ToGuid(DBUtil.GetScalarFromSQLString(
|
|
"SELECT TOP 1 aWorkorderItem.aWorkorderID " +
|
|
"FROM aWorkorderItem INNER JOIN aWorkorderItemLabor " +
|
|
"ON aWorkorderItem.aID = aWorkorderItemLabor.aWorkorderItemID " +
|
|
"WHERE (aWorkorderItemLabor.aID " +
|
|
"= @ID)"
|
|
,crit.ID));
|
|
break;
|
|
//Added: 2-Oct-2006
|
|
//to support search results display
|
|
case RootObjectTypes.WorkorderItemMiscExpense:
|
|
WorkorderIDToFetch = DBUtil.ToGuid(DBUtil.GetScalarFromSQLString(
|
|
"SELECT TOP 1 aWorkorderItem.aWorkorderID " +
|
|
"FROM aWorkorderItem INNER JOIN aWorkorderItemMiscExpense " +
|
|
"ON aWorkorderItem.aID = aWorkorderItemMiscExpense.aWorkorderItemID " +
|
|
"WHERE (aWorkorderItemMiscExpense.aID " +
|
|
"= @ID)"
|
|
, crit.ID));
|
|
break;
|
|
case RootObjectTypes.WorkorderItemTravel:
|
|
WorkorderIDToFetch=DBUtil.ToGuid(DBUtil.GetScalarFromSQLString(
|
|
"SELECT TOP 1 aWorkorderItem.aWorkorderID " +
|
|
"FROM aWorkorderItem INNER JOIN aWorkorderItemTravel " +
|
|
"ON aWorkorderItem.aID = aWorkorderItemTravel.aWorkorderItemID " +
|
|
"WHERE (aWorkorderItemTravel.aID " +
|
|
"= @ID)"
|
|
,crit.ID));
|
|
break;
|
|
case RootObjectTypes.WorkorderItemScheduledUser:
|
|
WorkorderIDToFetch=DBUtil.ToGuid(DBUtil.GetScalarFromSQLString(
|
|
"SELECT TOP 1 aWorkorderItem.aWorkorderID " +
|
|
"FROM aWorkorderItem INNER JOIN aWorkorderItemScheduledUser " +
|
|
"ON aWorkorderItem.aID = aWorkorderItemScheduledUser.aWorkorderItemID " +
|
|
"WHERE (aWorkorderItemScheduledUser.aID " +
|
|
"= @ID)"
|
|
,crit.ID));
|
|
break;
|
|
case RootObjectTypes.WorkorderItemOutsideService:
|
|
WorkorderIDToFetch=DBUtil.ToGuid(DBUtil.GetScalarFromSQLString(
|
|
"SELECT TOP 1 aWorkorderItem.aWorkorderID " +
|
|
"FROM aWorkorderItem INNER JOIN aWorkorderItemOutsideService " +
|
|
"ON aWorkorderItem.aID = aWorkorderItemOutsideService.aWorkorderItemID " +
|
|
"WHERE (aWorkorderItemOutsideService.aID " +
|
|
"= @ID)"
|
|
,crit.ID));
|
|
break;
|
|
case RootObjectTypes.WorkorderItemPartRequest:
|
|
WorkorderIDToFetch=DBUtil.ToGuid(DBUtil.GetScalarFromSQLString(
|
|
"SELECT TOP 1 aWorkorderItem.aWorkorderID " +
|
|
"FROM aWorkorderItem INNER JOIN aWorkorderItemPartRequest " +
|
|
"ON aWorkorderItem.aID = aWorkorderItemPartRequest.aWorkorderItemID " +
|
|
"WHERE (aWorkorderItemPartRequest.aID " +
|
|
"= @ID)"
|
|
,crit.ID));
|
|
break;
|
|
case RootObjectTypes.WorkorderItemPart:
|
|
WorkorderIDToFetch=DBUtil.ToGuid(DBUtil.GetScalarFromSQLString(
|
|
"SELECT TOP 1 aWorkorderItem.aWorkorderID " +
|
|
"FROM aWorkorderItem INNER JOIN aWorkorderItemPart " +
|
|
"ON aWorkorderItem.aID = aWorkorderItemPart.aWorkorderItemID " +
|
|
"WHERE (aWorkorderItemPart.aID " +
|
|
"= @ID)"
|
|
,crit.ID));
|
|
break;
|
|
case RootObjectTypes.WorkorderPreventiveMaintenance:
|
|
WorkorderIDToFetch=DBUtil.ToGuid(DBUtil.GetScalarFromSQLString(
|
|
"SELECT aWorkorderPreventiveMaintenance.aWorkorderID " +
|
|
"FROM aWorkorderPreventiveMaintenance " +
|
|
"WHERE (aWorkorderPreventiveMaintenance.aID " +
|
|
"= @ID)"
|
|
,crit.ID));
|
|
break;
|
|
case RootObjectTypes.WorkorderQuote:
|
|
WorkorderIDToFetch=DBUtil.ToGuid(DBUtil.GetScalarFromSQLString(
|
|
"SELECT aWorkorderQuote.aWorkorderID " +
|
|
"FROM aWorkorderQuote " +
|
|
"WHERE (aWorkorderQuote.aID " +
|
|
"= @ID)"
|
|
,crit.ID));
|
|
break;
|
|
case RootObjectTypes.WorkorderService:
|
|
WorkorderIDToFetch=DBUtil.ToGuid(DBUtil.GetScalarFromSQLString(
|
|
"SELECT aWorkorderService.aWorkorderID " +
|
|
"FROM aWorkorderService " +
|
|
"WHERE (aWorkorderService.aID " +
|
|
"= @ID)"
|
|
,crit.ID));
|
|
break;
|
|
case RootObjectTypes.WorkorderItemLoan:
|
|
WorkorderIDToFetch=DBUtil.ToGuid(DBUtil.GetScalarFromSQLString(
|
|
"SELECT TOP 1 aWorkorderItem.aWorkorderID " +
|
|
"FROM aWorkorderItem INNER JOIN aWorkorderItemLoan " +
|
|
"ON aWorkorderItem.aID = aWorkorderItemLoan.aWorkorderItemID " +
|
|
"WHERE (aWorkorderItemLoan.aID " +
|
|
"= @ID)"
|
|
,crit.ID));
|
|
break;
|
|
default:
|
|
throw new System.NotSupportedException("GetWorkorderByDescendant(" + crit.RootObjectType.ToString() + ") not supported");
|
|
}
|
|
|
|
mID = WorkorderIDToFetch;
|
|
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
#region criteria
|
|
/// <summary>
|
|
/// Criteria for identifying existing object
|
|
/// </summary>
|
|
[Serializable]
|
|
private class Criteria
|
|
{
|
|
public Guid ID;
|
|
public RootObjectTypes RootObjectType;
|
|
public Criteria(RootObjectTypes _RootObjectType, Guid _ID)
|
|
{
|
|
ID = _ID;
|
|
RootObjectType = _RootObjectType;
|
|
}
|
|
|
|
}
|
|
#endregion
|
|
|
|
}//end Bool
|
|
|
|
}//end Boolspace GZTW.AyaNova.BLL |