using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Dbas; using Sarand.Net.Standard.Base.ItemData; using Sarand.Net.Standard.Dbas.Base; using Sarand.Net.Standard.Dbas.Data; using Sarand.Net.Standard.Dbas.ItemData.Internal; using System; using System.Collections.Generic; using System.Data.Common; using System.Linq; using System.Text; using System.Threading.Tasks; using Sarand.Net.Standard.Base.Utils; namespace Sarand.Net.Standard.Dbas.ItemData { //======================================================================= internal class SaItemDataMgr_Dbas : SaItemDataMgr { //------------------------------------------------------------------- // Data members. private SaItemDataConsole_Dbas itemDataConsole = null; //------------------------------------------------------------------- // Static initialisation. static SaItemDataMgr_Dbas() { } //------------------------------------------------------------------- // Construction. internal SaItemDataMgr_Dbas(SaItemDataConsole_Dbas itemDataConsole) { this.itemDataConsole = itemDataConsole; DbInfo = new DbDataItem.DatabaseInfo(itemDataConsole.Database); } //------------------------------------------------------------------- // Properties. public String TableName_ItemData { get { return SaItemDataDbDfn.GetTableName(SaItemDataDbDfn.TableIdx.SaItemData); } } internal ISacsDatabase Database { get { return itemDataConsole.Database; } } private DbDataItem.DatabaseInfo DbInfo { get; } public override bool DatabaseIsValid { get { return (Database != null && Database.GetTableNames().Contains(TableName_ItemData)); } } public override bool CanUpdateDatabase { get { return DatabaseIsValid; } } //******************************************************************* // I t e m D a t a //******************************************************************* // Utilities. public override bool ItemHasData(ItemId itemId, bool ignoreDeleted = true) { ClearErrorState(); if (!ItemId.IsValid(itemId)) return false; SaItemData.Params prmItemData = new SaItemData.Params(); prmItemData.ItemIdsIncluded.Add(itemId); prmItemData.StatusCat = (ignoreDeleted ? SaItemData.StatusCat.NotDeleted : SaItemData.StatusCat.Any); return (GetItemDataCount(prmItemData) > 0); } public override bool ItemHasData(ItemId itemId, String dataType, bool ignoreDeleted = true) { ClearErrorState(); if (!ItemId.IsValid(itemId)) return false; if (StringUtil.IsEmpty(dataType)) return false; SaItemData.Params prmItemData = new SaItemData.Params(); prmItemData.ItemIdsIncluded.Add(itemId); prmItemData.DataTypesIncluded.Add(dataType); prmItemData.StatusCat = (ignoreDeleted ? SaItemData.StatusCat.NotDeleted : SaItemData.StatusCat.Any); return (GetItemDataCount(prmItemData) > 0); } //------------------------------------------------------------------- // Create Item. public override SaItemData CreateItemData(ItemId itemId) { ClearErrorState(); return new SaItemData_Dbas(null, itemId, 0); } private SaItemData CreateItemData(SaItemData_Db dbItemData) { ClearErrorState(); SaItemData itemData = new SaItemData_Dbas(null, new ItemId(dbItemData._ItemType, new SysId(dbItemData._ItemId)), (ushort)dbItemData._Flags); PopulateFrom(dbItemData, itemData); return itemData; } private SaItemData CreateItemData(DbDataReader dataReader) { SaItemData_Db dbItemData = new SaItemData_Db(DbInfo); dbItemData.PopulateFrom(dataReader); return CreateItemData(dbItemData); } //------------------------------------------------------------------- // Item exists. public override bool ItemDataExists(SysId id) { ClearErrorState(); if (!SysId.IsValid(id)) return false; SaItemData.Params prmItemData = new SaItemData.Params(); prmItemData.IdsIncluded.Add(id); prmItemData.StatusCat = SaItemData.StatusCat.Any; return (GetItemDataCount(prmItemData) > 0); } public override bool ItemDataExists(ItemId itemId, String dataType, bool ignoreDeleted = true) { ClearErrorState(); if (!ItemId.IsValid(itemId)) return false; if (StringUtil.IsEmpty(dataType)) return false; SaItemData.Params prmItemData = new SaItemData.Params(); prmItemData.ItemIdsIncluded.Add(itemId); prmItemData.DataTypesIncluded.Add(dataType); prmItemData.StatusCat = (ignoreDeleted ? SaItemData.StatusCat.NotDeleted : SaItemData.StatusCat.Any); return (GetItemDataCount(prmItemData) > 0); } //------------------------------------------------------------------- // Get Item Data. public override SaItemData GetItemData(SysId id) { ClearErrorState(); if (!SysId.IsValid(id)) return null; SaItemData.Params prmItemData = new SaItemData.Params(); prmItemData.IdsIncluded.Add(id); prmItemData.StatusCat = SaItemData.StatusCat.Any; return GetItemData(prmItemData); } public override SaItemData GetItemData(ItemId itemId, String dataType) { ClearErrorState(); if (!ItemId.IsValid(itemId)) return null; if (StringUtil.IsEmpty(dataType)) return null; SaItemData.Params prmItemData = new SaItemData.Params(); prmItemData.ItemIdsIncluded.Add(itemId); prmItemData.DataTypesIncluded.Add(dataType); prmItemData.StatusCat = SaItemData.StatusCat.Any; return GetItemData(prmItemData); } public override SaItemData GetItemData(SaItemData.Params prmItemData) { return GetItemData(GetItemDataQueryFilter(prmItemData).Concat(" And ", "(", ")")); } private SaItemData GetItemData(String filter) { ClearErrorState(); if (GetItemDataCount(filter) != 1) return null; SaItemData itemData = null; // Query data. using (var dbConnection = Database.CreateConnection()) using (var dbCommand = dbConnection.CreateCommand()) { try { dbConnection.Open(); SaItemData_Db dbItemData = new SaItemData_Db(DbInfo); dbItemData.PopulateFrom(dbCommand, aliasItemData, filter); itemData = CreateItemData(dbItemData); } catch (Exception exc) { SetErrorState(ErrorMessage.DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } return itemData; } //------------------------------------------------------------------- // Validate ItemData. public override bool IsValidItemDataData(SaItemData.Data itemDataData, SaItemData.ErrField errField) { ClearErrorState(); if (!base.IsValidItemDataData(itemDataData, errField)) return false; return true; } //------------------------------------------------------------------- // Insert ItemData. public override bool InsertItemData(SaItemData itemData, DbUpdateInfo dbUpdateInfo) { ClearErrorState(); if (!IsValidItemData(itemData)) return false; if (SysId.IsValid(itemData.Id)) return SetErrorState(ErrorMessage.ValidItemId); using (var dbConnection = Database.CreateConnection()) using (var dbCommand = dbConnection.CreateCommand()) { try { dbConnection.Open(); SaItemData_Db dbItemData = new SaItemData_Db(DbInfo); PopulateTo(dbItemData, itemData, dbUpdateInfo); if (SaItemData_Db.FieldsNonId.Contains("Id")) { // Generate next Id. dbItemData._Id = SysId.ToInt(Database.GetNextId("SaItemData", dbUpdateInfo)); } dbItemData.ExecuteInsertCommand(dbCommand); itemData.Id = new SysId(dbItemData._Id); } catch (Exception exc) { SetErrorState(exc.Message); } } return OK; } //------------------------------------------------------------------- // Update item. public override bool UpdateItemData(SaItemData itemData, DbUpdateInfo dbUpdateInfo) { ClearErrorState(); if (!IsValidItemData(itemData)) return false; if (!SysId.IsValid(itemData.Id)) return SetErrorState(ErrorMessage.InvalidItemId); using (var dbConnection = Database.CreateConnection()) using (var dbCommand = dbConnection.CreateCommand()) { try { // Retrieve item. dbConnection.Open(); SaItemData_Db dbItemData = new SaItemData_Db(DbInfo); dbItemData.PopulateFrom(dbCommand, aliasItemData, aliasItemData + ".Id=" + SysId.ToString(itemData.Id)); // Update item. PopulateTo(dbItemData, itemData, dbUpdateInfo); dbItemData.ExecuteUpdateCommand(dbCommand); } catch (Exception exc) { SetErrorState(exc.Message); } } return OK; } //------------------------------------------------------------------- // Delete item. public override bool ItemDataCanBeDeleted(SaItemData itemData) { ClearErrorState(); if (!base.ItemDataCanBeDeleted(itemData)) return false; return true; } public override bool DeleteItemData(SaItemData itemData, DbUpdateInfo dbUpdateInfo) { ClearErrorState(); if (!ItemDataCanBeDeleted(itemData)) return false; using (var dbConnection = Database.CreateConnection()) using (var dbCommand = dbConnection.CreateCommand()) { try { // Retrieve item. dbConnection.Open(); SaItemData_Db dbItemData = new SaItemData_Db(DbInfo); dbItemData.PopulateFrom(dbCommand, aliasItemData, aliasItemData + ".Id=" + SysId.ToString(itemData.Id)); // Delete item. dbCommand.CommandType = System.Data.CommandType.Text; dbCommand.CommandText = "DELETE FROM " + SaItemDataDbDfn.GetTableName(SaItemDataDbDfn.TableIdx.SaItemData) + " WHERE Id=" + SysId.ToString(itemData.Id) + ";"; dbCommand.ExecuteNonQuery(); } catch (Exception exc) { SetErrorState(exc.Message); } } return OK; } public override bool ClearItemData(ItemId itemId, DbUpdateInfo dbUpdateInfo) { ClearErrorState(); if (!ItemId.IsValid(itemId)) return SetErrorState(ErrorMessage.ItemIdNotSpecified); String colItemType = SaItemDataDbDfn.GetColumnName(SaItemDataDbDfn.ColumnIdx.SaItemData_ItemType); String colItemId = SaItemDataDbDfn.GetColumnName(SaItemDataDbDfn.ColumnIdx.SaItemData_ItemId); String query = "Delete From " + TableName_ItemData + " WHERE " + colItemType + "=" + itemId.Type.ToString() + " AND " + colItemId + "=" + SysId.ToString(itemId.Id); Database.ExecuteNonQuery(query); if (Database.HasErrorState()) SetErrorState("Failed to clear Item Data - " + Database.ErrorStateMessage); return OK; } public override bool ClearItemData(ItemId itemId, String dataType, DbUpdateInfo dbUpdateInfo) { ClearErrorState(); if (!ItemId.IsValid(itemId)) return SetErrorState(ErrorMessage.ItemIdNotSpecified); if (StringUtil.IsEmpty(dataType)) return SetErrorState("Data type must be specified"); String colItemType = SaItemDataDbDfn.GetColumnName(SaItemDataDbDfn.ColumnIdx.SaItemData_ItemType); String colItemId = SaItemDataDbDfn.GetColumnName(SaItemDataDbDfn.ColumnIdx.SaItemData_ItemId); String colDataType = SaItemDataDbDfn.GetColumnName(SaItemDataDbDfn.ColumnIdx.SaItemData_DataType); String query = "Delete From " + TableName_ItemData + " WHERE " + colItemType + "=" + itemId.Type.ToString() + " AND " + colItemId + "=" + SysId.ToString(itemId.Id) + " AND " + colDataType + "='" + dataType + "';"; Database.ExecuteNonQuery(query); if (Database.HasErrorState()) SetErrorState("Failed to clear Item Data - " + Database.ErrorStateMessage); return OK; } //------------------------------------------------------------------- // Copy data properties to and from database. private void PopulateTo(SaItemData_Db dbItemData, SaItemData itemData, DbUpdateInfo dbUpdateInfo) { dbItemData._ItemType = itemData.ItemId.Type; dbItemData._ItemId = SysId.ToInt(itemData.ItemId.Id); dbItemData._DataType = itemData.DataType; dbItemData._ItemData = itemData.ItemData; // Common properties. dbItemData._Notes = itemData.Notes; dbItemData._Status = SacsSystem.GetStatusCode(itemData.Status); dbItemData._Flags = (short)itemData.Flags; if (!SysId.IsValid(itemData.Id)) { dbItemData._CreateOn = DateTime.Now; dbItemData._CreateBy = dbUpdateInfo.UserId.ToInt(); dbItemData._CreateHost = dbUpdateInfo.Host; } dbItemData._UpdateOn = DateTime.Now; dbItemData._UpdateBy = dbUpdateInfo.UserId.ToInt(); dbItemData._UpdateHost = dbUpdateInfo.Host; } private void PopulateFrom(SaItemData_Db dbItemData, SaItemData itemData) { //itemData.ItemId = new ItemId(dbItemData._ItemType, new SysId(dbItemData._ItemId)); itemData.DataType = dbItemData._DataType; itemData.ItemData = dbItemData._ItemData; // Common properties. itemData.Notes = dbItemData._Notes; itemData.Status = SacsSystem.GetStatusForCode(dbItemData._Status); itemData.SetCreateStamp(dbItemData._CreateOn, new SysId(dbItemData._CreateBy), dbItemData._CreateHost); itemData.SetUpdateStamp(dbItemData._UpdateOn, new SysId(dbItemData._UpdateBy), dbItemData._UpdateHost); itemData.AcceptChanges(); } //------------------------------------------------------------------- // ItemData column definitions. private static readonly String aliasItemData = "aItmDat"; private void SetItemDataColDfn (ColumnDfn col, String caption, int width, SaItemDataDbDfn.ColumnIdx dbCol, ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String, String alias = "", String prefix = "") { if (String.IsNullOrEmpty(alias) && SaItemDataDbDfn.GetTableForColumn(dbCol) == SaItemDataDbDfn.TableIdx.SaItemData) alias = aliasItemData; col.Set(caption, width, (int)dbCol, prefix + SaItemDataDbDfn.GetColumnName(dbCol, false), SaItemDataDbDfn.GetColumnNameQual(dbCol, alias), dataType, align); } public override ColumnDfn GetItemDataColumnDfn(SaItemData.Column columnId, string caption = "", int width = 0) { ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); switch (columnId) { case SaItemData.Column.Pos: SetItemDataColDfn(columnDfn, "Pos", 45, SaItemDataDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right); columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off; columnDfn.ReadOnly = true; columnDfn.Resizable = false; break; case SaItemData.Column.Id: SetItemDataColDfn(columnDfn, "Id", 60, SaItemDataDbDfn.ColumnIdx.SaItemData_Id, ColumnAlignment.Right, DataValue.DataType.Long); columnDfn.ReadOnly = true; break; case SaItemData.Column.ItemType: SetItemDataColDfn(columnDfn, "Item type", 80, SaItemDataDbDfn.ColumnIdx.SaItemData_ItemType, ColumnAlignment.Center, DataValue.DataType.Long); columnDfn.ReadOnly = true; break; case SaItemData.Column.ItemType_Desc: SetItemDataColDfn(columnDfn, "Item type", 100, SaItemDataDbDfn.ColumnIdx.SaItemData_ItemType); columnDfn.ReadOnly = true; break; case SaItemData.Column.DataType: SetItemDataColDfn(columnDfn, "Data type", 100, SaItemDataDbDfn.ColumnIdx.SaItemData_DataType); columnDfn.MaxLength = (int)SaItemDataDbDfn.GetColTextLen(SaItemDataDbDfn.ColumnIdx.SaItemData_DataType); break; case SaItemData.Column.ItemData: SetItemDataColDfn(columnDfn, "Data", 240, SaItemDataDbDfn.ColumnIdx.SaItemData_ItemData); columnDfn.MaxLength = (int)SaItemDataDbDfn.GetColTextLen(SaItemDataDbDfn.ColumnIdx.SaItemData_ItemData); break; // Common properties. case SaItemData.Column.Notes: SetItemDataColDfn(columnDfn, "Notes", 240, SaItemDataDbDfn.ColumnIdx.SaItemData_Notes); columnDfn.MaxLength = (int)SaItemDataDbDfn.GetColTextLen(SaItemDataDbDfn.ColumnIdx.SaItemData_Notes); break; case SaItemData.Column.Status: SetItemDataColDfn(columnDfn, "Status", 80, SaItemDataDbDfn.ColumnIdx.SaItemData_Status, ColumnAlignment.Center); break; case SaItemData.Column.Status_Desc: SetItemDataColDfn(columnDfn, "Status", 90, SaItemDataDbDfn.ColumnIdx.SaItemData_Status, ColumnAlignment.Center); break; case SaItemData.Column.Status_Ind: SetItemDataColDfn(columnDfn, "Status", 80, SaItemDataDbDfn.ColumnIdx.SaItemData_Status, ColumnAlignment.Center, DataValue.DataType.TriState); columnDfn.TriStateFormat = ColumnTriStateFormat.Lights; break; case SaItemData.Column.CreateOn_Date: SetItemDataColDfn(columnDfn, "Created", 80, SaItemDataDbDfn.ColumnIdx.SaItemData_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date); columnDfn.ReadOnly = true; break; case SaItemData.Column.UpdateOn_Date: SetItemDataColDfn(columnDfn, "Updated", 80, SaItemDataDbDfn.ColumnIdx.SaItemData_UpdateOn, ColumnAlignment.Center, DataValue.DataType.Date); columnDfn.ReadOnly = true; break; } if (!String.IsNullOrEmpty(caption)) columnDfn.Caption = caption; if (width > 0) columnDfn.Width = width; return columnDfn; } //------------------------------------------------------------------- // ItemData query filter. public override List GetItemDataQueryFilter(SaItemData.Params prm) { List filter = new List(); // Item Data Id. String colId = SaItemDataDbDfn.GetColumnNameQual(SaItemDataDbDfn.ColumnIdx.SaItemData_Id, aliasItemData); String includedIds = prm.IdsIncluded.Concat(","); if (!includedIds.IsEmpty()) filter.Add(colId + " IN (" + includedIds + ")"); String excludedIds = prm.IdsExcluded.Concat(","); if (!excludedIds.IsEmpty()) filter.Add(colId + " NOT IN (" + excludedIds + ")"); // Item Ids. List filterItemId = new List(); String colItemType = SaItemDataDbDfn.GetColumnNameQual(SaItemDataDbDfn.ColumnIdx.SaItemData_ItemType, aliasItemData); String colItemId = SaItemDataDbDfn.GetColumnNameQual(SaItemDataDbDfn.ColumnIdx.SaItemData_ItemId, aliasItemData); foreach (ItemId itemId in prm.ItemIdsIncluded) { filterItemId.Add(colItemType + "=" + itemId.Type.ToString() + " And " + colItemId + "=" + SysId.ToString(itemId.Id)); } if (filterItemId.Count > 0) filter.Add(filterItemId.Concat(" Or ", "(", ")")); // Included Data Types. List dataTypeFilter = new List(); String colDataType = SaItemDataDbDfn.GetColumnNameQual(SaItemDataDbDfn.ColumnIdx.SaItemData_DataType, aliasItemData); foreach (String dataType in prm.DataTypesIncluded) { dataTypeFilter.Add(colDataType + "='" + DbQuery.FormatForCondition(dataType) + "'"); } if (dataTypeFilter.Count > 0) filter.Add(dataTypeFilter.Concat(" Or ", "(", ")")); // Status. String colStatus = SaItemDataDbDfn.GetColumnNameQual(SaItemDataDbDfn.ColumnIdx.SaItemData_Status, aliasItemData); String statusCurrent = SacsSystem.GetStatusCode(SaStatus.Current); String statusDeleted = SacsSystem.GetStatusCode(SaStatus.Deleted); if (prm.StatusCat == SaItemData.StatusCat.CurrentOnly) filter.Add(colStatus + " In ('" + statusCurrent + "')"); else if (prm.StatusCat == SaItemData.StatusCat.NotDeleted) filter.Add(colStatus + " Not In ('" + statusDeleted + "')"); else if (prm.StatusCat == SaItemData.StatusCat.DeletedOnly) filter.Add(colStatus + " In ('" + statusDeleted + "')"); if (filter.Count < 1 && prm.IncludeDefaultFilter) filter.Add("1=1"); return filter; } // ItemData sort columns. public List GetItemDataSortColumns(SaItemData.Params prm) { // Sort sequence: List sortColumnNames = new List(); foreach (var columnDfn in prm.SortColumns) { // Need to ensure correct alias used for ItemData columns in case of conflict. String sortCol = String.Empty; if (SaItemDataDbDfn.GetTableForColumn((SaItemDataDbDfn.ColumnIdx)columnDfn.DbColumn) == SaItemDataDbDfn.TableIdx.SaItemData) { sortCol = SaItemDataDbDfn.GetColumnNameQual((SaItemDataDbDfn.ColumnIdx)columnDfn.DbColumn, aliasItemData); } else { sortCol = columnDfn.DataName; if (!StringUtil.IsEmpty(columnDfn.SortDataName)) { sortCol = columnDfn.SortDataName; } } if (!sortCol.IsEmpty()) { DbOrderByNullMode orderByNullMode = DbOrderByNullMode.Default; // eSaOrderByDemoteNulls, eSaOrderByPromoteNulls sortColumnNames.Add(DbQuery.FormatForOrderBy(sortCol, columnDfn.SortAscending, orderByNullMode).Concat(", ")); } } sortColumnNames.RemoveBlanks(); if (sortColumnNames.IsEmpty()) { // Default sort columns: sortColumnNames.Add(SaItemDataDbDfn.GetColumnNameQual(SaItemDataDbDfn.ColumnIdx.SaItemData_ItemType, aliasItemData) + " DESC"); sortColumnNames.Add(SaItemDataDbDfn.GetColumnNameQual(SaItemDataDbDfn.ColumnIdx.SaItemData_ItemId, aliasItemData) + " DESC"); sortColumnNames.Add(SaItemDataDbDfn.GetColumnNameQual(SaItemDataDbDfn.ColumnIdx.SaItemData_DataType, aliasItemData) + " DESC"); } return sortColumnNames; } //------------------------------------------------------------------- // ItemData count. private long GetItemDataCount(String filter) { ClearErrorState(); return Database.GetRowCount(SaItemDataDbDfn.GetTableName(SaItemDataDbDfn.TableIdx.SaItemData) + " As " + aliasItemData, filter); } public override long GetItemDataCount(SaItemData.Params prm) { ClearErrorState(); return GetItemDataCount(GetItemDataQueryFilter(prm).Concat(" AND ", "(", ")")); } //------------------------------------------------------------------- // Item Data list. public override List GetItemDataList(SaItemData.Params prm) { ClearErrorState(); List itemDatas = new List(); DbQuery qry = new DbQuery(Database.DbmsType); qry.Tables.Add(TableName_ItemData, aliasItemData); SaItemData_Db dbItemData = new SaItemData_Db(DbInfo); qry.Columns.AddRange(dbItemData.ExistingColumnNames); qry.Filters.AddRange(GetItemDataQueryFilter(prm)); qry.OrderBy.AddRange(GetItemDataSortColumns(prm)); // Query data. using (var dbConnection = Database.CreateConnection()) using (var dbCommand = dbConnection.CreateCommand()) { try { dbConnection.Open(); dbCommand.CommandText = qry.BuildQuery(prm.ResultsPaging); using (DbDataReader dbDataReader = dbCommand.ExecuteReader()) { while (dbDataReader.Read()) itemDatas.Add(CreateItemData(dbDataReader)); } } catch (Exception exc) { SetErrorState(ErrorMessage.DatabaseQueryException); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } return itemDatas; } //------------------------------------------------------------------- // Item Data query. public override DbResultSet ExecuteItemDataQuery(List columns, SaItemData.Params prm) { ClearErrorState(); //--------------------------------------------------------------------- // Construct query. DbQuery query = new DbQuery(Database.DbmsType); query.Tables.Add(SaItemDataDbDfn.GetTableName(SaItemDataDbDfn.TableIdx.SaItemData), aliasItemData); // Add columns as defined in query list. if (columns.HasId(SaItemData.Column.Id)) query.Columns.Add(SaItemDataDbDfn.GetColumnNameQual(SaItemDataDbDfn.ColumnIdx.SaItemData_Id, aliasItemData)); if (columns.HasId(SaItemData.Column.ItemType) || columns.HasId(SaItemData.Column.ItemType_Desc)) query.Columns.Add(SaItemDataDbDfn.GetColumnNameQual(SaItemDataDbDfn.ColumnIdx.SaItemData_ItemType, aliasItemData)); if (columns.HasId(SaItemData.Column.ItemId)) query.Columns.Add(SaItemDataDbDfn.GetColumnNameQual(SaItemDataDbDfn.ColumnIdx.SaItemData_ItemId, aliasItemData)); if (columns.HasId(SaItemData.Column.DataType)) query.Columns.Add(SaItemDataDbDfn.GetColumnNameQual(SaItemDataDbDfn.ColumnIdx.SaItemData_DataType, aliasItemData)); if (columns.HasId(SaItemData.Column.ItemData)) query.Columns.Add(SaItemDataDbDfn.GetColumnNameQual(SaItemDataDbDfn.ColumnIdx.SaItemData_ItemData, aliasItemData)); if (columns.HasId(SaItemData.Column.Notes)) query.Columns.Add(SaItemDataDbDfn.GetColumnNameQual(SaItemDataDbDfn.ColumnIdx.SaItemData_Notes, aliasItemData)); if (columns.HasId(SaItemData.Column.Status) || columns.HasId(SaItemData.Column.Status_Desc) || columns.HasId(SaItemData.Column.Status_Ind)) query.Columns.Add(SaItemDataDbDfn.GetColumnNameQual(SaItemDataDbDfn.ColumnIdx.SaItemData_Status, aliasItemData)); if (columns.HasId(SaItemData.Column.CreateOn_Date)) query.Columns.Add(SaItemDataDbDfn.GetColumnNameQual(SaItemDataDbDfn.ColumnIdx.SaItemData_CreateOn, aliasItemData)); if (columns.HasId(SaItemData.Column.UpdateOn_Date)) query.Columns.Add(SaItemDataDbDfn.GetColumnNameQual(SaItemDataDbDfn.ColumnIdx.SaItemData_UpdateOn, aliasItemData)); //--------------------------------------------------------------------- // Populate filter. query.Filters.AddRange(GetItemDataQueryFilter(prm)); // Configure sort sequence. foreach (String sortColumn in GetItemDataSortColumns(prm)) query.OrderBy.Add(sortColumn); //--------------------------------------------------------------------- //return new DbResultSet_DataTableReader(Database, query.BuildQuery(prm.ResultsPaging)); return DbResultSet_DataReader.ExecuteQuery(Database, query.BuildQuery(prm.ResultsPaging)); } //------------------------------------------------------------------- } //======================================================================= }