/////////////////////////////////////////////////////////// // WorkorderItemPartRequests.cs // Implementation of Class WorkorderItemPartRequests // CSLA type: Editable Grandchild collection // Created on: 21-Feb-2005 // Object design: John // Coded: John 21-Feb-2005 /////////////////////////////////////////////////////////// using System; using System.Data; using GZTW.Data; using CSLA.Data; using CSLA; namespace GZTW.AyaNova.BLL { /// /// Editable Grandchild collection of objects residing in parent object /// [Serializable] public class WorkorderItemPartRequests : BusinessCollectionBase { #region Constructor //Private constructor prevents direction instantiation private WorkorderItemPartRequests() { //Child MarkAsChild(); AllowSort=false; AllowFind=true; AllowEdit=true; AllowNew=true; AllowRemove=true; } #endregion #region Business properties and methods /// /// Retrieve WorkorderItemPartRequest by index /// /// Index public WorkorderItemPartRequest this[int Item] { get { return (WorkorderItemPartRequest) List[Item]; } } /// /// Retrieve WorkorderItemPartRequest by string containing Guid value /// public WorkorderItemPartRequest this[string WorkorderItemPartRequestID] { get { System.Guid sid = new System.Guid(WorkorderItemPartRequestID); foreach (WorkorderItemPartRequest child in List) { if(child.ID==sid) return child; } return null; } } /// /// Retrieve WorkorderItemPartRequest by id value /// public WorkorderItemPartRequest this[Guid WorkorderItemPartRequestID] { get { foreach (WorkorderItemPartRequest child in List) { if (child.ID == WorkorderItemPartRequestID) return child; } return null; } } /// /// Remove WorkorderItemPartRequest by passing it in /// /// public void Remove(WorkorderItemPartRequest obj) { List.Remove(obj); } /// /// Remove WorkorderItemPartRequest by string of id value /// /// public void Remove(string WorkorderItemPartRequestID) { System.Guid sid = new System.Guid(WorkorderItemPartRequestID); Remove(sid); } /// /// Remove by Guid value of ID /// /// public void Remove(Guid WorkorderItemPartRequestID) { WorkorderItemPartRequest delete = null; foreach (WorkorderItemPartRequest child in List) { if (child.ID == WorkorderItemPartRequestID) delete = child; } if (delete != null) Remove(delete); } /// /// Add a new WorkorderItemPartRequest to the collection /// /// public WorkorderItemPartRequest Add(WorkorderItem obj) { WorkorderItemPartRequest child=WorkorderItemPartRequest.NewItem(obj); List.Add(child); return child; } /// /// Sets all items to read / write status /// used by workorder object when it's closed or service completed is true /// /// true=Set to read only explicitly, false=set to whatever rights allowed public void SetReadOnly(bool RO) { foreach (WorkorderItemPartRequest child in List) { if(RO==false) RO=AyaBizUtils.Right("Object.WorkorderItemPart")<(int)SecurityLevelTypes.ReadWrite; child.SetReadOnly(RO); } } #endregion #region Contains /// /// Check if item in collection /// /// public bool Contains(WorkorderItemPartRequest obj) { foreach (WorkorderItemPartRequest child in List) { if(child.Equals(obj)) return true; } return false; } /// /// Check if item in collection by string of ID value /// /// public bool Contains(string WorkorderItemPartRequestID) { System.Guid sid = new System.Guid(WorkorderItemPartRequestID); foreach (WorkorderItemPartRequest child in List) { if(child.ID==sid) return true; } return false; } /// /// Check if item in deleted collection /// /// public bool ContainsDeleted(WorkorderItemPartRequest obj) { foreach (WorkorderItemPartRequest child in deletedList) { if(child.Equals(obj)) return true; } return false; } /// /// Check if item in deleted collection by string of ID value /// /// public bool ContainsDeleted(string WorkorderItemPartRequestID) { System.Guid sid = new System.Guid(WorkorderItemPartRequestID); foreach (WorkorderItemPartRequest child in deletedList) { if(child.ID==sid) return true; } return false; } #endregion #region Static methods /// /// NewItems /// /// internal static WorkorderItemPartRequests NewItems() { return new WorkorderItemPartRequests(); } /// /// Get items - Grandchild style /// /// /// internal static WorkorderItemPartRequests GetItems(WorkorderItem obj) { WorkorderItemPartRequests col = new WorkorderItemPartRequests(); //case 1317 if (AyaBizUtils.Right(RootObjectTypes.WorkorderItemPart) > (int)SecurityLevelTypes.NoAccess) col.Fetch(obj); return col; } #endregion #region DAL DATA ACCESS /// /// Fetch children - grandchild style /// /// private void Fetch(WorkorderItem obj) { //Load data Grandchild style SafeDataReader dr = null; try { dr=DBUtil.GetReaderFromSQLString( "SELECT aPurchaseOrder.aPONumber, aPurchaseOrder.aOrderedDate, " + "aPurchaseOrder.aExpectedReceiveDate, aPurchaseOrder.AID AS APURCHASEORDERID, " + //CASE 227 " aWorkorderItemPartRequest.* " + "FROM " + " AWORKORDERITEMPARTREQUEST " + " LEFT OUTER JOIN APURCHASEORDERITEM ON (AWORKORDERITEMPARTREQUEST.APURCHASEORDERITEMID=APURCHASEORDERITEM.AID) " + " LEFT OUTER JOIN APURCHASEORDER ON (APURCHASEORDERITEM.APURCHASEORDERID=APURCHASEORDER.AID) " + "WHERE (aWorkorderItemPartRequest.aWorkorderItemID = @ID)",obj.ID); while(dr.Read()) { List.Add(WorkorderItemPartRequest.GetItem(dr, obj)); } } finally { if(dr!=null) dr.Close(); } } /// /// Update children /// /// /// internal void Update(WorkorderItem obj,IDbTransaction tr) { //update (thus deleting) any deleted child objects foreach (WorkorderItemPartRequest child in deletedList) { child.Update(obj,tr); } //Now that they are deleted remove them from memory deletedList.Clear(); foreach (WorkorderItemPartRequest child in List) { child.Update(obj,tr); } } #region Shared delete method /// /// Given a workorder item ID deletes all items for that ID /// /// Called by workorderitems delete /// /// ID of parent workorder item /// Database transaction from ascendant item internal static void DeleteItems(Guid WorkorderItemID,IDbTransaction transaction) { //make sure that all items are deleteable before allowing this to happen //A workorderitempartrequest with parts on order is *not* deleteable //until those parts are received SafeDataReader dr = null; try { dr=DBUtil.GetReaderFromSQLString("SELECT aQuantity, aReceived, " + "aPurchaseOrderItemID " + "FROM aWorkorderItemPartRequest " + "WHERE aWorkorderItemID=@ID",WorkorderItemID,transaction); while(dr.Read()) { if(dr.GetGuid("aPurchaseOrderItemID")!=Guid.Empty && dr.GetDecimal("aReceived") < dr.GetDecimal("aQuantity")) throw new System.ApplicationException (LocalizedTextTable.GetLocalizedTextDirect("WorkorderItemPartRequest.Error.NotDeleteableOnOrder")); } } finally { if(dr!=null) dr.Close(); } DBCommandWrapper cmDelete = DBUtil.GetCommandFromSQL("DELETE FROM aWorkorderItemPartRequest WHERE aWorkorderItemID=@ID;"); cmDelete.AddInParameter("@ID",DbType.Guid,WorkorderItemID); DBUtil.DB.ExecuteNonQuery(cmDelete, transaction); } #endregion #endregion }//end WorkorderItemPartRequests }//end namespace GZTW.AyaNova.BLL