324 lines
12 KiB
C#
324 lines
12 KiB
C#
///////////////////////////////////////////////////////////
|
|
// TemplatePickList.cs
|
|
// Implementation of Class TemplatePickList
|
|
// CSLA type: Read only collection
|
|
// Created on: 08-Nov-2007
|
|
// Object design: John
|
|
// Coded: 08-Nov-2007
|
|
///////////////////////////////////////////////////////////
|
|
|
|
using System;
|
|
using System.Data;
|
|
using GZTW.Data;
|
|
using CSLA.Data;
|
|
using CSLA;
|
|
|
|
namespace GZTW.AyaNova.BLL
|
|
{
|
|
/// <summary>
|
|
/// Lightweight read only list of <see cref="TemplatePickList.TemplatePickListInfo"/> objects representing Work order Templates for building pick lists
|
|
/// users can select from in AyaNova UI
|
|
///
|
|
/// </summary>
|
|
[Serializable]
|
|
public class TemplatePickList : ReadOnlyCollectionBase
|
|
{
|
|
#region Data structure
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
[Serializable]
|
|
public struct TemplatePickListInfo
|
|
{
|
|
|
|
internal Guid mID;
|
|
internal string mDescription;
|
|
|
|
|
|
//Public properties
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public Guid ID { get { return mID; } }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string Description { get { return mDescription; } }
|
|
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param Description="obj"></param>
|
|
public bool Equals(TemplatePickListInfo obj)
|
|
{
|
|
return this.mID.Equals(obj.mID);
|
|
}
|
|
|
|
}//end TemplatePickListInfo
|
|
#endregion
|
|
|
|
#region Constructor
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
protected TemplatePickList()
|
|
{ }
|
|
|
|
#endregion
|
|
|
|
#region Business properties and methods
|
|
|
|
/// <summary>
|
|
/// Get item by index
|
|
/// </summary>
|
|
/// <param Description="Item"></param>
|
|
public TemplatePickListInfo this[int Item]
|
|
{
|
|
|
|
get
|
|
{
|
|
return (TemplatePickListInfo)List[Item];
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Returns TemplatePickListInfo item that matches passed in itemid value
|
|
/// </summary>
|
|
/// <param Description="ItemID"></param>
|
|
public TemplatePickListInfo this[Guid ItemID]
|
|
{
|
|
|
|
get
|
|
{
|
|
foreach (TemplatePickListInfo child in List)
|
|
{
|
|
if (child.mID == ItemID) return child;
|
|
}
|
|
throw new ArgumentException("TemplatePickList: ID not found:\r\n" + ItemID.ToString());
|
|
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Returns TemplatePickListInfo item that matches passed in description value
|
|
/// Used by typeconverter
|
|
/// </summary>
|
|
/// <param Description="ItemID"></param>
|
|
public TemplatePickListInfo this[string sDescription]
|
|
{
|
|
|
|
get
|
|
{
|
|
foreach (TemplatePickListInfo child in List)
|
|
{
|
|
if (child.mDescription == sDescription) return child;
|
|
}
|
|
throw new ArgumentException("TemplatePickList: description not found:\r\n" + sDescription);
|
|
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region contains
|
|
/// <summary>
|
|
/// Check if item in collection
|
|
/// </summary>
|
|
/// <param Description="si"></param>
|
|
/// <param Description="obj"></param>
|
|
public bool Contains(TemplatePickListInfo obj)
|
|
{
|
|
foreach (TemplatePickListInfo child in List)
|
|
{
|
|
if (child.Equals(obj)) return true;
|
|
}
|
|
return false;
|
|
|
|
}
|
|
#endregion
|
|
|
|
#region Static methods
|
|
|
|
/// <summary>
|
|
/// Get all templates for type
|
|
///
|
|
/// </summary>
|
|
/// <param name="wotype"></param>
|
|
/// <param name="Regional"></param>
|
|
/// <returns>list of <see cref="TemplatePickList.TemplatePickListInfo"/> objects</returns>
|
|
public static TemplatePickList GetList(WorkorderTypes wotype, bool Regional)
|
|
{
|
|
return (TemplatePickList)DataPortal.Fetch(new Criteria(string.Empty, wotype, Guid.Empty, Regional));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Get all templates for type filtered by search term
|
|
///
|
|
/// </summary>
|
|
/// <param name="searchTerm">string to match</param>
|
|
/// <param name="wotype"></param>
|
|
/// <param name="Regional"></param>
|
|
/// <returns>list of <see cref="TemplatePickList.TemplatePickListInfo"/> objects</returns>
|
|
public static TemplatePickList GetList(string searchTerm, WorkorderTypes wotype, bool Regional)
|
|
{
|
|
return (TemplatePickList)DataPortal.Fetch(new Criteria(searchTerm, wotype, Guid.Empty, Regional));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Used to fetch a single item for
|
|
/// on demand populated combo boxes
|
|
/// </summary>
|
|
/// <param name="ID"></param>
|
|
/// <returns>list of <see cref="TemplatePickList.TemplatePickListInfo"/> objects</returns>
|
|
public static TemplatePickList GetListOfOne(Guid ID)
|
|
{
|
|
return (TemplatePickList)DataPortal.Fetch(new Criteria(string.Empty, WorkorderTypes.Unknown, ID, false));
|
|
}
|
|
#endregion
|
|
|
|
#region DAL DATA ACCESS
|
|
///
|
|
/// <param Description="Criteria"></param>
|
|
protected override void DataPortal_Fetch(object Criteria)
|
|
{
|
|
Criteria crit=(Criteria)Criteria;
|
|
SafeDataReader dr = null;
|
|
|
|
if (crit.WoType == WorkorderTypes.Service)
|
|
crit.WoType = WorkorderTypes.TemplateService;
|
|
|
|
if (crit.WoType == WorkorderTypes.Quote)
|
|
crit.WoType = WorkorderTypes.TemplateQuote;
|
|
|
|
if (crit.WoType == WorkorderTypes.PreventiveMaintenance)
|
|
crit.WoType = WorkorderTypes.TemplatePreventiveMaintenance;
|
|
|
|
|
|
TemplatePickListInfo info = new TemplatePickListInfo();
|
|
info.mDescription = "-";
|
|
info.mID = Guid.Empty;
|
|
InnerList.Add(info);
|
|
|
|
try
|
|
{
|
|
if (crit.ID != Guid.Empty)
|
|
dr = DBUtil.GetReaderFromSQLString(
|
|
//************************************************************
|
|
"SELECT AWORKORDER.AID, AWORKORDER.ATEMPLATEDESCRIPTION, " +
|
|
"AWORKORDERQUOTE.AQUOTENUMBER, " +
|
|
"AWORKORDERSERVICE.ASERVICENUMBER, " +
|
|
"AWORKORDERPREVENTIVEMAINTENANCE.APREVENTIVEMAINTENANCENUMBER " +
|
|
"FROM AWORKORDER " +
|
|
"LEFT OUTER JOIN AWORKORDERQUOTE ON (AWORKORDERQUOTE.AWORKORDERID=AWORKORDER.AID) " +
|
|
"LEFT OUTER JOIN AWORKORDERSERVICE ON (AWORKORDERSERVICE.AWORKORDERID=AWORKORDER.AID) " +
|
|
"LEFT OUTER JOIN AWORKORDERPREVENTIVEMAINTENANCE ON (AWORKORDERPREVENTIVEMAINTENANCE.AWORKORDERID=AWORKORDER.AID) " +
|
|
"WHERE AWORKORDER.AID = @ID ", crit.ID
|
|
//************************************************************
|
|
);
|
|
else
|
|
{
|
|
if (!string.IsNullOrEmpty(crit.SearchTerm))//case 1975
|
|
{
|
|
string likeTerm = " AND (LOWER(AWORKORDER.ATEMPLATEDESCRIPTION) LIKE '%" + crit.SearchTerm + "%')";
|
|
dr = DBUtil.GetReaderFromSQLString(
|
|
//************************************************************
|
|
DBUtil.AddRegionFilter(
|
|
"SELECT AWORKORDER.AID, AWORKORDER.ATEMPLATEDESCRIPTION, " +
|
|
"AWORKORDERQUOTE.AQUOTENUMBER, " +
|
|
"AWORKORDERSERVICE.ASERVICENUMBER, " +
|
|
"AWORKORDERPREVENTIVEMAINTENANCE.APREVENTIVEMAINTENANCENUMBER " +
|
|
"FROM AWORKORDER " +
|
|
"LEFT OUTER JOIN AWORKORDERQUOTE ON (AWORKORDERQUOTE.AWORKORDERID=AWORKORDER.AID) " +
|
|
"LEFT OUTER JOIN AWORKORDERSERVICE ON (AWORKORDERSERVICE.AWORKORDERID=AWORKORDER.AID) " +
|
|
"LEFT OUTER JOIN AWORKORDERPREVENTIVEMAINTENANCE ON (AWORKORDERPREVENTIVEMAINTENANCE.AWORKORDERID=AWORKORDER.AID) " +
|
|
"WHERE AWORKORDERTYPE = " + ((int)crit.WoType).ToString() +
|
|
likeTerm +
|
|
" ORDER BY AWORKORDER.ACREATED",
|
|
"aWorkorder",
|
|
"",
|
|
crit.Regional)
|
|
//************************************************************
|
|
);
|
|
}
|
|
else
|
|
{
|
|
dr = DBUtil.GetReaderFromSQLString(
|
|
//************************************************************
|
|
DBUtil.AddRegionFilter(
|
|
"SELECT AWORKORDER.AID, AWORKORDER.ATEMPLATEDESCRIPTION, " +
|
|
"AWORKORDERQUOTE.AQUOTENUMBER, " +
|
|
"AWORKORDERSERVICE.ASERVICENUMBER, " +
|
|
"AWORKORDERPREVENTIVEMAINTENANCE.APREVENTIVEMAINTENANCENUMBER " +
|
|
"FROM AWORKORDER " +
|
|
"LEFT OUTER JOIN AWORKORDERQUOTE ON (AWORKORDERQUOTE.AWORKORDERID=AWORKORDER.AID) " +
|
|
"LEFT OUTER JOIN AWORKORDERSERVICE ON (AWORKORDERSERVICE.AWORKORDERID=AWORKORDER.AID) " +
|
|
"LEFT OUTER JOIN AWORKORDERPREVENTIVEMAINTENANCE ON (AWORKORDERPREVENTIVEMAINTENANCE.AWORKORDERID=AWORKORDER.AID) " +
|
|
"WHERE AWORKORDERTYPE = " + ((int)crit.WoType).ToString() +
|
|
" ORDER BY AWORKORDER.ACREATED",
|
|
"aWorkorder",
|
|
"",
|
|
crit.Regional)
|
|
//************************************************************
|
|
);
|
|
}
|
|
}
|
|
|
|
while (dr.Read())
|
|
{
|
|
//*******************************************
|
|
info = new TemplatePickListInfo();
|
|
info.mID = dr.GetGuid("aID");
|
|
int nNumber = 0;
|
|
switch (crit.WoType)
|
|
{
|
|
case WorkorderTypes.TemplateService:
|
|
nNumber = dr.GetInt32("ASERVICENUMBER");
|
|
break;
|
|
case WorkorderTypes.TemplateQuote:
|
|
nNumber = dr.GetInt32("AQUOTENUMBER");
|
|
break;
|
|
case WorkorderTypes.TemplatePreventiveMaintenance:
|
|
nNumber = dr.GetInt32("APREVENTIVEMAINTENANCENUMBER");
|
|
break;
|
|
}
|
|
|
|
//case 1712
|
|
info.mDescription = dr.GetString("ATEMPLATEDESCRIPTION") + " - " + nNumber.ToString();
|
|
InnerList.Add(info);
|
|
//*******************************************
|
|
}
|
|
}
|
|
finally
|
|
{
|
|
if (dr != null) dr.Close();
|
|
}
|
|
|
|
|
|
}
|
|
#endregion
|
|
|
|
#region criteria
|
|
/// <summary>
|
|
/// Criteria for identifying existing object
|
|
/// </summary>
|
|
[Serializable]
|
|
private class Criteria
|
|
{
|
|
public string SearchTerm;//case 1975
|
|
public WorkorderTypes WoType;
|
|
public Guid ID;
|
|
public bool Regional;
|
|
public Criteria(string _searchTerm, WorkorderTypes _WoType, Guid _ID, bool _Regional)
|
|
{
|
|
WoType = _WoType;
|
|
ID = _ID;
|
|
Regional = _Regional;
|
|
SearchTerm = _searchTerm;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
}//end TemplatePickList
|
|
|
|
}//end Descriptionspace GZTW.AyaNova.BLL |