using System; using System.Collections.Generic; using System.Data.Common; using System.Linq; 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.ReferenceData; using Sarand.Net.Standard.Dbas.Data; using Sarand.Net.Standard.Dbas.ReferenceData.Internal; using Sarand.Net.Standard.Dbas.ReferenceData.UpdateLog; using Sarand.Net.Standard.Base.Utils; namespace Sarand.Net.Standard.Dbas.ReferenceData { //======================================================================= internal partial class SaReferenceDataMgr_Dbas : SaReferenceDataMgr { //******************************************************************* // U n i t s o f M e a s u r e //******************************************************************* // Create UnitMeasure. public override SaUnitMeasure CreateUnitMeasure () { ClearErrorState(); return new SaUnitMeasure_Dbas(null, 0); } private SaUnitMeasure_Dbas CreateUnitMeasure (UnitMeasure_Db dbUnitMeasure) { ClearErrorState(); SaUnitMeasure_Dbas unitMeasure = new SaUnitMeasure_Dbas(new SysId(dbUnitMeasure._Id), (ushort)dbUnitMeasure._Flags); PopulateFrom(dbUnitMeasure, unitMeasure); return unitMeasure; } private SaUnitMeasure CreateUnitMeasure (DbDataReader dataReader) { UnitMeasure_Db dbUnitMeasure = new UnitMeasure_Db(DbInfo); dbUnitMeasure.PopulateFrom(dataReader); return CreateUnitMeasure(dbUnitMeasure); } //------------------------------------------------------------------- // UnitMeasure exists. public override bool UnitMeasureExistsById (SysId id) { ClearErrorState(); if (!SysId.IsValid(id)) return false; return GetUnitMeasureCount(SaReferenceDataDbDfn.GetColumnNameQual(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Id, aliasUnitMeasure) + "=" + SysId.ToString(id)) == 1; } public override bool UnitMeasureExistsByCode (string code) { ClearErrorState(); if (StringUtil.IsEmpty(code)) return false; return GetUnitMeasureCount(SaReferenceDataDbDfn.GetColumnNameQual(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Code, aliasUnitMeasure) + "='" + DbQuery.FormatForCondition(code) + "'") == 1; } //------------------------------------------------------------------- // Get UnitMeasure. public override SaUnitMeasure GetUnitMeasure (SaUnitMeasure.Params prm) { return GetUnitMeasure(GetUnitMeasureQueryFilter(prm).Concat(" AND ", "(", ")")); } private SaUnitMeasure GetUnitMeasure (String filter) { ClearErrorState(); long count = GetUnitMeasureCount(filter); if (count == 0) return null; if (count != 1) { SetErrorState("Multiple unitMeasures found"); return null; } SaUnitMeasure unitMeasure = null; // Query data. using (var dbConnection = Database.CreateConnection()) using (var dbCommand = dbConnection.CreateCommand()) { try { dbConnection.Open(); UnitMeasure_Db dbUnitMeasure = new UnitMeasure_Db(DbInfo); dbUnitMeasure.PopulateFrom(dbCommand, aliasUnitMeasure, filter); unitMeasure = CreateUnitMeasure(dbUnitMeasure); } catch (Exception exc) { SetErrorState("Database query exception"); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } return unitMeasure; } public override SaUnitMeasure GetUnitMeasureById (SysId id) { ClearErrorState(); if (!SysId.IsValid(id)) return null; return GetUnitMeasure("Id=" + SysId.ToString(id)); } public override SaUnitMeasure GetUnitMeasureByCode (string code) { ClearErrorState(); if (StringUtil.IsEmpty(code)) return null; return GetUnitMeasure("Code='" + DbQuery.FormatForCondition(code) + "'"); } //------------------------------------------------------------------- // Validate item. public override bool IsValidUnitMeasureData (SaUnitMeasure.Data data, SaUnitMeasure.ErrField errField) { ClearErrorState(); if (!base.IsValidUnitMeasureData(data, errField)) return false; return true; } //------------------------------------------------------------------- // Insert item. public override bool InsertUnitMeasure (SaUnitMeasure unitMeasure, DbUpdateInfo dbUpdateInfo) { ClearErrorState(); if (!IsValidUnitMeasure(unitMeasure)) return false; if (SysId.IsValid(unitMeasure.Id)) return SetErrorState(ErrorMessage.ValiditemId); using (var dbConnection = Database.CreateConnection()) using (var dbCommand = dbConnection.CreateCommand()) { try { dbConnection.Open(); UnitMeasure_Db dbUnitMeasure = new UnitMeasure_Db(DbInfo); PopulateTo(dbUnitMeasure, unitMeasure, dbUpdateInfo); if (UnitMeasure_Db.FieldsNonId.Contains("Id")) { // Generate next Id. dbUnitMeasure._Id = SysId.ToInt(Database.GetNextId("UnitMeasure", dbUpdateInfo)); } dbUnitMeasure.ExecuteInsertCommand(dbCommand); unitMeasure.Id = new SysId(dbUnitMeasure._Id); } catch (Exception exc) { SetErrorState(exc.Message); } } return !HasErrorState(); } //------------------------------------------------------------------- // Update item. public override bool UpdateUnitMeasure (SaUnitMeasure unitMeasure, DbUpdateInfo dbUpdateInfo) { ClearErrorState(); if (!IsValidUnitMeasure(unitMeasure)) return false; if (!SysId.IsValid(unitMeasure.Id)) return SetErrorState(ErrorMessage.InvalidItemId); using (var dbConnection = Database.CreateConnection()) using (var dbCommand = dbConnection.CreateCommand()) { try { // Retrieve item. dbConnection.Open(); UnitMeasure_Db dbUnitMeasure = new UnitMeasure_Db(DbInfo); dbUnitMeasure.PopulateFrom(dbCommand, aliasUnitMeasure, "Id=" + SysId.ToString(unitMeasure.Id)); SaUpdateLogItemMonitor_UnitMeasure updateLogMonitor = new SaUpdateLogItemMonitor_UnitMeasure(ReferenceDataConsole, CreateUnitMeasure(dbUnitMeasure), dbUpdateInfo); // Update item. PopulateTo(dbUnitMeasure, unitMeasure, dbUpdateInfo); dbUnitMeasure.ExecuteUpdateCommand(dbCommand); // Record updates. updateLogMonitor.RecordUpdatedValues(unitMeasure); updateLogMonitor.LogUpdates(); } catch (Exception exc) { SetErrorState(exc.Message); } } return !HasErrorState(); } //------------------------------------------------------------------- // Delete item. public override bool UnitMeasureCanBeDeleted (SaUnitMeasure unitMeasure) { ClearErrorState(); if (!base.UnitMeasureCanBeDeleted(unitMeasure)) return false; return true; } public override bool DeleteUnitMeasure (SaUnitMeasure unitMeasure, DbUpdateInfo dbUpdateInfo) { ClearErrorState(); if (!UnitMeasureCanBeDeleted(unitMeasure)) return false; using (var dbConnection = Database.CreateConnection()) using (var dbCommand = dbConnection.CreateCommand()) { try { // Retrieve item. dbConnection.Open(); UnitMeasure_Db dbUnitMeasure = new UnitMeasure_Db(DbInfo); dbUnitMeasure.PopulateFrom(dbCommand, aliasUnitMeasure, "Id=" + unitMeasure.Id.ToString()); // Delete item. dbCommand.CommandType = System.Data.CommandType.Text; dbCommand.CommandText = "DELETE FROM " + ReferenceDataConsole.TableName_UnitMeasure + " WHERE Id=" + SysId.ToString(unitMeasure.Id) + ";"; dbCommand.ExecuteNonQuery(); } catch (Exception exc) { SetErrorState(exc.Message); } } return !HasErrorState(); } //------------------------------------------------------------------- // Copy data properties to and from database. private void PopulateTo (UnitMeasure_Db dbUnitMeasure, SaUnitMeasure unitMeasure, DbUpdateInfo dbUpdateInfo) { dbUnitMeasure._Id = unitMeasure.Id.ToInt(); dbUnitMeasure._Category = (short)unitMeasure.Category; dbUnitMeasure._UnitType = (short)unitMeasure.UnitType; dbUnitMeasure._Code = unitMeasure.Code; dbUnitMeasure._Abbr = unitMeasure.Abbr; dbUnitMeasure._Single = unitMeasure.Single; dbUnitMeasure._Multiple = unitMeasure.Multiple; dbUnitMeasure._EquValue = (double)unitMeasure.EquivalencyValue; dbUnitMeasure._UomIdEqu = unitMeasure.UomIdEquivalency; dbUnitMeasure._EquAlgorythm = unitMeasure.EquivalencyAlgorythm; dbUnitMeasure._UomIdRef1 = unitMeasure.UomIdRef1; dbUnitMeasure._UomIdRef2 = unitMeasure.UomIdRef2; dbUnitMeasure._UomIdRef3 = unitMeasure.UomIdRef3; // Common properties. dbUnitMeasure._Notes = unitMeasure.Notes; dbUnitMeasure._Status = SacsSystem.GetStatusCode(unitMeasure.Status); dbUnitMeasure._Flags = (short)unitMeasure.Flags; if (!SysId.IsValid(unitMeasure.Id)) { dbUnitMeasure._CreateOn = DateTime.UtcNow; dbUnitMeasure._CreateBy = dbUpdateInfo.UserId.ToInt(); dbUnitMeasure._CreateHost = dbUpdateInfo.Host; } dbUnitMeasure._UpdateOn = DateTime.UtcNow; dbUnitMeasure._UpdateBy = dbUpdateInfo.UserId.ToInt(); dbUnitMeasure._UpdateHost = dbUpdateInfo.Host; } private void PopulateFrom (UnitMeasure_Db dbUnitMeasure, SaUnitMeasure unitMeasure) { //unitMeasure.Id = new SysId(dbUnitMeasure._Id); unitMeasure.Category = (SaUomCategory)dbUnitMeasure._Category; if ((int)unitMeasure.Category < 1) unitMeasure.Category = (SaUomCategory)dbUnitMeasure._Type; unitMeasure.UnitType = (SaUomType)dbUnitMeasure._UnitType; //unitMeasure.Code = dbUnitMeasure._Code; unitMeasure.Abbr = dbUnitMeasure._Abbr; unitMeasure.Single = dbUnitMeasure._Single; unitMeasure.Multiple = dbUnitMeasure._Multiple; unitMeasure.EquivalencyValue = (decimal)dbUnitMeasure._EquValue; unitMeasure.UomIdEquivalency = dbUnitMeasure._UomIdEqu; unitMeasure.EquivalencyAlgorythm = dbUnitMeasure._EquAlgorythm; unitMeasure.UomIdRef1 = dbUnitMeasure._UomIdRef1; unitMeasure.UomIdRef2 = dbUnitMeasure._UomIdRef2; unitMeasure.UomIdRef3 = dbUnitMeasure._UomIdRef3; // Common properties. unitMeasure.Notes = dbUnitMeasure._Notes; unitMeasure.Status = SacsSystem.GetStatusForCode(dbUnitMeasure._Status); unitMeasure.SetCreateStamp(dbUnitMeasure._CreateOn, new SysId(dbUnitMeasure._CreateBy), dbUnitMeasure._CreateHost); unitMeasure.SetUpdateStamp(dbUnitMeasure._UpdateOn, new SysId(dbUnitMeasure._UpdateBy), dbUnitMeasure._UpdateHost); unitMeasure.AcceptChanges(); } //------------------------------------------------------------------- // UnitMeasure column definitions. private static readonly String aliasUnitMeasure = "aUom"; private void SetUnitMeasureColDfn (ColumnDfn col, String caption, int width, SaReferenceDataDbDfn.ColumnIdx dbCol, ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String, String alias = "", String prefix = "") { if (String.IsNullOrEmpty(alias) && SaReferenceDataDbDfn.GetTableForColumn(dbCol) == SaReferenceDataDbDfn.TableIdx.UnitMeasure) alias = aliasUnitMeasure; col.Set(caption, width, (int)dbCol, prefix + SaReferenceDataDbDfn.GetColumnName(dbCol, false), SaReferenceDataDbDfn.GetColumnNameQual(dbCol, alias), dataType, align); if (dataType == DataValue.DataType.String && dbCol != SaReferenceDataDbDfn.ColumnIdx.Unknown) col.MaxLength = (int)SaReferenceDataDbDfn.GetColTextLen(dbCol); } //------------------------------------------------------------------- // Getting uom column definition. public override ColumnDfn GetUnitMeasureColumnDfn (SaUnitMeasure.Column columnId, string caption = "", int width = 0) { ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width); switch (columnId) { case SaUnitMeasure.Column.Pos: SetUnitMeasureColDfn(columnDfn, "Pos", 45, SaReferenceDataDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right); columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off; columnDfn.ReadOnly = true; columnDfn.Resizable = false; break; case SaUnitMeasure.Column.Id: SetUnitMeasureColDfn(columnDfn, "Id", 60, SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Id, ColumnAlignment.Right, DataValue.DataType.Long); columnDfn.ReadOnly = true; break; // UnitMeasure Properties. case SaUnitMeasure.Column.Category: SetUnitMeasureColDfn(columnDfn, "Uom Category", 80, SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Category); break; case SaUnitMeasure.Column.UnitType: SetUnitMeasureColDfn(columnDfn, "Uom Type", 80, SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_UnitType); break; case SaUnitMeasure.Column.Code: SetUnitMeasureColDfn(columnDfn, "Code", 100, SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Code); break; case SaUnitMeasure.Column.Abbr: SetUnitMeasureColDfn(columnDfn, "Abbr", 100, SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Abbr); break; case SaUnitMeasure.Column.Single: SetUnitMeasureColDfn(columnDfn, "Single", 80, SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Single, ColumnAlignment.Center, DataValue.DataType.Double); columnDfn.NumDecimals = 3; break; case SaUnitMeasure.Column.Multiple: SetUnitMeasureColDfn(columnDfn, "Multiple", 80, SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Multiple, ColumnAlignment.Center, DataValue.DataType.Double); columnDfn.NumDecimals = 3; break; case SaUnitMeasure.Column.EquivalencyValue: SetUnitMeasureColDfn(columnDfn, "Equal Value", 80, SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_EquValue, ColumnAlignment.Center, DataValue.DataType.Double); columnDfn.NumDecimals = 3; break; case SaUnitMeasure.Column.UomIdEquivalency: SetUnitMeasureColDfn(columnDfn, "Uom Id Equal", 80, SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_UomIdEqu, ColumnAlignment.Center, DataValue.DataType.Double); columnDfn.NumDecimals = 3; break; case SaUnitMeasure.Column.EquivalencyAlgorythm: SetUnitMeasureColDfn(columnDfn, "Equal Algorythm", 80, SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_EquAlgorythm, ColumnAlignment.Center, DataValue.DataType.Double); columnDfn.NumDecimals = 3; break; case SaUnitMeasure.Column.UomIdRef1: SetUnitMeasureColDfn(columnDfn, "Uom Id Ref1", 80, SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_UomIdRef1, ColumnAlignment.Center, DataValue.DataType.Double); columnDfn.NumDecimals = 3; break; case SaUnitMeasure.Column.UomIdRef2: SetUnitMeasureColDfn(columnDfn, "Uom Id Ref2", 80, SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_UomIdRef2, ColumnAlignment.Center, DataValue.DataType.Double); columnDfn.NumDecimals = 3; break; case SaUnitMeasure.Column.UomIdRef3: SetUnitMeasureColDfn(columnDfn, "Uom Id Ref3", 80, SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_UomIdRef3, ColumnAlignment.Center, DataValue.DataType.Double); columnDfn.NumDecimals = 3; break; // Derived properties. // Common properties. case SaUnitMeasure.Column.Notes: SetUnitMeasureColDfn(columnDfn, "Notes", 240, SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Notes); break; case SaUnitMeasure.Column.Status: SetUnitMeasureColDfn(columnDfn, "Status", 80, SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Status, ColumnAlignment.Center); break; case SaUnitMeasure.Column.Status_Desc: SetUnitMeasureColDfn(columnDfn, "Status", 90, SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Status, ColumnAlignment.Center); break; case SaUnitMeasure.Column.Status_Ind: SetUnitMeasureColDfn(columnDfn, "Status", 80, SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Status, ColumnAlignment.Center, DataValue.DataType.TriState); columnDfn.TriStateFormat = ColumnTriStateFormat.Lights; break; case SaUnitMeasure.Column.CreateOn_Date: SetUnitMeasureColDfn(columnDfn, "Created", 80, SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date); columnDfn.ReadOnly = true; break; case SaUnitMeasure.Column.UpdateOn_Date: SetUnitMeasureColDfn(columnDfn, "Updated", 80, SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_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; } //------------------------------------------------------------------- // UnitMeasure query filter. public override List GetUnitMeasureQueryFilter (SaUnitMeasure.Params prm) { List filter = new List(); // UnitMeasure Id. String includedIds = prm.IncludedIds.Concat(","); if (!includedIds.IsEmpty()) filter.Add(SaReferenceDataDbDfn.GetColumnNameQual(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Id, aliasUnitMeasure) + " IN (" + includedIds + ")"); String excludedIds = prm.ExcludedIds.Concat(","); if (!excludedIds.IsEmpty()) filter.Add(SaReferenceDataDbDfn.GetColumnNameQual(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Id, aliasUnitMeasure) + " NOT IN (" + excludedIds + ")"); // Category. /* if (!StringUtil.IsEmpty(prm.Category)) filter.Add(SaReferenceDataDbDfn.GetColumnNameQual(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Category, aliasUnitMeasure) + " = '" + DbQuery.FormatForCondition(prm.Category) + "'"); if (!StringUtil.IsEmpty(prm.CategoryPartial)) filter.Add(SaReferenceDataDbDfn.GetColumnNameQual(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Category, aliasUnitMeasure) + " LIKE '%" + DbQuery.FormatForLike(prm.CategoryPartial) + "%'"); // UnitType. if (!StringUtil.IsEmpty(prm.UnitType)) filter.Add(SaReferenceDataDbDfn.GetColumnNameQual(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_UnitType, aliasUnitMeasure) + " = '" + DbQuery.FormatForCondition(prm.UnitType) + "'"); if (!StringUtil.IsEmpty(prm.UnitTypePartial)) filter.Add(SaReferenceDataDbDfn.GetColumnNameQual(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_UnitType, aliasUnitMeasure) + " LIKE '%" + DbQuery.FormatForLike(prm.UnitTypePartial) + "%'"); */ // Code. if (!StringUtil.IsEmpty(prm.Code)) filter.Add(SaReferenceDataDbDfn.GetColumnNameQual(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Code, aliasUnitMeasure) + " = '" + DbQuery.FormatForCondition(prm.Code) + "'"); if (!StringUtil.IsEmpty(prm.CodePartial)) filter.Add(SaReferenceDataDbDfn.GetColumnNameQual(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Code, aliasUnitMeasure) + " LIKE '%" + DbQuery.FormatForLike(prm.CodePartial) + "%'"); // Notes. /* if (!StringUtil.IsEmpty(prm.NotesPartial)) filter.Add(SaReferenceDataDbDfn.GetColumnNameQual(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Notes, aliasUnitMeasure) + " LIKE '%" + DbQuery.FormatForLike(prm.NotesPartial) + "%'"); // Status. if (prm.StatusCat == SaUnitMeasure.StatusCat.ActiveOnly) filter.Add(SaReferenceDataDbDfn.GetColumnNameQual(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Status, aliasUnitMeasure) + " = '" + SacsSystem.GetStatusCode(SaStatus.Active) + "'"); */ if (filter.Count < 1 && prm.IncludeDefaultFilter) filter.Add("1=1"); return filter; } // UnitMeasure sort columns. public List GetUnitMeasureSortColumns (SaUnitMeasure.Params prm) { // Sort sequence: List sortColumnNames = new List(); foreach (var columnDfn in prm.SortColumns) { // Need to ensure correct alias used for UnitMeasure columns in case of conflict. String sortCol = String.Empty; if (SaReferenceDataDbDfn.GetTableForColumn((SaReferenceDataDbDfn.ColumnIdx)columnDfn.DbColumn) == SaReferenceDataDbDfn.TableIdx.UnitMeasure) { sortCol = SaReferenceDataDbDfn.GetColumnNameQual((SaReferenceDataDbDfn.ColumnIdx)columnDfn.DbColumn, aliasUnitMeasure); } 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(SaReferenceDataDbDfn.GetColumnNameQual(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Code, aliasUnitMeasure) + " ASC"); } return sortColumnNames; } //------------------------------------------------------------------- // UnitMeasure count. private long GetUnitMeasureCount (String filter) { ClearErrorState(); return Database.GetRowCount(ReferenceDataConsole.TableName_UnitMeasure + " As " + aliasUnitMeasure, filter); } public override long GetUnitMeasureCount (SaUnitMeasure.Params prm) { ClearErrorState(); return GetUnitMeasureCount(GetUnitMeasureQueryFilter(prm).Concat(" AND ", "(", ")")); } //------------------------------------------------------------------- // UnitMeasure list. public override List GetUnitMeasureList (SaUnitMeasure.Params prm) { ClearErrorState(); List unitMeasures = new List(); DbQuery qry = new DbQuery(Database.DbmsType); qry.Tables.Add(ReferenceDataConsole.TableName_UnitMeasure, aliasUnitMeasure); UnitMeasure_Db dbUnitMeasure = new UnitMeasure_Db(DbInfo); qry.Columns.AddRange(dbUnitMeasure.ExistingColumnNames); qry.Filters.AddRange(GetUnitMeasureQueryFilter(prm)); qry.OrderBy.AddRange(GetUnitMeasureSortColumns(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()) unitMeasures.Add(CreateUnitMeasure(dbDataReader)); } } catch (Exception exc) { SetErrorState("Database query exception"); SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}"); } } return unitMeasures; } //------------------------------------------------------------------- // UnitMeasure query execution. public override DbResultSet ExecuteUnitMeasureQuery (List columns, SaUnitMeasure.Params prm) { ClearErrorState(); //--------------------------------------------------------------------- // Construct query. DbQuery query = new DbQuery(Database.DbmsType); query.Tables.Add(ReferenceDataConsole.TableName_UnitMeasure, aliasUnitMeasure); // UnitMeasure Properties - add columns as defined in query list. if (columns.HasId((int)SaUnitMeasure.Column.Id)) query.Columns.Add(SaReferenceDataDbDfn.GetColumnNameQual(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Id, aliasUnitMeasure)); if (columns.HasId((int)SaUnitMeasure.Column.Category)) query.Columns.Add(SaReferenceDataDbDfn.GetColumnNameQual(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Category, aliasUnitMeasure)); if (columns.HasId((int)SaUnitMeasure.Column.UnitType)) query.Columns.Add(SaReferenceDataDbDfn.GetColumnNameQual(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_UnitType, aliasUnitMeasure)); if (columns.HasId((int)SaUnitMeasure.Column.Code)) query.Columns.Add(SaReferenceDataDbDfn.GetColumnNameQual(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Code, aliasUnitMeasure)); if (columns.HasId((int)SaUnitMeasure.Column.Abbr)) query.Columns.Add(SaReferenceDataDbDfn.GetColumnNameQual(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Abbr, aliasUnitMeasure)); if (columns.HasId((int)SaUnitMeasure.Column.Single)) query.Columns.Add(SaReferenceDataDbDfn.GetColumnNameQual(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Single, aliasUnitMeasure)); if (columns.HasId((int)SaUnitMeasure.Column.Multiple)) query.Columns.Add(SaReferenceDataDbDfn.GetColumnNameQual(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Multiple, aliasUnitMeasure)); if (columns.HasId((int)SaUnitMeasure.Column.EquivalencyValue)) query.Columns.Add(SaReferenceDataDbDfn.GetColumnNameQual(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_EquValue, aliasUnitMeasure)); if (columns.HasId((int)SaUnitMeasure.Column.UomIdEquivalency)) query.Columns.Add(SaReferenceDataDbDfn.GetColumnNameQual(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_UomIdEqu, aliasUnitMeasure)); if (columns.HasId((int)SaUnitMeasure.Column.EquivalencyAlgorythm)) query.Columns.Add(SaReferenceDataDbDfn.GetColumnNameQual(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_EquAlgorythm, aliasUnitMeasure)); if (columns.HasId((int)SaUnitMeasure.Column.UomIdRef1)) query.Columns.Add(SaReferenceDataDbDfn.GetColumnNameQual(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_UomIdRef1, aliasUnitMeasure)); if (columns.HasId((int)SaUnitMeasure.Column.UomIdRef2)) query.Columns.Add(SaReferenceDataDbDfn.GetColumnNameQual(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_UomIdRef2, aliasUnitMeasure)); if (columns.HasId((int)SaUnitMeasure.Column.UomIdRef3)) query.Columns.Add(SaReferenceDataDbDfn.GetColumnNameQual(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_UomIdRef3, aliasUnitMeasure)); // Common Properties. if (columns.HasId((int)SaUnitMeasure.Column.Notes)) query.Columns.Add(SaReferenceDataDbDfn.GetColumnNameQual(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Notes, aliasUnitMeasure)); if (columns.HasId((int)SaUnitMeasure.Column.Status) || columns.HasId((int)SaUnitMeasure.Column.Status_Desc) || columns.HasId((int)SaUnitMeasure.Column.Status_Ind)) query.Columns.Add(SaReferenceDataDbDfn.GetColumnNameQual(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_Status, aliasUnitMeasure)); if (columns.HasId((int)SaUnitMeasure.Column.CreateOn_Date)) query.Columns.Add(SaReferenceDataDbDfn.GetColumnNameQual(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_CreateOn, aliasUnitMeasure)); if (columns.HasId((int)SaUnitMeasure.Column.UpdateOn_Date)) query.Columns.Add(SaReferenceDataDbDfn.GetColumnNameQual(SaReferenceDataDbDfn.ColumnIdx.UnitMeasure_UpdateOn, aliasUnitMeasure)); //--------------------------------------------------------------------- // Populate filter. query.Filters.AddRange(GetUnitMeasureQueryFilter(prm)); if (prm.IncludedIds.Count != 1) { // Configure sort sequence. foreach (String sortColumn in GetUnitMeasureSortColumns(prm)) query.OrderBy.Add(sortColumn); } //--------------------------------------------------------------------- //return new DbResultSet_DataTableReader(Database, query.BuildQuery()); return DbResultSet_DataReader.ExecuteQuery(Database, query.BuildQuery()); } //------------------------------------------------------------------- } //======================================================================= }