using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.Dbas; using Sarand.Net.Standard.Base.Interfaces; using Sarand.Net.Standard.Base.Utils; using Sarand.Net.Standard.Dbas.Base; using Sarand.Net.Standard.Dbas.Interfaces.Internal; using System; using System.Collections.Generic; using System.Data.Common; using System.Linq; //--------------------------------------------------------------------------- // Code generated by Sarand Database Utilities Thu 3-Oct-2019 15:10:58 //--------------------------------------------------------------------------- namespace Sarand.Net.Standard.Dbas.Interfaces { /// /// Interface Process database object. /// Handles legacy columns for ProcessAt (ProcDate/Time) and BatchAt (BatchDate/Time). /// internal class SaInterfaceProcess_Db_Local : SaInterfaceProcess_Db { //------------------------------------------------------------------- // Data members. private String colNameProcDate = "ProcDate"; private String colNameProcTime = "ProcTime"; private String colNameBatchDate = "BatchDate"; private String colNameBatchTime = "BatchTime"; private bool colExists_ProcessAt = false; private bool colExists_ProcDate = false; private bool colExists_ProcTime = false; private bool colExists_BatchAt = false; private bool colExists_BatchDate = false; private bool colExists_BatchTime = false; //------------------------------------------------------------------- // Construction. internal SaInterfaceProcess_Db_Local(IDatabaseInfo dbInfo) : base(dbInfo) { colExists_ProcessAt = ColumnExists(SaInterfaceDbDfn.GetColumnName(SaInterfaceDbDfn.ColumnIdx.SaInterfaceProcess_ProcessAt, false)); colExists_ProcDate = ColumnExists(colNameProcDate); colExists_ProcTime = ColumnExists(colNameProcTime); colExists_BatchAt = ColumnExists(SaInterfaceDbDfn.GetColumnName(SaInterfaceDbDfn.ColumnIdx.SaInterfaceProcess_BatchAt, false)); colExists_BatchDate = ColumnExists(colNameBatchDate); colExists_BatchTime = ColumnExists(colNameBatchTime); } //------------------------------------------------------------------- // Properties. //------------------------------------------------------------------- // Population. public override void PopulateFrom(DbCommand dbCommand, String tableAlias, String filter) { if (colExists_ProcessAt) { base.PopulateFrom(dbCommand, tableAlias, filter); return; } // Cater for legacy column names by returning all columns. dbCommand.CommandText = "SELECT * FROM " + TableNameFmt + (!String.IsNullOrEmpty(tableAlias) ? " " + tableAlias : "") + " " + (!String.IsNullOrEmpty(filter) ? "WHERE " + filter : ""); Log(GetType().Name + ".PopulateFrom", dbCommand.CommandText); using (DbDataReader dbDataReader = dbCommand.ExecuteReader()) { dbDataReader.Read(); PopulateFrom(dbDataReader); } } public override void PopulateFrom(DbDataReader dbDataReader) { base.PopulateFrom(dbDataReader); // 'Process At' legacy fields: ProcDate (Int32) & ProcTime (Int32). if (!DateUtil.IsValid(_ProcessAt) && colExists_ProcDate && colExists_ProcTime) { try { // Populate Process datetime from 'ProcDate/Time' integer fields. _ProcessAt = DateUtil.SetTime(DateUtil.Int32ToDate(dbDataReader.GetInt32(GetColumnOrdinal(dbDataReader, colNameProcDate))), DateUtil.Int32ToTime(dbDataReader.GetInt32(GetColumnOrdinal(dbDataReader, colNameProcTime)))); } catch (Exception exc) { SaLogger.Warn($"{SysUtil.Fn} " + ExceptionUtil.GetLogMessage(exc)); } } // 'Batch At' legacy fields: BatchDate (Int32) & BatchTime (Int32). if (!DateUtil.IsValid(_BatchAt) && colExists_BatchDate && colExists_BatchTime) { try { // Populate Batch datetime from 'BatchDate/Time' integer fields. _BatchAt = DateUtil.SetTime(DateUtil.Int32ToDate(dbDataReader.GetInt32(GetColumnOrdinal(dbDataReader, colNameBatchDate))), DateUtil.Int32ToTime(dbDataReader.GetInt32(GetColumnOrdinal(dbDataReader, colNameBatchTime)))); } catch (Exception exc) { SaLogger.Warn($"{SysUtil.Fn} " + ExceptionUtil.GetLogMessage(exc)); } } } //------------------------------------------------------------------- // Insert command. public override bool ExecuteInsertCommand(DbCommand dbCommand) { if (colExists_ProcessAt) return ExecuteInsertCommand(dbCommand); // Support for legacy column names - assumes SQL Server. List columnValues = new List(); SacsDatabase.AddValuePair(columnValues, "Id", _Id); SacsDatabase.AddValuePair(columnValues, "InterfaceId", _InterfaceId); SacsDatabase.AddValuePair(columnValues, "Direction", _Direction); SacsDatabase.AddValuePair(columnValues, "ProcRef", _ProcRef, true); SacsDatabase.AddValuePair(columnValues, "ProcSeq", _ProcSeq); if (colExists_ProcDate && colExists_ProcTime) { SacsDatabase.AddValuePair(columnValues, colNameProcDate, DateUtil.DateToInt32(_ProcessAt ?? DateTime.MinValue)); SacsDatabase.AddValuePair(columnValues, colNameProcTime, DateUtil.TimeToInt32(_ProcessAt ?? DateTime.MinValue)); } if (colExists_BatchDate && colExists_BatchTime) { SacsDatabase.AddValuePair(columnValues, colNameBatchDate, DateUtil.DateToInt32(_BatchAt ?? DateTime.MinValue)); SacsDatabase.AddValuePair(columnValues, colNameBatchTime, DateUtil.TimeToInt32(_BatchAt ?? DateTime.MinValue)); } SacsDatabase.AddValuePair(columnValues, "ElapseSecs", _ElapseSecs); SacsDatabase.AddValuePair(columnValues, "ItemCount", _ItemCount); SacsDatabase.AddValuePair(columnValues, "Flags", _Flags); SacsDatabase.AddValuePair(columnValues, "Status", _Status, true); SacsDatabase.AddValuePair(columnValues, "CreateOn", _CreateOn); SacsDatabase.AddValuePair(columnValues, "CreateBy", _CreateBy); SacsDatabase.AddValuePair(columnValues, "CreateHost", _CreateHost, true); SacsDatabase.AddValuePair(columnValues, "UpdateOn", _UpdateOn); SacsDatabase.AddValuePair(columnValues, "UpdateBy", _UpdateBy); SacsDatabase.AddValuePair(columnValues, "UpdateHost", _UpdateHost, true); // Insert statement. dbCommand.CommandText = "INSERT INTO " + TableNameFmt + " " + "(" + columnValues.GetValues(StringPair.Value.Value1).Concat(", ") + ") " + "VALUES (" + columnValues.GetValues(StringPair.Value.Value2).Concat(", ") + ");"; Log(GetType().Name + ".ExecuteInsertCommand", dbCommand.CommandText); // Execute insert command. bool commandSuccess = false; int executeNonQuery = dbCommand.ExecuteNonQuery(); if (executeNonQuery == 1) { commandSuccess = true; } return commandSuccess; } //------------------------------------------------------------------- // Update command. public override bool ExecuteUpdateCommand(DbCommand dbCommand) { if (colExists_ProcessAt) return ExecuteUpdateCommand(dbCommand); // Support for legacy column names - assumes SQL Server. List columnValues = new List(); SacsDatabase.AddValuePair(columnValues, "ProcRef", _ProcRef, true); SacsDatabase.AddValuePair(columnValues, "ProcSeq", _ProcSeq); if (colExists_ProcDate && colExists_ProcTime) { SacsDatabase.AddValuePair(columnValues, colNameProcDate, DateUtil.DateToInt32(_ProcessAt ?? DateTime.MinValue)); SacsDatabase.AddValuePair(columnValues, colNameProcTime, DateUtil.TimeToInt32(_ProcessAt ?? DateTime.MinValue)); } if (colExists_BatchDate && colExists_BatchTime) { SacsDatabase.AddValuePair(columnValues, colNameBatchDate, DateUtil.DateToInt32(_BatchAt ?? DateTime.MinValue)); SacsDatabase.AddValuePair(columnValues, colNameBatchTime, DateUtil.TimeToInt32(_BatchAt ?? DateTime.MinValue)); } SacsDatabase.AddValuePair(columnValues, "ElapseSecs", _ElapseSecs); SacsDatabase.AddValuePair(columnValues, "ItemCount", _ItemCount); SacsDatabase.AddValuePair(columnValues, "Flags", _Flags); SacsDatabase.AddValuePair(columnValues, "Status", _Status, true); SacsDatabase.AddValuePair(columnValues, "UpdateOn", _UpdateOn); SacsDatabase.AddValuePair(columnValues, "UpdateBy", _UpdateBy); SacsDatabase.AddValuePair(columnValues, "UpdateHost", _UpdateHost, true); // Update statement. dbCommand.CommandText = "UPDATE " + TableNameFmt + " " + "SET " + columnValues.Concat("=").Concat(", ") + " " + "WHERE Id=" + _Id.ToString() + ";"; Log(GetType().Name + ".ExecuteInsertCommand", dbCommand.CommandText); int executeNonQueryResult = dbCommand.ExecuteNonQuery(); return (executeNonQueryResult == 1); } //------------------------------------------------------------------- } }