/////////////////////////////////////////////////////////// // WorkorderItemMiscExpenses.cs // Implementation of Class WorkorderItemMiscExpenses // CSLA type: Editable Grandchild collection // Created on: 07-Jun-2004 8:41:48 AM // Object design: Joyce // Coded: John 28-July-2004 /////////////////////////////////////////////////////////// using System; using GZTW.Data; using System.Data; using CSLA.Data; using CSLA; namespace GZTW.AyaNova.BLL { /// ///Editable Grandchild collection of objects residing in parent object /// [Serializable] public class WorkorderItemMiscExpenses : BusinessCollectionBase { #region Constructor //Private constructor prevents direction instantiation private WorkorderItemMiscExpenses() { //Child MarkAsChild(); AllowSort=false; AllowFind=true; AllowEdit=true; AllowNew=true; AllowRemove=true; } #endregion #region Business properties and methods /// /// Retrieve WorkorderItemMiscExpense by index /// /// Index public WorkorderItemMiscExpense this[int Item] { get { return (WorkorderItemMiscExpense) List[Item]; } } /// /// Retrieve WorkorderItemMiscExpense by string containing Guid value /// public WorkorderItemMiscExpense this[string WorkorderItemMiscExpenseID] { get { System.Guid sid = new System.Guid(WorkorderItemMiscExpenseID); foreach (WorkorderItemMiscExpense child in List) { if(child.ID==sid) return child; } return null; } } //case 1975 /// /// Retrieve WorkorderItemMiscExpense by Guid value /// public WorkorderItemMiscExpense this[Guid WorkorderItemMiscExpenseID] { get { foreach (WorkorderItemMiscExpense child in List) { if (child.ID == WorkorderItemMiscExpenseID) return child; } return null; } } /// /// Remove WorkorderItemMiscExpense by passing it in /// /// public void Remove(WorkorderItemMiscExpense obj) { List.Remove(obj); } /// /// Remove WorkorderItemMiscExpense by string of id value /// /// public void Remove(string WorkorderItemMiscExpenseID) { System.Guid sid = new System.Guid(WorkorderItemMiscExpenseID); foreach (WorkorderItemMiscExpense child in List) { if(child.ID==sid) List.Remove(child); } } ///// ///// Remove by Guid value of ID ///// ///// //public void Remove(Guid WorkorderItemMiscExpenseID) //{ // foreach (WorkorderItemMiscExpense child in List) // { // if(child.ID==WorkorderItemMiscExpenseID) // List.Remove(child); // } //} //case 1975 //weird problem, using the above was throwing an error about modifying collection while iterating it //however it was able to work with windows UI so not sure what the f? //but this is how it *should* have been written: /// /// Remove by Guid value of ID /// /// public void Remove(Guid WorkorderItemMiscExpenseID) { WorkorderItemMiscExpense delete = null; foreach (WorkorderItemMiscExpense child in List) { if (child.ID == WorkorderItemMiscExpenseID) { delete = child; break; } } if (delete != null) Remove(delete); } /// /// Add a new WorkorderItemMiscExpense to the collection /// /// public WorkorderItemMiscExpense Add(WorkorderItem obj) { WorkorderItemMiscExpense child=WorkorderItemMiscExpense.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 (WorkorderItemMiscExpense child in List) { if(RO==false) RO=AyaBizUtils.Right("Object.WorkorderItemMiscExpense")<(int)SecurityLevelTypes.ReadWrite; child.SetReadOnly(RO); } } #endregion #region Contains /// /// Check if item in collection /// /// public bool Contains(WorkorderItemMiscExpense obj) { foreach (WorkorderItemMiscExpense 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 WorkorderItemMiscExpenseID) { System.Guid sid = new System.Guid(WorkorderItemMiscExpenseID); foreach (WorkorderItemMiscExpense child in List) { if(child.ID==sid) return true; } return false; } /// /// Check if item in deleted collection /// /// public bool ContainsDeleted(WorkorderItemMiscExpense obj) { foreach (WorkorderItemMiscExpense 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 WorkorderItemMiscExpenseID) { System.Guid sid = new System.Guid(WorkorderItemMiscExpenseID); foreach (WorkorderItemMiscExpense child in deletedList) { if(child.ID==sid) return true; } return false; } #endregion #region Static methods /// /// NewItems /// /// internal static WorkorderItemMiscExpenses NewItems() { return new WorkorderItemMiscExpenses(); } /// /// Get items - Grandchild style /// /// /// internal static WorkorderItemMiscExpenses GetItems(WorkorderItem obj) { WorkorderItemMiscExpenses col = new WorkorderItemMiscExpenses(); //case 1317 if(AyaBizUtils.Right(RootObjectTypes.WorkorderItemMiscExpense) > (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 * " + "FROM aWorkorderItemMiscExpense " + "WHERE aWorkorderItemID=@ID",obj.ID); while(dr.Read()) { List.Add(WorkorderItemMiscExpense.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 (WorkorderItemMiscExpense child in deletedList) { child.Update(obj,tr); } //Now that they are deleted remove them from memory deletedList.Clear(); foreach (WorkorderItemMiscExpense 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) { //Delete all items indexed keywords for this workorderitemID SafeDataReader dr = null; System.Collections.ArrayList al = new System.Collections.ArrayList(); try { dr=DBUtil.GetReaderFromSQLString("SELECT aID " + "FROM aWorkorderItemMiscExpense " + "WHERE aWorkorderItemID=@ID",WorkorderItemID,transaction); while(dr.Read()) { al.Add(dr.GetGuid("aID")); } dr.Close(); foreach(object o in al) DBUtil.RemoveKeywords(transaction,RootObjectTypes.WorkorderItemMiscExpense,(Guid)o); } finally { if(dr!=null) dr.Close(); } // DBCommandWrapper cmDeleteKeywords = DBUtil.GetCommandFromSQL( // "DELETE aSearchKey FROM aSearchKey INNER JOIN aWorkorderItemMiscExpense " + // "ON aSearchKey.aSourceObjectID = aWorkorderItemMiscExpense.aID WHERE " + // "(aWorkorderItemMiscExpense.aWorkorderItemID = @ID);"); // cmDeleteKeywords.AddInParameter("@ID",DbType.Guid,WorkorderItemID); // DBUtil.DB.ExecuteNonQuery(cmDeleteKeywords,transaction); DBCommandWrapper cmDelete = DBUtil.GetCommandFromSQL("DELETE FROM aWorkorderItemMiscExpense WHERE aWorkorderItemID=@ID;"); cmDelete.AddInParameter("@ID",DbType.Guid,WorkorderItemID); DBUtil.DB.ExecuteNonQuery(cmDelete, transaction); } #endregion #endregion }//end WorkorderItemMiscExpenses }//end namespace GZTW.AyaNova.BLL