/////////////////////////////////////////////////////////// // LoanItemList.cs // Implementation of Class LoanItemList // CSLA type: Read only collection // Created on: 14-Nov-2005 // Object design: John // Coded: 14-Nov-2005 /////////////////////////////////////////////////////////// using System; using System.Data; using GZTW.Data; using CSLA.Data; using CSLA; using System.Collections.Generic; namespace GZTW.AyaNova.BLL { #pragma warning disable 1591 /// /// Read only list of objects representing objects for reporting /// [Serializable] public class LoanItemList : ReadOnlyCollectionBase { #region Data structure /// /// Display attributes /// [Serializable] public struct LoanItemListInfo { internal bool mActive; internal GridNameValueCellItem mName; //and ID internal GridNameValueCellItem mSerial; internal GridNameValueCellItem mClient; internal GridNameValueCellItem mCurrentWorkorderItemLoan; internal SmartDate mDueDate; internal SmartDate mOutDate; [SqlColumnNameAttribute("aClient.aName", "aClient.aID"), Display(DisplayType.Button, RootObjectType = RootObjectTypes.Client)] public GridNameValueCellItem LT_O_Client { get { return mClient; } } [SqlColumnNameAttribute("aWorkorderService.aServiceNumber", "aLoanItem.aCurrentWorkorderItemLoan"), Display(DisplayType.Button, RootObjectType = RootObjectTypes.WorkorderService)] public GridNameValueCellItem LT_O_WorkorderItemLoan { get { return mCurrentWorkorderItemLoan; } } [Display(DisplayType.DateTime)] public object LT_WorkorderItemLoan_Label_OutDate { get { return mOutDate.DBValue; } } [Display(DisplayType.DateTime)] public object LT_WorkorderItemLoan_Label_DueDate { get { return mDueDate.DBValue; } } [Display(DisplayType.TrueFalse)] public bool LT_LoanItem_Label_Active { get { return mActive; } } [SqlColumnNameAttribute("aLoanItem.aName", "aLoanItem.aID"), Display(DisplayType.Button, RootObjectType = RootObjectTypes.LoanItem)] public GridNameValueCellItem LT_LoanItem_Label_Name { get { return mName; } } [SqlColumnNameAttribute("aLoanItem.aSerial", "aLoanItem.aID"), Display(DisplayType.Button, RootObjectType = RootObjectTypes.LoanItem)] public GridNameValueCellItem LT_LoanItem_Label_Serial { get { return mSerial; } } //Case 58 internal GridNameValueCellItem mRegion; [SqlColumnNameAttribute("aRegion.aName", "aRegion.aID"), Display(DisplayType.Button, RootObjectType = RootObjectTypes.Region)] public GridNameValueCellItem LT_O_Region { get { return mRegion; } } internal string mCustom1; internal string mCustom2; internal string mCustom3; internal string mCustom4; internal string mCustom5; internal string mCustom6; internal string mCustom7; internal string mCustom8; internal string mCustom9; internal string mCustom0; [SqlColumnNameAttribute("grid"), Display(DisplayType.Text)] public string LT_Unit_Label_Custom1 { get { return mCustom1; } } [SqlColumnNameAttribute("grid"), Display(DisplayType.Text)] public string LT_Unit_Label_Custom2 { get { return mCustom2; } } [SqlColumnNameAttribute("grid"), Display(DisplayType.Text)] public string LT_Unit_Label_Custom3 { get { return mCustom3; } } [SqlColumnNameAttribute("grid"), Display(DisplayType.Text)] public string LT_Unit_Label_Custom4 { get { return mCustom4; } } [SqlColumnNameAttribute("grid"), Display(DisplayType.Text)] public string LT_Unit_Label_Custom5 { get { return mCustom5; } } [SqlColumnNameAttribute("grid"), Display(DisplayType.Text)] public string LT_Unit_Label_Custom6 { get { return mCustom6; } } [SqlColumnNameAttribute("grid"), Display(DisplayType.Text)] public string LT_Unit_Label_Custom7 { get { return mCustom7; } } [SqlColumnNameAttribute("grid"), Display(DisplayType.Text)] public string LT_Unit_Label_Custom8 { get { return mCustom8; } } [SqlColumnNameAttribute("grid"), Display(DisplayType.Text)] public string LT_Unit_Label_Custom9 { get { return mCustom9; } } [SqlColumnNameAttribute("grid"), Display(DisplayType.Text)] public string LT_Unit_Label_Custom0 { get { return mCustom0; } } //Case 424 internal decimal mRateHour; internal decimal mRateHalfDay; internal decimal mRateDay; internal decimal mRateWeek; internal decimal mRateMonth; internal decimal mRateYear; [Display(DisplayType.Currency)] public decimal LT_LoanItem_Label_RateHour { get { return mRateHour; } } [Display(DisplayType.Currency)] public decimal LT_LoanItem_Label_RateHalfDay { get { return mRateHalfDay; } } [Display(DisplayType.Currency)] public decimal LT_LoanItem_Label_RateDay { get { return mRateDay; } } [Display(DisplayType.Currency)] public decimal LT_LoanItem_Label_RateWeek { get { return mRateWeek; } } [Display(DisplayType.Currency)] public decimal LT_LoanItem_Label_RateMonth { get { return mRateMonth; } } [Display(DisplayType.Currency)] public decimal LT_LoanItem_Label_RateYear { get { return mRateYear; } } /// /// /// /// public bool Equals(LoanItemListInfo obj) { return this.mName.Value.Equals(obj.mName.Value); } }//end LoanItemListInfo #endregion #region Constructor protected LoanItemList() { // AllowSort=false; // AllowFind=true; // AllowEdit=false; // AllowNew=false; // AllowRemove=false; } #endregion #region Business properties and methods /// /// Get item by index /// /// public LoanItemListInfo this[int Item] { get { return (LoanItemListInfo) List[Item]; } } /// /// Returns display text that matches passed in itemid value /// /// public string this[Guid ItemID] { get { foreach (LoanItemListInfo child in List) { if(child.mName.Value==ItemID) return child.ToString(); } return "Missing: "+ItemID.ToString(); } } #endregion #region contains /// /// Check if item in collection /// /// public bool Contains(LoanItemListInfo obj) { foreach (LoanItemListInfo child in List) { if(child.Equals(obj)) return true; } return false; } #endregion #region Reporting and shared UI editor helpers /// /// Returns the report key which is a property of /// reports used to link all reports that can be used /// with a particular data source. /// public static string ReportKey { get { return "LoanItemList"; } } /// /// Returns the Detailed report key /// which is used to determine which reports and objects /// will be used for detailed reports /// /// If empty string then indicates there is no detailed report object or reports /// public static string DetailedReportKey { get { return ""; } } /// /// Base object that this list is reporting on /// used by shared UI editor to instantiate new objects /// when user selects new in UI elements that display this list /// /// (I.E. when user clicks on new in a read only list grid, this is the object type created) /// public static RootObjectTypes BaseObjectType { get { return RootObjectTypes.LoanItem; } } /// /// Locale key so that generic list editor /// UI code knows what title to give the list in a /// grid /// public string LocaleKey { get { return "LoanItem.Label.List"; } } /// /// The Type of the struct used to store list records /// Used to fetch the custom display attributes of the fields /// contained within the record to modify the grid display accordingly /// /// public static Type ListRecordType { get { return typeof(LoanItemListInfo); } } /// /// Field that contains the ID of the objects /// that are the basis of this list. /// /// Used for compiling an ID list for reporting from user /// selections in a grid. /// public static string IDField { get { return "LT_LoanItem_Label_Name"; } } /// /// Same as IDField but for detailed reports /// public static string IDFieldDetailed { get { return IDField; } } #endregion #region Static methods /// /// Internal method used by list factory /// internal static LoanItemList Get(string Filter, int MaxRecords, List IDList) { return (LoanItemList)DataPortal.Fetch(new Criteria(Filter, IDList, MaxRecords)); } /// /// Get all LoanItem (filtered by crit) /// /// Use AyaNova UI to easily build xmlCriteria and Ctrl-Alt-g keyboard command to display it for use in your code /// list of objects public static LoanItemList GetList(string xmlCriteria) { return (LoanItemList) DataPortal.Fetch(new Criteria(xmlCriteria, null, -1)); } /// /// Takes a single ID and returns a "list" of one object /// /// ID of LoanItem object /// list of objects public static LoanItemList GetListForSingleItem(Guid LoanItemID) { //Case 556 List l = new List(); l.Add(LoanItemID); return GetListFromIDList(l); } /// /// Get list by items indicated in IDList /// /// Generic list of Guid's /// list of objects public static LoanItemList GetListFromIDList(List IDList) { //case 556 //Handle empty list if (IDList.Count == 0) return new LoanItemList(); return (LoanItemList)DataPortal.Fetch(new Criteria("", IDList, -1)); } /// /// Return an empty list /// used for initializing grid /// /// public static LoanItemList GetEmptyList() { return new LoanItemList(); } #endregion #region DAL DATA ACCESS /// /// protected override void DataPortal_Fetch(object Criteria) { Criteria crit = (Criteria)Criteria; SafeDataReader dr = null; try { //Added:25-Oct-2006 to allow reporting from LoanItem entry and WBI edit form string q = ""; if (crit.IDList != null) { //Case 556 System.Text.StringBuilder sbIN = new System.Text.StringBuilder(); sbIN.Append(" WHERE (aLoanItem.aID in ("); foreach (Guid gItem in crit.IDList) { sbIN.Append("'"); sbIN.Append("{"); sbIN.Append(gItem.ToString().ToUpperInvariant()); sbIN.Append("}"); sbIN.Append("',"); } sbIN.Length = sbIN.Length - 1; sbIN.Append(")) "); q = "SELECT aLoanItem.aID AS ALOANITEMID, aLoanItem.aName AS ALOANITEMNAME, aLoanItem.AACTIVE, " + "aLoanItem.aSerial, aWorkorderItemLoan.aOutDate, aLoanItem.aCurrentWorkorderItemLoan, " + " aWorkorderItemLoan.aDueDate, aClient.aID AS ACLIENTID, aClient.aName " + "AS ACLIENTNAME, aWorkorderService.aServiceNumber, " + " aLoanItem.aRegionID, aRegion.aName AS aRegionName, " + //case 58 " aLoanItem.aCustom1, " + " aLoanItem.aCustom2, aLoanItem.aCustom3, " + " aLoanItem.aCustom4, " + " aLoanItem.aCustom5, aLoanItem.aCustom6, " + " aLoanItem.aCustom7, aLoanItem.aCustom8, " + " aLoanItem.aCustom9, " + " aLoanItem.aCustom0, " + //case 424 " aLoanItem.aRateHour,aLoanItem.aRateHalfDay,aLoanItem.aRateDay,aLoanItem.aRateWeek,aLoanItem.aRateMonth,aLoanItem.aRateYear " + "FROM " + " ALOANITEM " + " LEFT OUTER JOIN AWORKORDERITEMLOAN ON (ALOANITEM.ACURRENTWORKORDERITEMLOAN=AWORKORDERITEMLOAN.AID) " + " LEFT OUTER JOIN AWORKORDERITEM ON (AWORKORDERITEMLOAN.AWORKORDERITEMID=AWORKORDERITEM.AID) " + " LEFT OUTER JOIN AWORKORDER ON (AWORKORDERITEM.AWORKORDERID=AWORKORDER.AID) " + " LEFT OUTER JOIN AWORKORDERSERVICE ON (AWORKORDER.AID=AWORKORDERSERVICE.AWORKORDERID) " + " LEFT OUTER JOIN ACLIENT ON (AWORKORDER.ACLIENTID=ACLIENT.AID) " + "LEFT OUTER JOIN aRegion ON ALOANITEM.aRegionID = aRegion.aID "; //Case 58; dr = DBUtil.GetReaderFromSQLString(q+sbIN.ToString()+ " " + AyaBizUtils.GetGridSortOrderColumns(crit.CriteriaXML)); } else { q = "SELECT ~MAXRECS~ aLoanItem.aID AS ALOANITEMID, aLoanItem.aName AS ALOANITEMNAME, aLoanItem.AACTIVE, " + "aLoanItem.aSerial, aWorkorderItemLoan.aOutDate, aLoanItem.aCurrentWorkorderItemLoan, " + " aWorkorderItemLoan.aDueDate, aClient.aID AS ACLIENTID, aClient.aName " + "AS ACLIENTNAME, aWorkorderService.aServiceNumber, " + " aLoanItem.aRegionID, aRegion.aName AS aRegionName, " + //case 58 " aLoanItem.aCustom1, " + " aLoanItem.aCustom2, aLoanItem.aCustom3, " + " aLoanItem.aCustom4, " + " aLoanItem.aCustom5, aLoanItem.aCustom6, " + " aLoanItem.aCustom7, aLoanItem.aCustom8, " + " aLoanItem.aCustom9, " + " aLoanItem.aCustom0, " + //case 424 " aLoanItem.aRateHour,aLoanItem.aRateHalfDay,aLoanItem.aRateDay,aLoanItem.aRateWeek,aLoanItem.aRateMonth,aLoanItem.aRateYear " + "FROM " + " ALOANITEM " + " LEFT OUTER JOIN AWORKORDERITEMLOAN ON (ALOANITEM.ACURRENTWORKORDERITEMLOAN=AWORKORDERITEMLOAN.AID) " + " LEFT OUTER JOIN AWORKORDERITEM ON (AWORKORDERITEMLOAN.AWORKORDERITEMID=AWORKORDERITEM.AID) " + " LEFT OUTER JOIN AWORKORDER ON (AWORKORDERITEM.AWORKORDERID=AWORKORDER.AID) " + " LEFT OUTER JOIN AWORKORDERSERVICE ON (AWORKORDER.AID=AWORKORDERSERVICE.AWORKORDERID) " + " LEFT OUTER JOIN ACLIENT ON (AWORKORDER.ACLIENTID=ACLIENT.AID) " + "LEFT OUTER JOIN aRegion ON ALOANITEM.aRegionID = aRegion.aID " + //Case 58; AyaBizUtils.GetGridColumnCriteria(crit.CriteriaXML,true) + " " + AyaBizUtils.GetGridSortOrderColumns(crit.CriteriaXML); if (crit.MaxRecords > 0) q = q.Replace("~MAXRECS~", "TOP " + crit.MaxRecords.ToString()); else q = q.Replace("~MAXRECS~", ""); //************************************************************ dr = DBUtil.GetReaderFromSQLString(DBUtil.AddRegionFilter(q, "aLoanItem",""));//case 58//case 1314 specify table } while(dr.Read()) { //******************************************* LoanItemListInfo info=new LoanItemListInfo(); info.mActive=dr.GetBoolean("AACTIVE"); info.mClient=new GridNameValueCellItem(dr.GetGuid("ACLIENTID"),dr.GetString("ACLIENTNAME"), RootObjectTypes.Client); info.mDueDate=DBUtil.ToLocal(dr.GetSmartDate("aDueDate")); info.mOutDate=DBUtil.ToLocal(dr.GetSmartDate("aOutDate")); info.mName=new GridNameValueCellItem(dr.GetGuid("ALOANITEMID"),dr.GetString("ALOANITEMNAME"), RootObjectTypes.LoanItem); info.mSerial=new GridNameValueCellItem(dr.GetGuid("ALOANITEMID"),dr.GetString("aSerial"), RootObjectTypes.LoanItem); //Case 58 info.mRegion = new GridNameValueCellItem( dr.GetGuid("aRegionID"), dr.GetString("aRegionName"), RootObjectTypes.Region); info.mCurrentWorkorderItemLoan=new GridNameValueCellItem( dr.GetGuid("aCurrentWorkorderItemLoan"), dr.GetInt32("aServiceNumber")==0?"":dr.GetInt32("aServiceNumber").ToString(), RootObjectTypes.WorkorderItemLoan); info.mCustom0=dr.GetString("aCustom0"); info.mCustom1=dr.GetString("aCustom1"); info.mCustom2=dr.GetString("aCustom2"); info.mCustom3=dr.GetString("aCustom3"); info.mCustom4=dr.GetString("aCustom4"); info.mCustom5=dr.GetString("aCustom5"); info.mCustom6=dr.GetString("aCustom6"); info.mCustom7=dr.GetString("aCustom7"); info.mCustom8=dr.GetString("aCustom8"); info.mCustom9=dr.GetString("aCustom9"); //Case 424 info.mRateHour = dr.GetDecimal("aRateHour"); info.mRateHalfDay = dr.GetDecimal("aRateHalfDay"); info.mRateDay = dr.GetDecimal("aRateDay"); info.mRateWeek = dr.GetDecimal("aRateWeek"); info.mRateMonth = dr.GetDecimal("aRateMonth"); info.mRateYear = dr.GetDecimal("aRateYear"); InnerList.Add(info); //******************************************* } } finally { if(dr!=null) dr.Close(); } } #endregion #region criteria /// /// Criteria for identifying existing object /// [Serializable] private class Criteria { public List IDList; public string CriteriaXML; public int MaxRecords; public Criteria(string _CriteriaXML, List _IDList, int _MaxRecords) { CriteriaXML = _CriteriaXML; IDList = _IDList; MaxRecords = _MaxRecords; } } #endregion }//end LoanItemList #pragma warning restore 1591 }//end namespace GZTW.AyaNova.BLL