/////////////////////////////////////////////////////////// // HeadOfficeUnitPickList.cs // Implementation of Class HeadOfficeUnitPickList // CSLA type: Read only collection // Created on: 15-Feb-2016 // Object design: John // Coded: 15-Feb-2016 /////////////////////////////////////////////////////////// using System; using System.Data; using GZTW.Data; using CSLA.Data; using CSLA; namespace GZTW.AyaNova.BLL { /// /// Lightweight read only list of objects representing objects owned by clients of the specified head office. /// Used for selection in AyaNova RI /// [Serializable] public class HeadOfficeUnitPickList : ReadOnlyCollectionBase { #region Data structure /// /// /// [Serializable] public struct HeadOfficeUnitPickListInfo { internal Guid mID; internal string mSerial; internal string mVendorName; internal string mModelName; internal string mModelNumber; internal bool mActive; internal bool mUsesBanking; internal bool mMetered; internal Guid mClientID; //case 3150 internal string mDescription; #pragma warning disable 1591 //Public properties public Guid ID {get{return mID;}} public string Serial {get{return mSerial;}} public string VendorName {get{return mVendorName;}} public string ModelName {get{return mModelName;}} public string ModelNumber {get{return mModelNumber;}} public bool Active {get{return mActive;}} public bool UsesBanking {get{return mUsesBanking;}} public bool Metered {get{return mMetered;}} //Added:30-Sept-2006 for WBI usage public Guid ClientID { get { return mClientID; } } //case 3150 public string Description {get{return mDescription;}} #pragma warning restore 1591 /// /// Return unitname in selected format /// /// /// public string UnitName(UnitNameDisplayFormats Format) { return Unit.UnitNameFormatter(mModelNumber,mModelName, mVendorName, mSerial, mDescription, Format); } /// /// Return unitname in current global selected format /// /// public string UnitName() { return Unit.UnitNameFormatter(mModelNumber, mModelName,mVendorName,mSerial, mDescription); } /// /// /// /// public bool Equals(HeadOfficeUnitPickListInfo obj) { return this.mID.Equals(obj.mID); } }//end HeadOfficeUnitPickListInfo #endregion #region Constructor /// /// /// protected HeadOfficeUnitPickList() { // AllowSort=false; // AllowFind=true; // AllowEdit=false; // AllowNew=false; // AllowRemove=false; } #endregion #region Business properties and methods /// /// Get item by index /// /// public HeadOfficeUnitPickListInfo this[int Item] { get { return (HeadOfficeUnitPickListInfo) List[Item]; } } /// /// Returns HeadOfficeUnitPickListInfo item that matches passed in itemid value /// /// public HeadOfficeUnitPickListInfo this[Guid ItemID] { get { foreach (HeadOfficeUnitPickListInfo child in List) { if(child.mID==ItemID) return child; } throw new ArgumentException("HeadOfficeUnitPickList: ID not found:\r\n"+ItemID.ToString()); } } #endregion #region contains /// /// Check if item in collection /// /// public bool Contains(HeadOfficeUnitPickListInfo obj) { foreach (HeadOfficeUnitPickListInfo child in List) { if(child.Equals(obj)) return true; } return false; } /// /// Check if item in collection by UnitID /// /// /// public bool Contains(Guid UnitID) { foreach (HeadOfficeUnitPickListInfo child in List) { if(child.ID.Equals(UnitID)) return true; } return false; } #endregion #region Static methods /// /// Get a list of units owned by a specific headoffice /// or self owned. /// /// Head office Guid for units owned by all clients of that head office only /// A list of objects public static HeadOfficeUnitPickList GetListByHeadOffice(Guid HeadOfficeID) { return (HeadOfficeUnitPickList)DataPortal.Fetch(new Criteria(string.Empty, HeadOfficeID, false, Guid.Empty, Guid.Empty)); } #endregion #region DAL DATA ACCESS /// /// protected override void DataPortal_Fetch(object Criteria) { Criteria crit = (Criteria)Criteria; SafeDataReader dr = null; try { dr = DBUtil.GetReaderFromSQLString( //************************************************************ "SELECT AUNIT.ASERIAL, AUNIT.ADESCRIPTION, AUNIT.ACLIENTID, AUNITMODEL.ANAME " + " AS AMODELNAME,AMODELNUMBER, AVENDOR.ANAME " + " AS AVENDORNAME, AUNIT.AACTIVE, AUNIT.AUSESBANKING, " + " AUNIT.AMETERED, AUNIT.AID " + " FROM AUNIT " + " LEFT OUTER JOIN AUNITMODEL ON (AUNIT.AUNITMODELID=AUNITMODEL.AID) " + " LEFT OUTER JOIN AVENDOR ON (AUNITMODEL.AVENDORID=AVENDOR.AID) " + " LEFT OUTER JOIN ACLIENT ON (AUNIT.ACLIENTID=ACLIENT.AID) " + " LEFT OUTER JOIN AHEADOFFICE ON (AHEADOFFICE.AID=ACLIENT.AHEADOFFICEID) " + " WHERE AHEADOFFICE.AID = @ID " + " ORDER BY AUNIT.ASERIAL ", crit.HeadOfficeID //************************************************************ ); while(dr.Read()) { //******************************************* HeadOfficeUnitPickListInfo info=new HeadOfficeUnitPickListInfo(); info.mID=dr.GetGuid("aID"); ////case 1975 (should have just done this a long time ago to save code) ////this filters out the "ExceptThisUnitId" used to populate lists where a single ////unit is not a valid selection (Unit screen parent for ex.) //if (crit.AllUnits && crit.UnitID == info.mID) // continue; info.mActive=dr.GetBoolean("AACTIVE"); info.mUsesBanking=dr.GetBoolean("aUsesBanking"); info.mMetered=dr.GetBoolean("aMetered"); info.mSerial=dr.GetString("aSerial"); info.mVendorName=dr.GetString("aVendorName"); info.mModelName=dr.GetString("aModelName"); info.mModelNumber=dr.GetString("aModelNumber"); info.mClientID = dr.GetGuid("aClientID"); info.mDescription=dr.GetString("ADESCRIPTION");//case 3150 InnerList.Add(info); //******************************************* } } finally { if(dr!=null) dr.Close(); } } #endregion #region criteria /// /// Criteria for identifying existing object /// [Serializable] private class Criteria { //case 2033 KEPT MOST OF THIS IN CASE WE NEED IT IN FUTURE BUT CURRENTLY ONLY HEADOFFICEID IS USED //REST CAN BE GOTTEN FROM REGULAR UNIT PICK LIST public string SearchTerm;//case 1975 public Guid HeadOfficeID; public bool AllUnits; public Guid UnitID; //case 1175 public Guid WorkorderID; public Criteria(string _searchTerm, Guid _HeadOfficeID, bool _AllUnits, Guid _UnitID, Guid _WorkorderID) { SearchTerm = _searchTerm; HeadOfficeID = _HeadOfficeID; AllUnits=_AllUnits; UnitID=_UnitID; WorkorderID = _WorkorderID;//case 1175 } } #endregion }//end HeadOfficeUnitPickList }//end namespace GZTW.AyaNova.BLL