Add project files.

This commit is contained in:
2021-05-11 19:38:43 +01:00
parent d316c1898d
commit ae64e14da4
1401 changed files with 283421 additions and 0 deletions
@@ -0,0 +1,128 @@
using Microsoft.Extensions.Logging;
using Sarand.Net.Standard.Dbas.Base;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.IO;
using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using System.Text;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Utils;
namespace Saxonite.Net.Standard.Dbas.App
{
//=======================================================================
public static class SaxDbDfnGenerator
{
//-------------------------------------------------------------------
// Data members.
public static readonly string messageTitle = "Saxonite database definition generator";
//-------------------------------------------------------------------
/// <summary>
/// Generate database definitions.
/// </summary>
public static bool Generate(String connectionString)
{
String fn = nameof(SaxDbDfnGenerator) + ".Generate";
// Locate output folder:
String directory = GetOutputFolder();
if (String.IsNullOrEmpty(directory) || !FileUtil.IsDirectory(directory)) return false;
// Open database.
// NB Must be ODBC connection - especially to retrieve index columns.
SacsDatabaseConsole.OdbcConfig config = new SacsDatabaseConsole.OdbcConfig();
config.connectionString = connectionString;
SacsDatabase database = SacsDatabaseConsole.OpenOdbcDatabase(config);
// Generate database definition.
try
{
return GenerateDatabaseDefinition(database, directory);
}
catch (Exception exc)
{
SaLogger.Error(fn + " " + ExceptionUtil.GetErrorStateMessage(exc));
}
return false;
}
//-------------------------------------------------------------------
private static bool GenerateDatabaseDefinition(SacsDatabase database, String directory)
{
DatabaseDefinitionGenerator.Config config = new DatabaseDefinitionGenerator.Config()
{
SarandCommonVersion = DatabaseDefinitionGenerator.SarandCommonVersion.VS2019,
DotNetVersion = DatabaseDefinitionGenerator.DotNetVersion.Core3,
Database = database,
OutputDirectory = directory
};
// Schema - Tables.
config.Schema.Tables_Excluded.AddRange(new String[] { });
// Schema - Columns.
config.Schema.InsertOnlyColumns.Add(".*", "CreateOn,CreateBy,CreateHost");
config.Schema.InsertOnlyColumns.Add("SomeOldTable", "Code");
// Database definition class.
config.DefinitionClass.Usings.Clear();
config.DefinitionClass.Usings.Add("Sarand.Net.Standard.Base.Core");
config.DefinitionClass.Usings.Add("Sarand.Net.Standard.Base.Utils");
config.DefinitionClass.Usings.Add("Sarand.Net.Standard.Base.Dbas");
config.DefinitionClass.Namespace = "Saxonite.Base.App";
config.DefinitionClass.Classname = "SaxDbDfn";
// Table class.
config.TableClass.Usings.Clear();
config.TableClass.Usings.Add("Sarand.Net.Standard.Base.Core");
config.TableClass.Usings.Add("Sarand.Net.Standard.Base.Utils");
config.TableClass.Usings.Add("Sarand.Net.Standard.Base.Dbas");
config.TableClass.Namespace_BaseClass = "Saxonite.Net.Standard.Dbas.Data";
config.TableClass.Namespace = "Saxonite.Net.Standard.Dbas.Internal";
config.TableClass.BaseClass = "SaxDbDataItem";
config.TableClass.ClassName_DatabaseInfo = "IDatabaseInfo";
config.TableClass.MandatoryConstructorDbInfo = true;
// Generate database definition.
DatabaseDefinitionGenerator generator = new DatabaseDefinitionGenerator();
return generator.Generate(config);
}
//-------------------------------------------------------------------
private static String GetOutputFolder()
{
String fn = nameof(SaxDbDfnGenerator) + ".GetOutputFolder";
var assembly = Assembly.GetAssembly(typeof(DatabaseDefinitionGenerator));
var assemblyLocation = assembly.Location;
String assemblyDirectory = FileUtil.GetParentDirectory(assemblyLocation);
String directory = assemblyDirectory;
SaLogger.Debug(fn + " Assembly folder: " + directory);
// Locate the parent of the 'Workspace' solution root folder.
String projectFolder = "Database";
while (!String.IsNullOrEmpty(directory))
{
if (FileUtil.IsDirectory(directory + Path.DirectorySeparatorChar + projectFolder))
{
break;
}
directory = FileUtil.GetParentDirectory(directory);
}
if (String.IsNullOrEmpty(directory))
{
SaLogger.Error(fn + " Failed to find '" + projectFolder + "' solution root folder in assembly path:\n\t" + assemblyDirectory);
return String.Empty;
}
// Code files are generated to '..\Dbas\Generated\LogisticsMgr\' folder.
directory += Path.DirectorySeparatorChar + "Database" + Path.DirectorySeparatorChar + "Generated" + Path.DirectorySeparatorChar + "Saxonite";
SaLogger.Debug(fn + " Output folder: " + directory);
if (!FileUtil.ValidateDirectory(directory, true))
{
SaLogger.Error(fn + " Output folder not found:\n\n" + directory);
return String.Empty;
}
return directory;
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,42 @@
using Saxonite.Net.Standard.Base.App;
using Saxonite.Net.Standard.Base.Mgr;
using Saxonite.Net.Standard.Dbas.Mgr;
using System;
using System.Collections.Generic;
using System.Text;
namespace Saxonite.Net.Standard.Dbas.App
{
//=======================================================================
public class SaxSystem_Dbas : SaxSystem
{
//-------------------------------------------------------------------
// Protected construction.
protected SaxSystem_Dbas()
{
}
//-------------------------------------------------------------------
// Business components.
//-------------------------------------------------------------------
public override SaxReferenceMgr CreateReferenceMgr(SaxSessionContext sessionContext)
{
return new SaxReferenceMgr_Dbas(sessionContext);
}
public override SaxAccountMgr CreateAccountMgr(SaxSessionContext sessionContext)
{
return new SaxAccountMgr_Dbas(sessionContext);
}
public override SaxActivityMgr CreateActivityMgr(SaxSessionContext sessionContext)
{
return new SaxActivityMgr_Dbas(sessionContext);
}
public override SaxItemDataMgr CreateItemDataMgr(SaxSessionContext sessionContext)
{
return new SaxItemDataMgr_Dbas(sessionContext);
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,32 @@
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Dbas;
using Saxonite.Net.Standard.Base.Bus;
using System;
using System.Collections.Generic;
using System.Text;
namespace Saxonite.Net.Standard.Dbas.Bus
{
//=======================================================================
public class SaxItemSport_Dbas : SaxItemSport
{
//-------------------------------------------------------------------
// Data members.
private ISacsDatabase database;
//-------------------------------------------------------------------
// Construction.
public SaxItemSport_Dbas (ISacsDatabase database, SysId id, ItemId itemId, SysId sportId, UInt16 flags) :
base(id, itemId, sportId)
{
this.database = database;
Flags = flags;
}
//-------------------------------------------------------------------
// Associated data.
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,32 @@
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Dbas;
using Saxonite.Net.Standard.Base.Bus;
using System;
using System.Collections.Generic;
using System.Text;
namespace Saxonite.Net.Standard.Dbas.Bus
{
//=======================================================================
public class SaxJournalistArticle_Dbas : SaxJournalistArticle
{
//-------------------------------------------------------------------
// Data members.
private ISacsDatabase database;
//-------------------------------------------------------------------
// Construction.
public SaxJournalistArticle_Dbas(ISacsDatabase database, SysId id, SysId userAccountIdJournalist, UInt16 flags) :
base(id, userAccountIdJournalist)
{
this.database = database;
Flags = flags;
}
//-------------------------------------------------------------------
// Associated data.
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,32 @@
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Dbas;
using Saxonite.Net.Standard.Base.Bus;
using System;
using System.Collections.Generic;
using System.Text;
namespace Saxonite.Net.Standard.Dbas.Bus
{
//=======================================================================
public class SaxOrganisation_Dbas : SaxOrganisation
{
//-------------------------------------------------------------------
// Data members.
private ISacsDatabase database;
//-------------------------------------------------------------------
// Construction.
public SaxOrganisation_Dbas (ISacsDatabase database, SysId id, UInt16 flags) :
base(id)
{
this.database = database;
Flags = flags;
}
//-------------------------------------------------------------------
// Associated data.
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,32 @@
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Dbas;
using Saxonite.Net.Standard.Base.Bus;
using System;
using System.Collections.Generic;
using System.Text;
namespace Saxonite.Net.Standard.Dbas.Bus
{
//=======================================================================
public class SaxRegion_Dbas : SaxRegion
{
//-------------------------------------------------------------------
// Data members.
private ISacsDatabase database;
//-------------------------------------------------------------------
// Construction.
public SaxRegion_Dbas (ISacsDatabase database, SysId id, UInt16 flags) :
base(id)
{
this.database = database;
Flags = flags;
}
//-------------------------------------------------------------------
// Associated data.
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,32 @@
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Dbas;
using Saxonite.Net.Standard.Base.Bus;
using System;
using System.Collections.Generic;
using System.Text;
namespace Saxonite.Net.Standard.Dbas.Bus
{
//=======================================================================
public class SaxSport_Dbas : SaxSport
{
//-------------------------------------------------------------------
// Data members.
private ISacsDatabase database;
//-------------------------------------------------------------------
// Construction.
public SaxSport_Dbas (ISacsDatabase database, SysId id, UInt16 flags) :
base(id)
{
this.database = database;
Flags = flags;
}
//-------------------------------------------------------------------
// Associated data.
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,32 @@
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Dbas;
using Saxonite.Net.Standard.Base.Bus;
using System;
using System.Collections.Generic;
using System.Text;
namespace Saxonite.Net.Standard.Dbas.Bus
{
//=======================================================================
public class SaxUserAccount_Dbas : SaxUserAccount
{
//-------------------------------------------------------------------
// Data members.
private ISacsDatabase database;
//-------------------------------------------------------------------
// Construction.
public SaxUserAccount_Dbas (ISacsDatabase database, SysId id, UInt16 flags) :
base(id)
{
this.database = database;
Flags = flags;
}
//-------------------------------------------------------------------
// Associated data.
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,33 @@
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Dbas;
using Saxonite.Net.Standard.Base.App;
using Saxonite.Net.Standard.Base.Bus;
using System;
using System.Collections.Generic;
using System.Text;
namespace Saxonite.Net.Standard.Dbas.Bus
{
//=======================================================================
public class SaxUserOrganisation_Dbas : SaxUserOrganisation
{
//-------------------------------------------------------------------
// Data members.
private ISacsDatabase database;
//-------------------------------------------------------------------
// Construction.
public SaxUserOrganisation_Dbas (ISacsDatabase database, SysId id, SysId userAccountId, SysId organisationId, UInt16 flags) :
base(id, userAccountId, organisationId)
{
this.database = database;
Flags = flags;
}
//-------------------------------------------------------------------
// Associated data.
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,33 @@
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Dbas;
using Saxonite.Net.Standard.Base.App;
using Saxonite.Net.Standard.Base.Bus;
using System;
using System.Collections.Generic;
using System.Text;
namespace Saxonite.Net.Standard.Dbas.Bus
{
//=======================================================================
public class SaxUserRole_Dbas : SaxUserRole
{
//-------------------------------------------------------------------
// Data members.
private ISacsDatabase database;
//-------------------------------------------------------------------
// Construction.
public SaxUserRole_Dbas (ISacsDatabase database, SysId id, SysId userAccountId, Sax.UserRole userRole, UInt16 flags) :
base(id, userAccountId, userRole)
{
this.database = database;
Flags = flags;
}
//-------------------------------------------------------------------
// Associated data.
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,74 @@
using Sarand.Net.Standard.Dbas.Data;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using System;
using System.Collections.Generic;
using System.Text;
using Sarand.Net.Standard.Base.Utils;
namespace Saxonite.Net.Standard.Dbas.Data
{
//=======================================================================
public abstract class SaxDbDataItem : DbDataItem
{
//-------------------------------------------------------------------
// Definitions.
/// <summary>
/// Database information - object supplied by main application.
/// <para>NB Application may have multiple databases with schema differences.</para>
/// <para>Each instance of a DbDataItem must be database specific.</para>
/// </summary>
public class SlmDatabaseInfo : IDatabaseInfo
{
// Data members.
private readonly List<DbDfnTable> tables;
private static readonly String defaultSchemaName = "dbo";
// Construction.
public SlmDatabaseInfo(String databaseName, List<DbDfnTable> tables)
{
this.DatabaseName = databaseName;
this.tables = tables;
}
// Properties.
public String DatabaseName { get; }
public String Context { get { return StringUtil.OnEmpty(DatabaseName, "UnknownDb"); } }
// Database schema.
public DbDfnTable GetTableDefinition(String schemaName, String tableName)
{
foreach (DbDfnTable table in tables.FindAll(item => item.Name.EqualsCI(tableName)))
{
if (StringUtil.OnEmpty(table.Schema, defaultSchemaName).EqualsCI(StringUtil.OnEmpty(schemaName, defaultSchemaName)))
return table;
}
return null;
}
public bool TableExists(String schemaName, String tableName)
{
return GetTableDefinition(schemaName, tableName) != null;
}
public bool ColumnExists(String schemaName, String tableName, String columnName)
{
DbDfnTable table = GetTableDefinition(schemaName, tableName);
if (table == null) return false;
return table.HasColumnByName(columnName);
}
public List<DbDfnColumn> GetColumnsForTable(String schemaName, String tableName)
{
DbDfnTable table = GetTableDefinition(schemaName, tableName);
if (table != null) return table.Columns;
return new List<DbDfnColumn>();
}
}
//-------------------------------------------------------------------
// Construction.
protected SaxDbDataItem(IDatabaseInfo dbInfo) : base(dbInfo)
{
}
//-------------------------------------------------------------------
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,224 @@
using Microsoft.Data.SqlClient;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using Sarand.Net.Standard.Base.Utils;
using Saxonite.Net.Standard.Dbas.Data;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Mon 10-May-2021 16:59:32
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal
{
internal class ItemSport_Db : SaxDbDataItem
{
//-------------------------------------------------------------------
// Column definitions.
public class ColumnsData
{
public ColumnDataInt32 _Id { get; } = new ColumnDataInt32("Id", true);
public ColumnDataInt16 _ItemType { get; } = new ColumnDataInt16("ItemType");
public ColumnDataInt32 _ItemId { get; } = new ColumnDataInt32("ItemId");
public ColumnDataInt32 _SportId { get; } = new ColumnDataInt32("SportId");
public ColumnDataString _ItemSportData { get; } = new ColumnDataString("ItemSportData");
public ColumnDataString _Notes { get; } = new ColumnDataString("Notes");
public ColumnDataInt16 _Flags { get; } = new ColumnDataInt16("Flags");
public ColumnDataString _Status { get; } = new ColumnDataString("Status");
public ColumnDataDateTime _CreateOn { get; } = new ColumnDataDateTime("CreateOn");
public ColumnDataInt32 _CreateBy { get; } = new ColumnDataInt32("CreateBy");
public ColumnDataString _CreateHost { get; } = new ColumnDataString("CreateHost");
public ColumnDataDateTime _UpdateOn { get; } = new ColumnDataDateTime("UpdateOn");
public ColumnDataInt32 _UpdateBy { get; } = new ColumnDataInt32("UpdateBy");
public ColumnDataString _UpdateHost { get; } = new ColumnDataString("UpdateHost");
}
//-------------------------------------------------------------------
// Data members.
protected static List<String> fields { get; } = new List<String>()
{
"Id",
"ItemType",
"ItemId",
"SportId",
"ItemSportData",
"Notes",
"Flags",
"Status",
"CreateOn",
"CreateBy",
"CreateHost",
"UpdateOn",
"UpdateBy",
"UpdateHost",
};
protected static List<String> fieldsId { get; } = new List<String>()
{
"Id",
};
protected static List<String> fieldsPrimary { get; } = new List<String>()
{
"Id",
};
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
{
"CreateOn",
"CreateBy",
"CreateHost",
};
//-------------------------------------------------------------------
// Construction.
internal ItemSport_Db (IDatabaseInfo dbInfo) : base(dbInfo)
{
}
//-------------------------------------------------------------------
// Properties.
public override String SchemaName { get; } = "dbo";
public override String TableName { get; } = "ItemSport";
public String TableNameFmt { get { return (!String.IsNullOrEmpty(SchemaName) ? "[" + SchemaName + "]." : "") + "[" + TableName + "]"; } }
public static List<String> Fields { get { return new List<String>(fields); } }
public static List<String> FieldsId { get { return new List<String>(fieldsId); } }
public static List<String> FieldsNonId { get { return fields.FindAll(item => !fieldsId.ContainsCI(item)); } }
// Columns.
public ColumnsData Cols { get; } = new ColumnsData();
public Int32 _Id { get { return Cols._Id.Value; } set { Cols._Id.Value = value; } }
public Int16 _ItemType { get { return Cols._ItemType.Value; } set { Cols._ItemType.Value = value; } }
public Int32 _ItemId { get { return Cols._ItemId.Value; } set { Cols._ItemId.Value = value; } }
public Int32 _SportId { get { return Cols._SportId.Value; } set { Cols._SportId.Value = value; } }
public String _ItemSportData { get { return Cols._ItemSportData.Value; } set { Cols._ItemSportData.Value = value; } }
public String _Notes { get { return Cols._Notes.Value; } set { Cols._Notes.Value = value; } }
public Int16 _Flags { get { return Cols._Flags.Value; } set { Cols._Flags.Value = value; } }
public String _Status { get { return Cols._Status.Value; } set { Cols._Status.Value = value; } }
public DateTime _CreateOn { get { return Cols._CreateOn.Value; } set { Cols._CreateOn.Value = value; } }
public Int32 _CreateBy { get { return Cols._CreateBy.Value; } set { Cols._CreateBy.Value = value; } }
public String _CreateHost { get { return Cols._CreateHost.Value; } set { Cols._CreateHost.Value = value; } }
public DateTime _UpdateOn { get { return Cols._UpdateOn.Value; } set { Cols._UpdateOn.Value = value; } }
public Int32 _UpdateBy { get { return Cols._UpdateBy.Value; } set { Cols._UpdateBy.Value = value; } }
public String _UpdateHost { get { return Cols._UpdateHost.Value; } set { Cols._UpdateHost.Value = value; } }
// Existing columns - confirmed on database if table exists.
public List<String> ExistingColumnNames { get { return GetExistingColumnNames(Fields); } }
public List<String> ExistingColumnNamesNonId { get { return GetExistingColumnNames(FieldsNonId); } }
//-------------------------------------------------------------------
// Population.
public override void PopulateFrom (DbCommand dbCommand, String tableAlias, String filter)
{
dbCommand.CommandText =
"SELECT " + ExistingColumnNames.Concat(", ", (!String.IsNullOrEmpty(tableAlias) ? tableAlias + "." : "") + "[", "]") + " " +
"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)
{
_Id = GetFieldInt32(dbDataReader, "Id", _Id);
_ItemType = GetFieldInt16(dbDataReader, "ItemType", _ItemType);
_ItemId = GetFieldInt32(dbDataReader, "ItemId", _ItemId);
_SportId = GetFieldInt32(dbDataReader, "SportId", _SportId);
_ItemSportData = GetFieldString(dbDataReader, "ItemSportData", _ItemSportData);
_Notes = GetFieldString(dbDataReader, "Notes", _Notes);
_Flags = GetFieldInt16(dbDataReader, "Flags", _Flags);
_Status = GetFieldString(dbDataReader, "Status", _Status);
_CreateOn = GetFieldDateTime(dbDataReader, "CreateOn", _CreateOn);
_CreateBy = GetFieldInt32(dbDataReader, "CreateBy", _CreateBy);
_CreateHost = GetFieldString(dbDataReader, "CreateHost", _CreateHost);
_UpdateOn = GetFieldDateTime(dbDataReader, "UpdateOn", _UpdateOn);
_UpdateBy = GetFieldInt32(dbDataReader, "UpdateBy", _UpdateBy);
_UpdateHost = GetFieldString(dbDataReader, "UpdateHost", _UpdateHost);
}
//-------------------------------------------------------------------
// Insert command.
public override bool ExecuteInsertCommand (DbCommand dbCommand)
{
List<String> columnNames = ExistingColumnNamesNonId;
// Avoid insert if Identity field is already valid.
if (_Id != 0) throw new Exception("Invalid for Insert - item already has a valid Id");
// Construct query.
String query =
"INSERT INTO " + TableNameFmt + " " +
"("+columnNames.Concat(",","[","]")+") ";
query += "Output Inserted.Id ";
if (dbCommand is SqlCommand)
query += "VALUES (" + columnNames.Concat(",", "@", "") + ") ";
else query += "VALUES (" + StringListUtil.CreateList("?", columnNames.Count).Concat(",") + ") ";
dbCommand.CommandText = query;
Log(GetType().Name + ".ExecuteInsertCommand", dbCommand.CommandText);
// Populate parameters.
dbCommand.Parameters.Clear();
if (columnNames.ContainsCI("ItemType")) AddCommandParameter(dbCommand, "@ItemType", _ItemType);
if (columnNames.ContainsCI("ItemId")) AddCommandParameter(dbCommand, "@ItemId", _ItemId);
if (columnNames.ContainsCI("SportId")) AddCommandParameter(dbCommand, "@SportId", _SportId);
if (columnNames.ContainsCI("ItemSportData")) AddCommandParameter(dbCommand, "@ItemSportData", _ItemSportData);
if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes);
if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags);
if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status);
if (columnNames.ContainsCI("CreateOn")) AddCommandParameter(dbCommand, "@CreateOn", _CreateOn);
if (columnNames.ContainsCI("CreateBy")) AddCommandParameter(dbCommand, "@CreateBy", _CreateBy);
if (columnNames.ContainsCI("CreateHost")) AddCommandParameter(dbCommand, "@CreateHost", _CreateHost);
if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn);
if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy);
if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost);
// Execute insert command.
bool commandSuccess = false;
int executeNonQuery = dbCommand.ExecuteNonQuery();
if (executeNonQuery == 1)
{
dbCommand.CommandText = "SELECT Max(Id) FROM " + TableNameFmt + ";";
_Id = (Int32)Convert.ToInt64(dbCommand.ExecuteScalar());
commandSuccess = (_Id > 0);
}
return commandSuccess;
}
//-------------------------------------------------------------------
// Update command.
public override bool ExecuteUpdateCommand (DbCommand dbCommand)
{
// Avoid update if Identity field isn't valid.
if (_Id == 0) throw new Exception("Invalid for Update - item has an invalid Id");
// Columns to update.
List<String> columnNames = ExistingColumnNamesNonId.Where(item => !fieldsPrimary.ContainsCI(item) && !fieldsIgnoreOnUpdate.ContainsCI(item)).ToList();
// Construct query.
String query = "UPDATE " + TableNameFmt + " SET ";
if (dbCommand is SqlCommand)
{
query += StringPairList.CreateFrom(columnNames.Bracket("[","]"),columnNames).Concat("=@").Concat(", ") + " ";
query += "WHERE Id=@Id;";
}
else
{
query += columnNames.Concat(", ", "", "=?") + " ";
query += "WHERE Id=?;";
}
dbCommand.CommandText = query;
Log(GetType().Name + ".ExecuteUpdateCommand", dbCommand.CommandText);
// Populate parameters.
dbCommand.Parameters.Clear();
if (columnNames.ContainsCI("ItemType")) AddCommandParameter(dbCommand, "@ItemType", _ItemType);
if (columnNames.ContainsCI("ItemId")) AddCommandParameter(dbCommand, "@ItemId", _ItemId);
if (columnNames.ContainsCI("SportId")) AddCommandParameter(dbCommand, "@SportId", _SportId);
if (columnNames.ContainsCI("ItemSportData")) AddCommandParameter(dbCommand, "@ItemSportData", _ItemSportData);
if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes);
if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags);
if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status);
if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn);
if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy);
if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost);
AddCommandParameter(dbCommand, "@Id", _Id);
int executeNonQueryResult = dbCommand.ExecuteNonQuery();
return (executeNonQueryResult == 1);
}
//-------------------------------------------------------------------
}
}
@@ -0,0 +1,242 @@
using Microsoft.Data.SqlClient;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using Sarand.Net.Standard.Base.Utils;
using Saxonite.Net.Standard.Dbas.Data;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Mon 10-May-2021 16:59:32
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal
{
internal class JournalistArticle_Db : SaxDbDataItem
{
//-------------------------------------------------------------------
// Column definitions.
public class ColumnsData
{
public ColumnDataInt32 _Id { get; } = new ColumnDataInt32("Id", true);
public ColumnDataInt32 _UserAccountIdJournalist { get; } = new ColumnDataInt32("UserAccountIdJournalist");
public ColumnDataInt32 _RegionIdPrimary { get; } = new ColumnDataInt32("RegionIdPrimary");
public ColumnDataInt32 _SportIdPrimary { get; } = new ColumnDataInt32("SportIdPrimary");
public ColumnDataString _Headline { get; } = new ColumnDataString("Headline");
public ColumnDataString _Summary { get; } = new ColumnDataString("Summary");
public ColumnDataString _BodyData { get; } = new ColumnDataString("BodyData");
public ColumnDataDateTime _PublishedAt { get; } = new ColumnDataDateTime("PublishedAt");
public ColumnDataString _Notes { get; } = new ColumnDataString("Notes");
public ColumnDataInt16 _Flags { get; } = new ColumnDataInt16("Flags");
public ColumnDataString _Status { get; } = new ColumnDataString("Status");
public ColumnDataDateTime _CreateOn { get; } = new ColumnDataDateTime("CreateOn");
public ColumnDataInt32 _CreateBy { get; } = new ColumnDataInt32("CreateBy");
public ColumnDataString _CreateHost { get; } = new ColumnDataString("CreateHost");
public ColumnDataDateTime _UpdateOn { get; } = new ColumnDataDateTime("UpdateOn");
public ColumnDataInt32 _UpdateBy { get; } = new ColumnDataInt32("UpdateBy");
public ColumnDataString _UpdateHost { get; } = new ColumnDataString("UpdateHost");
}
//-------------------------------------------------------------------
// Data members.
protected static List<String> fields { get; } = new List<String>()
{
"Id",
"UserAccountIdJournalist",
"RegionIdPrimary",
"SportIdPrimary",
"Headline",
"Summary",
"BodyData",
"PublishedAt",
"Notes",
"Flags",
"Status",
"CreateOn",
"CreateBy",
"CreateHost",
"UpdateOn",
"UpdateBy",
"UpdateHost",
};
protected static List<String> fieldsId { get; } = new List<String>()
{
"Id",
};
protected static List<String> fieldsPrimary { get; } = new List<String>()
{
"Id",
};
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
{
"CreateOn",
"CreateBy",
"CreateHost",
};
//-------------------------------------------------------------------
// Construction.
internal JournalistArticle_Db (IDatabaseInfo dbInfo) : base(dbInfo)
{
}
//-------------------------------------------------------------------
// Properties.
public override String SchemaName { get; } = "dbo";
public override String TableName { get; } = "JournalistArticle";
public String TableNameFmt { get { return (!String.IsNullOrEmpty(SchemaName) ? "[" + SchemaName + "]." : "") + "[" + TableName + "]"; } }
public static List<String> Fields { get { return new List<String>(fields); } }
public static List<String> FieldsId { get { return new List<String>(fieldsId); } }
public static List<String> FieldsNonId { get { return fields.FindAll(item => !fieldsId.ContainsCI(item)); } }
// Columns.
public ColumnsData Cols { get; } = new ColumnsData();
public Int32 _Id { get { return Cols._Id.Value; } set { Cols._Id.Value = value; } }
public Int32 _UserAccountIdJournalist { get { return Cols._UserAccountIdJournalist.Value; } set { Cols._UserAccountIdJournalist.Value = value; } }
public Int32 _RegionIdPrimary { get { return Cols._RegionIdPrimary.Value; } set { Cols._RegionIdPrimary.Value = value; } }
public Int32 _SportIdPrimary { get { return Cols._SportIdPrimary.Value; } set { Cols._SportIdPrimary.Value = value; } }
public String _Headline { get { return Cols._Headline.Value; } set { Cols._Headline.Value = value; } }
public String _Summary { get { return Cols._Summary.Value; } set { Cols._Summary.Value = value; } }
public String _BodyData { get { return Cols._BodyData.Value; } set { Cols._BodyData.Value = value; } }
public DateTime _PublishedAt { get { return Cols._PublishedAt.Value; } set { Cols._PublishedAt.Value = value; } }
public String _Notes { get { return Cols._Notes.Value; } set { Cols._Notes.Value = value; } }
public Int16 _Flags { get { return Cols._Flags.Value; } set { Cols._Flags.Value = value; } }
public String _Status { get { return Cols._Status.Value; } set { Cols._Status.Value = value; } }
public DateTime _CreateOn { get { return Cols._CreateOn.Value; } set { Cols._CreateOn.Value = value; } }
public Int32 _CreateBy { get { return Cols._CreateBy.Value; } set { Cols._CreateBy.Value = value; } }
public String _CreateHost { get { return Cols._CreateHost.Value; } set { Cols._CreateHost.Value = value; } }
public DateTime _UpdateOn { get { return Cols._UpdateOn.Value; } set { Cols._UpdateOn.Value = value; } }
public Int32 _UpdateBy { get { return Cols._UpdateBy.Value; } set { Cols._UpdateBy.Value = value; } }
public String _UpdateHost { get { return Cols._UpdateHost.Value; } set { Cols._UpdateHost.Value = value; } }
// Existing columns - confirmed on database if table exists.
public List<String> ExistingColumnNames { get { return GetExistingColumnNames(Fields); } }
public List<String> ExistingColumnNamesNonId { get { return GetExistingColumnNames(FieldsNonId); } }
//-------------------------------------------------------------------
// Population.
public override void PopulateFrom (DbCommand dbCommand, String tableAlias, String filter)
{
dbCommand.CommandText =
"SELECT " + ExistingColumnNames.Concat(", ", (!String.IsNullOrEmpty(tableAlias) ? tableAlias + "." : "") + "[", "]") + " " +
"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)
{
_Id = GetFieldInt32(dbDataReader, "Id", _Id);
_UserAccountIdJournalist = GetFieldInt32(dbDataReader, "UserAccountIdJournalist", _UserAccountIdJournalist);
_RegionIdPrimary = GetFieldInt32(dbDataReader, "RegionIdPrimary", _RegionIdPrimary);
_SportIdPrimary = GetFieldInt32(dbDataReader, "SportIdPrimary", _SportIdPrimary);
_Headline = GetFieldString(dbDataReader, "Headline", _Headline);
_Summary = GetFieldString(dbDataReader, "Summary", _Summary);
_BodyData = GetFieldString(dbDataReader, "BodyData", _BodyData);
_PublishedAt = GetFieldDateTime(dbDataReader, "PublishedAt", _PublishedAt);
_Notes = GetFieldString(dbDataReader, "Notes", _Notes);
_Flags = GetFieldInt16(dbDataReader, "Flags", _Flags);
_Status = GetFieldString(dbDataReader, "Status", _Status);
_CreateOn = GetFieldDateTime(dbDataReader, "CreateOn", _CreateOn);
_CreateBy = GetFieldInt32(dbDataReader, "CreateBy", _CreateBy);
_CreateHost = GetFieldString(dbDataReader, "CreateHost", _CreateHost);
_UpdateOn = GetFieldDateTime(dbDataReader, "UpdateOn", _UpdateOn);
_UpdateBy = GetFieldInt32(dbDataReader, "UpdateBy", _UpdateBy);
_UpdateHost = GetFieldString(dbDataReader, "UpdateHost", _UpdateHost);
}
//-------------------------------------------------------------------
// Insert command.
public override bool ExecuteInsertCommand (DbCommand dbCommand)
{
List<String> columnNames = ExistingColumnNamesNonId;
// Avoid insert if Identity field is already valid.
if (_Id != 0) throw new Exception("Invalid for Insert - item already has a valid Id");
// Construct query.
String query =
"INSERT INTO " + TableNameFmt + " " +
"("+columnNames.Concat(",","[","]")+") ";
query += "Output Inserted.Id ";
if (dbCommand is SqlCommand)
query += "VALUES (" + columnNames.Concat(",", "@", "") + ") ";
else query += "VALUES (" + StringListUtil.CreateList("?", columnNames.Count).Concat(",") + ") ";
dbCommand.CommandText = query;
Log(GetType().Name + ".ExecuteInsertCommand", dbCommand.CommandText);
// Populate parameters.
dbCommand.Parameters.Clear();
if (columnNames.ContainsCI("UserAccountIdJournalist")) AddCommandParameter(dbCommand, "@UserAccountIdJournalist", _UserAccountIdJournalist);
if (columnNames.ContainsCI("RegionIdPrimary")) AddCommandParameter(dbCommand, "@RegionIdPrimary", _RegionIdPrimary);
if (columnNames.ContainsCI("SportIdPrimary")) AddCommandParameter(dbCommand, "@SportIdPrimary", _SportIdPrimary);
if (columnNames.ContainsCI("Headline")) AddCommandParameter(dbCommand, "@Headline", _Headline);
if (columnNames.ContainsCI("Summary")) AddCommandParameter(dbCommand, "@Summary", _Summary);
if (columnNames.ContainsCI("BodyData")) AddCommandParameter(dbCommand, "@BodyData", _BodyData);
if (columnNames.ContainsCI("PublishedAt")) AddCommandParameter(dbCommand, "@PublishedAt", _PublishedAt);
if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes);
if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags);
if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status);
if (columnNames.ContainsCI("CreateOn")) AddCommandParameter(dbCommand, "@CreateOn", _CreateOn);
if (columnNames.ContainsCI("CreateBy")) AddCommandParameter(dbCommand, "@CreateBy", _CreateBy);
if (columnNames.ContainsCI("CreateHost")) AddCommandParameter(dbCommand, "@CreateHost", _CreateHost);
if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn);
if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy);
if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost);
// Execute insert command.
bool commandSuccess = false;
int executeNonQuery = dbCommand.ExecuteNonQuery();
if (executeNonQuery == 1)
{
dbCommand.CommandText = "SELECT Max(Id) FROM " + TableNameFmt + ";";
_Id = (Int32)Convert.ToInt64(dbCommand.ExecuteScalar());
commandSuccess = (_Id > 0);
}
return commandSuccess;
}
//-------------------------------------------------------------------
// Update command.
public override bool ExecuteUpdateCommand (DbCommand dbCommand)
{
// Avoid update if Identity field isn't valid.
if (_Id == 0) throw new Exception("Invalid for Update - item has an invalid Id");
// Columns to update.
List<String> columnNames = ExistingColumnNamesNonId.Where(item => !fieldsPrimary.ContainsCI(item) && !fieldsIgnoreOnUpdate.ContainsCI(item)).ToList();
// Construct query.
String query = "UPDATE " + TableNameFmt + " SET ";
if (dbCommand is SqlCommand)
{
query += StringPairList.CreateFrom(columnNames.Bracket("[","]"),columnNames).Concat("=@").Concat(", ") + " ";
query += "WHERE Id=@Id;";
}
else
{
query += columnNames.Concat(", ", "", "=?") + " ";
query += "WHERE Id=?;";
}
dbCommand.CommandText = query;
Log(GetType().Name + ".ExecuteUpdateCommand", dbCommand.CommandText);
// Populate parameters.
dbCommand.Parameters.Clear();
if (columnNames.ContainsCI("UserAccountIdJournalist")) AddCommandParameter(dbCommand, "@UserAccountIdJournalist", _UserAccountIdJournalist);
if (columnNames.ContainsCI("RegionIdPrimary")) AddCommandParameter(dbCommand, "@RegionIdPrimary", _RegionIdPrimary);
if (columnNames.ContainsCI("SportIdPrimary")) AddCommandParameter(dbCommand, "@SportIdPrimary", _SportIdPrimary);
if (columnNames.ContainsCI("Headline")) AddCommandParameter(dbCommand, "@Headline", _Headline);
if (columnNames.ContainsCI("Summary")) AddCommandParameter(dbCommand, "@Summary", _Summary);
if (columnNames.ContainsCI("BodyData")) AddCommandParameter(dbCommand, "@BodyData", _BodyData);
if (columnNames.ContainsCI("PublishedAt")) AddCommandParameter(dbCommand, "@PublishedAt", _PublishedAt);
if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes);
if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags);
if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status);
if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn);
if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy);
if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost);
AddCommandParameter(dbCommand, "@Id", _Id);
int executeNonQueryResult = dbCommand.ExecuteNonQuery();
return (executeNonQueryResult == 1);
}
//-------------------------------------------------------------------
}
}
@@ -0,0 +1,248 @@
using Microsoft.Data.SqlClient;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using Sarand.Net.Standard.Base.Utils;
using Saxonite.Net.Standard.Dbas.Data;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Mon 10-May-2021 16:59:32
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal
{
internal class OrganisationOpportunity_Db : SaxDbDataItem
{
//-------------------------------------------------------------------
// Column definitions.
public class ColumnsData
{
public ColumnDataInt32 _Id { get; } = new ColumnDataInt32("Id", true);
public ColumnDataInt32 _OrganisationId { get; } = new ColumnDataInt32("OrganisationId");
public ColumnDataInt32 _RegionIdPrimary { get; } = new ColumnDataInt32("RegionIdPrimary");
public ColumnDataInt32 _SportIdPrimary { get; } = new ColumnDataInt32("SportIdPrimary");
public ColumnDataString _Position { get; } = new ColumnDataString("Position");
public ColumnDataString _Outline { get; } = new ColumnDataString("Outline");
public ColumnDataString _OpportunityData { get; } = new ColumnDataString("OpportunityData");
public ColumnDataDateTime _PublishedAt { get; } = new ColumnDataDateTime("PublishedAt");
public ColumnDataDateTime _ExpiresAt { get; } = new ColumnDataDateTime("ExpiresAt");
public ColumnDataString _Notes { get; } = new ColumnDataString("Notes");
public ColumnDataInt16 _Flags { get; } = new ColumnDataInt16("Flags");
public ColumnDataString _Status { get; } = new ColumnDataString("Status");
public ColumnDataDateTime _CreateOn { get; } = new ColumnDataDateTime("CreateOn");
public ColumnDataInt32 _CreateBy { get; } = new ColumnDataInt32("CreateBy");
public ColumnDataString _CreateHost { get; } = new ColumnDataString("CreateHost");
public ColumnDataDateTime _UpdateOn { get; } = new ColumnDataDateTime("UpdateOn");
public ColumnDataInt32 _UpdateBy { get; } = new ColumnDataInt32("UpdateBy");
public ColumnDataString _UpdateHost { get; } = new ColumnDataString("UpdateHost");
}
//-------------------------------------------------------------------
// Data members.
protected static List<String> fields { get; } = new List<String>()
{
"Id",
"OrganisationId",
"RegionIdPrimary",
"SportIdPrimary",
"Position",
"Outline",
"OpportunityData",
"PublishedAt",
"ExpiresAt",
"Notes",
"Flags",
"Status",
"CreateOn",
"CreateBy",
"CreateHost",
"UpdateOn",
"UpdateBy",
"UpdateHost",
};
protected static List<String> fieldsId { get; } = new List<String>()
{
"Id",
};
protected static List<String> fieldsPrimary { get; } = new List<String>()
{
"Id",
};
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
{
"CreateOn",
"CreateBy",
"CreateHost",
};
//-------------------------------------------------------------------
// Construction.
internal OrganisationOpportunity_Db (IDatabaseInfo dbInfo) : base(dbInfo)
{
}
//-------------------------------------------------------------------
// Properties.
public override String SchemaName { get; } = "dbo";
public override String TableName { get; } = "OrganisationOpportunity";
public String TableNameFmt { get { return (!String.IsNullOrEmpty(SchemaName) ? "[" + SchemaName + "]." : "") + "[" + TableName + "]"; } }
public static List<String> Fields { get { return new List<String>(fields); } }
public static List<String> FieldsId { get { return new List<String>(fieldsId); } }
public static List<String> FieldsNonId { get { return fields.FindAll(item => !fieldsId.ContainsCI(item)); } }
// Columns.
public ColumnsData Cols { get; } = new ColumnsData();
public Int32 _Id { get { return Cols._Id.Value; } set { Cols._Id.Value = value; } }
public Int32 _OrganisationId { get { return Cols._OrganisationId.Value; } set { Cols._OrganisationId.Value = value; } }
public Int32 _RegionIdPrimary { get { return Cols._RegionIdPrimary.Value; } set { Cols._RegionIdPrimary.Value = value; } }
public Int32 _SportIdPrimary { get { return Cols._SportIdPrimary.Value; } set { Cols._SportIdPrimary.Value = value; } }
public String _Position { get { return Cols._Position.Value; } set { Cols._Position.Value = value; } }
public String _Outline { get { return Cols._Outline.Value; } set { Cols._Outline.Value = value; } }
public String _OpportunityData { get { return Cols._OpportunityData.Value; } set { Cols._OpportunityData.Value = value; } }
public DateTime _PublishedAt { get { return Cols._PublishedAt.Value; } set { Cols._PublishedAt.Value = value; } }
public DateTime _ExpiresAt { get { return Cols._ExpiresAt.Value; } set { Cols._ExpiresAt.Value = value; } }
public String _Notes { get { return Cols._Notes.Value; } set { Cols._Notes.Value = value; } }
public Int16 _Flags { get { return Cols._Flags.Value; } set { Cols._Flags.Value = value; } }
public String _Status { get { return Cols._Status.Value; } set { Cols._Status.Value = value; } }
public DateTime _CreateOn { get { return Cols._CreateOn.Value; } set { Cols._CreateOn.Value = value; } }
public Int32 _CreateBy { get { return Cols._CreateBy.Value; } set { Cols._CreateBy.Value = value; } }
public String _CreateHost { get { return Cols._CreateHost.Value; } set { Cols._CreateHost.Value = value; } }
public DateTime _UpdateOn { get { return Cols._UpdateOn.Value; } set { Cols._UpdateOn.Value = value; } }
public Int32 _UpdateBy { get { return Cols._UpdateBy.Value; } set { Cols._UpdateBy.Value = value; } }
public String _UpdateHost { get { return Cols._UpdateHost.Value; } set { Cols._UpdateHost.Value = value; } }
// Existing columns - confirmed on database if table exists.
public List<String> ExistingColumnNames { get { return GetExistingColumnNames(Fields); } }
public List<String> ExistingColumnNamesNonId { get { return GetExistingColumnNames(FieldsNonId); } }
//-------------------------------------------------------------------
// Population.
public override void PopulateFrom (DbCommand dbCommand, String tableAlias, String filter)
{
dbCommand.CommandText =
"SELECT " + ExistingColumnNames.Concat(", ", (!String.IsNullOrEmpty(tableAlias) ? tableAlias + "." : "") + "[", "]") + " " +
"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)
{
_Id = GetFieldInt32(dbDataReader, "Id", _Id);
_OrganisationId = GetFieldInt32(dbDataReader, "OrganisationId", _OrganisationId);
_RegionIdPrimary = GetFieldInt32(dbDataReader, "RegionIdPrimary", _RegionIdPrimary);
_SportIdPrimary = GetFieldInt32(dbDataReader, "SportIdPrimary", _SportIdPrimary);
_Position = GetFieldString(dbDataReader, "Position", _Position);
_Outline = GetFieldString(dbDataReader, "Outline", _Outline);
_OpportunityData = GetFieldString(dbDataReader, "OpportunityData", _OpportunityData);
_PublishedAt = GetFieldDateTime(dbDataReader, "PublishedAt", _PublishedAt);
_ExpiresAt = GetFieldDateTime(dbDataReader, "ExpiresAt", _ExpiresAt);
_Notes = GetFieldString(dbDataReader, "Notes", _Notes);
_Flags = GetFieldInt16(dbDataReader, "Flags", _Flags);
_Status = GetFieldString(dbDataReader, "Status", _Status);
_CreateOn = GetFieldDateTime(dbDataReader, "CreateOn", _CreateOn);
_CreateBy = GetFieldInt32(dbDataReader, "CreateBy", _CreateBy);
_CreateHost = GetFieldString(dbDataReader, "CreateHost", _CreateHost);
_UpdateOn = GetFieldDateTime(dbDataReader, "UpdateOn", _UpdateOn);
_UpdateBy = GetFieldInt32(dbDataReader, "UpdateBy", _UpdateBy);
_UpdateHost = GetFieldString(dbDataReader, "UpdateHost", _UpdateHost);
}
//-------------------------------------------------------------------
// Insert command.
public override bool ExecuteInsertCommand (DbCommand dbCommand)
{
List<String> columnNames = ExistingColumnNamesNonId;
// Avoid insert if Identity field is already valid.
if (_Id != 0) throw new Exception("Invalid for Insert - item already has a valid Id");
// Construct query.
String query =
"INSERT INTO " + TableNameFmt + " " +
"("+columnNames.Concat(",","[","]")+") ";
query += "Output Inserted.Id ";
if (dbCommand is SqlCommand)
query += "VALUES (" + columnNames.Concat(",", "@", "") + ") ";
else query += "VALUES (" + StringListUtil.CreateList("?", columnNames.Count).Concat(",") + ") ";
dbCommand.CommandText = query;
Log(GetType().Name + ".ExecuteInsertCommand", dbCommand.CommandText);
// Populate parameters.
dbCommand.Parameters.Clear();
if (columnNames.ContainsCI("OrganisationId")) AddCommandParameter(dbCommand, "@OrganisationId", _OrganisationId);
if (columnNames.ContainsCI("RegionIdPrimary")) AddCommandParameter(dbCommand, "@RegionIdPrimary", _RegionIdPrimary);
if (columnNames.ContainsCI("SportIdPrimary")) AddCommandParameter(dbCommand, "@SportIdPrimary", _SportIdPrimary);
if (columnNames.ContainsCI("Position")) AddCommandParameter(dbCommand, "@Position", _Position);
if (columnNames.ContainsCI("Outline")) AddCommandParameter(dbCommand, "@Outline", _Outline);
if (columnNames.ContainsCI("OpportunityData")) AddCommandParameter(dbCommand, "@OpportunityData", _OpportunityData);
if (columnNames.ContainsCI("PublishedAt")) AddCommandParameter(dbCommand, "@PublishedAt", _PublishedAt);
if (columnNames.ContainsCI("ExpiresAt")) AddCommandParameter(dbCommand, "@ExpiresAt", _ExpiresAt);
if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes);
if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags);
if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status);
if (columnNames.ContainsCI("CreateOn")) AddCommandParameter(dbCommand, "@CreateOn", _CreateOn);
if (columnNames.ContainsCI("CreateBy")) AddCommandParameter(dbCommand, "@CreateBy", _CreateBy);
if (columnNames.ContainsCI("CreateHost")) AddCommandParameter(dbCommand, "@CreateHost", _CreateHost);
if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn);
if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy);
if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost);
// Execute insert command.
bool commandSuccess = false;
int executeNonQuery = dbCommand.ExecuteNonQuery();
if (executeNonQuery == 1)
{
dbCommand.CommandText = "SELECT Max(Id) FROM " + TableNameFmt + ";";
_Id = (Int32)Convert.ToInt64(dbCommand.ExecuteScalar());
commandSuccess = (_Id > 0);
}
return commandSuccess;
}
//-------------------------------------------------------------------
// Update command.
public override bool ExecuteUpdateCommand (DbCommand dbCommand)
{
// Avoid update if Identity field isn't valid.
if (_Id == 0) throw new Exception("Invalid for Update - item has an invalid Id");
// Columns to update.
List<String> columnNames = ExistingColumnNamesNonId.Where(item => !fieldsPrimary.ContainsCI(item) && !fieldsIgnoreOnUpdate.ContainsCI(item)).ToList();
// Construct query.
String query = "UPDATE " + TableNameFmt + " SET ";
if (dbCommand is SqlCommand)
{
query += StringPairList.CreateFrom(columnNames.Bracket("[","]"),columnNames).Concat("=@").Concat(", ") + " ";
query += "WHERE Id=@Id;";
}
else
{
query += columnNames.Concat(", ", "", "=?") + " ";
query += "WHERE Id=?;";
}
dbCommand.CommandText = query;
Log(GetType().Name + ".ExecuteUpdateCommand", dbCommand.CommandText);
// Populate parameters.
dbCommand.Parameters.Clear();
if (columnNames.ContainsCI("OrganisationId")) AddCommandParameter(dbCommand, "@OrganisationId", _OrganisationId);
if (columnNames.ContainsCI("RegionIdPrimary")) AddCommandParameter(dbCommand, "@RegionIdPrimary", _RegionIdPrimary);
if (columnNames.ContainsCI("SportIdPrimary")) AddCommandParameter(dbCommand, "@SportIdPrimary", _SportIdPrimary);
if (columnNames.ContainsCI("Position")) AddCommandParameter(dbCommand, "@Position", _Position);
if (columnNames.ContainsCI("Outline")) AddCommandParameter(dbCommand, "@Outline", _Outline);
if (columnNames.ContainsCI("OpportunityData")) AddCommandParameter(dbCommand, "@OpportunityData", _OpportunityData);
if (columnNames.ContainsCI("PublishedAt")) AddCommandParameter(dbCommand, "@PublishedAt", _PublishedAt);
if (columnNames.ContainsCI("ExpiresAt")) AddCommandParameter(dbCommand, "@ExpiresAt", _ExpiresAt);
if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes);
if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags);
if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status);
if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn);
if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy);
if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost);
AddCommandParameter(dbCommand, "@Id", _Id);
int executeNonQueryResult = dbCommand.ExecuteNonQuery();
return (executeNonQueryResult == 1);
}
//-------------------------------------------------------------------
}
}
@@ -0,0 +1,248 @@
using Microsoft.Data.SqlClient;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using Sarand.Net.Standard.Base.Utils;
using Saxonite.Net.Standard.Dbas.Data;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Mon 10-May-2021 16:59:32
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal
{
internal class Organisation_Db : SaxDbDataItem
{
//-------------------------------------------------------------------
// Column definitions.
public class ColumnsData
{
public ColumnDataInt32 _Id { get; } = new ColumnDataInt32("Id", true);
public ColumnDataString _Name { get; } = new ColumnDataString("Name");
public ColumnDataString _OrganisationType { get; } = new ColumnDataString("OrganisationType");
public ColumnDataString _OrganisationCategory { get; } = new ColumnDataString("OrganisationCategory");
public ColumnDataInt32 _RegionIdPrimary { get; } = new ColumnDataInt32("RegionIdPrimary");
public ColumnDataInt32 _SportIdPrimary { get; } = new ColumnDataInt32("SportIdPrimary");
public ColumnDataString _CountryIso2Code { get; } = new ColumnDataString("CountryIso2Code");
public ColumnDataString _PhoneMain { get; } = new ColumnDataString("PhoneMain");
public ColumnDataString _PhoneAlt { get; } = new ColumnDataString("PhoneAlt");
public ColumnDataString _Notes { get; } = new ColumnDataString("Notes");
public ColumnDataInt16 _Flags { get; } = new ColumnDataInt16("Flags");
public ColumnDataString _Status { get; } = new ColumnDataString("Status");
public ColumnDataDateTime _CreateOn { get; } = new ColumnDataDateTime("CreateOn");
public ColumnDataInt32 _CreateBy { get; } = new ColumnDataInt32("CreateBy");
public ColumnDataString _CreateHost { get; } = new ColumnDataString("CreateHost");
public ColumnDataDateTime _UpdateOn { get; } = new ColumnDataDateTime("UpdateOn");
public ColumnDataInt32 _UpdateBy { get; } = new ColumnDataInt32("UpdateBy");
public ColumnDataString _UpdateHost { get; } = new ColumnDataString("UpdateHost");
}
//-------------------------------------------------------------------
// Data members.
protected static List<String> fields { get; } = new List<String>()
{
"Id",
"Name",
"OrganisationType",
"OrganisationCategory",
"RegionIdPrimary",
"SportIdPrimary",
"CountryIso2Code",
"PhoneMain",
"PhoneAlt",
"Notes",
"Flags",
"Status",
"CreateOn",
"CreateBy",
"CreateHost",
"UpdateOn",
"UpdateBy",
"UpdateHost",
};
protected static List<String> fieldsId { get; } = new List<String>()
{
"Id",
};
protected static List<String> fieldsPrimary { get; } = new List<String>()
{
"Id",
};
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
{
"CreateOn",
"CreateBy",
"CreateHost",
};
//-------------------------------------------------------------------
// Construction.
internal Organisation_Db (IDatabaseInfo dbInfo) : base(dbInfo)
{
}
//-------------------------------------------------------------------
// Properties.
public override String SchemaName { get; } = "dbo";
public override String TableName { get; } = "Organisation";
public String TableNameFmt { get { return (!String.IsNullOrEmpty(SchemaName) ? "[" + SchemaName + "]." : "") + "[" + TableName + "]"; } }
public static List<String> Fields { get { return new List<String>(fields); } }
public static List<String> FieldsId { get { return new List<String>(fieldsId); } }
public static List<String> FieldsNonId { get { return fields.FindAll(item => !fieldsId.ContainsCI(item)); } }
// Columns.
public ColumnsData Cols { get; } = new ColumnsData();
public Int32 _Id { get { return Cols._Id.Value; } set { Cols._Id.Value = value; } }
public String _Name { get { return Cols._Name.Value; } set { Cols._Name.Value = value; } }
public String _OrganisationType { get { return Cols._OrganisationType.Value; } set { Cols._OrganisationType.Value = value; } }
public String _OrganisationCategory { get { return Cols._OrganisationCategory.Value; } set { Cols._OrganisationCategory.Value = value; } }
public Int32 _RegionIdPrimary { get { return Cols._RegionIdPrimary.Value; } set { Cols._RegionIdPrimary.Value = value; } }
public Int32 _SportIdPrimary { get { return Cols._SportIdPrimary.Value; } set { Cols._SportIdPrimary.Value = value; } }
public String _CountryIso2Code { get { return Cols._CountryIso2Code.Value; } set { Cols._CountryIso2Code.Value = value; } }
public String _PhoneMain { get { return Cols._PhoneMain.Value; } set { Cols._PhoneMain.Value = value; } }
public String _PhoneAlt { get { return Cols._PhoneAlt.Value; } set { Cols._PhoneAlt.Value = value; } }
public String _Notes { get { return Cols._Notes.Value; } set { Cols._Notes.Value = value; } }
public Int16 _Flags { get { return Cols._Flags.Value; } set { Cols._Flags.Value = value; } }
public String _Status { get { return Cols._Status.Value; } set { Cols._Status.Value = value; } }
public DateTime _CreateOn { get { return Cols._CreateOn.Value; } set { Cols._CreateOn.Value = value; } }
public Int32 _CreateBy { get { return Cols._CreateBy.Value; } set { Cols._CreateBy.Value = value; } }
public String _CreateHost { get { return Cols._CreateHost.Value; } set { Cols._CreateHost.Value = value; } }
public DateTime _UpdateOn { get { return Cols._UpdateOn.Value; } set { Cols._UpdateOn.Value = value; } }
public Int32 _UpdateBy { get { return Cols._UpdateBy.Value; } set { Cols._UpdateBy.Value = value; } }
public String _UpdateHost { get { return Cols._UpdateHost.Value; } set { Cols._UpdateHost.Value = value; } }
// Existing columns - confirmed on database if table exists.
public List<String> ExistingColumnNames { get { return GetExistingColumnNames(Fields); } }
public List<String> ExistingColumnNamesNonId { get { return GetExistingColumnNames(FieldsNonId); } }
//-------------------------------------------------------------------
// Population.
public override void PopulateFrom (DbCommand dbCommand, String tableAlias, String filter)
{
dbCommand.CommandText =
"SELECT " + ExistingColumnNames.Concat(", ", (!String.IsNullOrEmpty(tableAlias) ? tableAlias + "." : "") + "[", "]") + " " +
"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)
{
_Id = GetFieldInt32(dbDataReader, "Id", _Id);
_Name = GetFieldString(dbDataReader, "Name", _Name);
_OrganisationType = GetFieldString(dbDataReader, "OrganisationType", _OrganisationType);
_OrganisationCategory = GetFieldString(dbDataReader, "OrganisationCategory", _OrganisationCategory);
_RegionIdPrimary = GetFieldInt32(dbDataReader, "RegionIdPrimary", _RegionIdPrimary);
_SportIdPrimary = GetFieldInt32(dbDataReader, "SportIdPrimary", _SportIdPrimary);
_CountryIso2Code = GetFieldString(dbDataReader, "CountryIso2Code", _CountryIso2Code);
_PhoneMain = GetFieldString(dbDataReader, "PhoneMain", _PhoneMain);
_PhoneAlt = GetFieldString(dbDataReader, "PhoneAlt", _PhoneAlt);
_Notes = GetFieldString(dbDataReader, "Notes", _Notes);
_Flags = GetFieldInt16(dbDataReader, "Flags", _Flags);
_Status = GetFieldString(dbDataReader, "Status", _Status);
_CreateOn = GetFieldDateTime(dbDataReader, "CreateOn", _CreateOn);
_CreateBy = GetFieldInt32(dbDataReader, "CreateBy", _CreateBy);
_CreateHost = GetFieldString(dbDataReader, "CreateHost", _CreateHost);
_UpdateOn = GetFieldDateTime(dbDataReader, "UpdateOn", _UpdateOn);
_UpdateBy = GetFieldInt32(dbDataReader, "UpdateBy", _UpdateBy);
_UpdateHost = GetFieldString(dbDataReader, "UpdateHost", _UpdateHost);
}
//-------------------------------------------------------------------
// Insert command.
public override bool ExecuteInsertCommand (DbCommand dbCommand)
{
List<String> columnNames = ExistingColumnNamesNonId;
// Avoid insert if Identity field is already valid.
if (_Id != 0) throw new Exception("Invalid for Insert - item already has a valid Id");
// Construct query.
String query =
"INSERT INTO " + TableNameFmt + " " +
"("+columnNames.Concat(",","[","]")+") ";
query += "Output Inserted.Id ";
if (dbCommand is SqlCommand)
query += "VALUES (" + columnNames.Concat(",", "@", "") + ") ";
else query += "VALUES (" + StringListUtil.CreateList("?", columnNames.Count).Concat(",") + ") ";
dbCommand.CommandText = query;
Log(GetType().Name + ".ExecuteInsertCommand", dbCommand.CommandText);
// Populate parameters.
dbCommand.Parameters.Clear();
if (columnNames.ContainsCI("Name")) AddCommandParameter(dbCommand, "@Name", _Name);
if (columnNames.ContainsCI("OrganisationType")) AddCommandParameter(dbCommand, "@OrganisationType", _OrganisationType);
if (columnNames.ContainsCI("OrganisationCategory")) AddCommandParameter(dbCommand, "@OrganisationCategory", _OrganisationCategory);
if (columnNames.ContainsCI("RegionIdPrimary")) AddCommandParameter(dbCommand, "@RegionIdPrimary", _RegionIdPrimary);
if (columnNames.ContainsCI("SportIdPrimary")) AddCommandParameter(dbCommand, "@SportIdPrimary", _SportIdPrimary);
if (columnNames.ContainsCI("CountryIso2Code")) AddCommandParameter(dbCommand, "@CountryIso2Code", _CountryIso2Code);
if (columnNames.ContainsCI("PhoneMain")) AddCommandParameter(dbCommand, "@PhoneMain", _PhoneMain);
if (columnNames.ContainsCI("PhoneAlt")) AddCommandParameter(dbCommand, "@PhoneAlt", _PhoneAlt);
if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes);
if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags);
if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status);
if (columnNames.ContainsCI("CreateOn")) AddCommandParameter(dbCommand, "@CreateOn", _CreateOn);
if (columnNames.ContainsCI("CreateBy")) AddCommandParameter(dbCommand, "@CreateBy", _CreateBy);
if (columnNames.ContainsCI("CreateHost")) AddCommandParameter(dbCommand, "@CreateHost", _CreateHost);
if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn);
if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy);
if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost);
// Execute insert command.
bool commandSuccess = false;
int executeNonQuery = dbCommand.ExecuteNonQuery();
if (executeNonQuery == 1)
{
dbCommand.CommandText = "SELECT Max(Id) FROM " + TableNameFmt + ";";
_Id = (Int32)Convert.ToInt64(dbCommand.ExecuteScalar());
commandSuccess = (_Id > 0);
}
return commandSuccess;
}
//-------------------------------------------------------------------
// Update command.
public override bool ExecuteUpdateCommand (DbCommand dbCommand)
{
// Avoid update if Identity field isn't valid.
if (_Id == 0) throw new Exception("Invalid for Update - item has an invalid Id");
// Columns to update.
List<String> columnNames = ExistingColumnNamesNonId.Where(item => !fieldsPrimary.ContainsCI(item) && !fieldsIgnoreOnUpdate.ContainsCI(item)).ToList();
// Construct query.
String query = "UPDATE " + TableNameFmt + " SET ";
if (dbCommand is SqlCommand)
{
query += StringPairList.CreateFrom(columnNames.Bracket("[","]"),columnNames).Concat("=@").Concat(", ") + " ";
query += "WHERE Id=@Id;";
}
else
{
query += columnNames.Concat(", ", "", "=?") + " ";
query += "WHERE Id=?;";
}
dbCommand.CommandText = query;
Log(GetType().Name + ".ExecuteUpdateCommand", dbCommand.CommandText);
// Populate parameters.
dbCommand.Parameters.Clear();
if (columnNames.ContainsCI("Name")) AddCommandParameter(dbCommand, "@Name", _Name);
if (columnNames.ContainsCI("OrganisationType")) AddCommandParameter(dbCommand, "@OrganisationType", _OrganisationType);
if (columnNames.ContainsCI("OrganisationCategory")) AddCommandParameter(dbCommand, "@OrganisationCategory", _OrganisationCategory);
if (columnNames.ContainsCI("RegionIdPrimary")) AddCommandParameter(dbCommand, "@RegionIdPrimary", _RegionIdPrimary);
if (columnNames.ContainsCI("SportIdPrimary")) AddCommandParameter(dbCommand, "@SportIdPrimary", _SportIdPrimary);
if (columnNames.ContainsCI("CountryIso2Code")) AddCommandParameter(dbCommand, "@CountryIso2Code", _CountryIso2Code);
if (columnNames.ContainsCI("PhoneMain")) AddCommandParameter(dbCommand, "@PhoneMain", _PhoneMain);
if (columnNames.ContainsCI("PhoneAlt")) AddCommandParameter(dbCommand, "@PhoneAlt", _PhoneAlt);
if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes);
if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags);
if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status);
if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn);
if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy);
if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost);
AddCommandParameter(dbCommand, "@Id", _Id);
int executeNonQueryResult = dbCommand.ExecuteNonQuery();
return (executeNonQueryResult == 1);
}
//-------------------------------------------------------------------
}
}
@@ -0,0 +1,236 @@
using Microsoft.Data.SqlClient;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using Sarand.Net.Standard.Base.Utils;
using Saxonite.Net.Standard.Dbas.Data;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Mon 10-May-2021 16:59:32
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal
{
internal class Region_Db : SaxDbDataItem
{
//-------------------------------------------------------------------
// Column definitions.
public class ColumnsData
{
public ColumnDataInt32 _Id { get; } = new ColumnDataInt32("Id", true);
public ColumnDataInt16 _RegionType { get; } = new ColumnDataInt16("RegionType");
public ColumnDataString _CountryIso2Code { get; } = new ColumnDataString("CountryIso2Code");
public ColumnDataString _Name { get; } = new ColumnDataString("Name");
public ColumnDataDecimal _Latitude { get; } = new ColumnDataDecimal("Latitude");
public ColumnDataDecimal _Longitude { get; } = new ColumnDataDecimal("Longitude");
public ColumnDataInt32 _RegionIdParent { get; } = new ColumnDataInt32("RegionIdParent");
public ColumnDataString _Notes { get; } = new ColumnDataString("Notes");
public ColumnDataInt16 _Flags { get; } = new ColumnDataInt16("Flags");
public ColumnDataString _Status { get; } = new ColumnDataString("Status");
public ColumnDataDateTime _CreateOn { get; } = new ColumnDataDateTime("CreateOn");
public ColumnDataInt32 _CreateBy { get; } = new ColumnDataInt32("CreateBy");
public ColumnDataString _CreateHost { get; } = new ColumnDataString("CreateHost");
public ColumnDataDateTime _UpdateOn { get; } = new ColumnDataDateTime("UpdateOn");
public ColumnDataInt32 _UpdateBy { get; } = new ColumnDataInt32("UpdateBy");
public ColumnDataString _UpdateHost { get; } = new ColumnDataString("UpdateHost");
}
//-------------------------------------------------------------------
// Data members.
protected static List<String> fields { get; } = new List<String>()
{
"Id",
"RegionType",
"CountryIso2Code",
"Name",
"Latitude",
"Longitude",
"RegionIdParent",
"Notes",
"Flags",
"Status",
"CreateOn",
"CreateBy",
"CreateHost",
"UpdateOn",
"UpdateBy",
"UpdateHost",
};
protected static List<String> fieldsId { get; } = new List<String>()
{
"Id",
};
protected static List<String> fieldsPrimary { get; } = new List<String>()
{
"Id",
};
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
{
"CreateOn",
"CreateBy",
"CreateHost",
};
//-------------------------------------------------------------------
// Construction.
internal Region_Db (IDatabaseInfo dbInfo) : base(dbInfo)
{
}
//-------------------------------------------------------------------
// Properties.
public override String SchemaName { get; } = "dbo";
public override String TableName { get; } = "Region";
public String TableNameFmt { get { return (!String.IsNullOrEmpty(SchemaName) ? "[" + SchemaName + "]." : "") + "[" + TableName + "]"; } }
public static List<String> Fields { get { return new List<String>(fields); } }
public static List<String> FieldsId { get { return new List<String>(fieldsId); } }
public static List<String> FieldsNonId { get { return fields.FindAll(item => !fieldsId.ContainsCI(item)); } }
// Columns.
public ColumnsData Cols { get; } = new ColumnsData();
public Int32 _Id { get { return Cols._Id.Value; } set { Cols._Id.Value = value; } }
public Int16 _RegionType { get { return Cols._RegionType.Value; } set { Cols._RegionType.Value = value; } }
public String _CountryIso2Code { get { return Cols._CountryIso2Code.Value; } set { Cols._CountryIso2Code.Value = value; } }
public String _Name { get { return Cols._Name.Value; } set { Cols._Name.Value = value; } }
public Decimal _Latitude { get { return Cols._Latitude.Value; } set { Cols._Latitude.Value = value; } }
public Decimal _Longitude { get { return Cols._Longitude.Value; } set { Cols._Longitude.Value = value; } }
public Int32 _RegionIdParent { get { return Cols._RegionIdParent.Value; } set { Cols._RegionIdParent.Value = value; } }
public String _Notes { get { return Cols._Notes.Value; } set { Cols._Notes.Value = value; } }
public Int16 _Flags { get { return Cols._Flags.Value; } set { Cols._Flags.Value = value; } }
public String _Status { get { return Cols._Status.Value; } set { Cols._Status.Value = value; } }
public DateTime _CreateOn { get { return Cols._CreateOn.Value; } set { Cols._CreateOn.Value = value; } }
public Int32 _CreateBy { get { return Cols._CreateBy.Value; } set { Cols._CreateBy.Value = value; } }
public String _CreateHost { get { return Cols._CreateHost.Value; } set { Cols._CreateHost.Value = value; } }
public DateTime _UpdateOn { get { return Cols._UpdateOn.Value; } set { Cols._UpdateOn.Value = value; } }
public Int32 _UpdateBy { get { return Cols._UpdateBy.Value; } set { Cols._UpdateBy.Value = value; } }
public String _UpdateHost { get { return Cols._UpdateHost.Value; } set { Cols._UpdateHost.Value = value; } }
// Existing columns - confirmed on database if table exists.
public List<String> ExistingColumnNames { get { return GetExistingColumnNames(Fields); } }
public List<String> ExistingColumnNamesNonId { get { return GetExistingColumnNames(FieldsNonId); } }
//-------------------------------------------------------------------
// Population.
public override void PopulateFrom (DbCommand dbCommand, String tableAlias, String filter)
{
dbCommand.CommandText =
"SELECT " + ExistingColumnNames.Concat(", ", (!String.IsNullOrEmpty(tableAlias) ? tableAlias + "." : "") + "[", "]") + " " +
"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)
{
_Id = GetFieldInt32(dbDataReader, "Id", _Id);
_RegionType = GetFieldInt16(dbDataReader, "RegionType", _RegionType);
_CountryIso2Code = GetFieldString(dbDataReader, "CountryIso2Code", _CountryIso2Code);
_Name = GetFieldString(dbDataReader, "Name", _Name);
_Latitude = GetFieldDecimal(dbDataReader, "Latitude", _Latitude);
_Longitude = GetFieldDecimal(dbDataReader, "Longitude", _Longitude);
_RegionIdParent = GetFieldInt32(dbDataReader, "RegionIdParent", _RegionIdParent);
_Notes = GetFieldString(dbDataReader, "Notes", _Notes);
_Flags = GetFieldInt16(dbDataReader, "Flags", _Flags);
_Status = GetFieldString(dbDataReader, "Status", _Status);
_CreateOn = GetFieldDateTime(dbDataReader, "CreateOn", _CreateOn);
_CreateBy = GetFieldInt32(dbDataReader, "CreateBy", _CreateBy);
_CreateHost = GetFieldString(dbDataReader, "CreateHost", _CreateHost);
_UpdateOn = GetFieldDateTime(dbDataReader, "UpdateOn", _UpdateOn);
_UpdateBy = GetFieldInt32(dbDataReader, "UpdateBy", _UpdateBy);
_UpdateHost = GetFieldString(dbDataReader, "UpdateHost", _UpdateHost);
}
//-------------------------------------------------------------------
// Insert command.
public override bool ExecuteInsertCommand (DbCommand dbCommand)
{
List<String> columnNames = ExistingColumnNamesNonId;
// Avoid insert if Identity field is already valid.
if (_Id != 0) throw new Exception("Invalid for Insert - item already has a valid Id");
// Construct query.
String query =
"INSERT INTO " + TableNameFmt + " " +
"("+columnNames.Concat(",","[","]")+") ";
query += "Output Inserted.Id ";
if (dbCommand is SqlCommand)
query += "VALUES (" + columnNames.Concat(",", "@", "") + ") ";
else query += "VALUES (" + StringListUtil.CreateList("?", columnNames.Count).Concat(",") + ") ";
dbCommand.CommandText = query;
Log(GetType().Name + ".ExecuteInsertCommand", dbCommand.CommandText);
// Populate parameters.
dbCommand.Parameters.Clear();
if (columnNames.ContainsCI("RegionType")) AddCommandParameter(dbCommand, "@RegionType", _RegionType);
if (columnNames.ContainsCI("CountryIso2Code")) AddCommandParameter(dbCommand, "@CountryIso2Code", _CountryIso2Code);
if (columnNames.ContainsCI("Name")) AddCommandParameter(dbCommand, "@Name", _Name);
if (columnNames.ContainsCI("Latitude")) AddCommandParameter(dbCommand, "@Latitude", _Latitude);
if (columnNames.ContainsCI("Longitude")) AddCommandParameter(dbCommand, "@Longitude", _Longitude);
if (columnNames.ContainsCI("RegionIdParent")) AddCommandParameter(dbCommand, "@RegionIdParent", _RegionIdParent);
if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes);
if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags);
if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status);
if (columnNames.ContainsCI("CreateOn")) AddCommandParameter(dbCommand, "@CreateOn", _CreateOn);
if (columnNames.ContainsCI("CreateBy")) AddCommandParameter(dbCommand, "@CreateBy", _CreateBy);
if (columnNames.ContainsCI("CreateHost")) AddCommandParameter(dbCommand, "@CreateHost", _CreateHost);
if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn);
if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy);
if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost);
// Execute insert command.
bool commandSuccess = false;
int executeNonQuery = dbCommand.ExecuteNonQuery();
if (executeNonQuery == 1)
{
dbCommand.CommandText = "SELECT Max(Id) FROM " + TableNameFmt + ";";
_Id = (Int32)Convert.ToInt64(dbCommand.ExecuteScalar());
commandSuccess = (_Id > 0);
}
return commandSuccess;
}
//-------------------------------------------------------------------
// Update command.
public override bool ExecuteUpdateCommand (DbCommand dbCommand)
{
// Avoid update if Identity field isn't valid.
if (_Id == 0) throw new Exception("Invalid for Update - item has an invalid Id");
// Columns to update.
List<String> columnNames = ExistingColumnNamesNonId.Where(item => !fieldsPrimary.ContainsCI(item) && !fieldsIgnoreOnUpdate.ContainsCI(item)).ToList();
// Construct query.
String query = "UPDATE " + TableNameFmt + " SET ";
if (dbCommand is SqlCommand)
{
query += StringPairList.CreateFrom(columnNames.Bracket("[","]"),columnNames).Concat("=@").Concat(", ") + " ";
query += "WHERE Id=@Id;";
}
else
{
query += columnNames.Concat(", ", "", "=?") + " ";
query += "WHERE Id=?;";
}
dbCommand.CommandText = query;
Log(GetType().Name + ".ExecuteUpdateCommand", dbCommand.CommandText);
// Populate parameters.
dbCommand.Parameters.Clear();
if (columnNames.ContainsCI("RegionType")) AddCommandParameter(dbCommand, "@RegionType", _RegionType);
if (columnNames.ContainsCI("CountryIso2Code")) AddCommandParameter(dbCommand, "@CountryIso2Code", _CountryIso2Code);
if (columnNames.ContainsCI("Name")) AddCommandParameter(dbCommand, "@Name", _Name);
if (columnNames.ContainsCI("Latitude")) AddCommandParameter(dbCommand, "@Latitude", _Latitude);
if (columnNames.ContainsCI("Longitude")) AddCommandParameter(dbCommand, "@Longitude", _Longitude);
if (columnNames.ContainsCI("RegionIdParent")) AddCommandParameter(dbCommand, "@RegionIdParent", _RegionIdParent);
if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes);
if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags);
if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status);
if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn);
if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy);
if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost);
AddCommandParameter(dbCommand, "@Id", _Id);
int executeNonQueryResult = dbCommand.ExecuteNonQuery();
return (executeNonQueryResult == 1);
}
//-------------------------------------------------------------------
}
}
@@ -0,0 +1,206 @@
using Microsoft.Data.SqlClient;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using Sarand.Net.Standard.Base.Utils;
using Saxonite.Net.Standard.Dbas.Data;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Mon 10-May-2021 16:59:32
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal
{
internal class Sport_Db : SaxDbDataItem
{
//-------------------------------------------------------------------
// Column definitions.
public class ColumnsData
{
public ColumnDataInt32 _Id { get; } = new ColumnDataInt32("Id", true);
public ColumnDataString _Name { get; } = new ColumnDataString("Name");
public ColumnDataString _Notes { get; } = new ColumnDataString("Notes");
public ColumnDataInt16 _Flags { get; } = new ColumnDataInt16("Flags");
public ColumnDataString _Status { get; } = new ColumnDataString("Status");
public ColumnDataDateTime _CreateOn { get; } = new ColumnDataDateTime("CreateOn");
public ColumnDataInt32 _CreateBy { get; } = new ColumnDataInt32("CreateBy");
public ColumnDataString _CreateHost { get; } = new ColumnDataString("CreateHost");
public ColumnDataDateTime _UpdateOn { get; } = new ColumnDataDateTime("UpdateOn");
public ColumnDataInt32 _UpdateBy { get; } = new ColumnDataInt32("UpdateBy");
public ColumnDataString _UpdateHost { get; } = new ColumnDataString("UpdateHost");
}
//-------------------------------------------------------------------
// Data members.
protected static List<String> fields { get; } = new List<String>()
{
"Id",
"Name",
"Notes",
"Flags",
"Status",
"CreateOn",
"CreateBy",
"CreateHost",
"UpdateOn",
"UpdateBy",
"UpdateHost",
};
protected static List<String> fieldsId { get; } = new List<String>()
{
"Id",
};
protected static List<String> fieldsPrimary { get; } = new List<String>()
{
"Id",
};
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
{
"CreateOn",
"CreateBy",
"CreateHost",
};
//-------------------------------------------------------------------
// Construction.
internal Sport_Db (IDatabaseInfo dbInfo) : base(dbInfo)
{
}
//-------------------------------------------------------------------
// Properties.
public override String SchemaName { get; } = "dbo";
public override String TableName { get; } = "Sport";
public String TableNameFmt { get { return (!String.IsNullOrEmpty(SchemaName) ? "[" + SchemaName + "]." : "") + "[" + TableName + "]"; } }
public static List<String> Fields { get { return new List<String>(fields); } }
public static List<String> FieldsId { get { return new List<String>(fieldsId); } }
public static List<String> FieldsNonId { get { return fields.FindAll(item => !fieldsId.ContainsCI(item)); } }
// Columns.
public ColumnsData Cols { get; } = new ColumnsData();
public Int32 _Id { get { return Cols._Id.Value; } set { Cols._Id.Value = value; } }
public String _Name { get { return Cols._Name.Value; } set { Cols._Name.Value = value; } }
public String _Notes { get { return Cols._Notes.Value; } set { Cols._Notes.Value = value; } }
public Int16 _Flags { get { return Cols._Flags.Value; } set { Cols._Flags.Value = value; } }
public String _Status { get { return Cols._Status.Value; } set { Cols._Status.Value = value; } }
public DateTime _CreateOn { get { return Cols._CreateOn.Value; } set { Cols._CreateOn.Value = value; } }
public Int32 _CreateBy { get { return Cols._CreateBy.Value; } set { Cols._CreateBy.Value = value; } }
public String _CreateHost { get { return Cols._CreateHost.Value; } set { Cols._CreateHost.Value = value; } }
public DateTime _UpdateOn { get { return Cols._UpdateOn.Value; } set { Cols._UpdateOn.Value = value; } }
public Int32 _UpdateBy { get { return Cols._UpdateBy.Value; } set { Cols._UpdateBy.Value = value; } }
public String _UpdateHost { get { return Cols._UpdateHost.Value; } set { Cols._UpdateHost.Value = value; } }
// Existing columns - confirmed on database if table exists.
public List<String> ExistingColumnNames { get { return GetExistingColumnNames(Fields); } }
public List<String> ExistingColumnNamesNonId { get { return GetExistingColumnNames(FieldsNonId); } }
//-------------------------------------------------------------------
// Population.
public override void PopulateFrom (DbCommand dbCommand, String tableAlias, String filter)
{
dbCommand.CommandText =
"SELECT " + ExistingColumnNames.Concat(", ", (!String.IsNullOrEmpty(tableAlias) ? tableAlias + "." : "") + "[", "]") + " " +
"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)
{
_Id = GetFieldInt32(dbDataReader, "Id", _Id);
_Name = GetFieldString(dbDataReader, "Name", _Name);
_Notes = GetFieldString(dbDataReader, "Notes", _Notes);
_Flags = GetFieldInt16(dbDataReader, "Flags", _Flags);
_Status = GetFieldString(dbDataReader, "Status", _Status);
_CreateOn = GetFieldDateTime(dbDataReader, "CreateOn", _CreateOn);
_CreateBy = GetFieldInt32(dbDataReader, "CreateBy", _CreateBy);
_CreateHost = GetFieldString(dbDataReader, "CreateHost", _CreateHost);
_UpdateOn = GetFieldDateTime(dbDataReader, "UpdateOn", _UpdateOn);
_UpdateBy = GetFieldInt32(dbDataReader, "UpdateBy", _UpdateBy);
_UpdateHost = GetFieldString(dbDataReader, "UpdateHost", _UpdateHost);
}
//-------------------------------------------------------------------
// Insert command.
public override bool ExecuteInsertCommand (DbCommand dbCommand)
{
List<String> columnNames = ExistingColumnNamesNonId;
// Avoid insert if Identity field is already valid.
if (_Id != 0) throw new Exception("Invalid for Insert - item already has a valid Id");
// Construct query.
String query =
"INSERT INTO " + TableNameFmt + " " +
"("+columnNames.Concat(",","[","]")+") ";
query += "Output Inserted.Id ";
if (dbCommand is SqlCommand)
query += "VALUES (" + columnNames.Concat(",", "@", "") + ") ";
else query += "VALUES (" + StringListUtil.CreateList("?", columnNames.Count).Concat(",") + ") ";
dbCommand.CommandText = query;
Log(GetType().Name + ".ExecuteInsertCommand", dbCommand.CommandText);
// Populate parameters.
dbCommand.Parameters.Clear();
if (columnNames.ContainsCI("Name")) AddCommandParameter(dbCommand, "@Name", _Name);
if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes);
if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags);
if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status);
if (columnNames.ContainsCI("CreateOn")) AddCommandParameter(dbCommand, "@CreateOn", _CreateOn);
if (columnNames.ContainsCI("CreateBy")) AddCommandParameter(dbCommand, "@CreateBy", _CreateBy);
if (columnNames.ContainsCI("CreateHost")) AddCommandParameter(dbCommand, "@CreateHost", _CreateHost);
if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn);
if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy);
if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost);
// Execute insert command.
bool commandSuccess = false;
int executeNonQuery = dbCommand.ExecuteNonQuery();
if (executeNonQuery == 1)
{
dbCommand.CommandText = "SELECT Max(Id) FROM " + TableNameFmt + ";";
_Id = (Int32)Convert.ToInt64(dbCommand.ExecuteScalar());
commandSuccess = (_Id > 0);
}
return commandSuccess;
}
//-------------------------------------------------------------------
// Update command.
public override bool ExecuteUpdateCommand (DbCommand dbCommand)
{
// Avoid update if Identity field isn't valid.
if (_Id == 0) throw new Exception("Invalid for Update - item has an invalid Id");
// Columns to update.
List<String> columnNames = ExistingColumnNamesNonId.Where(item => !fieldsPrimary.ContainsCI(item) && !fieldsIgnoreOnUpdate.ContainsCI(item)).ToList();
// Construct query.
String query = "UPDATE " + TableNameFmt + " SET ";
if (dbCommand is SqlCommand)
{
query += StringPairList.CreateFrom(columnNames.Bracket("[","]"),columnNames).Concat("=@").Concat(", ") + " ";
query += "WHERE Id=@Id;";
}
else
{
query += columnNames.Concat(", ", "", "=?") + " ";
query += "WHERE Id=?;";
}
dbCommand.CommandText = query;
Log(GetType().Name + ".ExecuteUpdateCommand", dbCommand.CommandText);
// Populate parameters.
dbCommand.Parameters.Clear();
if (columnNames.ContainsCI("Name")) AddCommandParameter(dbCommand, "@Name", _Name);
if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes);
if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags);
if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status);
if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn);
if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy);
if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost);
AddCommandParameter(dbCommand, "@Id", _Id);
int executeNonQueryResult = dbCommand.ExecuteNonQuery();
return (executeNonQueryResult == 1);
}
//-------------------------------------------------------------------
}
}
@@ -0,0 +1,296 @@
using Microsoft.Data.SqlClient;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using Sarand.Net.Standard.Base.Utils;
using Saxonite.Net.Standard.Dbas.Data;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Mon 10-May-2021 16:59:32
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal
{
internal class UserAccount_Db : SaxDbDataItem
{
//-------------------------------------------------------------------
// Column definitions.
public class ColumnsData
{
public ColumnDataInt32 _Id { get; } = new ColumnDataInt32("Id", true);
public ColumnDataString _EmailAddress { get; } = new ColumnDataString("EmailAddress");
public ColumnDataString _Title { get; } = new ColumnDataString("Title");
public ColumnDataString _FirstName { get; } = new ColumnDataString("FirstName");
public ColumnDataString _Initials { get; } = new ColumnDataString("Initials");
public ColumnDataString _LastName { get; } = new ColumnDataString("LastName");
public ColumnDataString _PhoneMain { get; } = new ColumnDataString("PhoneMain");
public ColumnDataString _PhoneMobile { get; } = new ColumnDataString("PhoneMobile");
public ColumnDataString _PhoneAlt { get; } = new ColumnDataString("PhoneAlt");
public ColumnDataDateTime _DateOfBirth { get; } = new ColumnDataDateTime("DateOfBirth");
public ColumnDataString _PasswordToken { get; } = new ColumnDataString("PasswordToken");
public ColumnDataString _PasswordHashed { get; } = new ColumnDataString("PasswordHashed");
public ColumnDataString _PasswordHistory { get; } = new ColumnDataString("PasswordHistory");
public ColumnDataDateTime _PasswordChangedAt { get; } = new ColumnDataDateTime("PasswordChangedAt");
public ColumnDataDateTime _LastLoginAt { get; } = new ColumnDataDateTime("LastLoginAt");
public ColumnDataDateTime _LastInvalidLoginAt { get; } = new ColumnDataDateTime("LastInvalidLoginAt");
public ColumnDataInt16 _InvalidLoginCount { get; } = new ColumnDataInt16("InvalidLoginCount");
public ColumnDataString _Notes { get; } = new ColumnDataString("Notes");
public ColumnDataInt16 _Flags { get; } = new ColumnDataInt16("Flags");
public ColumnDataString _Status { get; } = new ColumnDataString("Status");
public ColumnDataDateTime _CreateOn { get; } = new ColumnDataDateTime("CreateOn");
public ColumnDataInt32 _CreateBy { get; } = new ColumnDataInt32("CreateBy");
public ColumnDataString _CreateHost { get; } = new ColumnDataString("CreateHost");
public ColumnDataDateTime _UpdateOn { get; } = new ColumnDataDateTime("UpdateOn");
public ColumnDataInt32 _UpdateBy { get; } = new ColumnDataInt32("UpdateBy");
public ColumnDataString _UpdateHost { get; } = new ColumnDataString("UpdateHost");
}
//-------------------------------------------------------------------
// Data members.
protected static List<String> fields { get; } = new List<String>()
{
"Id",
"EmailAddress",
"Title",
"FirstName",
"Initials",
"LastName",
"PhoneMain",
"PhoneMobile",
"PhoneAlt",
"DateOfBirth",
"PasswordToken",
"PasswordHashed",
"PasswordHistory",
"PasswordChangedAt",
"LastLoginAt",
"LastInvalidLoginAt",
"InvalidLoginCount",
"Notes",
"Flags",
"Status",
"CreateOn",
"CreateBy",
"CreateHost",
"UpdateOn",
"UpdateBy",
"UpdateHost",
};
protected static List<String> fieldsId { get; } = new List<String>()
{
"Id",
};
protected static List<String> fieldsPrimary { get; } = new List<String>()
{
"Id",
};
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
{
"CreateOn",
"CreateBy",
"CreateHost",
};
//-------------------------------------------------------------------
// Construction.
internal UserAccount_Db (IDatabaseInfo dbInfo) : base(dbInfo)
{
}
//-------------------------------------------------------------------
// Properties.
public override String SchemaName { get; } = "dbo";
public override String TableName { get; } = "UserAccount";
public String TableNameFmt { get { return (!String.IsNullOrEmpty(SchemaName) ? "[" + SchemaName + "]." : "") + "[" + TableName + "]"; } }
public static List<String> Fields { get { return new List<String>(fields); } }
public static List<String> FieldsId { get { return new List<String>(fieldsId); } }
public static List<String> FieldsNonId { get { return fields.FindAll(item => !fieldsId.ContainsCI(item)); } }
// Columns.
public ColumnsData Cols { get; } = new ColumnsData();
public Int32 _Id { get { return Cols._Id.Value; } set { Cols._Id.Value = value; } }
public String _EmailAddress { get { return Cols._EmailAddress.Value; } set { Cols._EmailAddress.Value = value; } }
public String _Title { get { return Cols._Title.Value; } set { Cols._Title.Value = value; } }
public String _FirstName { get { return Cols._FirstName.Value; } set { Cols._FirstName.Value = value; } }
public String _Initials { get { return Cols._Initials.Value; } set { Cols._Initials.Value = value; } }
public String _LastName { get { return Cols._LastName.Value; } set { Cols._LastName.Value = value; } }
public String _PhoneMain { get { return Cols._PhoneMain.Value; } set { Cols._PhoneMain.Value = value; } }
public String _PhoneMobile { get { return Cols._PhoneMobile.Value; } set { Cols._PhoneMobile.Value = value; } }
public String _PhoneAlt { get { return Cols._PhoneAlt.Value; } set { Cols._PhoneAlt.Value = value; } }
public DateTime _DateOfBirth { get { return Cols._DateOfBirth.Value; } set { Cols._DateOfBirth.Value = value; } }
public String _PasswordToken { get { return Cols._PasswordToken.Value; } set { Cols._PasswordToken.Value = value; } }
public String _PasswordHashed { get { return Cols._PasswordHashed.Value; } set { Cols._PasswordHashed.Value = value; } }
public String _PasswordHistory { get { return Cols._PasswordHistory.Value; } set { Cols._PasswordHistory.Value = value; } }
public DateTime _PasswordChangedAt { get { return Cols._PasswordChangedAt.Value; } set { Cols._PasswordChangedAt.Value = value; } }
public DateTime _LastLoginAt { get { return Cols._LastLoginAt.Value; } set { Cols._LastLoginAt.Value = value; } }
public DateTime _LastInvalidLoginAt { get { return Cols._LastInvalidLoginAt.Value; } set { Cols._LastInvalidLoginAt.Value = value; } }
public Int16 _InvalidLoginCount { get { return Cols._InvalidLoginCount.Value; } set { Cols._InvalidLoginCount.Value = value; } }
public String _Notes { get { return Cols._Notes.Value; } set { Cols._Notes.Value = value; } }
public Int16 _Flags { get { return Cols._Flags.Value; } set { Cols._Flags.Value = value; } }
public String _Status { get { return Cols._Status.Value; } set { Cols._Status.Value = value; } }
public DateTime _CreateOn { get { return Cols._CreateOn.Value; } set { Cols._CreateOn.Value = value; } }
public Int32 _CreateBy { get { return Cols._CreateBy.Value; } set { Cols._CreateBy.Value = value; } }
public String _CreateHost { get { return Cols._CreateHost.Value; } set { Cols._CreateHost.Value = value; } }
public DateTime _UpdateOn { get { return Cols._UpdateOn.Value; } set { Cols._UpdateOn.Value = value; } }
public Int32 _UpdateBy { get { return Cols._UpdateBy.Value; } set { Cols._UpdateBy.Value = value; } }
public String _UpdateHost { get { return Cols._UpdateHost.Value; } set { Cols._UpdateHost.Value = value; } }
// Existing columns - confirmed on database if table exists.
public List<String> ExistingColumnNames { get { return GetExistingColumnNames(Fields); } }
public List<String> ExistingColumnNamesNonId { get { return GetExistingColumnNames(FieldsNonId); } }
//-------------------------------------------------------------------
// Population.
public override void PopulateFrom (DbCommand dbCommand, String tableAlias, String filter)
{
dbCommand.CommandText =
"SELECT " + ExistingColumnNames.Concat(", ", (!String.IsNullOrEmpty(tableAlias) ? tableAlias + "." : "") + "[", "]") + " " +
"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)
{
_Id = GetFieldInt32(dbDataReader, "Id", _Id);
_EmailAddress = GetFieldString(dbDataReader, "EmailAddress", _EmailAddress);
_Title = GetFieldString(dbDataReader, "Title", _Title);
_FirstName = GetFieldString(dbDataReader, "FirstName", _FirstName);
_Initials = GetFieldString(dbDataReader, "Initials", _Initials);
_LastName = GetFieldString(dbDataReader, "LastName", _LastName);
_PhoneMain = GetFieldString(dbDataReader, "PhoneMain", _PhoneMain);
_PhoneMobile = GetFieldString(dbDataReader, "PhoneMobile", _PhoneMobile);
_PhoneAlt = GetFieldString(dbDataReader, "PhoneAlt", _PhoneAlt);
_DateOfBirth = GetFieldDateTime(dbDataReader, "DateOfBirth", _DateOfBirth);
_PasswordToken = GetFieldString(dbDataReader, "PasswordToken", _PasswordToken);
_PasswordHashed = GetFieldString(dbDataReader, "PasswordHashed", _PasswordHashed);
_PasswordHistory = GetFieldString(dbDataReader, "PasswordHistory", _PasswordHistory);
_PasswordChangedAt = GetFieldDateTime(dbDataReader, "PasswordChangedAt", _PasswordChangedAt);
_LastLoginAt = GetFieldDateTime(dbDataReader, "LastLoginAt", _LastLoginAt);
_LastInvalidLoginAt = GetFieldDateTime(dbDataReader, "LastInvalidLoginAt", _LastInvalidLoginAt);
_InvalidLoginCount = GetFieldInt16(dbDataReader, "InvalidLoginCount", _InvalidLoginCount);
_Notes = GetFieldString(dbDataReader, "Notes", _Notes);
_Flags = GetFieldInt16(dbDataReader, "Flags", _Flags);
_Status = GetFieldString(dbDataReader, "Status", _Status);
_CreateOn = GetFieldDateTime(dbDataReader, "CreateOn", _CreateOn);
_CreateBy = GetFieldInt32(dbDataReader, "CreateBy", _CreateBy);
_CreateHost = GetFieldString(dbDataReader, "CreateHost", _CreateHost);
_UpdateOn = GetFieldDateTime(dbDataReader, "UpdateOn", _UpdateOn);
_UpdateBy = GetFieldInt32(dbDataReader, "UpdateBy", _UpdateBy);
_UpdateHost = GetFieldString(dbDataReader, "UpdateHost", _UpdateHost);
}
//-------------------------------------------------------------------
// Insert command.
public override bool ExecuteInsertCommand (DbCommand dbCommand)
{
List<String> columnNames = ExistingColumnNamesNonId;
// Avoid insert if Identity field is already valid.
if (_Id != 0) throw new Exception("Invalid for Insert - item already has a valid Id");
// Construct query.
String query =
"INSERT INTO " + TableNameFmt + " " +
"("+columnNames.Concat(",","[","]")+") ";
query += "Output Inserted.Id ";
if (dbCommand is SqlCommand)
query += "VALUES (" + columnNames.Concat(",", "@", "") + ") ";
else query += "VALUES (" + StringListUtil.CreateList("?", columnNames.Count).Concat(",") + ") ";
dbCommand.CommandText = query;
Log(GetType().Name + ".ExecuteInsertCommand", dbCommand.CommandText);
// Populate parameters.
dbCommand.Parameters.Clear();
if (columnNames.ContainsCI("EmailAddress")) AddCommandParameter(dbCommand, "@EmailAddress", _EmailAddress);
if (columnNames.ContainsCI("Title")) AddCommandParameter(dbCommand, "@Title", _Title);
if (columnNames.ContainsCI("FirstName")) AddCommandParameter(dbCommand, "@FirstName", _FirstName);
if (columnNames.ContainsCI("Initials")) AddCommandParameter(dbCommand, "@Initials", _Initials);
if (columnNames.ContainsCI("LastName")) AddCommandParameter(dbCommand, "@LastName", _LastName);
if (columnNames.ContainsCI("PhoneMain")) AddCommandParameter(dbCommand, "@PhoneMain", _PhoneMain);
if (columnNames.ContainsCI("PhoneMobile")) AddCommandParameter(dbCommand, "@PhoneMobile", _PhoneMobile);
if (columnNames.ContainsCI("PhoneAlt")) AddCommandParameter(dbCommand, "@PhoneAlt", _PhoneAlt);
if (columnNames.ContainsCI("DateOfBirth")) AddCommandParameter(dbCommand, "@DateOfBirth", _DateOfBirth);
if (columnNames.ContainsCI("PasswordToken")) AddCommandParameter(dbCommand, "@PasswordToken", _PasswordToken);
if (columnNames.ContainsCI("PasswordHashed")) AddCommandParameter(dbCommand, "@PasswordHashed", _PasswordHashed);
if (columnNames.ContainsCI("PasswordHistory")) AddCommandParameter(dbCommand, "@PasswordHistory", _PasswordHistory);
if (columnNames.ContainsCI("PasswordChangedAt")) AddCommandParameter(dbCommand, "@PasswordChangedAt", _PasswordChangedAt);
if (columnNames.ContainsCI("LastLoginAt")) AddCommandParameter(dbCommand, "@LastLoginAt", _LastLoginAt);
if (columnNames.ContainsCI("LastInvalidLoginAt")) AddCommandParameter(dbCommand, "@LastInvalidLoginAt", _LastInvalidLoginAt);
if (columnNames.ContainsCI("InvalidLoginCount")) AddCommandParameter(dbCommand, "@InvalidLoginCount", _InvalidLoginCount);
if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes);
if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags);
if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status);
if (columnNames.ContainsCI("CreateOn")) AddCommandParameter(dbCommand, "@CreateOn", _CreateOn);
if (columnNames.ContainsCI("CreateBy")) AddCommandParameter(dbCommand, "@CreateBy", _CreateBy);
if (columnNames.ContainsCI("CreateHost")) AddCommandParameter(dbCommand, "@CreateHost", _CreateHost);
if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn);
if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy);
if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost);
// Execute insert command.
bool commandSuccess = false;
int executeNonQuery = dbCommand.ExecuteNonQuery();
if (executeNonQuery == 1)
{
dbCommand.CommandText = "SELECT Max(Id) FROM " + TableNameFmt + ";";
_Id = (Int32)Convert.ToInt64(dbCommand.ExecuteScalar());
commandSuccess = (_Id > 0);
}
return commandSuccess;
}
//-------------------------------------------------------------------
// Update command.
public override bool ExecuteUpdateCommand (DbCommand dbCommand)
{
// Avoid update if Identity field isn't valid.
if (_Id == 0) throw new Exception("Invalid for Update - item has an invalid Id");
// Columns to update.
List<String> columnNames = ExistingColumnNamesNonId.Where(item => !fieldsPrimary.ContainsCI(item) && !fieldsIgnoreOnUpdate.ContainsCI(item)).ToList();
// Construct query.
String query = "UPDATE " + TableNameFmt + " SET ";
if (dbCommand is SqlCommand)
{
query += StringPairList.CreateFrom(columnNames.Bracket("[","]"),columnNames).Concat("=@").Concat(", ") + " ";
query += "WHERE Id=@Id;";
}
else
{
query += columnNames.Concat(", ", "", "=?") + " ";
query += "WHERE Id=?;";
}
dbCommand.CommandText = query;
Log(GetType().Name + ".ExecuteUpdateCommand", dbCommand.CommandText);
// Populate parameters.
dbCommand.Parameters.Clear();
if (columnNames.ContainsCI("EmailAddress")) AddCommandParameter(dbCommand, "@EmailAddress", _EmailAddress);
if (columnNames.ContainsCI("Title")) AddCommandParameter(dbCommand, "@Title", _Title);
if (columnNames.ContainsCI("FirstName")) AddCommandParameter(dbCommand, "@FirstName", _FirstName);
if (columnNames.ContainsCI("Initials")) AddCommandParameter(dbCommand, "@Initials", _Initials);
if (columnNames.ContainsCI("LastName")) AddCommandParameter(dbCommand, "@LastName", _LastName);
if (columnNames.ContainsCI("PhoneMain")) AddCommandParameter(dbCommand, "@PhoneMain", _PhoneMain);
if (columnNames.ContainsCI("PhoneMobile")) AddCommandParameter(dbCommand, "@PhoneMobile", _PhoneMobile);
if (columnNames.ContainsCI("PhoneAlt")) AddCommandParameter(dbCommand, "@PhoneAlt", _PhoneAlt);
if (columnNames.ContainsCI("DateOfBirth")) AddCommandParameter(dbCommand, "@DateOfBirth", _DateOfBirth);
if (columnNames.ContainsCI("PasswordToken")) AddCommandParameter(dbCommand, "@PasswordToken", _PasswordToken);
if (columnNames.ContainsCI("PasswordHashed")) AddCommandParameter(dbCommand, "@PasswordHashed", _PasswordHashed);
if (columnNames.ContainsCI("PasswordHistory")) AddCommandParameter(dbCommand, "@PasswordHistory", _PasswordHistory);
if (columnNames.ContainsCI("PasswordChangedAt")) AddCommandParameter(dbCommand, "@PasswordChangedAt", _PasswordChangedAt);
if (columnNames.ContainsCI("LastLoginAt")) AddCommandParameter(dbCommand, "@LastLoginAt", _LastLoginAt);
if (columnNames.ContainsCI("LastInvalidLoginAt")) AddCommandParameter(dbCommand, "@LastInvalidLoginAt", _LastInvalidLoginAt);
if (columnNames.ContainsCI("InvalidLoginCount")) AddCommandParameter(dbCommand, "@InvalidLoginCount", _InvalidLoginCount);
if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes);
if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags);
if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status);
if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn);
if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy);
if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost);
AddCommandParameter(dbCommand, "@Id", _Id);
int executeNonQueryResult = dbCommand.ExecuteNonQuery();
return (executeNonQueryResult == 1);
}
//-------------------------------------------------------------------
}
}
@@ -0,0 +1,224 @@
using Microsoft.Data.SqlClient;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using Sarand.Net.Standard.Base.Utils;
using Saxonite.Net.Standard.Dbas.Data;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Mon 10-May-2021 16:59:32
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal
{
internal class UserOrganisation_Db : SaxDbDataItem
{
//-------------------------------------------------------------------
// Column definitions.
public class ColumnsData
{
public ColumnDataInt64 _Id { get; } = new ColumnDataInt64("Id", true);
public ColumnDataInt32 _UserAccountId { get; } = new ColumnDataInt32("UserAccountId");
public ColumnDataInt32 _OrganisationId { get; } = new ColumnDataInt32("OrganisationId");
public ColumnDataString _OrganisationRoleCodes { get; } = new ColumnDataString("OrganisationRoleCodes");
public ColumnDataByte _OrganisationRoleCount { get; } = new ColumnDataByte("OrganisationRoleCount");
public ColumnDataString _Notes { get; } = new ColumnDataString("Notes");
public ColumnDataInt16 _Flags { get; } = new ColumnDataInt16("Flags");
public ColumnDataString _Status { get; } = new ColumnDataString("Status");
public ColumnDataDateTime _CreateOn { get; } = new ColumnDataDateTime("CreateOn");
public ColumnDataInt32 _CreateBy { get; } = new ColumnDataInt32("CreateBy");
public ColumnDataString _CreateHost { get; } = new ColumnDataString("CreateHost");
public ColumnDataDateTime _UpdateOn { get; } = new ColumnDataDateTime("UpdateOn");
public ColumnDataInt32 _UpdateBy { get; } = new ColumnDataInt32("UpdateBy");
public ColumnDataString _UpdateHost { get; } = new ColumnDataString("UpdateHost");
}
//-------------------------------------------------------------------
// Data members.
protected static List<String> fields { get; } = new List<String>()
{
"Id",
"UserAccountId",
"OrganisationId",
"OrganisationRoleCodes",
"OrganisationRoleCount",
"Notes",
"Flags",
"Status",
"CreateOn",
"CreateBy",
"CreateHost",
"UpdateOn",
"UpdateBy",
"UpdateHost",
};
protected static List<String> fieldsId { get; } = new List<String>()
{
"Id",
};
protected static List<String> fieldsPrimary { get; } = new List<String>()
{
"Id",
};
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
{
"CreateOn",
"CreateBy",
"CreateHost",
};
//-------------------------------------------------------------------
// Construction.
internal UserOrganisation_Db (IDatabaseInfo dbInfo) : base(dbInfo)
{
}
//-------------------------------------------------------------------
// Properties.
public override String SchemaName { get; } = "dbo";
public override String TableName { get; } = "UserOrganisation";
public String TableNameFmt { get { return (!String.IsNullOrEmpty(SchemaName) ? "[" + SchemaName + "]." : "") + "[" + TableName + "]"; } }
public static List<String> Fields { get { return new List<String>(fields); } }
public static List<String> FieldsId { get { return new List<String>(fieldsId); } }
public static List<String> FieldsNonId { get { return fields.FindAll(item => !fieldsId.ContainsCI(item)); } }
// Columns.
public ColumnsData Cols { get; } = new ColumnsData();
public Int64 _Id { get { return Cols._Id.Value; } set { Cols._Id.Value = value; } }
public Int32 _UserAccountId { get { return Cols._UserAccountId.Value; } set { Cols._UserAccountId.Value = value; } }
public Int32 _OrganisationId { get { return Cols._OrganisationId.Value; } set { Cols._OrganisationId.Value = value; } }
public String _OrganisationRoleCodes { get { return Cols._OrganisationRoleCodes.Value; } set { Cols._OrganisationRoleCodes.Value = value; } }
public Byte _OrganisationRoleCount { get { return Cols._OrganisationRoleCount.Value; } set { Cols._OrganisationRoleCount.Value = value; } }
public String _Notes { get { return Cols._Notes.Value; } set { Cols._Notes.Value = value; } }
public Int16 _Flags { get { return Cols._Flags.Value; } set { Cols._Flags.Value = value; } }
public String _Status { get { return Cols._Status.Value; } set { Cols._Status.Value = value; } }
public DateTime _CreateOn { get { return Cols._CreateOn.Value; } set { Cols._CreateOn.Value = value; } }
public Int32 _CreateBy { get { return Cols._CreateBy.Value; } set { Cols._CreateBy.Value = value; } }
public String _CreateHost { get { return Cols._CreateHost.Value; } set { Cols._CreateHost.Value = value; } }
public DateTime _UpdateOn { get { return Cols._UpdateOn.Value; } set { Cols._UpdateOn.Value = value; } }
public Int32 _UpdateBy { get { return Cols._UpdateBy.Value; } set { Cols._UpdateBy.Value = value; } }
public String _UpdateHost { get { return Cols._UpdateHost.Value; } set { Cols._UpdateHost.Value = value; } }
// Existing columns - confirmed on database if table exists.
public List<String> ExistingColumnNames { get { return GetExistingColumnNames(Fields); } }
public List<String> ExistingColumnNamesNonId { get { return GetExistingColumnNames(FieldsNonId); } }
//-------------------------------------------------------------------
// Population.
public override void PopulateFrom (DbCommand dbCommand, String tableAlias, String filter)
{
dbCommand.CommandText =
"SELECT " + ExistingColumnNames.Concat(", ", (!String.IsNullOrEmpty(tableAlias) ? tableAlias + "." : "") + "[", "]") + " " +
"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)
{
_Id = GetFieldInt64(dbDataReader, "Id", _Id);
_UserAccountId = GetFieldInt32(dbDataReader, "UserAccountId", _UserAccountId);
_OrganisationId = GetFieldInt32(dbDataReader, "OrganisationId", _OrganisationId);
_OrganisationRoleCodes = GetFieldString(dbDataReader, "OrganisationRoleCodes", _OrganisationRoleCodes);
_OrganisationRoleCount = GetFieldByte(dbDataReader, "OrganisationRoleCount", _OrganisationRoleCount);
_Notes = GetFieldString(dbDataReader, "Notes", _Notes);
_Flags = GetFieldInt16(dbDataReader, "Flags", _Flags);
_Status = GetFieldString(dbDataReader, "Status", _Status);
_CreateOn = GetFieldDateTime(dbDataReader, "CreateOn", _CreateOn);
_CreateBy = GetFieldInt32(dbDataReader, "CreateBy", _CreateBy);
_CreateHost = GetFieldString(dbDataReader, "CreateHost", _CreateHost);
_UpdateOn = GetFieldDateTime(dbDataReader, "UpdateOn", _UpdateOn);
_UpdateBy = GetFieldInt32(dbDataReader, "UpdateBy", _UpdateBy);
_UpdateHost = GetFieldString(dbDataReader, "UpdateHost", _UpdateHost);
}
//-------------------------------------------------------------------
// Insert command.
public override bool ExecuteInsertCommand (DbCommand dbCommand)
{
List<String> columnNames = ExistingColumnNamesNonId;
// Avoid insert if Identity field is already valid.
if (_Id != 0) throw new Exception("Invalid for Insert - item already has a valid Id");
// Construct query.
String query =
"INSERT INTO " + TableNameFmt + " " +
"("+columnNames.Concat(",","[","]")+") ";
query += "Output Inserted.Id ";
if (dbCommand is SqlCommand)
query += "VALUES (" + columnNames.Concat(",", "@", "") + ") ";
else query += "VALUES (" + StringListUtil.CreateList("?", columnNames.Count).Concat(",") + ") ";
dbCommand.CommandText = query;
Log(GetType().Name + ".ExecuteInsertCommand", dbCommand.CommandText);
// Populate parameters.
dbCommand.Parameters.Clear();
if (columnNames.ContainsCI("UserAccountId")) AddCommandParameter(dbCommand, "@UserAccountId", _UserAccountId);
if (columnNames.ContainsCI("OrganisationId")) AddCommandParameter(dbCommand, "@OrganisationId", _OrganisationId);
if (columnNames.ContainsCI("OrganisationRoleCodes")) AddCommandParameter(dbCommand, "@OrganisationRoleCodes", _OrganisationRoleCodes);
if (columnNames.ContainsCI("OrganisationRoleCount")) AddCommandParameter(dbCommand, "@OrganisationRoleCount", _OrganisationRoleCount);
if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes);
if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags);
if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status);
if (columnNames.ContainsCI("CreateOn")) AddCommandParameter(dbCommand, "@CreateOn", _CreateOn);
if (columnNames.ContainsCI("CreateBy")) AddCommandParameter(dbCommand, "@CreateBy", _CreateBy);
if (columnNames.ContainsCI("CreateHost")) AddCommandParameter(dbCommand, "@CreateHost", _CreateHost);
if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn);
if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy);
if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost);
// Execute insert command.
bool commandSuccess = false;
int executeNonQuery = dbCommand.ExecuteNonQuery();
if (executeNonQuery == 1)
{
dbCommand.CommandText = "SELECT Max(Id) FROM " + TableNameFmt + ";";
_Id = Convert.ToInt64(dbCommand.ExecuteScalar());
commandSuccess = (_Id > 0);
}
return commandSuccess;
}
//-------------------------------------------------------------------
// Update command.
public override bool ExecuteUpdateCommand (DbCommand dbCommand)
{
// Avoid update if Identity field isn't valid.
if (_Id == 0) throw new Exception("Invalid for Update - item has an invalid Id");
// Columns to update.
List<String> columnNames = ExistingColumnNamesNonId.Where(item => !fieldsPrimary.ContainsCI(item) && !fieldsIgnoreOnUpdate.ContainsCI(item)).ToList();
// Construct query.
String query = "UPDATE " + TableNameFmt + " SET ";
if (dbCommand is SqlCommand)
{
query += StringPairList.CreateFrom(columnNames.Bracket("[","]"),columnNames).Concat("=@").Concat(", ") + " ";
query += "WHERE Id=@Id;";
}
else
{
query += columnNames.Concat(", ", "", "=?") + " ";
query += "WHERE Id=?;";
}
dbCommand.CommandText = query;
Log(GetType().Name + ".ExecuteUpdateCommand", dbCommand.CommandText);
// Populate parameters.
dbCommand.Parameters.Clear();
if (columnNames.ContainsCI("UserAccountId")) AddCommandParameter(dbCommand, "@UserAccountId", _UserAccountId);
if (columnNames.ContainsCI("OrganisationId")) AddCommandParameter(dbCommand, "@OrganisationId", _OrganisationId);
if (columnNames.ContainsCI("OrganisationRoleCodes")) AddCommandParameter(dbCommand, "@OrganisationRoleCodes", _OrganisationRoleCodes);
if (columnNames.ContainsCI("OrganisationRoleCount")) AddCommandParameter(dbCommand, "@OrganisationRoleCount", _OrganisationRoleCount);
if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes);
if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags);
if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status);
if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn);
if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy);
if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost);
AddCommandParameter(dbCommand, "@Id", _Id);
int executeNonQueryResult = dbCommand.ExecuteNonQuery();
return (executeNonQueryResult == 1);
}
//-------------------------------------------------------------------
}
}
@@ -0,0 +1,212 @@
using Microsoft.Data.SqlClient;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using Sarand.Net.Standard.Base.Utils;
using Saxonite.Net.Standard.Dbas.Data;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Mon 10-May-2021 16:59:32
//---------------------------------------------------------------------------
namespace Saxonite.Net.Standard.Dbas.Internal
{
internal class UserRole_Db : SaxDbDataItem
{
//-------------------------------------------------------------------
// Column definitions.
public class ColumnsData
{
public ColumnDataInt32 _Id { get; } = new ColumnDataInt32("Id", true);
public ColumnDataInt32 _UserAccountId { get; } = new ColumnDataInt32("UserAccountId");
public ColumnDataString _UserRoleCode { get; } = new ColumnDataString("UserRoleCode");
public ColumnDataString _Notes { get; } = new ColumnDataString("Notes");
public ColumnDataInt16 _Flags { get; } = new ColumnDataInt16("Flags");
public ColumnDataString _Status { get; } = new ColumnDataString("Status");
public ColumnDataDateTime _CreateOn { get; } = new ColumnDataDateTime("CreateOn");
public ColumnDataInt32 _CreateBy { get; } = new ColumnDataInt32("CreateBy");
public ColumnDataString _CreateHost { get; } = new ColumnDataString("CreateHost");
public ColumnDataDateTime _UpdateOn { get; } = new ColumnDataDateTime("UpdateOn");
public ColumnDataInt32 _UpdateBy { get; } = new ColumnDataInt32("UpdateBy");
public ColumnDataString _UpdateHost { get; } = new ColumnDataString("UpdateHost");
}
//-------------------------------------------------------------------
// Data members.
protected static List<String> fields { get; } = new List<String>()
{
"Id",
"UserAccountId",
"UserRoleCode",
"Notes",
"Flags",
"Status",
"CreateOn",
"CreateBy",
"CreateHost",
"UpdateOn",
"UpdateBy",
"UpdateHost",
};
protected static List<String> fieldsId { get; } = new List<String>()
{
"Id",
};
protected static List<String> fieldsPrimary { get; } = new List<String>()
{
"Id",
};
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
{
"CreateOn",
"CreateBy",
"CreateHost",
};
//-------------------------------------------------------------------
// Construction.
internal UserRole_Db (IDatabaseInfo dbInfo) : base(dbInfo)
{
}
//-------------------------------------------------------------------
// Properties.
public override String SchemaName { get; } = "dbo";
public override String TableName { get; } = "UserRole";
public String TableNameFmt { get { return (!String.IsNullOrEmpty(SchemaName) ? "[" + SchemaName + "]." : "") + "[" + TableName + "]"; } }
public static List<String> Fields { get { return new List<String>(fields); } }
public static List<String> FieldsId { get { return new List<String>(fieldsId); } }
public static List<String> FieldsNonId { get { return fields.FindAll(item => !fieldsId.ContainsCI(item)); } }
// Columns.
public ColumnsData Cols { get; } = new ColumnsData();
public Int32 _Id { get { return Cols._Id.Value; } set { Cols._Id.Value = value; } }
public Int32 _UserAccountId { get { return Cols._UserAccountId.Value; } set { Cols._UserAccountId.Value = value; } }
public String _UserRoleCode { get { return Cols._UserRoleCode.Value; } set { Cols._UserRoleCode.Value = value; } }
public String _Notes { get { return Cols._Notes.Value; } set { Cols._Notes.Value = value; } }
public Int16 _Flags { get { return Cols._Flags.Value; } set { Cols._Flags.Value = value; } }
public String _Status { get { return Cols._Status.Value; } set { Cols._Status.Value = value; } }
public DateTime _CreateOn { get { return Cols._CreateOn.Value; } set { Cols._CreateOn.Value = value; } }
public Int32 _CreateBy { get { return Cols._CreateBy.Value; } set { Cols._CreateBy.Value = value; } }
public String _CreateHost { get { return Cols._CreateHost.Value; } set { Cols._CreateHost.Value = value; } }
public DateTime _UpdateOn { get { return Cols._UpdateOn.Value; } set { Cols._UpdateOn.Value = value; } }
public Int32 _UpdateBy { get { return Cols._UpdateBy.Value; } set { Cols._UpdateBy.Value = value; } }
public String _UpdateHost { get { return Cols._UpdateHost.Value; } set { Cols._UpdateHost.Value = value; } }
// Existing columns - confirmed on database if table exists.
public List<String> ExistingColumnNames { get { return GetExistingColumnNames(Fields); } }
public List<String> ExistingColumnNamesNonId { get { return GetExistingColumnNames(FieldsNonId); } }
//-------------------------------------------------------------------
// Population.
public override void PopulateFrom (DbCommand dbCommand, String tableAlias, String filter)
{
dbCommand.CommandText =
"SELECT " + ExistingColumnNames.Concat(", ", (!String.IsNullOrEmpty(tableAlias) ? tableAlias + "." : "") + "[", "]") + " " +
"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)
{
_Id = GetFieldInt32(dbDataReader, "Id", _Id);
_UserAccountId = GetFieldInt32(dbDataReader, "UserAccountId", _UserAccountId);
_UserRoleCode = GetFieldString(dbDataReader, "UserRoleCode", _UserRoleCode);
_Notes = GetFieldString(dbDataReader, "Notes", _Notes);
_Flags = GetFieldInt16(dbDataReader, "Flags", _Flags);
_Status = GetFieldString(dbDataReader, "Status", _Status);
_CreateOn = GetFieldDateTime(dbDataReader, "CreateOn", _CreateOn);
_CreateBy = GetFieldInt32(dbDataReader, "CreateBy", _CreateBy);
_CreateHost = GetFieldString(dbDataReader, "CreateHost", _CreateHost);
_UpdateOn = GetFieldDateTime(dbDataReader, "UpdateOn", _UpdateOn);
_UpdateBy = GetFieldInt32(dbDataReader, "UpdateBy", _UpdateBy);
_UpdateHost = GetFieldString(dbDataReader, "UpdateHost", _UpdateHost);
}
//-------------------------------------------------------------------
// Insert command.
public override bool ExecuteInsertCommand (DbCommand dbCommand)
{
List<String> columnNames = ExistingColumnNamesNonId;
// Avoid insert if Identity field is already valid.
if (_Id != 0) throw new Exception("Invalid for Insert - item already has a valid Id");
// Construct query.
String query =
"INSERT INTO " + TableNameFmt + " " +
"("+columnNames.Concat(",","[","]")+") ";
query += "Output Inserted.Id ";
if (dbCommand is SqlCommand)
query += "VALUES (" + columnNames.Concat(",", "@", "") + ") ";
else query += "VALUES (" + StringListUtil.CreateList("?", columnNames.Count).Concat(",") + ") ";
dbCommand.CommandText = query;
Log(GetType().Name + ".ExecuteInsertCommand", dbCommand.CommandText);
// Populate parameters.
dbCommand.Parameters.Clear();
if (columnNames.ContainsCI("UserAccountId")) AddCommandParameter(dbCommand, "@UserAccountId", _UserAccountId);
if (columnNames.ContainsCI("UserRoleCode")) AddCommandParameter(dbCommand, "@UserRoleCode", _UserRoleCode);
if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes);
if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags);
if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status);
if (columnNames.ContainsCI("CreateOn")) AddCommandParameter(dbCommand, "@CreateOn", _CreateOn);
if (columnNames.ContainsCI("CreateBy")) AddCommandParameter(dbCommand, "@CreateBy", _CreateBy);
if (columnNames.ContainsCI("CreateHost")) AddCommandParameter(dbCommand, "@CreateHost", _CreateHost);
if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn);
if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy);
if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost);
// Execute insert command.
bool commandSuccess = false;
int executeNonQuery = dbCommand.ExecuteNonQuery();
if (executeNonQuery == 1)
{
dbCommand.CommandText = "SELECT Max(Id) FROM " + TableNameFmt + ";";
_Id = (Int32)Convert.ToInt64(dbCommand.ExecuteScalar());
commandSuccess = (_Id > 0);
}
return commandSuccess;
}
//-------------------------------------------------------------------
// Update command.
public override bool ExecuteUpdateCommand (DbCommand dbCommand)
{
// Avoid update if Identity field isn't valid.
if (_Id == 0) throw new Exception("Invalid for Update - item has an invalid Id");
// Columns to update.
List<String> columnNames = ExistingColumnNamesNonId.Where(item => !fieldsPrimary.ContainsCI(item) && !fieldsIgnoreOnUpdate.ContainsCI(item)).ToList();
// Construct query.
String query = "UPDATE " + TableNameFmt + " SET ";
if (dbCommand is SqlCommand)
{
query += StringPairList.CreateFrom(columnNames.Bracket("[","]"),columnNames).Concat("=@").Concat(", ") + " ";
query += "WHERE Id=@Id;";
}
else
{
query += columnNames.Concat(", ", "", "=?") + " ";
query += "WHERE Id=?;";
}
dbCommand.CommandText = query;
Log(GetType().Name + ".ExecuteUpdateCommand", dbCommand.CommandText);
// Populate parameters.
dbCommand.Parameters.Clear();
if (columnNames.ContainsCI("UserAccountId")) AddCommandParameter(dbCommand, "@UserAccountId", _UserAccountId);
if (columnNames.ContainsCI("UserRoleCode")) AddCommandParameter(dbCommand, "@UserRoleCode", _UserRoleCode);
if (columnNames.ContainsCI("Notes")) AddCommandParameter(dbCommand, "@Notes", _Notes);
if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags);
if (columnNames.ContainsCI("Status")) AddCommandParameter(dbCommand, "@Status", _Status);
if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn);
if (columnNames.ContainsCI("UpdateBy")) AddCommandParameter(dbCommand, "@UpdateBy", _UpdateBy);
if (columnNames.ContainsCI("UpdateHost")) AddCommandParameter(dbCommand, "@UpdateHost", _UpdateHost);
AddCommandParameter(dbCommand, "@Id", _Id);
int executeNonQueryResult = dbCommand.ExecuteNonQuery();
return (executeNonQueryResult == 1);
}
//-------------------------------------------------------------------
}
}
@@ -0,0 +1,555 @@
using Sarand.Net.Standard.Dbas.Data;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using Saxonite.Base.App;
using Saxonite.Net.Standard.Dbas.Bus;
using Saxonite.Net.Standard.Dbas.Internal;
using Saxonite.Net.Standard.Base.App;
using Saxonite.Net.Standard.Base.Bus;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Text;
using Sarand.Net.Standard.Base.Utils;
using System.Linq;
namespace Saxonite.Net.Standard.Dbas.Mgr
{
//=======================================================================
partial class SaxAccountMgr_Dbas
{
//*******************************************************************
// Account Mgr - Organisation
//*******************************************************************
// Utilities.
private List<StringPair> GetLogProperties(SaxOrganisation organisation)
{
return new List<StringPair>()
{
new StringPair("Id", SysId.ToString(organisation.Id)),
new StringPair("Name", organisation.Name),
new StringPair("Status", organisation.StatusCode)
};
}
//-------------------------------------------------------------------
// Create item.
public override SaxOrganisation CreateOrganisation()
{
ClearErrorState();
return new SaxOrganisation_Dbas(CoreDatabase, null, 0);
}
private SaxOrganisation_Dbas CreateOrganisation(Organisation_Db dbOrganisation)
{
ClearErrorState();
SaxOrganisation_Dbas organisation = new SaxOrganisation_Dbas(CoreDatabase, new SysId(dbOrganisation._Id), (UInt16)dbOrganisation._Flags);
PopulateFrom(dbOrganisation, organisation);
return organisation;
}
//-------------------------------------------------------------------
// Get item.
public override SaxOrganisation GetOrganisation(SaxOrganisation.Params prm)
{
ClearErrorState();
return GetOrganisation(GetOrganisationQueryFilter(prm).Concat(" And ", "(", ")"));
}
private SaxOrganisation GetOrganisation(String filter)
{
ClearErrorState();
long count = GetOrganisationCount(filter);
if (count == 0) return null;
if (count != 1)
{
SetErrorState("Multiple items found");
return null;
}
SaxOrganisation organisation = null;
// Query data.
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
dbConnection.Open();
Organisation_Db dbOrganisation = new Organisation_Db(CoreDbInfo);
dbOrganisation.PopulateFrom(dbCommand, aliasOrganisation, filter);
organisation = CreateOrganisation(dbOrganisation);
}
catch (Exception exc)
{
SetErrorState("Database query exception");
SaLogger.Warn(GetType().Name + ".GetOrganisation\n\tQuery: " + dbCommand.CommandText + "\n\t" + exc.GetType().Name + ": " + exc.Message);
}
}
return organisation;
}
//-------------------------------------------------------------------
// Validate item.
public override bool IsValidOrganisationData(SaxOrganisation.Data data, SaxOrganisation.ErrField errField)
{
ClearErrorState();
if (!base.IsValidOrganisationData(data, errField)) return false;
return true;
}
//-------------------------------------------------------------------
// Insert item.
public override bool InsertOrganisation(SaxOrganisation organisation, DbUpdateInfo dbUpdateInfo)
{
String fn = GetType().Name + ".InsertOrganisation";
ClearErrorState();
if (!IsValidOrganisation(organisation)) return false;
if (SysId.IsValid(organisation.Id)) return SetErrorState(ErrorMessage.ValiditemId);
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
dbConnection.Open();
Organisation_Db dbOrganisation = new Organisation_Db(CoreDbInfo);
PopulateTo(dbOrganisation, organisation, dbUpdateInfo);
if (Organisation_Db.FieldsNonId.Contains("Id"))
{
// Generate next Id.
// ToDo dbOrganisation._Id = CoreDatabase.GetNextIdFromTable("Organisation");
}
dbOrganisation.ExecuteInsertCommand(dbCommand);
organisation.Id = new SysId(dbOrganisation._Id);
organisation.Changed = false;
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(organisation).Concat(": ").Concat("", "\n\t"));
}
catch (Exception exc) { SetErrorState(exc.Message); }
}
return !HasErrorState();
}
//-------------------------------------------------------------------
// Update item.
public override bool UpdateOrganisation(SaxOrganisation organisation, DbUpdateInfo dbUpdateInfo)
{
String fn = GetType().Name + ".UpdateOrganisation";
ClearErrorState();
if (!IsValidOrganisation(organisation)) return false;
if (!SysId.IsValid(organisation.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
if (!organisation.Changed)
{
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(organisation).Concat(": ").Concat("", "\n\t"));
return true;
}
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
// Retrieve item.
dbConnection.Open();
Organisation_Db dbOrganisation = new Organisation_Db(CoreDbInfo);
dbOrganisation.PopulateFrom(dbCommand, aliasOrganisation, "Id=" + SysId.ToString(organisation.Id));
// ToDo SaxUpdateLogItemMonitor_Organisation updateLogMonitor = new SaxUpdateLogItemMonitor_Organisation(SessionContext, CreateOrganisation(dbOrganisation), dbUpdateInfo);
// Update properties.
PopulateTo(dbOrganisation, organisation, dbUpdateInfo);
dbOrganisation.ExecuteUpdateCommand(dbCommand);
organisation.Changed = false;
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(organisation).Concat(": ").Concat("", "\n\t"));
// Record updates.
// ToDo updateLogMonitor.RecordUpdatedValues(organisation);
// ToDo updateLogMonitor.LogUpdates();
}
catch (Exception exc) { SetErrorState(exc.Message); }
}
return !HasErrorState();
}
//-------------------------------------------------------------------
// Delete item.
public override bool OrganisationCanBeDeleted(SaxOrganisation organisation)
{
ClearErrorState();
if (!base.OrganisationCanBeDeleted(organisation)) return false;
return true;
}
public override bool DeleteOrganisation(SaxOrganisation organisation, DbUpdateInfo dbUpdateInfo)
{
String fn = GetType().Name + ".DeleteOrganisation";
ClearErrorState();
if (!OrganisationCanBeDeleted(organisation)) return false;
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
// Retrieve organisation.
dbConnection.Open();
Organisation_Db dbOrganisation = new Organisation_Db(CoreDbInfo);
dbOrganisation.PopulateFrom(dbCommand, aliasOrganisation, "Id=" + organisation.Id.ToString());
// Delete organisation.
dbCommand.CommandType = System.Data.CommandType.Text;
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.Organisation) + " WHERE Id=" + SysId.ToString(organisation.Id) + ";";
dbCommand.ExecuteNonQuery();
organisation.Changed = false;
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(organisation).Concat(": ").Concat("", "\n\t"));
}
catch (Exception exc) { SetErrorState(exc.Message); }
}
return !HasErrorState();
}
//-------------------------------------------------------------------
// Copy data properties to and from database.
private void PopulateTo(Organisation_Db dbOrganisation, SaxOrganisation organisation, DbUpdateInfo dbUpdateInfo)
{
dbOrganisation._Id = SysId.ToInt(organisation.Id);
dbOrganisation._Name = organisation.Name;
dbOrganisation._PhoneMain = organisation.PhoneMain;
dbOrganisation._PhoneAlt = organisation.PhoneAlt;
dbOrganisation._OrganisationType = OrganisationTypes.GetCodeForType(organisation.OrganisationType);
dbOrganisation._OrganisationCategory = OrganisationCategories.GetCodeForType(organisation.OrganisationCategory);
dbOrganisation._Notes = organisation.Notes;
dbOrganisation._Status = SacsSystem.GetStatusCode(organisation.Status);
dbOrganisation._Flags = (short)organisation.Flags;
if (!SysId.IsValid(organisation.Id))
{
dbOrganisation._CreateOn = DateTime.Now;
dbOrganisation._CreateBy = dbUpdateInfo.UserId.ToInt();
dbOrganisation._CreateHost = dbUpdateInfo.Host;
}
dbOrganisation._UpdateOn = DateTime.Now;
dbOrganisation._UpdateBy = dbUpdateInfo.UserId.ToInt();
dbOrganisation._UpdateHost = dbUpdateInfo.Host;
}
private void PopulateFrom(Organisation_Db dbOrganisation, SaxOrganisation organisation)
{
//organisation.Id = new SysId(dbOrganisation._Id);
//organisation.UserAccountId = new SysId(dbOrganisation._UserAccountId);
organisation.Name = dbOrganisation._Name;
organisation.PhoneMain = dbOrganisation._PhoneMain;
organisation.PhoneAlt = dbOrganisation._PhoneAlt;
organisation.OrganisationType = (Sax.OrganisationType)OrganisationTypes.GetTypeForCode(dbOrganisation._OrganisationType);
organisation.OrganisationCategory = (Sax.OrganisationCategory)OrganisationCategories.GetTypeForCode(dbOrganisation._OrganisationCategory);
organisation.Notes = dbOrganisation._Notes;
organisation.Status = SacsSystem.GetStatusForCode(dbOrganisation._Status);
organisation.SetCreateStamp(dbOrganisation._CreateOn, new SysId(dbOrganisation._CreateBy), dbOrganisation._CreateHost);
organisation.SetUpdateStamp(dbOrganisation._UpdateOn, new SysId(dbOrganisation._UpdateBy), dbOrganisation._UpdateHost);
organisation.AcceptChanges();
}
//-------------------------------------------------------------------
// Item column definitions.
private static readonly String aliasOrganisation = "Org";
private static readonly String colOrganisation_User_Count = "Org_Usr_Count";
private static readonly String colOrganisation_Member_Count = "Org_Mbr_Count";
private void SetOrganisationColDfn
(ColumnDfn col, String caption, int width, SaxDbDfn.ColumnIdx dbCol,
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
String alias = "", String prefix = "")
{
if (String.IsNullOrEmpty(alias) && SaxDbDfn.GetTableForColumn(dbCol) == SaxDbDfn.TableIdx.Organisation)
alias = aliasOrganisation;
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn.GetColumnName(dbCol, false), SaxDbDfn.GetColumnNameQual(dbCol, alias), dataType, align);
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn.ColumnIdx.Unknown)
col.MaxLength = (int)SaxDbDfn.GetColTextLen(dbCol);
}
public override ColumnDfn GetOrganisationColumnDfn(SaxOrganisation.Column columnId, string caption = "", int width = 0)
{
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
switch (columnId)
{
//-----------------------------------------------------------
case SaxOrganisation.Column.Pos:
SetOrganisationColDfn(columnDfn, "Pos", 60, SaxDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
columnDfn.ReadOnly = true;
columnDfn.Resizable = false;
break;
case SaxOrganisation.Column.Id:
SetOrganisationColDfn(columnDfn, "Id", 80, SaxDbDfn.ColumnIdx.Organisation_Id, ColumnAlignment.Right, DataValue.DataType.Long);
columnDfn.ReadOnly = true;
break;
case SaxOrganisation.Column.Name:
SetOrganisationColDfn(columnDfn, "Name", 120, SaxDbDfn.ColumnIdx.Organisation_Name);
break;
case SaxOrganisation.Column.OrganisationType:
SetOrganisationColDfn(columnDfn, "Type", 80, SaxDbDfn.ColumnIdx.Organisation_OrganisationType, ColumnAlignment.Center, DataValue.DataType.String);
break;
case SaxOrganisation.Column.OrganisationType_Desc:
SetOrganisationColDfn(columnDfn, "Type", 80, SaxDbDfn.ColumnIdx.Organisation_OrganisationType, ColumnAlignment.Center, DataValue.DataType.String);
break;
case SaxOrganisation.Column.OrganisationCategory:
SetOrganisationColDfn(columnDfn, "Category", 80, SaxDbDfn.ColumnIdx.Organisation_OrganisationCategory, ColumnAlignment.Center, DataValue.DataType.String);
break;
case SaxOrganisation.Column.OrganisationCategory_Desc:
SetOrganisationColDfn(columnDfn, "Category", 80, SaxDbDfn.ColumnIdx.Organisation_OrganisationCategory, ColumnAlignment.Center, DataValue.DataType.String);
break;
case SaxOrganisation.Column.PhoneMain:
SetOrganisationColDfn(columnDfn, "Phone", 100, SaxDbDfn.ColumnIdx.Organisation_PhoneMain);
break;
case SaxOrganisation.Column.PhoneAlt:
SetOrganisationColDfn(columnDfn, "Alt. phone", 100, SaxDbDfn.ColumnIdx.Organisation_PhoneAlt);
break;
//-----------------------------------------------------------
// Derived properties.
case SaxOrganisation.Column.User_Count:
SetOrganisationColDfn(columnDfn, "Users", 80, SaxDbDfn.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
columnDfn.DataName = colOrganisation_User_Count;
break;
case SaxOrganisation.Column.Member_Count:
SetOrganisationColDfn(columnDfn, "Members", 80, SaxDbDfn.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
columnDfn.DataName = colOrganisation_Member_Count;
break;
//-----------------------------------------------------------
// Common properties.
case SaxOrganisation.Column.Notes:
SetOrganisationColDfn(columnDfn, "Notes", 240, SaxDbDfn.ColumnIdx.Organisation_Notes);
break;
case SaxOrganisation.Column.Flags:
SetOrganisationColDfn(columnDfn, "Flags", 60, SaxDbDfn.ColumnIdx.Organisation_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
break;
case SaxOrganisation.Column.Status:
SetOrganisationColDfn(columnDfn, "Status", 80, SaxDbDfn.ColumnIdx.Organisation_Status, ColumnAlignment.Center);
break;
case SaxOrganisation.Column.Status_Desc:
SetOrganisationColDfn(columnDfn, "Status", 90, SaxDbDfn.ColumnIdx.Organisation_Status, ColumnAlignment.Center);
break;
case SaxOrganisation.Column.Status_Ind:
SetOrganisationColDfn(columnDfn, "Status", 80, SaxDbDfn.ColumnIdx.Organisation_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
break;
case SaxOrganisation.Column.CreateOn_Date:
SetOrganisationColDfn(columnDfn, "Created", 80, SaxDbDfn.ColumnIdx.Organisation_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
columnDfn.ReadOnly = true;
break;
case SaxOrganisation.Column.UpdateOn_Date:
SetOrganisationColDfn(columnDfn, "Updated", 80, SaxDbDfn.ColumnIdx.Organisation_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;
}
//-------------------------------------------------------------------
// Item query filter.
public override List<string> GetOrganisationQueryFilter(SaxOrganisation.Params prm)
{
List<String> filter = new List<String>();
// Item Ids.
String idsIncluded = prm.IdsIncluded.Concat(",");
if (!idsIncluded.IsEmpty())
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Organisation_Id, aliasOrganisation) + " IN (" + idsIncluded + ")");
String idsExcluded = prm.IdsExcluded.Concat(",");
if (!idsExcluded.IsEmpty())
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Organisation_Id, aliasOrganisation) + " NOT IN (" + idsExcluded + ")");
// Name.
if (!StringUtil.IsEmpty(prm.NameFull))
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Organisation_Name, aliasOrganisation) + "='" + DbQuery.FormatForCondition(prm.NameFull) + "'");
if (!StringUtil.IsEmpty(prm.NamePartial))
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Organisation_Name, aliasOrganisation) + " Like '%" + DbQuery.FormatForLike(prm.NamePartial, true) + "%'");
// Organisation filter.
if (!StringUtil.IsEmpty(prm.OrganisationFilter))
{
// Split filter into words.
List<String> filterWords = prm.OrganisationFilter.Split((char[])null).ToList();
filterWords.RemoveDuplicatesCI();
filterWords.RemoveBlanks();
foreach (String filterWord in filterWords)
{
List<String> organisationFilter = new List<String>();
organisationFilter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Organisation_Name, aliasOrganisation) + " Like '%" + DbQuery.FormatForLike(filterWord, true) + "%'");
filter.Add(organisationFilter.Concat(" OR ", "(", ")"));
}
}
// Notes.
if (!StringUtil.IsEmpty(prm.NotesPartial))
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Organisation_Notes, aliasOrganisation) + " LIKE '%" + DbQuery.FormatForLike(prm.NotesPartial) + "%'");
// Status.
if (prm.StatusCat == SaxOrganisation.StatusCat.ActiveOnly)
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Organisation_Status, aliasOrganisation) + "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'");
else if (prm.StatusCat == SaxOrganisation.StatusCat.NotDeleted)
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Organisation_Status, aliasOrganisation) + "!='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'");
if (filter.Count < 1) filter.Add("1=1");
return filter;
}
// Item sort columns.
public List<String> GetOrganisationSortColumns(SaxOrganisation.Params prm)
{
// Sort sequence:
List<String> sortColumnNames = new List<String>();
foreach (var columnDfn in prm.SortColumns)
{
// Need to ensure correct alias used for Organisation columns in case of conflict.
String sortCol = String.Empty;
if (SaxDbDfn.GetTableForColumn((SaxDbDfn.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn.TableIdx.Organisation)
{
sortCol = SaxDbDfn.GetColumnNameQual((SaxDbDfn.ColumnIdx)columnDfn.DbColumn, aliasOrganisation);
}
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(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Organisation_Id, aliasOrganisation) + " ASC");
}
return sortColumnNames;
}
//-------------------------------------------------------------------
// Item count.
private long GetOrganisationCount(String filter)
{
ClearErrorState();
return CoreDatabase.GetRowCount(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.Organisation) + " As " + aliasOrganisation, filter);
}
public override long GetOrganisationCount(SaxOrganisation.Params prm)
{
ClearErrorState();
return GetOrganisationCount(GetOrganisationQueryFilter(prm).Concat(" AND ", "(", ")"));
}
//-------------------------------------------------------------------
// Item list.
public override List<SaxOrganisation> GetOrganisationList(SaxOrganisation.Params prm)
{
List<SaxOrganisation> userAccounts = new List<SaxOrganisation>();
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
qry.Tables.Add(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.Organisation), aliasOrganisation);
Organisation_Db dbOrganisation = new Organisation_Db(CoreDbInfo);
qry.Columns.AddRange(dbOrganisation.ExistingColumnNames);
qry.Filters.AddRange(GetOrganisationQueryFilter(prm));
qry.OrderBy.AddRange(GetOrganisationSortColumns(prm));
// Query data.
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
dbConnection.Open();
dbCommand.CommandText = qry.BuildQuery(prm.ResultsPaging);
using (DbDataReader dbDataReader = dbCommand.ExecuteReader())
{
while (dbDataReader.Read())
{
dbOrganisation = new Organisation_Db(CoreDbInfo);
dbOrganisation.PopulateFrom(dbDataReader);
userAccounts.Add(CreateOrganisation(dbOrganisation));
}
}
}
catch (Exception exc)
{
SaLogger.Warn(GetType().Name + ".GetOrganisationList\n\tQuery: " + dbCommand.CommandText + "\n\t" + exc.GetType().Name + ": " + exc.Message);
}
}
return userAccounts;
}
//-------------------------------------------------------------------
// Item query execution.
public override DbResultSet ExecuteOrganisationQuery(List<ColumnDfn> columns, SaxOrganisation.Params prm)
{
ClearErrorState();
//---------------------------------------------------------------------
// Construct query.
DbQuery query = new DbQuery(CoreDatabase.DbmsType);
query.Tables.Add(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.Organisation), aliasOrganisation);
// Add columns as defined in query list.
if (columns.HasId(SaxOrganisation.Column.Id))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Organisation_Id, aliasOrganisation));
if (columns.HasId(SaxOrganisation.Column.Name))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Organisation_Name, aliasOrganisation));
if (columns.HasId(SaxOrganisation.Column.PhoneMain))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Organisation_PhoneMain, aliasOrganisation));
if (columns.HasId(SaxOrganisation.Column.PhoneAlt))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Organisation_PhoneAlt, aliasOrganisation));
if (columns.HasId(SaxOrganisation.Column.OrganisationType) || columns.HasId(SaxOrganisation.Column.OrganisationType_Desc))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Organisation_OrganisationType, aliasOrganisation));
if (columns.HasId(SaxOrganisation.Column.OrganisationCategory) || columns.HasId(SaxOrganisation.Column.OrganisationCategory_Desc))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Organisation_OrganisationCategory, aliasOrganisation));
// Common properties.
if (columns.HasId(SaxOrganisation.Column.Notes))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Organisation_Notes, aliasOrganisation));
if (columns.HasId(SaxOrganisation.Column.Flags))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Organisation_Flags, aliasOrganisation));
if (columns.HasId(SaxOrganisation.Column.Status) || columns.HasId(SaxOrganisation.Column.Status_Desc) || columns.HasId(SaxOrganisation.Column.Status_Ind))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Organisation_Status, aliasOrganisation));
if (columns.HasId(SaxOrganisation.Column.CreateOn_Date))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Organisation_CreateOn, aliasOrganisation));
if (columns.HasId(SaxOrganisation.Column.UpdateOn_Date))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Organisation_UpdateOn, aliasOrganisation));
//---------------------------------------------------------------------
// User count.
if (columns.HasId(SaxOrganisation.Column.User_Count))
{
String aliasUserCount = "aUsrOrg_Count";
DbQuery queryUserCount = new DbQuery(CoreDatabase.DbmsType);
queryUserCount.Tables.Add(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.UserOrganisation), aliasUserCount);
queryUserCount.Columns.Add("Count(*)");
queryUserCount.Filters.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserOrganisation_OrganisationId, aliasUserCount) + "=" + SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Organisation_Id, aliasOrganisation));
queryUserCount.Filters.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserOrganisation_Status, aliasUserCount) + "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'");
query.Columns.Add("(" + queryUserCount.BuildQuery() + ")", colOrganisation_Member_Count);
}
//---------------------------------------------------------------------
// Member count.
if (columns.HasId(SaxOrganisation.Column.Member_Count))
{
String aliasMemberCount = "aUsrOrg_Count";
DbQuery queryMemberCount = new DbQuery(CoreDatabase.DbmsType);
queryMemberCount.Tables.Add(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.UserOrganisation), aliasMemberCount);
queryMemberCount.Columns.Add("Count(*)");
queryMemberCount.Filters.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserOrganisation_OrganisationId, aliasMemberCount) + "=" + SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Organisation_Id, aliasOrganisation));
queryMemberCount.Filters.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserOrganisation_OrganisationRoleCount, aliasMemberCount) + ">0");
queryMemberCount.Filters.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserOrganisation_Status, aliasMemberCount) + "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'");
query.Columns.Add("(" + queryMemberCount.BuildQuery() + ")", colOrganisation_Member_Count);
}
//---------------------------------------------------------------------
// Populate filter.
query.Filters.AddRange(GetOrganisationQueryFilter(prm));
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetOrganisationSortColumns(prm))
query.OrderBy.Add(sortColumn);
}
//---------------------------------------------------------------------
//return new DbResultSet_DataTableReader(db, query.BuildQuery(prm.ResultsPaging));
return DbResultSet_DataReader.ExecuteQuery(CoreDatabase, query.BuildQuery(prm.ResultsPaging));
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,646 @@
using Sarand.Net.Standard.Dbas.Data;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using Saxonite.Base.App;
using Saxonite.Net.Standard.Dbas.Bus;
using Saxonite.Net.Standard.Dbas.Internal;
using Saxonite.Net.Standard.Base.Bus;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Text;
using Sarand.Net.Standard.Base.Utils;
using Saxonite.Net.Standard.Base.App;
using System.Linq;
namespace Saxonite.Net.Standard.Dbas.Mgr
{
//=======================================================================
partial class SaxAccountMgr_Dbas
{
//*******************************************************************
// Account Mgr - User Account
//*******************************************************************
// Utilities.
private List<StringPair> GetLogProperties(SaxUserAccount userAccount)
{
return new List<StringPair>()
{
new StringPair("Id",SysId.ToString(userAccount.Id)),
new StringPair("Email",userAccount.EmailAddress),
new StringPair("Status",userAccount.StatusCode)
};
}
//-------------------------------------------------------------------
// Create item.
public override SaxUserAccount CreateUserAccount()
{
ClearErrorState();
return new SaxUserAccount_Dbas(CoreDatabase, null, 0);
}
private SaxUserAccount_Dbas CreateUserAccount(UserAccount_Db dbUserAccount)
{
ClearErrorState();
SaxUserAccount_Dbas userAccount = new SaxUserAccount_Dbas(CoreDatabase, new SysId(dbUserAccount._Id), (ushort)dbUserAccount._Flags);
PopulateFrom(dbUserAccount, userAccount);
return userAccount;
}
//-------------------------------------------------------------------
// Get item.
public override SaxUserAccount GetUserAccount(SaxUserAccount.Params prm)
{
ClearErrorState();
return GetUserAccount(GetUserAccountQueryFilter(prm).Concat(" And ", "(", ")"));
}
private SaxUserAccount GetUserAccount(String filter)
{
ClearErrorState();
long count = GetUserAccountCount(filter);
if (count == 0) return null;
if (count != 1)
{
SetErrorState("Multiple items found");
return null;
}
SaxUserAccount userAccount = null;
// Query data.
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
dbConnection.Open();
UserAccount_Db dbUserAccount = new UserAccount_Db(CoreDbInfo);
dbUserAccount.PopulateFrom(dbCommand, aliasUserAccount, filter);
userAccount = CreateUserAccount(dbUserAccount);
}
catch (Exception exc)
{
SetErrorState("Database query exception");
SaLogger.Warn(GetType().Name + ".GetUserAccount\n\tQuery: " + dbCommand.CommandText + "\n\t" + exc.GetType().Name + ": " + exc.Message);
}
}
return userAccount;
}
//-------------------------------------------------------------------
// Validate item.
public override bool IsValidUserAccountData(SaxUserAccount.Data data, SaxUserAccount.ErrField errField)
{
ClearErrorState();
if (!base.IsValidUserAccountData(data, errField)) return false;
return true;
}
//-------------------------------------------------------------------
// Insert item.
public override bool InsertUserAccount(SaxUserAccount userAccount, DbUpdateInfo dbUpdateInfo)
{
String fn = GetType().Name + ".InsertUserAccount";
ClearErrorState();
if (!IsValidUserAccount(userAccount)) return false;
if (SysId.IsValid(userAccount.Id)) return SetErrorState(ErrorMessage.ValiditemId);
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
dbConnection.Open();
UserAccount_Db dbUserAccount = new UserAccount_Db(CoreDbInfo);
PopulateTo(dbUserAccount, userAccount, dbUpdateInfo);
if (UserAccount_Db.FieldsNonId.Contains("Id"))
{
// Generate next Id.
dbUserAccount._Id = CoreDatabase.GetNextIdFromTable("UserAccount");
}
dbUserAccount.ExecuteInsertCommand(dbCommand);
userAccount.Id = new SysId(dbUserAccount._Id);
userAccount.Changed = false;
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(userAccount).Concat(": ").Concat("", "\n\t"));
}
catch (Exception exc) { SetErrorState(exc.Message); }
}
return !HasErrorState();
}
//-------------------------------------------------------------------
// Update item.
public override bool UpdateUserAccount(SaxUserAccount userAccount, DbUpdateInfo dbUpdateInfo)
{
String fn = GetType().Name + ".UpdateUserAccount";
ClearErrorState();
if (!IsValidUserAccount(userAccount)) return false;
if (!SysId.IsValid(userAccount.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
if (!userAccount.Changed)
{
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(userAccount).Concat(": ").Concat("", "\n\t"));
return true;
}
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
// Retrieve item.
dbConnection.Open();
UserAccount_Db dbUserAccount = new UserAccount_Db(CoreDbInfo);
dbUserAccount.PopulateFrom(dbCommand, aliasUserAccount, "Id=" + SysId.ToString(userAccount.Id));
// ToDo SaxUpdateLogItemMonitor_UserAccount updateLogMonitor = new SaxUpdateLogItemMonitor_UserAccount(SessionContext, CreateUserAccount(dbUserAccount), dbUpdateInfo);
// Update properties.
PopulateTo(dbUserAccount, userAccount, dbUpdateInfo);
dbUserAccount.ExecuteUpdateCommand(dbCommand);
userAccount.Changed = false;
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(userAccount).Concat(": ").Concat("", "\n\t"));
// Record updates.
// ToDo updateLogMonitor.RecordUpdatedValues(userAccount);
// ToDo updateLogMonitor.LogUpdates();
}
catch (Exception exc) { SetErrorState(exc.Message); }
}
return !HasErrorState();
}
//-------------------------------------------------------------------
// Delete item.
public override bool UserAccountCanBeDeleted(SaxUserAccount userAccount)
{
ClearErrorState();
if (!base.UserAccountCanBeDeleted(userAccount)) return false;
return true;
}
public override bool DeleteUserAccount(SaxUserAccount userAccount, DbUpdateInfo dbUpdateInfo)
{
String fn = GetType().Name + ".DeleteUserAccount";
ClearErrorState();
if (!UserAccountCanBeDeleted(userAccount)) return false;
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
// Retrieve userAccount.
dbConnection.Open();
UserAccount_Db dbUserAccount = new UserAccount_Db(CoreDbInfo);
dbUserAccount.PopulateFrom(dbCommand, aliasUserAccount, "Id=" + userAccount.Id.ToString());
// Delete userAccount.
dbCommand.CommandType = System.Data.CommandType.Text;
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.UserAccount) + " WHERE Id=" + SysId.ToString(userAccount.Id) + ";";
dbCommand.ExecuteNonQuery();
userAccount.Changed = false;
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(userAccount).Concat(": ").Concat("", "\n\t"));
}
catch (Exception exc) { SetErrorState(exc.Message); }
}
return !HasErrorState();
}
//-------------------------------------------------------------------
// Copy data properties to and from database.
private void PopulateTo(UserAccount_Db dbUserAccount, SaxUserAccount userAccount, DbUpdateInfo dbUpdateInfo)
{
dbUserAccount._Id = SysId.ToInt(userAccount.Id);
dbUserAccount._EmailAddress = userAccount.EmailAddress;
dbUserAccount._Title = userAccount.Title;
dbUserAccount._FirstName = userAccount.FirstName;
dbUserAccount._Initials = userAccount.Initials;
dbUserAccount._LastName = userAccount.LastName;
dbUserAccount._PhoneMain = userAccount.PhoneMain;
dbUserAccount._PhoneMobile = userAccount.PhoneMobile;
dbUserAccount._DateOfBirth = userAccount.DateOfBirth;
// Security
dbUserAccount._PasswordHashed = userAccount.PasswordHashed;
dbUserAccount._PasswordToken = userAccount.PasswordToken;
dbUserAccount._PasswordHistory = userAccount.PasswordHistory.Concat(SaxUserAccount.PasswordHistoryDelim);
dbUserAccount._PasswordChangedAt = userAccount.PasswordChangedAt;
// Login.
dbUserAccount._LastLoginAt = userAccount.LastLoginAt;
dbUserAccount._LastInvalidLoginAt = userAccount.LastInvalidLoginAt;
dbUserAccount._InvalidLoginCount = userAccount.InvalidLoginCount;
// Common.
dbUserAccount._Notes = userAccount.Notes;
dbUserAccount._Status = SacsSystem.GetStatusCode(userAccount.Status);
dbUserAccount._Flags = (short)userAccount.Flags;
if (!SysId.IsValid(userAccount.Id))
{
dbUserAccount._CreateOn = DateTime.Now;
dbUserAccount._CreateBy = dbUpdateInfo.UserId.ToInt();
dbUserAccount._CreateHost = dbUpdateInfo.Host;
}
dbUserAccount._UpdateOn = DateTime.Now;
dbUserAccount._UpdateBy = dbUpdateInfo.UserId.ToInt();
dbUserAccount._UpdateHost = dbUpdateInfo.Host;
}
private void PopulateFrom(UserAccount_Db dbUserAccount, SaxUserAccount userAccount)
{
//userAccount.Id = new SysId(dbUserAccount._Id);
userAccount.EmailAddress = dbUserAccount._EmailAddress;
userAccount.Title = dbUserAccount._Title;
userAccount.FirstName = dbUserAccount._FirstName;
userAccount.Initials = dbUserAccount._Initials;
userAccount.LastName = dbUserAccount._LastName;
userAccount.PhoneMain = dbUserAccount._PhoneMain;
userAccount.PhoneMobile = dbUserAccount._PhoneMobile;
userAccount.DateOfBirth = dbUserAccount._DateOfBirth;
// Security.
userAccount.PasswordHashed = dbUserAccount._PasswordHashed;
userAccount.PasswordToken = dbUserAccount._PasswordToken;
userAccount.PasswordHistory = StringListUtil.Split(dbUserAccount._PasswordHistory, SaxUserAccount.PasswordHistoryDelim);
userAccount.PasswordChangedAt = dbUserAccount._PasswordChangedAt;
// Login.
userAccount.LastLoginAt = dbUserAccount._LastLoginAt;
userAccount.LastInvalidLoginAt = dbUserAccount._LastInvalidLoginAt;
userAccount.InvalidLoginCount = dbUserAccount._InvalidLoginCount;
// Common.
userAccount.Notes = dbUserAccount._Notes;
userAccount.Status = SacsSystem.GetStatusForCode(dbUserAccount._Status);
userAccount.SetCreateStamp(dbUserAccount._CreateOn, new SysId(dbUserAccount._CreateBy), dbUserAccount._CreateHost);
userAccount.SetUpdateStamp(dbUserAccount._UpdateOn, new SysId(dbUserAccount._UpdateBy), dbUserAccount._UpdateHost);
userAccount.AcceptChanges();
}
//-------------------------------------------------------------------
// Item column definitions.
private static readonly String aliasUserAccount = "UsrAct";
private static readonly String colUserAccount_UserRoleCount = "UsrAct_RoleCount";
private static readonly String colUserAccount_SystemAdminRole = "UsrAct_SystemAdminRole";
private void SetUserAccountColDfn
(ColumnDfn col, String caption, int width, SaxDbDfn.ColumnIdx dbCol,
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
String alias = "", String prefix = "")
{
if (String.IsNullOrEmpty(alias) && SaxDbDfn.GetTableForColumn(dbCol) == SaxDbDfn.TableIdx.UserAccount)
alias = aliasUserAccount;
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn.GetColumnName(dbCol, false), SaxDbDfn.GetColumnNameQual(dbCol, alias), dataType, align);
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn.ColumnIdx.Unknown)
col.MaxLength = (int)SaxDbDfn.GetColTextLen(dbCol);
}
public override ColumnDfn GetUserAccountColumnDfn(SaxUserAccount.Column columnId, string caption = "", int width = 0)
{
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
switch (columnId)
{
//-----------------------------------------------------------
case SaxUserAccount.Column.Pos:
SetUserAccountColDfn(columnDfn, "Pos", 60, SaxDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
columnDfn.ReadOnly = true;
columnDfn.Resizable = false;
break;
case SaxUserAccount.Column.Id:
SetUserAccountColDfn(columnDfn, "Id", 80, SaxDbDfn.ColumnIdx.UserAccount_Id, ColumnAlignment.Right, DataValue.DataType.Long);
columnDfn.ReadOnly = true;
break;
case SaxUserAccount.Column.EmailAddress:
SetUserAccountColDfn(columnDfn, "Email", 120, SaxDbDfn.ColumnIdx.UserAccount_EmailAddress);
columnDfn.ReadOnly = true;
break;
case SaxUserAccount.Column.Title:
SetUserAccountColDfn(columnDfn, "Title", 80, SaxDbDfn.ColumnIdx.UserAccount_Title);
break;
case SaxUserAccount.Column.FirstName:
SetUserAccountColDfn(columnDfn, "FirstName", 100, SaxDbDfn.ColumnIdx.UserAccount_FirstName);
break;
case SaxUserAccount.Column.Initials:
SetUserAccountColDfn(columnDfn, "Initials", 60, SaxDbDfn.ColumnIdx.UserAccount_Initials);
break;
case SaxUserAccount.Column.LastName:
SetUserAccountColDfn(columnDfn, "LastName", 100, SaxDbDfn.ColumnIdx.UserAccount_LastName);
break;
case SaxUserAccount.Column.PhoneMain:
SetUserAccountColDfn(columnDfn, "PhoneMain", 100, SaxDbDfn.ColumnIdx.UserAccount_PhoneMain);
break;
case SaxUserAccount.Column.PhoneMobile:
SetUserAccountColDfn(columnDfn, "PhoneMobile", 100, SaxDbDfn.ColumnIdx.UserAccount_PhoneMobile);
break;
case SaxUserAccount.Column.DateOfBirth:
SetUserAccountColDfn(columnDfn, "DOB", 80, SaxDbDfn.ColumnIdx.UserAccount_DateOfBirth, ColumnAlignment.Center, DataValue.DataType.Date);
break;
//-------------------------------------------------------
// Security.
case SaxUserAccount.Column.LastLoginOn:
SetUserAccountColDfn(columnDfn, "Last login", 100, SaxDbDfn.ColumnIdx.UserAccount_LastLoginAt, ColumnAlignment.Center, DataValue.DataType.Date);
columnDfn.ReadOnly = true;
break;
case SaxUserAccount.Column.LastLoginAt:
SetUserAccountColDfn(columnDfn, "Last login", 120, SaxDbDfn.ColumnIdx.UserAccount_LastLoginAt, ColumnAlignment.Center, DataValue.DataType.DateTime);
columnDfn.ReadOnly = true;
break;
case SaxUserAccount.Column.LastInvalidLoginOn:
SetUserAccountColDfn(columnDfn, "Last invalid login", 100, SaxDbDfn.ColumnIdx.UserAccount_LastInvalidLoginAt, ColumnAlignment.Center, DataValue.DataType.Date);
columnDfn.ReadOnly = true;
break;
case SaxUserAccount.Column.LastInvalidLoginAt:
SetUserAccountColDfn(columnDfn, "Last invalid login", 100, SaxDbDfn.ColumnIdx.UserAccount_LastInvalidLoginAt, ColumnAlignment.Center, DataValue.DataType.DateTime);
columnDfn.ReadOnly = true;
break;
case SaxUserAccount.Column.InvalidLoginCount:
SetUserAccountColDfn(columnDfn, "Invalid logins", 80, SaxDbDfn.ColumnIdx.UserAccount_InvalidLoginCount, ColumnAlignment.Center, DataValue.DataType.Long);
columnDfn.ReadOnly = true;
break;
//-----------------------------------------------------------
// Derived properties.
case SaxUserAccount.Column.UserRoleCount:
SetUserAccountColDfn(columnDfn, "Roles", 80, SaxDbDfn.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
columnDfn.DataName = colUserAccount_UserRoleCount;
columnDfn.ReadOnly = true;
break;
case SaxUserAccount.Column.SystemAdminUser:
SetUserAccountColDfn(columnDfn, "System Admin", 80, SaxDbDfn.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Bool);
columnDfn.DataName = colUserAccount_SystemAdminRole;
columnDfn.ReadOnly = true;
break;
//-----------------------------------------------------------
// Common properties.
case SaxUserAccount.Column.Notes:
SetUserAccountColDfn(columnDfn, "Notes", 240, SaxDbDfn.ColumnIdx.UserAccount_Notes);
break;
case SaxUserAccount.Column.Flags:
SetUserAccountColDfn(columnDfn, "Flags", 60, SaxDbDfn.ColumnIdx.UserAccount_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
break;
case SaxUserAccount.Column.Status:
SetUserAccountColDfn(columnDfn, "Status", 80, SaxDbDfn.ColumnIdx.UserAccount_Status, ColumnAlignment.Center);
break;
case SaxUserAccount.Column.Status_Desc:
SetUserAccountColDfn(columnDfn, "Status", 90, SaxDbDfn.ColumnIdx.UserAccount_Status, ColumnAlignment.Center);
break;
case SaxUserAccount.Column.Status_Ind:
SetUserAccountColDfn(columnDfn, "Status", 80, SaxDbDfn.ColumnIdx.UserAccount_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
break;
case SaxUserAccount.Column.CreateOn_Date:
SetUserAccountColDfn(columnDfn, "Created", 80, SaxDbDfn.ColumnIdx.UserAccount_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
columnDfn.ReadOnly = true;
break;
case SaxUserAccount.Column.UpdateOn_Date:
SetUserAccountColDfn(columnDfn, "Updated", 80, SaxDbDfn.ColumnIdx.UserAccount_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;
}
//-------------------------------------------------------------------
// Item query filter.
public override List<string> GetUserAccountQueryFilter(SaxUserAccount.Params prm)
{
List<String> filter = new List<String>();
// Item Ids.
String includedIds = prm.IdsIncluded.Concat(",");
if (!includedIds.IsEmpty())
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_Id, aliasUserAccount) + " IN (" + includedIds + ")");
String excludedIds = prm.IdsExcluded.Concat(",");
if (!excludedIds.IsEmpty())
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_Id, aliasUserAccount) + " NOT IN (" + excludedIds + ")");
// Email address.
if (!StringUtil.IsEmpty(prm.EmailAddress))
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_EmailAddress, aliasUserAccount) + " = '" + DbQuery.FormatForCondition(prm.EmailAddress) + "'");
// Name.
if (!StringUtil.IsEmpty(prm.NamePartial))
{
List<String> nameFilter = new List<string>();
nameFilter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_Title, aliasUserAccount) + "Like'%" + DbQuery.FormatForLike(prm.NamePartial) + "%'");
nameFilter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_FirstName, aliasUserAccount) + "Like'%" + DbQuery.FormatForLike(prm.NamePartial) + "%'");
nameFilter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_LastName, aliasUserAccount) + "Like'%" + DbQuery.FormatForLike(prm.NamePartial) + "%'");
filter.Add(nameFilter.Concat(" OR ", "(", ")"));
}
// User Account filter.
if (!StringUtil.IsEmpty(prm.UserAccountFilter))
{
// Split filter into words.
List<String> filterWords = prm.UserAccountFilter.Split((char[])null).ToList();
filterWords.RemoveDuplicatesCI();
filterWords.RemoveBlanks();
foreach (String filterWord in filterWords)
{
List<String> userAccountFilter = new List<string>();
userAccountFilter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_EmailAddress, aliasUserAccount) + " Like '%" + DbQuery.FormatForLike(filterWord) + "%'");
userAccountFilter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_Title, aliasUserAccount) + " Like '%" + DbQuery.FormatForLike(filterWord) + "%'");
userAccountFilter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_FirstName, aliasUserAccount) + " Like '%" + DbQuery.FormatForLike(filterWord) + "%'");
userAccountFilter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_LastName, aliasUserAccount) + " Like '%" + DbQuery.FormatForLike(filterWord) + "%'");
filter.Add(userAccountFilter.Concat(" OR ", "(", ")"));
}
}
// Active roles.
if (!prm.ActiveRoles.IsEmpty())
{
String aliasUserRole = "UsrRol";
DbQuery roleQuery = new DbQuery(CoreDatabase.DbmsType);
roleQuery.Tables.Add(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.UserRole), aliasUserRole);
roleQuery.Columns.Add("1");
roleQuery.Filters.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserRole_UserAccountId, aliasUserRole) + "=" + SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_Id, aliasUserAccount));
foreach (Sax.UserRole userRole in prm.ActiveRoles)
{
roleQuery.Filters.Clear();
roleQuery.Filters.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserRole_UserAccountId, aliasUserRole) + "=" + SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_Id, aliasUserAccount));
roleQuery.Filters.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserRole_UserRoleCode, aliasUserRole) + "='" + UserRoles.GetCodeForType(userRole) + "'");
filter.Add("Exists(" + roleQuery.BuildQuery() + ")");
}
}
// Notes.
if (!StringUtil.IsEmpty(prm.NotesPartial))
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_Notes, aliasUserAccount) + " LIKE '%" + DbQuery.FormatForLike(prm.NotesPartial) + "%'");
// Status.
if (prm.StatusCat == SaxUserAccount.StatusCat.ActiveOnly)
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_Status, aliasUserAccount) + "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'");
else if (prm.StatusCat == SaxUserAccount.StatusCat.NotDeleted)
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_Status, aliasUserAccount) + "!='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'");
if (filter.Count < 1) filter.Add("1=1");
return filter;
}
// Item sort columns.
public List<String> GetUserAccountSortColumns(SaxUserAccount.Params prm)
{
// Sort sequence:
List<String> sortColumnNames = new List<String>();
foreach (var columnDfn in prm.SortColumns)
{
// Need to ensure correct alias used for UserAccount columns in case of conflict.
String sortCol = String.Empty;
if (SaxDbDfn.GetTableForColumn((SaxDbDfn.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn.TableIdx.UserAccount)
{
sortCol = SaxDbDfn.GetColumnNameQual((SaxDbDfn.ColumnIdx)columnDfn.DbColumn, aliasUserAccount);
}
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(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_Id, aliasUserAccount) + " ASC");
}
return sortColumnNames;
}
//-------------------------------------------------------------------
// Item count.
private long GetUserAccountCount(String filter)
{
ClearErrorState();
return CoreDatabase.GetRowCount(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.UserAccount) + " As " + aliasUserAccount, filter);
}
public override long GetUserAccountCount(SaxUserAccount.Params prm)
{
ClearErrorState();
return GetUserAccountCount(GetUserAccountQueryFilter(prm).Concat(" AND ", "(", ")"));
}
//-------------------------------------------------------------------
// Item list.
public override List<SaxUserAccount> GetUserAccountList(SaxUserAccount.Params prm)
{
List<SaxUserAccount> userAccounts = new List<SaxUserAccount>();
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
qry.Tables.Add(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.UserAccount), aliasUserAccount);
UserAccount_Db dbUserAccount = new UserAccount_Db(CoreDbInfo);
qry.Columns.AddRange(dbUserAccount.ExistingColumnNames);
qry.Filters.AddRange(GetUserAccountQueryFilter(prm));
qry.OrderBy.AddRange(GetUserAccountSortColumns(prm));
// Query data.
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
dbConnection.Open();
dbCommand.CommandText = qry.BuildQuery(prm.ResultsPaging);
using (DbDataReader dbDataReader = dbCommand.ExecuteReader())
{
while (dbDataReader.Read())
{
dbUserAccount = new UserAccount_Db(CoreDbInfo);
dbUserAccount.PopulateFrom(dbDataReader);
userAccounts.Add(CreateUserAccount(dbUserAccount));
}
}
}
catch (Exception exc)
{
SaLogger.Warn(GetType().Name + ".GetUserAccountList\n\tQuery: " + dbCommand.CommandText + "\n\t" + exc.GetType().Name + ": " + exc.Message);
}
}
return userAccounts;
}
//-------------------------------------------------------------------
// Item query execution.
public override DbResultSet ExecuteUserAccountQuery(List<ColumnDfn> columns, SaxUserAccount.Params prm)
{
ClearErrorState();
//---------------------------------------------------------------------
// Construct query.
DbQuery query = new DbQuery(CoreDatabase.DbmsType);
query.Tables.Add(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.UserAccount), aliasUserAccount);
// Add columns as defined in query list.
if (columns.HasId(SaxUserAccount.Column.Id))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_Id, aliasUserAccount));
if (columns.HasId(SaxUserAccount.Column.EmailAddress))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_EmailAddress, aliasUserAccount));
if (columns.HasId(SaxUserAccount.Column.Title))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_Title, aliasUserAccount));
if (columns.HasId(SaxUserAccount.Column.FirstName))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_FirstName, aliasUserAccount));
if (columns.HasId(SaxUserAccount.Column.Initials))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_Initials, aliasUserAccount));
if (columns.HasId(SaxUserAccount.Column.LastName))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_LastName, aliasUserAccount));
if (columns.HasId(SaxUserAccount.Column.PhoneMain))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_PhoneMain, aliasUserAccount));
if (columns.HasId(SaxUserAccount.Column.PhoneMobile))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_PhoneMobile, aliasUserAccount));
if (columns.HasId(SaxUserAccount.Column.DateOfBirth))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_DateOfBirth, aliasUserAccount));
// Security.
if (columns.HasId(SaxUserAccount.Column.LastLoginOn) || columns.HasId(SaxUserAccount.Column.LastLoginAt))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_LastLoginAt, aliasUserAccount));
// Common properties.
if (columns.HasId(SaxUserAccount.Column.Notes))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_Notes, aliasUserAccount));
if (columns.HasId(SaxUserAccount.Column.Flags))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_Flags, aliasUserAccount));
if (columns.HasId(SaxUserAccount.Column.Status) || columns.HasId(SaxUserAccount.Column.Status_Desc) || columns.HasId(SaxUserAccount.Column.Status_Ind))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_Status, aliasUserAccount));
if (columns.HasId(SaxUserAccount.Column.CreateOn_Date))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_CreateOn, aliasUserAccount));
if (columns.HasId(SaxUserAccount.Column.UpdateOn_Date))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_UpdateOn, aliasUserAccount));
//---------------------------------------------------------------------
// User Role count.
if (columns.HasId(SaxUserAccount.Column.UserRoleCount))
{
String aliasUserRole = "aUsrRol";
DbQuery queryUserRole = new DbQuery(CoreDatabase.DbmsType);
queryUserRole.Tables.Add(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.UserRole), aliasUserRole);
queryUserRole.Columns.Add("Count(*)");
queryUserRole.Filters.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserRole_UserAccountId, aliasUserRole) + "=" + SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_Id, aliasUserAccount));
queryUserRole.Filters.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserRole_Status, aliasUserRole) + "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'");
query.Columns.Add("(" + queryUserRole.BuildQuery() + ")", colUserAccount_UserRoleCount);
}
//---------------------------------------------------------------------
// System Admin user.
if (columns.HasId(SaxUserAccount.Column.SystemAdminUser))
{
String aliasUserRole = "aUsrRol";
DbQuery queryUserRole = new DbQuery(CoreDatabase.DbmsType);
queryUserRole.Tables.Add(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.UserRole), aliasUserRole);
queryUserRole.Columns.Add("Count(*)");
queryUserRole.Filters.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserRole_UserAccountId, aliasUserRole) + "=" + SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_Id, aliasUserAccount));
queryUserRole.Filters.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserRole_UserRoleCode, aliasUserRole) + "='" + UserRoles.GetCodeForType(Sax.UserRole.SystemAdmin) + "'");
queryUserRole.Filters.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserRole_Status, aliasUserRole) + "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'");
query.Columns.Add("(" + queryUserRole.BuildQuery() + ")", colUserAccount_SystemAdminRole);
}
//---------------------------------------------------------------------
// Populate filter.
query.Filters.AddRange(GetUserAccountQueryFilter(prm));
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetUserAccountSortColumns(prm))
query.OrderBy.Add(sortColumn);
}
//---------------------------------------------------------------------
//return new DbResultSet_DataTableReader(db, query.BuildQuery(prm.ResultsPaging));
return DbResultSet_DataReader.ExecuteQuery(CoreDatabase, query.BuildQuery(prm.ResultsPaging));
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,615 @@
using Sarand.Net.Standard.Dbas.Data;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using Saxonite.Base.App;
using Saxonite.Net.Standard.Dbas.Bus;
using Saxonite.Net.Standard.Dbas.Internal;
using Saxonite.Net.Standard.Base.Bus;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Text;
using Saxonite.Net.Standard.Base.App;
using System.Linq;
using Sarand.Net.Standard.Base.Utils;
namespace Saxonite.Net.Standard.Dbas.Mgr
{
//=======================================================================
partial class SaxAccountMgr_Dbas
{
//*******************************************************************
// Account Mgr - User Organisation
//*******************************************************************
// Utilities.
private List<StringPair> GetLogProperties(SaxUserOrganisation userOrganisation)
{
return new List<StringPair>()
{
new StringPair("Id",SysId.ToString(userOrganisation.Id)),
new StringPair("UserAccountId",SysId.ToString(userOrganisation.UserAccountId)),
new StringPair("OrganisationId",SysId.ToString(userOrganisation.OrganisationId)),
new StringPair("Roles",userOrganisation.OrganisationRoles.Select(item => item.ToString()).Concat(", ")),
new StringPair("Status",userOrganisation.StatusCode)
};
}
//-------------------------------------------------------------------
// Create item.
public override SaxUserOrganisation CreateUserOrganisation(SysId userAccountId, SysId organisationId)
{
ClearErrorState();
return new SaxUserOrganisation_Dbas(CoreDatabase, null, userAccountId, organisationId, 0);
}
private SaxUserOrganisation_Dbas CreateUserOrganisation(UserOrganisation_Db dbUserOrganisation)
{
ClearErrorState();
SaxUserOrganisation_Dbas userOrganisation = new SaxUserOrganisation_Dbas(CoreDatabase, new SysId(dbUserOrganisation._Id), new SysId(dbUserOrganisation._UserAccountId), new SysId(dbUserOrganisation._OrganisationId), (ushort)dbUserOrganisation._Flags);
PopulateFrom(dbUserOrganisation, userOrganisation);
return userOrganisation;
}
//-------------------------------------------------------------------
// Get item.
public override SaxUserOrganisation GetUserOrganisation(SaxUserOrganisation.Params prm)
{
ClearErrorState();
return GetUserOrganisation(GetUserOrganisationQueryFilter(prm).Concat(" And ", "(", ")"));
}
private SaxUserOrganisation GetUserOrganisation(String filter)
{
ClearErrorState();
long count = GetUserOrganisationCount(filter);
if (count == 0) return null;
if (count != 1)
{
SetErrorState("Multiple items found");
return null;
}
SaxUserOrganisation userOrganisation = null;
// Query data.
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
dbConnection.Open();
UserOrganisation_Db dbUserOrganisation = new UserOrganisation_Db(CoreDbInfo);
dbUserOrganisation.PopulateFrom(dbCommand, aliasUserOrganisation, filter);
userOrganisation = CreateUserOrganisation(dbUserOrganisation);
}
catch (Exception exc)
{
SetErrorState("Database query exception");
SaLogger.Warn(GetType().Name + ".GetUserOrganisation\n\tQuery: " + dbCommand.CommandText + "\n\t" + exc.GetType().Name + ": " + exc.Message);
}
}
return userOrganisation;
}
//-------------------------------------------------------------------
// Validate item.
public override bool IsValidUserOrganisationData(SaxUserOrganisation.Data data, SaxUserOrganisation.ErrField errField)
{
ClearErrorState();
if (!base.IsValidUserOrganisationData(data, errField)) return false;
return true;
}
//-------------------------------------------------------------------
// Insert item.
public override bool InsertUserOrganisation(SaxUserOrganisation userOrganisation, DbUpdateInfo dbUpdateInfo)
{
String fn = GetType().Name + ".InsertUserOrganisation";
ClearErrorState();
if (!IsValidUserOrganisation(userOrganisation)) return false;
if (SysId.IsValid(userOrganisation.Id)) return SetErrorState(ErrorMessage.ValiditemId);
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
dbConnection.Open();
UserOrganisation_Db dbUserOrganisation = new UserOrganisation_Db(CoreDbInfo);
PopulateTo(dbUserOrganisation, userOrganisation, dbUpdateInfo);
if (UserOrganisation_Db.FieldsNonId.Contains("Id"))
{
// Generate next Id.
dbUserOrganisation._Id = CoreDatabase.GetNextIdFromTable("UserOrganisation");
}
dbUserOrganisation.ExecuteInsertCommand(dbCommand);
userOrganisation.Id = new SysId(dbUserOrganisation._Id);
userOrganisation.Changed = false;
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(userOrganisation).Concat(": ").Concat("", "\n\t"));
}
catch (Exception exc) { SetErrorState(exc.Message); }
}
return !HasErrorState();
}
//-------------------------------------------------------------------
// Update item.
public override bool UpdateUserOrganisation(SaxUserOrganisation userOrganisation, DbUpdateInfo dbUpdateInfo)
{
String fn = GetType().Name + ".UpdateUserOrganisation";
ClearErrorState();
if (!IsValidUserOrganisation(userOrganisation)) return false;
if (!SysId.IsValid(userOrganisation.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
if (!userOrganisation.Changed)
{
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(userOrganisation).Concat(": ").Concat("", "\n\t"));
return true;
}
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
// Retrieve item.
dbConnection.Open();
UserOrganisation_Db dbUserOrganisation = new UserOrganisation_Db(CoreDbInfo);
dbUserOrganisation.PopulateFrom(dbCommand, aliasUserOrganisation, "Id=" + SysId.ToString(userOrganisation.Id));
// ToDo SaxUpdateLogItemMonitor_UserOrganisation updateLogMonitor = new SaxUpdateLogItemMonitor_UserOrganisation(SessionContext, CreateUserOrganisation(dbUserOrganisation), dbUpdateInfo);
// Update properties.
PopulateTo(dbUserOrganisation, userOrganisation, dbUpdateInfo);
dbUserOrganisation.ExecuteUpdateCommand(dbCommand);
userOrganisation.Changed = false;
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(userOrganisation).Concat(": ").Concat("", "\n\t"));
// Record updates.
// ToDo updateLogMonitor.RecordUpdatedValues(userOrganisation);
// ToDo updateLogMonitor.LogUpdates();
}
catch (Exception exc) { SetErrorState(exc.Message); }
}
return !HasErrorState();
}
//-------------------------------------------------------------------
// Delete item.
public override bool UserOrganisationCanBeDeleted(SaxUserOrganisation userOrganisation)
{
ClearErrorState();
if (!base.UserOrganisationCanBeDeleted(userOrganisation)) return false;
return true;
}
public override bool DeleteUserOrganisation(SaxUserOrganisation userOrganisation, DbUpdateInfo dbUpdateInfo)
{
String fn = GetType().Name + ".DeleteUserOrganisation";
ClearErrorState();
if (!UserOrganisationCanBeDeleted(userOrganisation)) return false;
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
// Retrieve userOrganisation.
dbConnection.Open();
UserOrganisation_Db dbUserOrganisation = new UserOrganisation_Db(CoreDbInfo);
dbUserOrganisation.PopulateFrom(dbCommand, aliasUserOrganisation, "Id=" + userOrganisation.Id.ToString());
// Delete userOrganisation.
dbCommand.CommandType = System.Data.CommandType.Text;
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.UserOrganisation) + " WHERE Id=" + SysId.ToString(userOrganisation.Id) + ";";
dbCommand.ExecuteNonQuery();
userOrganisation.Changed = false;
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(userOrganisation).Concat(": ").Concat("", "\n\t"));
}
catch (Exception exc) { SetErrorState(exc.Message); }
}
return !HasErrorState();
}
//-------------------------------------------------------------------
// Copy data properties to and from database.
private void PopulateTo(UserOrganisation_Db dbUserOrganisation, SaxUserOrganisation userOrganisation, DbUpdateInfo dbUpdateInfo)
{
dbUserOrganisation._Id = SysId.ToInt(userOrganisation.Id);
dbUserOrganisation._UserAccountId = SysId.ToInt(userOrganisation.UserAccountId);
dbUserOrganisation._OrganisationId = SysId.ToInt(userOrganisation.OrganisationId);
dbUserOrganisation._OrganisationRoleCodes = userOrganisation.GetOrganisationRoleCodesData();
dbUserOrganisation._OrganisationRoleCount = (byte)userOrganisation.OrganisationRoles.Count;
// Common.
dbUserOrganisation._Notes = userOrganisation.Notes;
dbUserOrganisation._Status = SacsSystem.GetStatusCode(userOrganisation.Status);
dbUserOrganisation._Flags = (short)userOrganisation.Flags;
if (!SysId.IsValid(userOrganisation.Id))
{
dbUserOrganisation._CreateOn = DateTime.Now;
dbUserOrganisation._CreateBy = dbUpdateInfo.UserId.ToInt();
dbUserOrganisation._CreateHost = dbUpdateInfo.Host;
}
dbUserOrganisation._UpdateOn = DateTime.Now;
dbUserOrganisation._UpdateBy = dbUpdateInfo.UserId.ToInt();
dbUserOrganisation._UpdateHost = dbUpdateInfo.Host;
}
private void PopulateFrom(UserOrganisation_Db dbUserOrganisation, SaxUserOrganisation userOrganisation)
{
//userOrganisation.Id = new SysId(dbUserOrganisation._Id);
//userOrganisation.UserAccountId = new SysId(dbUserOrganisation._UserAccountId);
//userOrganisation.OrganisationId = new SysId(dbUserOrganisation._OrganisationId);
userOrganisation.OrganisationRoles = SaxUserOrganisation.GetOrganisationRolesFromCodes(dbUserOrganisation._OrganisationRoleCodes);
// Common.
userOrganisation.Notes = dbUserOrganisation._Notes;
userOrganisation.Status = SacsSystem.GetStatusForCode(dbUserOrganisation._Status);
userOrganisation.SetCreateStamp(dbUserOrganisation._CreateOn, new SysId(dbUserOrganisation._CreateBy), dbUserOrganisation._CreateHost);
userOrganisation.SetUpdateStamp(dbUserOrganisation._UpdateOn, new SysId(dbUserOrganisation._UpdateBy), dbUserOrganisation._UpdateHost);
userOrganisation.AcceptChanges();
}
//-------------------------------------------------------------------
// Item column definitions.
private static readonly String aliasUserOrganisation = "UsrRol";
private static readonly String aliasUserOrganisation_UserAccount = "UsrRol_Usr";
private static readonly String prefixUserOrganisation_UserAccount = "UsrRol_Usr_";
private static readonly String aliasUserOrganisation_Organisation = "UsrRol_Org";
private static readonly String prefixUserOrganisation_Organisation = "UsrRol_Org_";
private static readonly String aliasUserOrganisation_Organisation_Region = "UsrRol_Org_Rgn";
private static readonly String prefixUserOrganisation_Organisation_Region = "UsrRol_Org_Rgn_";
private static readonly String aliasUserOrganisation_Organisation_Sport = "UsrRol_Org_Spt";
private static readonly String prefixUserOrganisation_Organisation_Sport = "UsrRol_Org_Spt_";
private void SetUserOrganisationColDfn
(ColumnDfn col, String caption, int width, SaxDbDfn.ColumnIdx dbCol,
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
String alias = "", String prefix = "")
{
if (String.IsNullOrEmpty(alias) && SaxDbDfn.GetTableForColumn(dbCol) == SaxDbDfn.TableIdx.UserOrganisation)
alias = aliasUserOrganisation;
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn.GetColumnName(dbCol, false), SaxDbDfn.GetColumnNameQual(dbCol, alias), dataType, align);
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn.ColumnIdx.Unknown)
col.MaxLength = (int)SaxDbDfn.GetColTextLen(dbCol);
}
public override ColumnDfn GetUserOrganisationColumnDfn(SaxUserOrganisation.Column columnId, string caption = "", int width = 0)
{
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
switch (columnId)
{
//-----------------------------------------------------------
case SaxUserOrganisation.Column.Pos:
SetUserOrganisationColDfn(columnDfn, "Pos", 60, SaxDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
columnDfn.ReadOnly = true;
columnDfn.Resizable = false;
break;
case SaxUserOrganisation.Column.Id:
SetUserOrganisationColDfn(columnDfn, "Id", 80, SaxDbDfn.ColumnIdx.UserOrganisation_Id, ColumnAlignment.Right, DataValue.DataType.Long);
columnDfn.ReadOnly = true;
break;
case SaxUserOrganisation.Column.UserAccountId:
SetUserOrganisationColDfn(columnDfn, "User Id", 80, SaxDbDfn.ColumnIdx.UserOrganisation_UserAccountId, ColumnAlignment.Right, DataValue.DataType.Long);
columnDfn.ReadOnly = true;
break;
case SaxUserOrganisation.Column.OrganisationId:
SetUserOrganisationColDfn(columnDfn, "Organisation Id", 80, SaxDbDfn.ColumnIdx.UserOrganisation_OrganisationId, ColumnAlignment.Right, DataValue.DataType.Long);
columnDfn.ReadOnly = true;
break;
//-------------------------------------------------------
// Organisation roles.
case SaxUserOrganisation.Column.OrganisationRoleCount:
SetUserOrganisationColDfn(columnDfn, "Role count", 80, SaxDbDfn.ColumnIdx.UserOrganisation_OrganisationRoleCount, ColumnAlignment.Center, DataValue.DataType.Long);
columnDfn.ReadOnly = true;
break;
case SaxUserOrganisation.Column.OrganisationRoleCodes:
SetUserOrganisationColDfn(columnDfn, "Roles", 100, SaxDbDfn.ColumnIdx.UserOrganisation_OrganisationRoleCodes, ColumnAlignment.Left);
columnDfn.ReadOnly = true;
break;
case SaxUserOrganisation.Column.OrganisationRoleDescs:
SetUserOrganisationColDfn(columnDfn, "Roles", 100, SaxDbDfn.ColumnIdx.UserOrganisation_OrganisationRoleCodes, ColumnAlignment.Left);
columnDfn.ReadOnly = true;
break;
//-------------------------------------------------------
// User.
case SaxUserOrganisation.Column.User_EmailAddress:
SetUserOrganisationColDfn(columnDfn, "Email address", 160, SaxDbDfn.ColumnIdx.UserAccount_EmailAddress, ColumnAlignment.Left, DataValue.DataType.String, aliasUserOrganisation_UserAccount, prefixUserOrganisation_UserAccount);
columnDfn.ReadOnly = true;
break;
case SaxUserOrganisation.Column.User_DisplayName:
SetUserOrganisationColDfn(columnDfn, "User", 160, SaxDbDfn.ColumnIdx.Unknown, ColumnAlignment.Left, DataValue.DataType.String);
columnDfn.ReadOnly = true;
break;
case SaxUserOrganisation.Column.User_Title:
SetUserOrganisationColDfn(columnDfn, "TItle", 80, SaxDbDfn.ColumnIdx.UserAccount_Title, ColumnAlignment.Left, DataValue.DataType.String, aliasUserOrganisation_UserAccount, prefixUserOrganisation_UserAccount);
columnDfn.ReadOnly = true;
break;
case SaxUserOrganisation.Column.User_FirstName:
SetUserOrganisationColDfn(columnDfn, "First name", 120, SaxDbDfn.ColumnIdx.UserAccount_FirstName, ColumnAlignment.Left, DataValue.DataType.String, aliasUserOrganisation_UserAccount, prefixUserOrganisation_UserAccount);
columnDfn.ReadOnly = true;
break;
case SaxUserOrganisation.Column.User_LastName:
SetUserOrganisationColDfn(columnDfn, "Last name", 120, SaxDbDfn.ColumnIdx.UserAccount_LastName, ColumnAlignment.Left, DataValue.DataType.String, aliasUserOrganisation_UserAccount, prefixUserOrganisation_UserAccount);
columnDfn.ReadOnly = true;
break;
//-------------------------------------------------------
// Organisation.
case SaxUserOrganisation.Column.Organisation_Name:
SetUserOrganisationColDfn(columnDfn, "Organisation", 160, SaxDbDfn.ColumnIdx.Organisation_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasUserOrganisation_Organisation, prefixUserOrganisation_Organisation);
columnDfn.ReadOnly = true;
break;
case SaxUserOrganisation.Column.Organisation_Region_Name:
SetUserOrganisationColDfn(columnDfn, "Organisation region", 160, SaxDbDfn.ColumnIdx.Region_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasUserOrganisation_Organisation_Region, prefixUserOrganisation_Organisation_Region);
columnDfn.ReadOnly = true;
break;
case SaxUserOrganisation.Column.Organisation_Sport_Name:
SetUserOrganisationColDfn(columnDfn, "Organisation sport", 160, SaxDbDfn.ColumnIdx.Sport_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasUserOrganisation_Organisation_Sport, prefixUserOrganisation_Organisation_Sport);
columnDfn.ReadOnly = true;
break;
//-----------------------------------------------------------
// Derived properties.
//-----------------------------------------------------------
// Common properties.
case SaxUserOrganisation.Column.Notes:
SetUserOrganisationColDfn(columnDfn, "Notes", 240, SaxDbDfn.ColumnIdx.UserOrganisation_Notes);
break;
case SaxUserOrganisation.Column.Flags:
SetUserOrganisationColDfn(columnDfn, "Flags", 60, SaxDbDfn.ColumnIdx.UserOrganisation_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
break;
case SaxUserOrganisation.Column.Status:
SetUserOrganisationColDfn(columnDfn, "Status", 80, SaxDbDfn.ColumnIdx.UserOrganisation_Status, ColumnAlignment.Center);
break;
case SaxUserOrganisation.Column.Status_Desc:
SetUserOrganisationColDfn(columnDfn, "Status", 90, SaxDbDfn.ColumnIdx.UserOrganisation_Status, ColumnAlignment.Center);
break;
case SaxUserOrganisation.Column.Status_Ind:
SetUserOrganisationColDfn(columnDfn, "Status", 80, SaxDbDfn.ColumnIdx.UserOrganisation_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
break;
case SaxUserOrganisation.Column.CreateOn_Date:
SetUserOrganisationColDfn(columnDfn, "Created", 80, SaxDbDfn.ColumnIdx.UserOrganisation_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
columnDfn.ReadOnly = true;
break;
case SaxUserOrganisation.Column.UpdateOn_Date:
SetUserOrganisationColDfn(columnDfn, "Updated", 80, SaxDbDfn.ColumnIdx.UserOrganisation_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;
}
//-------------------------------------------------------------------
// Item query filter.
public override List<string> GetUserOrganisationQueryFilter(SaxUserOrganisation.Params prm)
{
List<String> filter = new List<String>();
// Item Ids.
String idsIncluded = prm.IdsIncluded.Concat(",");
if (!idsIncluded.IsEmpty())
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserOrganisation_Id, aliasUserOrganisation) + " IN (" + idsIncluded + ")");
String idsxcluded = prm.IdsExcluded.Concat(",");
if (!idsxcluded.IsEmpty())
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserOrganisation_Id, aliasUserOrganisation) + " NOT IN (" + idsxcluded + ")");
// User accounts.
String userAccountIdsIncluded = prm.UserAccountIdsIncluded.Concat(",");
if (!userAccountIdsIncluded.IsEmpty())
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserOrganisation_UserAccountId, aliasUserOrganisation) + " IN (" + userAccountIdsIncluded + ")");
// Organisations.
String organisationIdsIncluded = prm.OrganisationIdsIncluded.Concat(",");
if (!organisationIdsIncluded.IsEmpty())
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserOrganisation_OrganisationId, aliasUserOrganisation) + " IN (" + organisationIdsIncluded + ")");
// Organisation roles.
if (prm.OrganisationMembersOnly)
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserOrganisation_OrganisationRoleCount, aliasUserOrganisation) + ">0");
// Notes.
if (!StringUtil.IsEmpty(prm.NotesPartial))
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserOrganisation_Notes, aliasUserOrganisation) + " LIKE '%" + DbQuery.FormatForLike(prm.NotesPartial) + "%'");
// Status.
if (prm.StatusCat == SaxUserOrganisation.StatusCat.ActiveOnly)
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserOrganisation_Status, aliasUserOrganisation) + "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'");
else if (prm.StatusCat == SaxUserOrganisation.StatusCat.NotDeleted)
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserOrganisation_Status, aliasUserOrganisation) + "!='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'");
if (filter.Count < 1) filter.Add("1=1");
return filter;
}
// Item sort columns.
public List<String> GetUserOrganisationSortColumns(SaxUserOrganisation.Params prm)
{
// Sort sequence:
List<String> sortColumnNames = new List<String>();
foreach (var columnDfn in prm.SortColumns)
{
// Need to ensure correct alias used for UserOrganisation columns in case of conflict.
String sortCol = String.Empty;
if (SaxDbDfn.GetTableForColumn((SaxDbDfn.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn.TableIdx.UserOrganisation)
{
sortCol = SaxDbDfn.GetColumnNameQual((SaxDbDfn.ColumnIdx)columnDfn.DbColumn, aliasUserOrganisation);
}
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(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserOrganisation_Id, aliasUserOrganisation) + " ASC");
}
return sortColumnNames;
}
//-------------------------------------------------------------------
// Item count.
private long GetUserOrganisationCount(String filter)
{
ClearErrorState();
return CoreDatabase.GetRowCount(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.UserOrganisation) + " As " + aliasUserOrganisation, filter);
}
public override long GetUserOrganisationCount(SaxUserOrganisation.Params prm)
{
ClearErrorState();
return GetUserOrganisationCount(GetUserOrganisationQueryFilter(prm).Concat(" AND ", "(", ")"));
}
//-------------------------------------------------------------------
// Item list.
public override List<SaxUserOrganisation> GetUserOrganisationList(SaxUserOrganisation.Params prm)
{
List<SaxUserOrganisation> userOrganisations = new List<SaxUserOrganisation>();
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
qry.Tables.Add(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.UserOrganisation), aliasUserOrganisation);
UserOrganisation_Db dbUserOrganisation = new UserOrganisation_Db(CoreDbInfo);
qry.Columns.AddRange(dbUserOrganisation.ExistingColumnNames);
qry.Filters.AddRange(GetUserOrganisationQueryFilter(prm));
qry.OrderBy.AddRange(GetUserOrganisationSortColumns(prm));
// Query data.
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
dbConnection.Open();
dbCommand.CommandText = qry.BuildQuery(prm.ResultsPaging);
using (DbDataReader dbDataReader = dbCommand.ExecuteReader())
{
while (dbDataReader.Read())
{
dbUserOrganisation = new UserOrganisation_Db(CoreDbInfo);
dbUserOrganisation.PopulateFrom(dbDataReader);
userOrganisations.Add(CreateUserOrganisation(dbUserOrganisation));
}
}
}
catch (Exception exc)
{
SaLogger.Warn(GetType().Name + ".GetUserOrganisationList\n\tQuery: " + dbCommand.CommandText + "\n\t" + exc.GetType().Name + ": " + exc.Message);
}
}
return userOrganisations;
}
//-------------------------------------------------------------------
// Item query execution.
public override DbResultSet ExecuteUserOrganisationQuery(List<ColumnDfn> columns, SaxUserOrganisation.Params prm)
{
ClearErrorState();
//---------------------------------------------------------------------
// Construct query.
DbQuery query = new DbQuery(CoreDatabase.DbmsType);
query.Tables.Add(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.UserOrganisation), aliasUserOrganisation);
// Add columns as defined in query list.
if (columns.HasId(SaxUserOrganisation.Column.Id))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserOrganisation_Id, aliasUserOrganisation));
bool hasUserAccountCols = (columns.HasId(SaxUserOrganisation.Column.User_EmailAddress) || columns.HasId(SaxUserOrganisation.Column.User_DisplayName) || columns.HasId(SaxUserOrganisation.Column.User_Title) || columns.HasId(SaxUserOrganisation.Column.User_FirstName) || columns.HasId(SaxUserOrganisation.Column.User_LastName));
if (columns.HasId(SaxUserOrganisation.Column.UserAccountId) || hasUserAccountCols)
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserOrganisation_UserAccountId, aliasUserOrganisation));
bool hasOrganisationCols = (columns.HasId(SaxUserOrganisation.Column.Organisation_Name));
bool hasOrganisationRegionCols = (columns.HasId(SaxUserOrganisation.Column.Organisation_Region_Name));
bool hasOrganisationSportCols = (columns.HasId(SaxUserOrganisation.Column.Organisation_Sport_Name));
if (columns.HasId(SaxUserOrganisation.Column.OrganisationId) || hasOrganisationCols || hasOrganisationRegionCols || hasOrganisationSportCols)
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserOrganisation_OrganisationId, aliasUserOrganisation));
if (columns.HasId(SaxUserOrganisation.Column.OrganisationRoleCodes) || columns.HasId(SaxUserOrganisation.Column.OrganisationRoleDescs))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserOrganisation_OrganisationRoleCodes, aliasUserOrganisation));
if (columns.HasId(SaxUserOrganisation.Column.OrganisationRoleCount))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserOrganisation_OrganisationRoleCount, aliasUserOrganisation));
// Common properties.
if (columns.HasId(SaxUserOrganisation.Column.Notes))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserOrganisation_Notes, aliasUserOrganisation));
if (columns.HasId(SaxUserOrganisation.Column.Flags))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserOrganisation_Flags, aliasUserOrganisation));
if (columns.HasId(SaxUserOrganisation.Column.Status) || columns.HasId(SaxUserOrganisation.Column.Status_Desc) || columns.HasId(SaxUserOrganisation.Column.Status_Ind))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserOrganisation_Status, aliasUserOrganisation));
if (columns.HasId(SaxUserOrganisation.Column.CreateOn_Date))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserOrganisation_CreateOn, aliasUserOrganisation));
if (columns.HasId(SaxUserOrganisation.Column.UpdateOn_Date))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserOrganisation_UpdateOn, aliasUserOrganisation));
//---------------------------------------------------------------------
// User Account.
if (hasUserAccountCols)
{
DbQueryJoin joinUserAccount = new DbQueryJoin(DbJoinType.LeftOuter);
joinUserAccount.Table = new StringPair(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.UserAccount), aliasUserOrganisation_UserAccount);
joinUserAccount.Filters.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_Id, aliasUserOrganisation_UserAccount) + "=" + SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserOrganisation_UserAccountId, aliasUserOrganisation));
query.Joins.Add(joinUserAccount);
List<SaxDbDfn.ColumnIdx> cols = new List<SaxDbDfn.ColumnIdx>();
cols.Add(SaxDbDfn.ColumnIdx.UserAccount_EmailAddress);
cols.Add(SaxDbDfn.ColumnIdx.UserAccount_Title);
cols.Add(SaxDbDfn.ColumnIdx.UserAccount_FirstName);
cols.Add(SaxDbDfn.ColumnIdx.UserAccount_LastName);
foreach (var col in cols)
query.Columns.Add(SaxDbDfn.GetColumnNameQual(col, aliasUserOrganisation_UserAccount), prefixUserOrganisation_UserAccount + SaxDbDfn.GetColumnName(col, false));
}
//---------------------------------------------------------------------
// Organisation.
if (hasOrganisationCols || hasOrganisationRegionCols || hasOrganisationSportCols)
{
DbQueryJoin joinOrganisation = new DbQueryJoin(DbJoinType.LeftOuter);
joinOrganisation.Table = new StringPair(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.Organisation), aliasUserOrganisation_Organisation);
joinOrganisation.Filters.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Organisation_Id, aliasUserOrganisation_Organisation) + "=" + SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserOrganisation_OrganisationId, aliasUserOrganisation));
query.Joins.Add(joinOrganisation);
List<SaxDbDfn.ColumnIdx> OrganisationCols = new List<SaxDbDfn.ColumnIdx>();
OrganisationCols.Add(SaxDbDfn.ColumnIdx.Organisation_Name);
foreach (var col in OrganisationCols)
query.Columns.Add(SaxDbDfn.GetColumnNameQual(col, aliasUserOrganisation_Organisation), prefixUserOrganisation_Organisation + SaxDbDfn.GetColumnName(col, false));
if (hasOrganisationRegionCols)
{
DbQueryJoin joinOrganisationRegion = new DbQueryJoin(DbJoinType.LeftOuter);
joinOrganisationRegion.Table = new StringPair(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.Region), aliasUserOrganisation_Organisation_Region);
joinOrganisationRegion.Filters.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Region_Id, aliasUserOrganisation_Organisation_Region) + "=" + SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Organisation_RegionIdPrimary, aliasUserOrganisation_Organisation));
query.Joins.Add(joinOrganisationRegion);
List<SaxDbDfn.ColumnIdx> regionCols = new List<SaxDbDfn.ColumnIdx>();
regionCols.Add(SaxDbDfn.ColumnIdx.Region_Name);
foreach (var col in regionCols)
query.Columns.Add(SaxDbDfn.GetColumnNameQual(col, aliasUserOrganisation_Organisation_Region), prefixUserOrganisation_Organisation_Region + SaxDbDfn.GetColumnName(col, false));
}
if (hasOrganisationSportCols)
{
DbQueryJoin joinOrganisationSport = new DbQueryJoin(DbJoinType.LeftOuter);
joinOrganisationSport.Table = new StringPair(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.Sport), aliasUserOrganisation_Organisation_Sport);
joinOrganisationSport.Filters.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Sport_Id, aliasUserOrganisation_Organisation_Sport) + "=" + SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Organisation_SportIdPrimary, aliasUserOrganisation_Organisation));
query.Joins.Add(joinOrganisationSport);
List<SaxDbDfn.ColumnIdx> regionCols = new List<SaxDbDfn.ColumnIdx>();
regionCols.Add(SaxDbDfn.ColumnIdx.Sport_Name);
foreach (var col in regionCols)
query.Columns.Add(SaxDbDfn.GetColumnNameQual(col, aliasUserOrganisation_Organisation_Sport), prefixUserOrganisation_Organisation_Sport + SaxDbDfn.GetColumnName(col, false));
}
}
//---------------------------------------------------------------------
// Populate filter.
query.Filters.AddRange(GetUserOrganisationQueryFilter(prm));
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetUserOrganisationSortColumns(prm))
query.OrderBy.Add(sortColumn);
}
//---------------------------------------------------------------------
//return new DbResultSet_DataTableReader(db, query.BuildQuery(prm.ResultsPaging));
return DbResultSet_DataReader.ExecuteQuery(CoreDatabase, query.BuildQuery(prm.ResultsPaging));
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,527 @@
using Sarand.Net.Standard.Dbas.Data;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using Saxonite.Base.App;
using Saxonite.Net.Standard.Dbas.Bus;
using Saxonite.Net.Standard.Dbas.Internal;
using Saxonite.Net.Standard.Base.Bus;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Text;
using Saxonite.Net.Standard.Base.App;
using System.Linq;
using Sarand.Net.Standard.Base.Utils;
namespace Saxonite.Net.Standard.Dbas.Mgr
{
//=======================================================================
partial class SaxAccountMgr_Dbas
{
//*******************************************************************
// Account Mgr - User Role
//*******************************************************************
// Utilities.
private List<StringPair> GetLogProperties(SaxUserRole userRole)
{
return new List<StringPair>()
{
new StringPair("Id",SysId.ToString(userRole.Id)),
new StringPair("UserAccountId",SysId.ToString(userRole.UserAccountId)),
new StringPair("Role",userRole.UserRole.ToString()),
new StringPair("Status",userRole.StatusCode)
};
}
//-------------------------------------------------------------------
// Create item.
public override SaxUserRole CreateUserRole(SysId userAccountId, Sax.UserRole userRole)
{
ClearErrorState();
return new SaxUserRole_Dbas(CoreDatabase, null, userAccountId, userRole, 0);
}
private SaxUserRole_Dbas CreateUserRole(UserRole_Db dbUserRole)
{
ClearErrorState();
SaxUserRole_Dbas userRole = new SaxUserRole_Dbas(CoreDatabase, new SysId(dbUserRole._Id), new SysId(dbUserRole._UserAccountId), (Sax.UserRole)UserRoles.GetTypeForCode(dbUserRole._UserRoleCode), (ushort)dbUserRole._Flags);
PopulateFrom(dbUserRole, userRole);
return userRole;
}
//-------------------------------------------------------------------
// Get item.
public override SaxUserRole GetUserRole(SaxUserRole.Params prm)
{
ClearErrorState();
return GetUserRole(GetUserRoleQueryFilter(prm).Concat(" And ", "(", ")"));
}
private SaxUserRole GetUserRole(String filter)
{
ClearErrorState();
long count = GetUserRoleCount(filter);
if (count == 0) return null;
if (count != 1)
{
SetErrorState("Multiple items found");
return null;
}
SaxUserRole userRole = null;
// Query data.
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
dbConnection.Open();
UserRole_Db dbUserRole = new UserRole_Db(CoreDbInfo);
dbUserRole.PopulateFrom(dbCommand, aliasUserRole, filter);
userRole = CreateUserRole(dbUserRole);
}
catch (Exception exc)
{
SetErrorState("Database query exception");
SaLogger.Warn(GetType().Name + ".GetUserRole\n\tQuery: " + dbCommand.CommandText + "\n\t" + exc.GetType().Name + ": " + exc.Message);
}
}
return userRole;
}
//-------------------------------------------------------------------
// Validate item.
public override bool IsValidUserRoleData(SaxUserRole.Data data, SaxUserRole.ErrField errField)
{
ClearErrorState();
if (!base.IsValidUserRoleData(data, errField)) return false;
return true;
}
//-------------------------------------------------------------------
// Insert item.
public override bool InsertUserRole(SaxUserRole userRole, DbUpdateInfo dbUpdateInfo)
{
String fn = GetType().Name + ".InsertUserRole";
ClearErrorState();
if (!IsValidUserRole(userRole)) return false;
if (SysId.IsValid(userRole.Id)) return SetErrorState(ErrorMessage.ValiditemId);
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
dbConnection.Open();
UserRole_Db dbUserRole = new UserRole_Db(CoreDbInfo);
PopulateTo(dbUserRole, userRole, dbUpdateInfo);
if (UserRole_Db.FieldsNonId.Contains("Id"))
{
// Generate next Id.
dbUserRole._Id = CoreDatabase.GetNextIdFromTable("UserRole");
}
dbUserRole.ExecuteInsertCommand(dbCommand);
userRole.Id = new SysId(dbUserRole._Id);
userRole.Changed = false;
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(userRole).Concat(": ").Concat("", "\n\t"));
}
catch (Exception exc) { SetErrorState(exc.Message); }
}
return !HasErrorState();
}
//-------------------------------------------------------------------
// Update item.
public override bool UpdateUserRole(SaxUserRole userRole, DbUpdateInfo dbUpdateInfo)
{
String fn = GetType().Name + ".UpdateUserRole";
ClearErrorState();
if (!IsValidUserRole(userRole)) return false;
if (!SysId.IsValid(userRole.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
if (!userRole.Changed)
{
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(userRole).Concat(": ").Concat("", "\n\t"));
return true;
}
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
// Retrieve item.
dbConnection.Open();
UserRole_Db dbUserRole = new UserRole_Db(CoreDbInfo);
dbUserRole.PopulateFrom(dbCommand, aliasUserRole, "Id=" + SysId.ToString(userRole.Id));
// ToDo SaxUpdateLogItemMonitor_UserRole updateLogMonitor = new SaxUpdateLogItemMonitor_UserRole(SessionContext, CreateUserRole(dbUserRole), dbUpdateInfo);
// Update properties.
PopulateTo(dbUserRole, userRole, dbUpdateInfo);
dbUserRole.ExecuteUpdateCommand(dbCommand);
userRole.Changed = false;
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(userRole).Concat(": ").Concat("", "\n\t"));
// Record updates.
// ToDo updateLogMonitor.RecordUpdatedValues(userRole);
// ToDo updateLogMonitor.LogUpdates();
}
catch (Exception exc) { SetErrorState(exc.Message); }
}
return !HasErrorState();
}
//-------------------------------------------------------------------
// Delete item.
public override bool UserRoleCanBeDeleted(SaxUserRole userRole)
{
ClearErrorState();
if (!base.UserRoleCanBeDeleted(userRole)) return false;
return true;
}
public override bool DeleteUserRole(SaxUserRole userRole, DbUpdateInfo dbUpdateInfo)
{
String fn = GetType().Name + ".DeleteUserRole";
ClearErrorState();
if (!UserRoleCanBeDeleted(userRole)) return false;
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
// Retrieve userRole.
dbConnection.Open();
UserRole_Db dbUserRole = new UserRole_Db(CoreDbInfo);
dbUserRole.PopulateFrom(dbCommand, aliasUserRole, "Id=" + userRole.Id.ToString());
// Delete userRole.
dbCommand.CommandType = System.Data.CommandType.Text;
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.UserRole) + " WHERE Id=" + SysId.ToString(userRole.Id) + ";";
dbCommand.ExecuteNonQuery();
userRole.Changed = false;
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(userRole).Concat(": ").Concat("", "\n\t"));
}
catch (Exception exc) { SetErrorState(exc.Message); }
}
return !HasErrorState();
}
//-------------------------------------------------------------------
// Copy data properties to and from database.
private void PopulateTo(UserRole_Db dbUserRole, SaxUserRole userRole, DbUpdateInfo dbUpdateInfo)
{
dbUserRole._Id = SysId.ToInt(userRole.Id);
dbUserRole._UserAccountId = SysId.ToInt(userRole.UserAccountId);
dbUserRole._UserRoleCode = UserRoles.GetCodeForType(userRole.UserRole);
// Common.
dbUserRole._Notes = userRole.Notes;
dbUserRole._Status = SacsSystem.GetStatusCode(userRole.Status);
dbUserRole._Flags = (short)userRole.Flags;
if (!SysId.IsValid(userRole.Id))
{
dbUserRole._CreateOn = DateTime.Now;
dbUserRole._CreateBy = dbUpdateInfo.UserId.ToInt();
dbUserRole._CreateHost = dbUpdateInfo.Host;
}
dbUserRole._UpdateOn = DateTime.Now;
dbUserRole._UpdateBy = dbUpdateInfo.UserId.ToInt();
dbUserRole._UpdateHost = dbUpdateInfo.Host;
}
private void PopulateFrom(UserRole_Db dbUserRole, SaxUserRole userRole)
{
//userRole.Id = new SysId(dbUserRole._Id);
//userRole.UserAccountId = new SysId(dbUserRole._UserAccountId);
//userRole.UserRole = (Sax.UserRole)UserRoles.GetTypeForCode(dbUserRole._UserRoleCode);
// Common.
userRole.Notes = dbUserRole._Notes;
userRole.Status = SacsSystem.GetStatusForCode(dbUserRole._Status);
userRole.SetCreateStamp(dbUserRole._CreateOn, new SysId(dbUserRole._CreateBy), dbUserRole._CreateHost);
userRole.SetUpdateStamp(dbUserRole._UpdateOn, new SysId(dbUserRole._UpdateBy), dbUserRole._UpdateHost);
userRole.AcceptChanges();
}
//-------------------------------------------------------------------
// Item column definitions.
private static readonly String aliasUserRole = "UsrRol";
private static readonly String aliasUserRole_UserAccount = "UsrRol_Usr";
private static readonly String prefixUserRole_UserAccount = "UsrRol_Usr_";
private void SetUserRoleColDfn
(ColumnDfn col, String caption, int width, SaxDbDfn.ColumnIdx dbCol,
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
String alias = "", String prefix = "")
{
if (String.IsNullOrEmpty(alias) && SaxDbDfn.GetTableForColumn(dbCol) == SaxDbDfn.TableIdx.UserRole)
alias = aliasUserRole;
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn.GetColumnName(dbCol, false), SaxDbDfn.GetColumnNameQual(dbCol, alias), dataType, align);
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn.ColumnIdx.Unknown)
col.MaxLength = (int)SaxDbDfn.GetColTextLen(dbCol);
}
public override ColumnDfn GetUserRoleColumnDfn(SaxUserRole.Column columnId, string caption = "", int width = 0)
{
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
switch (columnId)
{
//-----------------------------------------------------------
case SaxUserRole.Column.Pos:
SetUserRoleColDfn(columnDfn, "Pos", 60, SaxDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
columnDfn.ReadOnly = true;
columnDfn.Resizable = false;
break;
case SaxUserRole.Column.UserAccountId:
SetUserRoleColDfn(columnDfn, "User Id", 80, SaxDbDfn.ColumnIdx.UserRole_UserAccountId, ColumnAlignment.Right, DataValue.DataType.Long);
columnDfn.ReadOnly = true;
break;
case SaxUserRole.Column.Id:
SetUserRoleColDfn(columnDfn, "Id", 80, SaxDbDfn.ColumnIdx.UserRole_Id, ColumnAlignment.Right, DataValue.DataType.Long);
columnDfn.ReadOnly = true;
break;
case SaxUserRole.Column.UserRole:
SetUserRoleColDfn(columnDfn, "Role", 120, SaxDbDfn.ColumnIdx.UserRole_UserRoleCode, ColumnAlignment.Center);
columnDfn.ReadOnly = true;
break;
//-------------------------------------------------------
// User.
case SaxUserRole.Column.User_EmailAddress:
SetUserRoleColDfn(columnDfn, "Email address", 160, SaxDbDfn.ColumnIdx.UserAccount_EmailAddress, ColumnAlignment.Left, DataValue.DataType.String, aliasUserRole_UserAccount, prefixUserRole_UserAccount);
columnDfn.ReadOnly = true;
break;
case SaxUserRole.Column.User_DisplayName:
SetUserRoleColDfn(columnDfn, "User", 160, SaxDbDfn.ColumnIdx.Unknown, ColumnAlignment.Left, DataValue.DataType.String);
columnDfn.ReadOnly = true;
break;
case SaxUserRole.Column.User_Title:
SetUserRoleColDfn(columnDfn, "TItle", 80, SaxDbDfn.ColumnIdx.UserAccount_Title, ColumnAlignment.Left, DataValue.DataType.String, aliasUserRole_UserAccount, prefixUserRole_UserAccount);
columnDfn.ReadOnly = true;
break;
case SaxUserRole.Column.User_FirstName:
SetUserRoleColDfn(columnDfn, "First name", 120, SaxDbDfn.ColumnIdx.UserAccount_FirstName, ColumnAlignment.Left, DataValue.DataType.String, aliasUserRole_UserAccount, prefixUserRole_UserAccount);
columnDfn.ReadOnly = true;
break;
case SaxUserRole.Column.User_LastName:
SetUserRoleColDfn(columnDfn, "Last name", 120, SaxDbDfn.ColumnIdx.UserAccount_LastName, ColumnAlignment.Left, DataValue.DataType.String, aliasUserRole_UserAccount, prefixUserRole_UserAccount);
columnDfn.ReadOnly = true;
break;
//-----------------------------------------------------------
// Derived properties.
//-----------------------------------------------------------
// Common properties.
case SaxUserRole.Column.Notes:
SetUserRoleColDfn(columnDfn, "Notes", 240, SaxDbDfn.ColumnIdx.UserRole_Notes);
break;
case SaxUserRole.Column.Flags:
SetUserRoleColDfn(columnDfn, "Flags", 60, SaxDbDfn.ColumnIdx.UserRole_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
break;
case SaxUserRole.Column.Status:
SetUserRoleColDfn(columnDfn, "Status", 80, SaxDbDfn.ColumnIdx.UserRole_Status, ColumnAlignment.Center);
break;
case SaxUserRole.Column.Status_Desc:
SetUserRoleColDfn(columnDfn, "Status", 90, SaxDbDfn.ColumnIdx.UserRole_Status, ColumnAlignment.Center);
break;
case SaxUserRole.Column.Status_Ind:
SetUserRoleColDfn(columnDfn, "Status", 80, SaxDbDfn.ColumnIdx.UserRole_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
break;
case SaxUserRole.Column.CreateOn_Date:
SetUserRoleColDfn(columnDfn, "Created", 80, SaxDbDfn.ColumnIdx.UserRole_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
columnDfn.ReadOnly = true;
break;
case SaxUserRole.Column.UpdateOn_Date:
SetUserRoleColDfn(columnDfn, "Updated", 80, SaxDbDfn.ColumnIdx.UserRole_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;
}
//-------------------------------------------------------------------
// Item query filter.
public override List<string> GetUserRoleQueryFilter(SaxUserRole.Params prm)
{
List<String> filter = new List<String>();
// Item Ids.
String idsIncluded = prm.IdsIncluded.Concat(",");
if (!idsIncluded.IsEmpty())
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserRole_Id, aliasUserRole) + " IN (" + idsIncluded + ")");
String idsxcluded = prm.IdsExcluded.Concat(",");
if (!idsxcluded.IsEmpty())
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserRole_Id, aliasUserRole) + " NOT IN (" + idsxcluded + ")");
// User accounts.
String userAccountIdsIncluded = prm.UserAccountIdsIncluded.Concat(",");
if (!userAccountIdsIncluded.IsEmpty())
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserRole_UserAccountId, aliasUserRole) + " IN (" + userAccountIdsIncluded + ")");
// User roles.
List<TypeCodeDesc> userRoles = UserRoles;
String userRoleCodes = prm.UserRolesIncluded.Select(item => UserRoles.GetCodeForType(item)).ToList().Concat(",", "'", "'", true, true);
if (!userRoleCodes.IsEmpty())
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserRole_UserRoleCode, aliasUserRole) + " IN (" + userRoleCodes + ")");
// Notes.
if (!StringUtil.IsEmpty(prm.NotesPartial))
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserRole_Notes, aliasUserRole) + " LIKE '%" + DbQuery.FormatForLike(prm.NotesPartial) + "%'");
// Status.
if (prm.StatusCat == SaxUserRole.StatusCat.ActiveOnly)
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserRole_Status, aliasUserRole) + "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'");
else if (prm.StatusCat == SaxUserRole.StatusCat.NotDeleted)
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserRole_Status, aliasUserRole) + "!='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'");
if (filter.Count < 1) filter.Add("1=1");
return filter;
}
// Item sort columns.
public List<String> GetUserRoleSortColumns(SaxUserRole.Params prm)
{
// Sort sequence:
List<String> sortColumnNames = new List<String>();
foreach (var columnDfn in prm.SortColumns)
{
// Need to ensure correct alias used for UserRole columns in case of conflict.
String sortCol = String.Empty;
if (SaxDbDfn.GetTableForColumn((SaxDbDfn.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn.TableIdx.UserRole)
{
sortCol = SaxDbDfn.GetColumnNameQual((SaxDbDfn.ColumnIdx)columnDfn.DbColumn, aliasUserRole);
}
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(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserRole_Id, aliasUserRole) + " ASC");
}
return sortColumnNames;
}
//-------------------------------------------------------------------
// Item count.
private long GetUserRoleCount(String filter)
{
ClearErrorState();
return CoreDatabase.GetRowCount(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.UserRole) + " As " + aliasUserRole, filter);
}
public override long GetUserRoleCount(SaxUserRole.Params prm)
{
ClearErrorState();
return GetUserRoleCount(GetUserRoleQueryFilter(prm).Concat(" AND ", "(", ")"));
}
//-------------------------------------------------------------------
// Item list.
public override List<SaxUserRole> GetUserRoleList(SaxUserRole.Params prm)
{
List<SaxUserRole> userRoles = new List<SaxUserRole>();
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
qry.Tables.Add(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.UserRole), aliasUserRole);
UserRole_Db dbUserRole = new UserRole_Db(CoreDbInfo);
qry.Columns.AddRange(dbUserRole.ExistingColumnNames);
qry.Filters.AddRange(GetUserRoleQueryFilter(prm));
qry.OrderBy.AddRange(GetUserRoleSortColumns(prm));
// Query data.
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
dbConnection.Open();
dbCommand.CommandText = qry.BuildQuery(prm.ResultsPaging);
using (DbDataReader dbDataReader = dbCommand.ExecuteReader())
{
while (dbDataReader.Read())
{
dbUserRole = new UserRole_Db(CoreDbInfo);
dbUserRole.PopulateFrom(dbDataReader);
userRoles.Add(CreateUserRole(dbUserRole));
}
}
}
catch (Exception exc)
{
SaLogger.Warn(GetType().Name + ".GetUserRoleList\n\tQuery: " + dbCommand.CommandText + "\n\t" + exc.GetType().Name + ": " + exc.Message);
}
}
return userRoles;
}
//-------------------------------------------------------------------
// Item query execution.
public override DbResultSet ExecuteUserRoleQuery(List<ColumnDfn> columns, SaxUserRole.Params prm)
{
ClearErrorState();
//---------------------------------------------------------------------
// Construct query.
DbQuery query = new DbQuery(CoreDatabase.DbmsType);
query.Tables.Add(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.UserRole), aliasUserRole);
// Add columns as defined in query list.
if (columns.HasId(SaxUserRole.Column.Id))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserRole_Id, aliasUserRole));
bool hasUserAccountCols = (columns.HasId(SaxUserRole.Column.User_EmailAddress) || columns.HasId(SaxUserRole.Column.User_DisplayName) || columns.HasId(SaxUserRole.Column.User_Title) || columns.HasId(SaxUserRole.Column.User_FirstName) || columns.HasId(SaxUserRole.Column.User_LastName));
if (columns.HasId(SaxUserRole.Column.UserAccountId) || hasUserAccountCols)
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserRole_UserAccountId, aliasUserRole));
if (columns.HasId(SaxUserRole.Column.UserRole) || columns.HasId(SaxUserRole.Column.UserRole_Desc))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserRole_UserRoleCode, aliasUserRole));
// Common properties.
if (columns.HasId(SaxUserRole.Column.Notes))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserRole_Notes, aliasUserRole));
if (columns.HasId(SaxUserRole.Column.Flags))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserRole_Flags, aliasUserRole));
if (columns.HasId(SaxUserRole.Column.Status) || columns.HasId(SaxUserRole.Column.Status_Desc) || columns.HasId(SaxUserRole.Column.Status_Ind))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserRole_Status, aliasUserRole));
if (columns.HasId(SaxUserRole.Column.CreateOn_Date))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserRole_CreateOn, aliasUserRole));
if (columns.HasId(SaxUserRole.Column.UpdateOn_Date))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserRole_UpdateOn, aliasUserRole));
//---------------------------------------------------------------------
// User Account.
if (hasUserAccountCols)
{
DbQueryJoin joinUserAccount = new DbQueryJoin(DbJoinType.LeftOuter);
joinUserAccount.Table = new StringPair(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.UserAccount), aliasUserRole_UserAccount);
joinUserAccount.Filters.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_Id, aliasUserRole_UserAccount) + "=" + SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserRole_UserAccountId, aliasUserRole));
query.Joins.Add(joinUserAccount);
List<SaxDbDfn.ColumnIdx> cols = new List<SaxDbDfn.ColumnIdx>();
cols.Add(SaxDbDfn.ColumnIdx.UserAccount_EmailAddress);
cols.Add(SaxDbDfn.ColumnIdx.UserAccount_Title);
cols.Add(SaxDbDfn.ColumnIdx.UserAccount_FirstName);
cols.Add(SaxDbDfn.ColumnIdx.UserAccount_LastName);
foreach (var col in cols)
query.Columns.Add(SaxDbDfn.GetColumnNameQual(col, aliasUserRole_UserAccount), prefixUserRole_UserAccount + SaxDbDfn.GetColumnName(col, false));
}
//---------------------------------------------------------------------
// Populate filter.
query.Filters.AddRange(GetUserRoleQueryFilter(prm));
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetUserRoleSortColumns(prm))
query.OrderBy.Add(sortColumn);
}
//---------------------------------------------------------------------
//return new DbResultSet_DataTableReader(db, query.BuildQuery(prm.ResultsPaging));
return DbResultSet_DataReader.ExecuteQuery(CoreDatabase, query.BuildQuery(prm.ResultsPaging));
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,29 @@
using Saxonite.Net.Standard.Base.App;
using Saxonite.Net.Standard.Base.Mgr;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Saxonite.Net.Standard.Dbas.Mgr
{
//=======================================================================
public partial class SaxAccountMgr_Dbas : SaxAccountMgr
{
//-------------------------------------------------------------------
// Data members.
//-------------------------------------------------------------------
// Construction.
public SaxAccountMgr_Dbas(SaxSessionContext sessionContext) : base (sessionContext)
{
}
//-------------------------------------------------------------------
// Properties.
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,636 @@
using Sarand.Net.Standard.Dbas.Data;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using Saxonite.Base.App;
using Saxonite.Net.Standard.Dbas.Bus;
using Saxonite.Net.Standard.Dbas.Internal;
using Saxonite.Net.Standard.Base.App;
using Saxonite.Net.Standard.Base.Bus;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Text;
using Sarand.Net.Standard.Base.Utils;
using System.Linq;
namespace Saxonite.Net.Standard.Dbas.Mgr
{
//=======================================================================
partial class SaxActivityMgr_Dbas
{
//*******************************************************************
// Activity Mgr - JournalistArticle
//*******************************************************************
// Utilities.
private List<StringPair> GetLogProperties(SaxJournalistArticle journalistArticle)
{
return new List<StringPair>()
{
new StringPair("Id", SysId.ToString(journalistArticle.Id)),
new StringPair("UserAccountIdJournalist", SysId.ToString(journalistArticle.UserAccountIdJournalist)),
new StringPair("Headline", StringUtil.Left(journalistArticle.Headline,32)),
new StringPair("Status", journalistArticle.StatusCode)
};
}
//-------------------------------------------------------------------
// Create item.
public override SaxJournalistArticle CreateJournalistArticle(SysId userAccountIdJournalist)
{
ClearErrorState();
return new SaxJournalistArticle_Dbas(CoreDatabase, null, userAccountIdJournalist, 0);
}
private SaxJournalistArticle_Dbas CreateJournalistArticle(JournalistArticle_Db dbJournalistArticle)
{
ClearErrorState();
SaxJournalistArticle_Dbas journalistArticle = new SaxJournalistArticle_Dbas(CoreDatabase, new SysId(dbJournalistArticle._Id), new SysId(dbJournalistArticle._UserAccountIdJournalist), (UInt16)dbJournalistArticle._Flags);
PopulateFrom(dbJournalistArticle, journalistArticle);
return journalistArticle;
}
//-------------------------------------------------------------------
// Get item.
public override SaxJournalistArticle GetJournalistArticle(SaxJournalistArticle.Params prm)
{
ClearErrorState();
return GetJournalistArticle(GetJournalistArticleQueryFilter(prm).Concat(" And ", "(", ")"));
}
private SaxJournalistArticle GetJournalistArticle(String filter)
{
ClearErrorState();
long count = GetJournalistArticleCount(filter);
if (count == 0) return null;
if (count != 1)
{
SetErrorState("Multiple items found");
return null;
}
SaxJournalistArticle journalistArticle = null;
// Query data.
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
dbConnection.Open();
JournalistArticle_Db dbJournalistArticle = new JournalistArticle_Db(CoreDbInfo);
dbJournalistArticle.PopulateFrom(dbCommand, aliasJournalistArticle, filter);
journalistArticle = CreateJournalistArticle(dbJournalistArticle);
}
catch (Exception exc)
{
SetErrorState("Database query exception");
SaLogger.Warn(GetType().Name + ".GetJournalistArticle\n\tQuery: " + dbCommand.CommandText + "\n\t" + exc.GetType().Name + ": " + exc.Message);
}
}
return journalistArticle;
}
//-------------------------------------------------------------------
// Validate item.
public override bool IsValidJournalistArticleData(SaxJournalistArticle.Data data, SaxJournalistArticle.ErrField errField)
{
ClearErrorState();
if (!base.IsValidJournalistArticleData(data, errField)) return false;
return true;
}
//-------------------------------------------------------------------
// Insert item.
public override bool InsertJournalistArticle(SaxJournalistArticle journalistArticle, DbUpdateInfo dbUpdateInfo)
{
String fn = GetType().Name + ".InsertJournalistArticle";
ClearErrorState();
if (!IsValidJournalistArticle(journalistArticle)) return false;
if (SysId.IsValid(journalistArticle.Id)) return SetErrorState(ErrorMessage.ValiditemId);
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
dbConnection.Open();
JournalistArticle_Db dbJournalistArticle = new JournalistArticle_Db(CoreDbInfo);
PopulateTo(dbJournalistArticle, journalistArticle, dbUpdateInfo);
if (JournalistArticle_Db.FieldsNonId.Contains("Id"))
{
// Generate next Id.
// ToDo dbJournalistArticle._Id = CoreDatabase.GetNextIdFromTable("JournalistArticle");
}
dbJournalistArticle.ExecuteInsertCommand(dbCommand);
journalistArticle.Id = new SysId(dbJournalistArticle._Id);
journalistArticle.Changed = false;
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(journalistArticle).Concat(": ").Concat("", "\n\t"));
}
catch (Exception exc) { SetErrorState(exc.Message); }
}
return !HasErrorState();
}
//-------------------------------------------------------------------
// Update item.
public override bool UpdateJournalistArticle(SaxJournalistArticle journalistArticle, DbUpdateInfo dbUpdateInfo)
{
String fn = GetType().Name + ".UpdateJournalistArticle";
ClearErrorState();
if (!IsValidJournalistArticle(journalistArticle)) return false;
if (!SysId.IsValid(journalistArticle.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
if (!journalistArticle.Changed)
{
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(journalistArticle).Concat(": ").Concat("", "\n\t"));
return true;
}
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
// Retrieve item.
dbConnection.Open();
JournalistArticle_Db dbJournalistArticle = new JournalistArticle_Db(CoreDbInfo);
dbJournalistArticle.PopulateFrom(dbCommand, aliasJournalistArticle, "Id=" + SysId.ToString(journalistArticle.Id));
// ToDo SaxUpdateLogItemMonitor_JournalistArticle updateLogMonitor = new SaxUpdateLogItemMonitor_JournalistArticle(SessionContext, CreateJournalistArticle(dbJournalistArticle), dbUpdateInfo);
// Update properties.
PopulateTo(dbJournalistArticle, journalistArticle, dbUpdateInfo);
dbJournalistArticle.ExecuteUpdateCommand(dbCommand);
journalistArticle.Changed = false;
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(journalistArticle).Concat(": ").Concat("", "\n\t"));
// Record updates.
// ToDo updateLogMonitor.RecordUpdatedValues(journalistArticle);
// ToDo updateLogMonitor.LogUpdates();
}
catch (Exception exc) { SetErrorState(exc.Message); }
}
return !HasErrorState();
}
//-------------------------------------------------------------------
// Delete item.
public override bool JournalistArticleCanBeDeleted(SaxJournalistArticle journalistArticle)
{
ClearErrorState();
if (!base.JournalistArticleCanBeDeleted(journalistArticle)) return false;
return true;
}
public override bool DeleteJournalistArticle(SaxJournalistArticle journalistArticle, DbUpdateInfo dbUpdateInfo)
{
String fn = GetType().Name + ".DeleteJournalistArticle";
ClearErrorState();
if (!JournalistArticleCanBeDeleted(journalistArticle)) return false;
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
// Retrieve journalistArticle.
dbConnection.Open();
JournalistArticle_Db dbJournalistArticle = new JournalistArticle_Db(CoreDbInfo);
dbJournalistArticle.PopulateFrom(dbCommand, aliasJournalistArticle, "Id=" + journalistArticle.Id.ToString());
// Delete journalistArticle.
dbCommand.CommandType = System.Data.CommandType.Text;
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.JournalistArticle) + " WHERE Id=" + SysId.ToString(journalistArticle.Id) + ";";
dbCommand.ExecuteNonQuery();
journalistArticle.Changed = false;
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(journalistArticle).Concat(": ").Concat("", "\n\t"));
}
catch (Exception exc) { SetErrorState(exc.Message); }
}
return !HasErrorState();
}
//-------------------------------------------------------------------
// Copy data properties to and from database.
private void PopulateTo(JournalistArticle_Db dbJournalistArticle, SaxJournalistArticle journalistArticle, DbUpdateInfo dbUpdateInfo)
{
dbJournalistArticle._Id = SysId.ToInt(journalistArticle.Id);
dbJournalistArticle._UserAccountIdJournalist = SysId.ToInt(journalistArticle.UserAccountIdJournalist);
dbJournalistArticle._RegionIdPrimary = SysId.ToInt(journalistArticle.RegionIdPrimary);
dbJournalistArticle._SportIdPrimary = SysId.ToInt(journalistArticle.SportIdPrimary);
dbJournalistArticle._Headline = journalistArticle.Headline;
dbJournalistArticle._Summary = journalistArticle.Summary;
dbJournalistArticle._BodyData = journalistArticle.BodyData;
dbJournalistArticle._PublishedAt = journalistArticle.PublishedAt;
dbJournalistArticle._Notes = journalistArticle.Notes;
dbJournalistArticle._Status = SacsSystem.GetStatusCode(journalistArticle.Status);
dbJournalistArticle._Flags = (short)journalistArticle.Flags;
if (!SysId.IsValid(journalistArticle.Id))
{
dbJournalistArticle._CreateOn = DateTime.Now;
dbJournalistArticle._CreateBy = dbUpdateInfo.UserId.ToInt();
dbJournalistArticle._CreateHost = dbUpdateInfo.Host;
}
dbJournalistArticle._UpdateOn = DateTime.Now;
dbJournalistArticle._UpdateBy = dbUpdateInfo.UserId.ToInt();
dbJournalistArticle._UpdateHost = dbUpdateInfo.Host;
}
private void PopulateFrom(JournalistArticle_Db dbJournalistArticle, SaxJournalistArticle journalistArticle)
{
//journalistArticle.Id = new SysId(dbJournalistArticle._Id);
//journalistArticle.UserAccountIdJournalist = new SysId(dbJournalistArticle._UserAccountIdJournalist);
journalistArticle.RegionIdPrimary = new SysId(dbJournalistArticle._RegionIdPrimary);
journalistArticle.SportIdPrimary = new SysId(dbJournalistArticle._SportIdPrimary);
journalistArticle.Headline = dbJournalistArticle._Headline;
journalistArticle.Summary = dbJournalistArticle._Summary;
journalistArticle.BodyData = dbJournalistArticle._BodyData;
journalistArticle.PublishedAt = dbJournalistArticle._PublishedAt;
journalistArticle.Notes = dbJournalistArticle._Notes;
journalistArticle.Status = SacsSystem.GetStatusForCode(dbJournalistArticle._Status);
journalistArticle.SetCreateStamp(dbJournalistArticle._CreateOn, new SysId(dbJournalistArticle._CreateBy), dbJournalistArticle._CreateHost);
journalistArticle.SetUpdateStamp(dbJournalistArticle._UpdateOn, new SysId(dbJournalistArticle._UpdateBy), dbJournalistArticle._UpdateHost);
journalistArticle.AcceptChanges();
}
//-------------------------------------------------------------------
// Item column definitions.
private static readonly String aliasJournalistArticle = "Sprt";
private static readonly String aliasJournalistArticle_Journalist = "JrnArt_Jrn";
private static readonly String prefixJournalistArticle_Jourlalist = "JrnArt_Jrn_";
private static readonly String aliasJournalistArticle_Region = "JrnArt_Reg";
private static readonly String prefixJournalistArticle_Region = "JrnArt_Reg_";
private static readonly String aliasJournalistArticle_Sport = "JrnArt_Spt";
private static readonly String prefixJournalistArticle_Sport = "JrnArt_Spt_";
private void SetJournalistArticleColDfn
(ColumnDfn col, String caption, int width, SaxDbDfn.ColumnIdx dbCol,
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
String alias = "", String prefix = "")
{
if (String.IsNullOrEmpty(alias) && SaxDbDfn.GetTableForColumn(dbCol) == SaxDbDfn.TableIdx.JournalistArticle)
alias = aliasJournalistArticle;
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn.GetColumnName(dbCol, false), SaxDbDfn.GetColumnNameQual(dbCol, alias), dataType, align);
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn.ColumnIdx.Unknown)
col.MaxLength = (int)SaxDbDfn.GetColTextLen(dbCol);
}
public override ColumnDfn GetJournalistArticleColumnDfn(SaxJournalistArticle.Column columnId, string caption = "", int width = 0)
{
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
switch (columnId)
{
//-----------------------------------------------------------
case SaxJournalistArticle.Column.Pos:
SetJournalistArticleColDfn(columnDfn, "Pos", 60, SaxDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
columnDfn.ReadOnly = true;
columnDfn.Resizable = false;
break;
case SaxJournalistArticle.Column.Id:
SetJournalistArticleColDfn(columnDfn, "Id", 80, SaxDbDfn.ColumnIdx.JournalistArticle_Id, ColumnAlignment.Right, DataValue.DataType.Long);
columnDfn.ReadOnly = true;
break;
//-----------------------------------------------------------
// Journalist.
case SaxJournalistArticle.Column.UserAccountIdJournalist:
SetJournalistArticleColDfn(columnDfn, "Journalist Id", 80, SaxDbDfn.ColumnIdx.JournalistArticle_UserAccountIdJournalist, ColumnAlignment.Right, DataValue.DataType.Long);
columnDfn.ReadOnly = true;
break;
case SaxJournalistArticle.Column.Journalist_DisplayName:
SetJournalistArticleColDfn(columnDfn, "Journalist", 120, SaxDbDfn.ColumnIdx.Unknown);
columnDfn.ReadOnly = true;
break;
case SaxJournalistArticle.Column.Journalist_Title:
SetJournalistArticleColDfn(columnDfn, "Journalist Title", 80, SaxDbDfn.ColumnIdx.UserAccount_Title, ColumnAlignment.Left, DataValue.DataType.String, aliasJournalistArticle_Journalist, prefixJournalistArticle_Jourlalist);
columnDfn.ReadOnly = true;
break;
case SaxJournalistArticle.Column.Journalist_FirstName:
SetJournalistArticleColDfn(columnDfn, "Journalist First Name", 100, SaxDbDfn.ColumnIdx.UserAccount_FirstName, ColumnAlignment.Left, DataValue.DataType.String, aliasJournalistArticle_Journalist, prefixJournalistArticle_Jourlalist);
columnDfn.ReadOnly = true;
break;
case SaxJournalistArticle.Column.Journalist_LastName:
SetJournalistArticleColDfn(columnDfn, "Journalist Last Name", 100, SaxDbDfn.ColumnIdx.UserAccount_LastName, ColumnAlignment.Left, DataValue.DataType.String, aliasJournalistArticle_Journalist, prefixJournalistArticle_Jourlalist);
columnDfn.ReadOnly = true;
break;
//-----------------------------------------------------------
// Region.
case SaxJournalistArticle.Column.RegionIdPrimary:
SetJournalistArticleColDfn(columnDfn, "Region Id", 80, SaxDbDfn.ColumnIdx.JournalistArticle_RegionIdPrimary, ColumnAlignment.Right, DataValue.DataType.Long);
columnDfn.ReadOnly = true;
break;
case SaxJournalistArticle.Column.Region_Name:
SetJournalistArticleColDfn(columnDfn, "Region", 100, SaxDbDfn.ColumnIdx.Region_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasJournalistArticle_Region, prefixJournalistArticle_Region);
columnDfn.ReadOnly = true;
break;
//-----------------------------------------------------------
// Sport.
case SaxJournalistArticle.Column.SportIdPrimary:
SetJournalistArticleColDfn(columnDfn, "Sport Id", 80, SaxDbDfn.ColumnIdx.JournalistArticle_SportIdPrimary, ColumnAlignment.Right, DataValue.DataType.Long);
columnDfn.ReadOnly = true;
break;
case SaxJournalistArticle.Column.Sport_Name:
SetJournalistArticleColDfn(columnDfn, "Sport", 100, SaxDbDfn.ColumnIdx.Sport_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasJournalistArticle_Sport, prefixJournalistArticle_Sport);
columnDfn.ReadOnly = true;
break;
//-----------------------------------------------------------
// Article.
case SaxJournalistArticle.Column.Headline:
SetJournalistArticleColDfn(columnDfn, "Headline", 200, SaxDbDfn.ColumnIdx.JournalistArticle_Headline);
break;
case SaxJournalistArticle.Column.Summary:
SetJournalistArticleColDfn(columnDfn, "Summary", 200, SaxDbDfn.ColumnIdx.JournalistArticle_Summary);
break;
case SaxJournalistArticle.Column.PublishedAt_Date:
SetJournalistArticleColDfn(columnDfn, "Published", 80, SaxDbDfn.ColumnIdx.JournalistArticle_PublishedAt, ColumnAlignment.Center, DataValue.DataType.Date);
columnDfn.ReadOnly = true;
break;
case SaxJournalistArticle.Column.PublishedAt_DateTime:
SetJournalistArticleColDfn(columnDfn, "Published", 100, SaxDbDfn.ColumnIdx.JournalistArticle_PublishedAt, ColumnAlignment.Center, DataValue.DataType.DateTime);
columnDfn.ReadOnly = true;
break;
//-----------------------------------------------------------
// Derived properties.
//-----------------------------------------------------------
// Common properties.
case SaxJournalistArticle.Column.Notes:
SetJournalistArticleColDfn(columnDfn, "Notes", 240, SaxDbDfn.ColumnIdx.JournalistArticle_Notes);
break;
case SaxJournalistArticle.Column.Flags:
SetJournalistArticleColDfn(columnDfn, "Flags", 60, SaxDbDfn.ColumnIdx.JournalistArticle_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
break;
case SaxJournalistArticle.Column.Status:
SetJournalistArticleColDfn(columnDfn, "Status", 80, SaxDbDfn.ColumnIdx.JournalistArticle_Status, ColumnAlignment.Center);
break;
case SaxJournalistArticle.Column.Status_Desc:
SetJournalistArticleColDfn(columnDfn, "Status", 90, SaxDbDfn.ColumnIdx.JournalistArticle_Status, ColumnAlignment.Center);
break;
case SaxJournalistArticle.Column.Status_Ind:
SetJournalistArticleColDfn(columnDfn, "Status", 80, SaxDbDfn.ColumnIdx.JournalistArticle_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
break;
case SaxJournalistArticle.Column.CreateOn_Date:
SetJournalistArticleColDfn(columnDfn, "Created", 80, SaxDbDfn.ColumnIdx.JournalistArticle_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
columnDfn.ReadOnly = true;
break;
case SaxJournalistArticle.Column.UpdateOn_Date:
SetJournalistArticleColDfn(columnDfn, "Updated", 80, SaxDbDfn.ColumnIdx.JournalistArticle_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;
}
//-------------------------------------------------------------------
// Item query filter.
public override List<string> GetJournalistArticleQueryFilter(SaxJournalistArticle.Params prm)
{
List<String> filter = new List<String>();
// Item Ids.
String idsIncluded = prm.IdsIncluded.Concat(",");
if (!idsIncluded.IsEmpty())
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.JournalistArticle_Id, aliasJournalistArticle) + " IN (" + idsIncluded + ")");
String idsExcluded = prm.IdsExcluded.Concat(",");
if (!idsExcluded.IsEmpty())
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.JournalistArticle_Id, aliasJournalistArticle) + " NOT IN (" + idsExcluded + ")");
// User Account Ids.
String userAccountIdsIncluded = prm.UserAccountIdsJournalistIncluded.Concat(",");
if (!userAccountIdsIncluded.IsEmpty())
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.JournalistArticle_UserAccountIdJournalist, aliasJournalistArticle) + " IN (" + userAccountIdsIncluded + ")");
// Region Ids.
String regionIdsIncluded = prm.RegionIdsIncluded.Concat(",");
if (!regionIdsIncluded.IsEmpty())
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.JournalistArticle_RegionIdPrimary, aliasJournalistArticle) + " IN (" + regionIdsIncluded + ")");
// Sport Ids.
String sportIdsIncluded = prm.SportIdsIncluded.Concat(",");
if (!sportIdsIncluded.IsEmpty())
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.JournalistArticle_SportIdPrimary, aliasJournalistArticle) + " IN (" + sportIdsIncluded + ")");
// Headline.
if (!StringUtil.IsEmpty(prm.HeadlinePartial))
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.JournalistArticle_Headline, aliasJournalistArticle) + " Like '%" + DbQuery.FormatForLike(prm.HeadlinePartial, true) + "%'");
// Summary.
if (!StringUtil.IsEmpty(prm.SummaryPartial))
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.JournalistArticle_Summary, aliasJournalistArticle) + " Like '%" + DbQuery.FormatForLike(prm.SummaryPartial, true) + "%'");
// Article.
if (!StringUtil.IsEmpty(prm.ArticleFilter))
{
// Split filter into words.
List<String> filterWords = prm.ArticleFilter.Split((char[])null).ToList();
filterWords.RemoveDuplicatesCI();
filterWords.RemoveBlanks();
foreach (String filterWord in filterWords)
{
List<String> articleFilter = new List<String>();
articleFilter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.JournalistArticle_Headline, aliasJournalistArticle) + " Like '%" + DbQuery.FormatForLike(filterWord, true) + "%'");
articleFilter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.JournalistArticle_Summary, aliasJournalistArticle) + " Like '%" + DbQuery.FormatForLike(filterWord, true) + "%'");
filter.Add(articleFilter.Concat(" OR ", "(", ")"));
}
}
// Notes.
if (!StringUtil.IsEmpty(prm.NotesPartial))
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.JournalistArticle_Notes, aliasJournalistArticle) + " LIKE '%" + DbQuery.FormatForLike(prm.NotesPartial) + "%'");
// Status.
if (prm.StatusCat == SaxJournalistArticle.StatusCat.ActiveOnly)
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.JournalistArticle_Status, aliasJournalistArticle) + "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'");
else if (prm.StatusCat == SaxJournalistArticle.StatusCat.NotDeleted)
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.JournalistArticle_Status, aliasJournalistArticle) + "!='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'");
if (filter.Count < 1) filter.Add("1=1");
return filter;
}
// Item sort columns.
public List<String> GetJournalistArticleSortColumns(SaxJournalistArticle.Params prm)
{
// Sort sequence:
List<String> sortColumnNames = new List<String>();
foreach (var columnDfn in prm.SortColumns)
{
// Need to ensure correct alias used for JournalistArticle columns in case of conflict.
String sortCol = String.Empty;
if (SaxDbDfn.GetTableForColumn((SaxDbDfn.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn.TableIdx.JournalistArticle)
{
sortCol = SaxDbDfn.GetColumnNameQual((SaxDbDfn.ColumnIdx)columnDfn.DbColumn, aliasJournalistArticle);
}
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(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.JournalistArticle_Id, aliasJournalistArticle) + " ASC");
}
return sortColumnNames;
}
//-------------------------------------------------------------------
// Item count.
private long GetJournalistArticleCount(String filter)
{
ClearErrorState();
return CoreDatabase.GetRowCount(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.JournalistArticle) + " As " + aliasJournalistArticle, filter);
}
public override long GetJournalistArticleCount(SaxJournalistArticle.Params prm)
{
ClearErrorState();
return GetJournalistArticleCount(GetJournalistArticleQueryFilter(prm).Concat(" AND ", "(", ")"));
}
//-------------------------------------------------------------------
// Item list.
public override List<SaxJournalistArticle> GetJournalistArticleList(SaxJournalistArticle.Params prm)
{
List<SaxJournalistArticle> userActivitys = new List<SaxJournalistArticle>();
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
qry.Tables.Add(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.JournalistArticle), aliasJournalistArticle);
JournalistArticle_Db dbJournalistArticle = new JournalistArticle_Db(CoreDbInfo);
qry.Columns.AddRange(dbJournalistArticle.ExistingColumnNames);
qry.Filters.AddRange(GetJournalistArticleQueryFilter(prm));
qry.OrderBy.AddRange(GetJournalistArticleSortColumns(prm));
// Query data.
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
dbConnection.Open();
dbCommand.CommandText = qry.BuildQuery(prm.ResultsPaging);
using (DbDataReader dbDataReader = dbCommand.ExecuteReader())
{
while (dbDataReader.Read())
{
dbJournalistArticle = new JournalistArticle_Db(CoreDbInfo);
dbJournalistArticle.PopulateFrom(dbDataReader);
userActivitys.Add(CreateJournalistArticle(dbJournalistArticle));
}
}
}
catch (Exception exc)
{
SaLogger.Warn(GetType().Name + ".GetJournalistArticleList\n\tQuery: " + dbCommand.CommandText + "\n\t" + exc.GetType().Name + ": " + exc.Message);
}
}
return userActivitys;
}
//-------------------------------------------------------------------
// Item query execution.
public override DbResultSet ExecuteJournalistArticleQuery(List<ColumnDfn> columns, SaxJournalistArticle.Params prm)
{
ClearErrorState();
//---------------------------------------------------------------------
// Construct query.
DbQuery query = new DbQuery(CoreDatabase.DbmsType);
query.Tables.Add(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.JournalistArticle), aliasJournalistArticle);
// Add columns as defined in query list.
if (columns.HasId(SaxJournalistArticle.Column.Id))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.JournalistArticle_Id, aliasJournalistArticle));
bool hasUserAccountCols = (columns.HasId(SaxJournalistArticle.Column.Journalist_DisplayName) || columns.HasId(SaxJournalistArticle.Column.Journalist_Title) || columns.HasId(SaxJournalistArticle.Column.Journalist_FirstName) || columns.HasId(SaxJournalistArticle.Column.Journalist_LastName));
if (columns.HasId(SaxJournalistArticle.Column.UserAccountIdJournalist) || hasUserAccountCols)
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.JournalistArticle_UserAccountIdJournalist, aliasJournalistArticle));
bool hasRegionCols = (columns.HasId(SaxJournalistArticle.Column.Region_Name));
if (columns.HasId(SaxJournalistArticle.Column.RegionIdPrimary) || hasRegionCols)
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.JournalistArticle_RegionIdPrimary, aliasJournalistArticle));
bool hasSportCols = (columns.HasId(SaxJournalistArticle.Column.Sport_Name));
if (columns.HasId(SaxJournalistArticle.Column.SportIdPrimary) || hasSportCols)
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.JournalistArticle_SportIdPrimary, aliasJournalistArticle));
if (columns.HasId(SaxJournalistArticle.Column.Headline))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.JournalistArticle_Headline, aliasJournalistArticle));
if (columns.HasId(SaxJournalistArticle.Column.Summary))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.JournalistArticle_Summary, aliasJournalistArticle));
if (columns.HasId(SaxJournalistArticle.Column.PublishedAt_Date) || columns.HasId(SaxJournalistArticle.Column.PublishedAt_DateTime))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.JournalistArticle_PublishedAt, aliasJournalistArticle));
// Common properties.
if (columns.HasId(SaxJournalistArticle.Column.Notes))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.JournalistArticle_Notes, aliasJournalistArticle));
if (columns.HasId(SaxJournalistArticle.Column.Flags))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.JournalistArticle_Flags, aliasJournalistArticle));
if (columns.HasId(SaxJournalistArticle.Column.Status) || columns.HasId(SaxJournalistArticle.Column.Status_Desc) || columns.HasId(SaxJournalistArticle.Column.Status_Ind))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.JournalistArticle_Status, aliasJournalistArticle));
if (columns.HasId(SaxJournalistArticle.Column.CreateOn_Date))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.JournalistArticle_CreateOn, aliasJournalistArticle));
if (columns.HasId(SaxJournalistArticle.Column.UpdateOn_Date))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.JournalistArticle_UpdateOn, aliasJournalistArticle));
//---------------------------------------------------------------------
// User Account.
if (hasUserAccountCols)
{
DbQueryJoin joinUserAccount = new DbQueryJoin(DbJoinType.LeftOuter);
joinUserAccount.Table = new StringPair(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.UserAccount), aliasJournalistArticle_Journalist);
joinUserAccount.Filters.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserAccount_Id, aliasJournalistArticle_Journalist) + "=" + SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.UserRole_UserAccountId, aliasJournalistArticle));
query.Joins.Add(joinUserAccount);
List<SaxDbDfn.ColumnIdx> cols = new List<SaxDbDfn.ColumnIdx>();
cols.Add(SaxDbDfn.ColumnIdx.UserAccount_Title);
cols.Add(SaxDbDfn.ColumnIdx.UserAccount_FirstName);
cols.Add(SaxDbDfn.ColumnIdx.UserAccount_LastName);
foreach (var col in cols)
query.Columns.Add(SaxDbDfn.GetColumnNameQual(col, aliasJournalistArticle_Journalist), prefixJournalistArticle_Jourlalist + SaxDbDfn.GetColumnName(col, false));
}
//---------------------------------------------------------------------
// Primary Region.
if (hasRegionCols)
{
DbQueryJoin joinRegion = new DbQueryJoin(DbJoinType.LeftOuter);
joinRegion.Table = new StringPair(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.Region), aliasJournalistArticle_Region);
joinRegion.Filters.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Region_Id, aliasJournalistArticle_Region) + "=" + SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.JournalistArticle_RegionIdPrimary, aliasJournalistArticle));
query.Joins.Add(joinRegion);
List<SaxDbDfn.ColumnIdx> cols = new List<SaxDbDfn.ColumnIdx>();
cols.Add(SaxDbDfn.ColumnIdx.Region_Name);
foreach (var col in cols)
query.Columns.Add(SaxDbDfn.GetColumnNameQual(col, aliasJournalistArticle_Region), prefixJournalistArticle_Region + SaxDbDfn.GetColumnName(col, false));
}
//---------------------------------------------------------------------
// Primary Sport.
if (hasSportCols)
{
DbQueryJoin joinSport = new DbQueryJoin(DbJoinType.LeftOuter);
joinSport.Table = new StringPair(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.Sport), aliasJournalistArticle_Sport);
joinSport.Filters.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Sport_Id, aliasJournalistArticle_Sport) + "=" + SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.JournalistArticle_SportIdPrimary, aliasJournalistArticle));
query.Joins.Add(joinSport);
List<SaxDbDfn.ColumnIdx> cols = new List<SaxDbDfn.ColumnIdx>();
cols.Add(SaxDbDfn.ColumnIdx.Sport_Name);
foreach (var col in cols)
query.Columns.Add(SaxDbDfn.GetColumnNameQual(col, aliasJournalistArticle_Sport), prefixJournalistArticle_Sport + SaxDbDfn.GetColumnName(col, false));
}
//---------------------------------------------------------------------
// Populate filter.
query.Filters.AddRange(GetJournalistArticleQueryFilter(prm));
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetJournalistArticleSortColumns(prm))
query.OrderBy.Add(sortColumn);
}
//---------------------------------------------------------------------
//return new DbResultSet_DataTableReader(db, query.BuildQuery(prm.ResultsPaging));
return DbResultSet_DataReader.ExecuteQuery(CoreDatabase, query.BuildQuery(prm.ResultsPaging));
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,29 @@
using Saxonite.Net.Standard.Base.App;
using Saxonite.Net.Standard.Base.Mgr;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Saxonite.Net.Standard.Dbas.Mgr
{
//=======================================================================
public partial class SaxActivityMgr_Dbas : SaxActivityMgr
{
//-------------------------------------------------------------------
// Data members.
//-------------------------------------------------------------------
// Construction.
public SaxActivityMgr_Dbas(SaxSessionContext sessionContext) : base (sessionContext)
{
}
//-------------------------------------------------------------------
// Properties.
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,532 @@
using Sarand.Net.Standard.Dbas.Data;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using Saxonite.Base.App;
using Saxonite.Net.Standard.Dbas.Bus;
using Saxonite.Net.Standard.Dbas.Internal;
using Saxonite.Net.Standard.Base.Bus;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Text;
using Saxonite.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Utils;
namespace Saxonite.Net.Standard.Dbas.Mgr
{
//=======================================================================
partial class SaxItemDataMgr_Dbas
{
//*******************************************************************
// Item Data Mgr - Item Sport
//*******************************************************************
// Utilities.
private List<StringPair> GetLogProperties(SaxItemSport itemSport)
{
return new List<StringPair>()
{
new StringPair("Id",SysId.ToString(itemSport.Id)),
new StringPair("ItemId",ItemId.ToString(itemSport.ItemId)),
new StringPair("Sport",SysId.ToString(itemSport.SportId)),
new StringPair("Status",itemSport.StatusCode)
};
}
//-------------------------------------------------------------------
// Create item.
public override SaxItemSport CreateItemSport()
{
ClearErrorState();
return new SaxItemSport_Dbas(CoreDatabase, null, null, null, 0);
}
private SaxItemSport_Dbas CreateItemSport(ItemSport_Db dbItemSport)
{
ClearErrorState();
SaxItemSport_Dbas itemSport = new SaxItemSport_Dbas(CoreDatabase, new SysId(dbItemSport._Id), new ItemId(dbItemSport._ItemType, new SysId(dbItemSport._ItemId)), new SysId(dbItemSport._SportId), (ushort)dbItemSport._Flags);
PopulateFrom(dbItemSport, itemSport);
return itemSport;
}
//-------------------------------------------------------------------
// Get item.
public override SaxItemSport GetItemSport(SaxItemSport.Params prm)
{
ClearErrorState();
return GetItemSport(GetItemSportQueryFilter(prm).Concat(" And ", "(", ")"));
}
private SaxItemSport GetItemSport(String filter)
{
ClearErrorState();
long count = GetItemSportCount(filter);
if (count == 0) return null;
if (count != 1)
{
SetErrorState("Multiple items found");
return null;
}
SaxItemSport itemSport = null;
// Query data.
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
dbConnection.Open();
ItemSport_Db dbItemSport = new ItemSport_Db(CoreDbInfo);
dbItemSport.PopulateFrom(dbCommand, aliasItemSport, filter);
itemSport = CreateItemSport(dbItemSport);
}
catch (Exception exc)
{
SetErrorState("Database query exception");
SaLogger.Warn(GetType().Name + ".GetItemSport\n\tQuery: " + dbCommand.CommandText + "\n\t" + exc.GetType().Name + ": " + exc.Message);
}
}
return itemSport;
}
//-------------------------------------------------------------------
// Validate item.
public override bool IsValidItemSportData(SaxItemSport.Data data, SaxItemSport.ErrField errField)
{
ClearErrorState();
if (!base.IsValidItemSportData(data, errField)) return false;
return true;
}
//-------------------------------------------------------------------
// Insert item.
public override bool InsertItemSport(SaxItemSport itemSport, DbUpdateInfo dbUpdateInfo)
{
String fn = GetType().Name + ".InsertItemSport";
ClearErrorState();
if (!IsValidItemSport(itemSport)) return false;
if (SysId.IsValid(itemSport.Id)) return SetErrorState(ErrorMessage.ValiditemId);
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
dbConnection.Open();
ItemSport_Db dbItemSport = new ItemSport_Db(CoreDbInfo);
PopulateTo(dbItemSport, itemSport, dbUpdateInfo);
if (ItemSport_Db.FieldsNonId.Contains("Id"))
{
// Generate next Id.
dbItemSport._Id = CoreDatabase.GetNextIdFromTable("ItemSport");
}
dbItemSport.ExecuteInsertCommand(dbCommand);
itemSport.Id = new SysId(dbItemSport._Id);
itemSport.Changed = false;
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(itemSport).Concat(": ").Concat("", "\n\t"));
}
catch (Exception exc) { SetErrorState(exc.Message); }
}
return !HasErrorState();
}
//-------------------------------------------------------------------
// Update item.
public override bool UpdateItemSport(SaxItemSport itemSport, DbUpdateInfo dbUpdateInfo)
{
String fn = GetType().Name + ".UpdateItemSport";
ClearErrorState();
if (!IsValidItemSport(itemSport)) return false;
if (!SysId.IsValid(itemSport.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
if (!itemSport.Changed)
{
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(itemSport).Concat(": ").Concat("", "\n\t"));
return true;
}
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
// Retrieve item.
dbConnection.Open();
ItemSport_Db dbItemSport = new ItemSport_Db(CoreDbInfo);
dbItemSport.PopulateFrom(dbCommand, aliasItemSport, "Id=" + SysId.ToString(itemSport.Id));
// ToDo SaxUpdateLogItemMonitor_ItemSport updateLogMonitor = new SaxUpdateLogItemMonitor_ItemSport(SessionContext, CreateItemSport(dbItemSport), dbUpdateInfo);
// Update properties.
PopulateTo(dbItemSport, itemSport, dbUpdateInfo);
dbItemSport.ExecuteUpdateCommand(dbCommand);
itemSport.Changed = false;
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(itemSport).Concat(": ").Concat("", "\n\t"));
// Record updates.
// ToDo updateLogMonitor.RecordUpdatedValues(itemSport);
// ToDo updateLogMonitor.LogUpdates();
}
catch (Exception exc) { SetErrorState(exc.Message); }
}
return !HasErrorState();
}
//-------------------------------------------------------------------
// Delete item.
public override bool ItemSportCanBeDeleted(SaxItemSport itemSport)
{
ClearErrorState();
if (!base.ItemSportCanBeDeleted(itemSport)) return false;
return true;
}
public override bool DeleteItemSport(SaxItemSport itemSport, DbUpdateInfo dbUpdateInfo)
{
String fn = GetType().Name + ".DeleteItemSport";
ClearErrorState();
if (!ItemSportCanBeDeleted(itemSport)) return false;
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
// Retrieve itemSport.
dbConnection.Open();
ItemSport_Db dbItemSport = new ItemSport_Db(CoreDbInfo);
dbItemSport.PopulateFrom(dbCommand, aliasItemSport, "Id=" + itemSport.Id.ToString());
// Delete itemSport.
dbCommand.CommandType = System.Data.CommandType.Text;
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.ItemSport) + " WHERE Id=" + SysId.ToString(itemSport.Id) + ";";
dbCommand.ExecuteNonQuery();
itemSport.Changed = false;
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(itemSport).Concat(": ").Concat("", "\n\t"));
}
catch (Exception exc) { SetErrorState(exc.Message); }
}
return !HasErrorState();
}
//-------------------------------------------------------------------
// Copy data properties to and from database.
private void PopulateTo(ItemSport_Db dbItemSport, SaxItemSport itemSport, DbUpdateInfo dbUpdateInfo)
{
dbItemSport._Id = SysId.ToInt(itemSport.Id);
dbItemSport._ItemType = itemSport.ItemId.Type;
dbItemSport._ItemId = SysId.ToInt(itemSport.ItemId.Id);
dbItemSport._SportId = SysId.ToInt(itemSport.SportId);
dbItemSport._ItemSportData = itemSport.ItemSportData;
// Common.
dbItemSport._Notes = itemSport.Notes;
dbItemSport._Status = SacsSystem.GetStatusCode(itemSport.Status);
dbItemSport._Flags = (short)itemSport.Flags;
if (!SysId.IsValid(itemSport.Id))
{
dbItemSport._CreateOn = DateTime.Now;
dbItemSport._CreateBy = dbUpdateInfo.UserId.ToInt();
dbItemSport._CreateHost = dbUpdateInfo.Host;
}
dbItemSport._UpdateOn = DateTime.Now;
dbItemSport._UpdateBy = dbUpdateInfo.UserId.ToInt();
dbItemSport._UpdateHost = dbUpdateInfo.Host;
}
private void PopulateFrom(ItemSport_Db dbItemSport, SaxItemSport itemSport)
{
itemSport.Id = new SysId(dbItemSport._Id);
//itemSport.ItemId = new ItemId(dbItemSport._ItemType, new SysId(dbItemSport._ItemId);
//itemSport.SportId = new SysId(dbItemSport._SportId);
itemSport.ItemSportData = dbItemSport._ItemSportData;
// Common.
itemSport.Notes = dbItemSport._Notes;
itemSport.Status = SacsSystem.GetStatusForCode(dbItemSport._Status);
itemSport.SetCreateStamp(dbItemSport._CreateOn, new SysId(dbItemSport._CreateBy), dbItemSport._CreateHost);
itemSport.SetUpdateStamp(dbItemSport._UpdateOn, new SysId(dbItemSport._UpdateBy), dbItemSport._UpdateHost);
itemSport.AcceptChanges();
}
//-------------------------------------------------------------------
// Item column definitions.
private static readonly String aliasItemSport = "ItmSpt";
private static readonly String aliasItemSport_Sport = "ItmSpt_Spt";
private static readonly String prefixItemSport_Sport= "ItmSpt_Spt_";
private void SetItemSportColDfn
(ColumnDfn col, String caption, int width, SaxDbDfn.ColumnIdx dbCol,
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
String alias = "", String prefix = "")
{
if (String.IsNullOrEmpty(alias) && SaxDbDfn.GetTableForColumn(dbCol) == SaxDbDfn.TableIdx.ItemSport)
alias = aliasItemSport;
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn.GetColumnName(dbCol, false), SaxDbDfn.GetColumnNameQual(dbCol, alias), dataType, align);
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn.ColumnIdx.Unknown)
col.MaxLength = (int)SaxDbDfn.GetColTextLen(dbCol);
}
public override ColumnDfn GetItemSportColumnDfn(SaxItemSport.Column columnId, string caption = "", int width = 0)
{
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
switch (columnId)
{
//-----------------------------------------------------------
case SaxItemSport.Column.Pos:
SetItemSportColDfn(columnDfn, "Pos", 60, SaxDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
columnDfn.ReadOnly = true;
columnDfn.Resizable = false;
break;
case SaxItemSport.Column.Id:
SetItemSportColDfn(columnDfn, "Id", 80, SaxDbDfn.ColumnIdx.ItemSport_Id, ColumnAlignment.Right, DataValue.DataType.Long);
columnDfn.ReadOnly = true;
break;
case SaxItemSport.Column.ItemType:
SetItemSportColDfn(columnDfn, "Item type", 80, SaxDbDfn.ColumnIdx.ItemSport_ItemType, ColumnAlignment.Center, DataValue.DataType.Long);
columnDfn.ReadOnly = true;
break;
case SaxItemSport.Column.ItemType_Code:
SetItemSportColDfn(columnDfn, "Item type", 80, SaxDbDfn.ColumnIdx.ItemSport_ItemType, ColumnAlignment.Center);
columnDfn.ReadOnly = true;
break;
case SaxItemSport.Column.ItemType_Desc:
SetItemSportColDfn(columnDfn, "Item type", 80, SaxDbDfn.ColumnIdx.ItemSport_ItemType, ColumnAlignment.Center);
columnDfn.ReadOnly = true;
break;
case SaxItemSport.Column.ItemId:
SetItemSportColDfn(columnDfn, "Item Id", 80, SaxDbDfn.ColumnIdx.ItemSport_ItemId, ColumnAlignment.Right, DataValue.DataType.Long);
columnDfn.ReadOnly = true;
break;
case SaxItemSport.Column.SportId:
SetItemSportColDfn(columnDfn, "Sport Id", 80, SaxDbDfn.ColumnIdx.ItemSport_SportId, ColumnAlignment.Right, DataValue.DataType.Long);
columnDfn.ReadOnly = true;
break;
//-----------------------------------------------------------
// Sport properties.
case SaxItemSport.Column.Sport_Name:
SetItemSportColDfn(columnDfn, "Sport", 120, SaxDbDfn.ColumnIdx.Sport_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasItemSport_Sport, prefixItemSport_Sport);
columnDfn.ReadOnly = true;
break;
//-----------------------------------------------------------
// Derived properties.
//-----------------------------------------------------------
// Common properties.
case SaxItemSport.Column.Notes:
SetItemSportColDfn(columnDfn, "Notes", 240, SaxDbDfn.ColumnIdx.ItemSport_Notes);
break;
case SaxItemSport.Column.Flags:
SetItemSportColDfn(columnDfn, "Flags", 60, SaxDbDfn.ColumnIdx.ItemSport_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
break;
case SaxItemSport.Column.Status:
SetItemSportColDfn(columnDfn, "Status", 80, SaxDbDfn.ColumnIdx.ItemSport_Status, ColumnAlignment.Center);
break;
case SaxItemSport.Column.Status_Desc:
SetItemSportColDfn(columnDfn, "Status", 90, SaxDbDfn.ColumnIdx.ItemSport_Status, ColumnAlignment.Center);
break;
case SaxItemSport.Column.Status_Ind:
SetItemSportColDfn(columnDfn, "Status", 80, SaxDbDfn.ColumnIdx.ItemSport_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
break;
case SaxItemSport.Column.CreateOn_Date:
SetItemSportColDfn(columnDfn, "Created", 80, SaxDbDfn.ColumnIdx.ItemSport_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
columnDfn.ReadOnly = true;
break;
case SaxItemSport.Column.UpdateOn_Date:
SetItemSportColDfn(columnDfn, "Updated", 80, SaxDbDfn.ColumnIdx.ItemSport_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;
}
//-------------------------------------------------------------------
// Item query filter.
public override List<string> GetItemSportQueryFilter(SaxItemSport.Params prm)
{
List<String> filter = new List<String>();
// Item Ids.
String idsIncluded = prm.IdsIncluded.Concat(",");
if (!idsIncluded.IsEmpty())
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.ItemSport_Id, aliasItemSport) + " IN (" + idsIncluded + ")");
String idsExcluded = prm.IdsExcluded.Concat(",");
if (!idsExcluded.IsEmpty())
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.ItemSport_Id, aliasItemSport) + " NOT IN (" + idsExcluded + ")");
// Item Ids.
if (!prm.ItemIdsIncluded.IsEmpty())
{
List<String> itemIdFilters = new List<string>();
foreach (ItemId itemId in prm.ItemIdsIncluded)
{
if (!ItemId.IsValid(itemId)) continue;
itemIdFilters.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.ItemSport_ItemType, aliasItemSport) + "=" + itemId.Type);
itemIdFilters.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.ItemSport_ItemId, aliasItemSport) + "=" + SysId.ToInt(itemId.Id));
}
if (!itemIdFilters.IsEmpty())
filter.Add(itemIdFilters.Concat(" OR ", "(", ")"));
}
// Sport Ids.
String sportIdsIncluded = prm.SportIdsIncluded.Concat(",");
if (!sportIdsIncluded.IsEmpty())
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.ItemSport_SportId, aliasItemSport) + " IN (" + sportIdsIncluded + ")");
// Notes.
if (!StringUtil.IsEmpty(prm.NotesPartial))
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.ItemSport_Notes, aliasItemSport) + " LIKE '%" + DbQuery.FormatForLike(prm.NotesPartial) + "%'");
// Status.
if (prm.StatusCat == SaxItemSport.StatusCat.ActiveOnly)
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.ItemSport_Status, aliasItemSport) + "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'");
else if (prm.StatusCat == SaxItemSport.StatusCat.NotDeleted)
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.ItemSport_Status, aliasItemSport) + "!='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'");
if (filter.Count < 1) filter.Add("1=1");
return filter;
}
// Item sort columns.
public List<String> GetItemSportSortColumns(SaxItemSport.Params prm)
{
// Sort sequence:
List<String> sortColumnNames = new List<String>();
foreach (var columnDfn in prm.SortColumns)
{
// Need to ensure correct alias used for ItemSport columns in case of conflict.
String sortCol = String.Empty;
if (SaxDbDfn.GetTableForColumn((SaxDbDfn.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn.TableIdx.ItemSport)
{
sortCol = SaxDbDfn.GetColumnNameQual((SaxDbDfn.ColumnIdx)columnDfn.DbColumn, aliasItemSport);
}
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(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.ItemSport_Id, aliasItemSport) + " ASC");
}
return sortColumnNames;
}
//-------------------------------------------------------------------
// Item count.
private long GetItemSportCount(String filter)
{
ClearErrorState();
return CoreDatabase.GetRowCount(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.ItemSport) + " As " + aliasItemSport, filter);
}
public override long GetItemSportCount(SaxItemSport.Params prm)
{
ClearErrorState();
return GetItemSportCount(GetItemSportQueryFilter(prm).Concat(" AND ", "(", ")"));
}
//-------------------------------------------------------------------
// Item list.
public override List<SaxItemSport> GetItemSportList(SaxItemSport.Params prm)
{
List<SaxItemSport> itemSports = new List<SaxItemSport>();
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
qry.Tables.Add(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.ItemSport), aliasItemSport);
ItemSport_Db dbItemSport = new ItemSport_Db(CoreDbInfo);
qry.Columns.AddRange(dbItemSport.ExistingColumnNames);
qry.Filters.AddRange(GetItemSportQueryFilter(prm));
qry.OrderBy.AddRange(GetItemSportSortColumns(prm));
// Query data.
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
dbConnection.Open();
dbCommand.CommandText = qry.BuildQuery(prm.ResultsPaging);
using (DbDataReader dbDataReader = dbCommand.ExecuteReader())
{
while (dbDataReader.Read())
{
dbItemSport = new ItemSport_Db(CoreDbInfo);
dbItemSport.PopulateFrom(dbDataReader);
itemSports.Add(CreateItemSport(dbItemSport));
}
}
}
catch (Exception exc)
{
SaLogger.Warn(GetType().Name + ".GetItemSportList\n\tQuery: " + dbCommand.CommandText + "\n\t" + exc.GetType().Name + ": " + exc.Message);
}
}
return itemSports;
}
//-------------------------------------------------------------------
// Item query execution.
public override DbResultSet ExecuteItemSportQuery(List<ColumnDfn> columns, SaxItemSport.Params prm)
{
ClearErrorState();
//---------------------------------------------------------------------
// Construct query.
DbQuery query = new DbQuery(CoreDatabase.DbmsType);
query.Tables.Add(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.ItemSport), aliasItemSport);
// Add columns as defined in query list.
if (columns.HasId(SaxItemSport.Column.Id))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.ItemSport_Id, aliasItemSport));
if (columns.HasId(SaxItemSport.Column.ItemType) || columns.HasId(SaxItemSport.Column.ItemType_Code) || columns.HasId(SaxItemSport.Column.ItemType_Desc))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.ItemSport_ItemType, aliasItemSport));
if (columns.HasId(SaxItemSport.Column.ItemId))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.ItemSport_ItemId, aliasItemSport));
bool hasSportCols = (columns.HasId(SaxItemSport.Column.Sport_Name));
if (columns.HasId(SaxItemSport.Column.SportId) || hasSportCols)
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.ItemSport_SportId, aliasItemSport));
// Common properties.
if (columns.HasId(SaxItemSport.Column.Notes))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.ItemSport_Notes, aliasItemSport));
if (columns.HasId(SaxItemSport.Column.Flags))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.ItemSport_Flags, aliasItemSport));
if (columns.HasId(SaxItemSport.Column.Status) || columns.HasId(SaxItemSport.Column.Status_Desc) || columns.HasId(SaxItemSport.Column.Status_Ind))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.ItemSport_Status, aliasItemSport));
if (columns.HasId(SaxItemSport.Column.CreateOn_Date))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.ItemSport_CreateOn, aliasItemSport));
if (columns.HasId(SaxItemSport.Column.UpdateOn_Date))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.ItemSport_UpdateOn, aliasItemSport));
//---------------------------------------------------------------------
// Sport.
if (hasSportCols)
{
DbQueryJoin joinSport = new DbQueryJoin(DbJoinType.LeftOuter);
joinSport.Table = new StringPair(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.Sport), aliasItemSport_Sport);
joinSport.Filters.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Sport_Id, aliasItemSport_Sport) + "=" + SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.ItemSport_SportId, aliasItemSport));
query.Joins.Add(joinSport);
List<SaxDbDfn.ColumnIdx> cols = new List<SaxDbDfn.ColumnIdx>();
cols.Add(SaxDbDfn.ColumnIdx.Sport_Name);
foreach (var col in cols)
query.Columns.Add(SaxDbDfn.GetColumnNameQual(col, aliasItemSport_Sport), prefixItemSport_Sport + SaxDbDfn.GetColumnName(col, false));
}
//---------------------------------------------------------------------
// Populate filter.
query.Filters.AddRange(GetItemSportQueryFilter(prm));
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetItemSportSortColumns(prm))
query.OrderBy.Add(sortColumn);
}
//---------------------------------------------------------------------
//return new DbResultSet_DataTableReader(db, query.BuildQuery(prm.ResultsPaging));
return DbResultSet_DataReader.ExecuteQuery(CoreDatabase, query.BuildQuery(prm.ResultsPaging));
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,27 @@
using Saxonite.Net.Standard.Base.App;
using Saxonite.Net.Standard.Base.Mgr;
using System;
using System.Collections.Generic;
using System.Text;
namespace Saxonite.Net.Standard.Dbas.Mgr
{
//=======================================================================
public partial class SaxItemDataMgr_Dbas : SaxItemDataMgr
{
//-------------------------------------------------------------------
// Data members.
//-------------------------------------------------------------------
// Construction.
public SaxItemDataMgr_Dbas(SaxSessionContext sessionContext) : base(sessionContext)
{
}
//-------------------------------------------------------------------
// Properties.
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,578 @@
using Sarand.Net.Standard.Dbas.Data;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using Saxonite.Base.App;
using Saxonite.Net.Standard.Dbas.Bus;
using Saxonite.Net.Standard.Dbas.Internal;
using Saxonite.Net.Standard.Base.App;
using Saxonite.Net.Standard.Base.Bus;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Text;
using Sarand.Net.Standard.Base.Utils;
using System.Linq;
namespace Saxonite.Net.Standard.Dbas.Mgr
{
//=======================================================================
partial class SaxReferenceMgr_Dbas
{
//*******************************************************************
// Reference Mgr - Region
//*******************************************************************
// Utilities.
private List<StringPair> GetLogProperties(SaxRegion region)
{
return new List<StringPair>()
{
new StringPair("Id", SysId.ToString(region.Id)),
new StringPair("ISO2", region.CountryIso2Code),
new StringPair("Name", region.Name),
new StringPair("Status", region.StatusCode)
};
}
//-------------------------------------------------------------------
// Create item.
public override SaxRegion CreateRegion()
{
ClearErrorState();
return new SaxRegion_Dbas(CoreDatabase, null, 0);
}
private SaxRegion_Dbas CreateRegion(Region_Db dbRegion)
{
ClearErrorState();
SaxRegion_Dbas region = new SaxRegion_Dbas(CoreDatabase, new SysId(dbRegion._Id), (UInt16)dbRegion._Flags);
PopulateFrom(dbRegion, region);
return region;
}
//-------------------------------------------------------------------
// Get item.
public override SaxRegion GetRegion(SaxRegion.Params prm)
{
ClearErrorState();
return GetRegion(GetRegionQueryFilter(prm).Concat(" And ", "(", ")"));
}
private SaxRegion GetRegion(String filter)
{
ClearErrorState();
long count = GetRegionCount(filter);
if (count == 0) return null;
if (count != 1)
{
SetErrorState("Multiple items found");
return null;
}
SaxRegion region = null;
// Query data.
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
dbConnection.Open();
Region_Db dbRegion = new Region_Db(CoreDbInfo);
dbRegion.PopulateFrom(dbCommand, aliasRegion, filter);
region = CreateRegion(dbRegion);
}
catch (Exception exc)
{
SetErrorState("Database query exception");
SaLogger.Warn(GetType().Name + ".GetRegion\n\tQuery: " + dbCommand.CommandText + "\n\t" + exc.GetType().Name + ": " + exc.Message);
}
}
return region;
}
//-------------------------------------------------------------------
// Validate item.
public override bool IsValidRegionData(SaxRegion.Data data, SaxRegion.ErrField errField)
{
ClearErrorState();
if (!base.IsValidRegionData(data, errField)) return false;
return true;
}
//-------------------------------------------------------------------
// Insert item.
public override bool InsertRegion(SaxRegion region, DbUpdateInfo dbUpdateInfo)
{
String fn = GetType().Name + ".InsertRegion";
ClearErrorState();
if (!IsValidRegion(region)) return false;
if (SysId.IsValid(region.Id)) return SetErrorState(ErrorMessage.ValiditemId);
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
dbConnection.Open();
Region_Db dbRegion = new Region_Db(CoreDbInfo);
PopulateTo(dbRegion, region, dbUpdateInfo);
if (Region_Db.FieldsNonId.Contains("Id"))
{
// Generate next Id.
// ToDo dbRegion._Id = CoreDatabase.GetNextIdFromTable("Region");
}
dbRegion.ExecuteInsertCommand(dbCommand);
region.Id = new SysId(dbRegion._Id);
region.Changed = false;
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(region).Concat(": ").Concat("", "\n\t"));
}
catch (Exception exc) { SetErrorState(exc.Message); }
}
return !HasErrorState();
}
//-------------------------------------------------------------------
// Update item.
public override bool UpdateRegion(SaxRegion region, DbUpdateInfo dbUpdateInfo)
{
String fn = GetType().Name + ".UpdateRegion";
ClearErrorState();
if (!IsValidRegion(region)) return false;
if (!SysId.IsValid(region.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
if (!region.Changed)
{
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(region).Concat(": ").Concat("", "\n\t"));
return true;
}
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
// Retrieve item.
dbConnection.Open();
Region_Db dbRegion = new Region_Db(CoreDbInfo);
dbRegion.PopulateFrom(dbCommand, aliasRegion, "Id=" + SysId.ToString(region.Id));
// ToDo SaxUpdateLogItemMonitor_Region updateLogMonitor = new SaxUpdateLogItemMonitor_Region(SessionContext, CreateRegion(dbRegion), dbUpdateInfo);
// Update properties.
PopulateTo(dbRegion, region, dbUpdateInfo);
dbRegion.ExecuteUpdateCommand(dbCommand);
region.Changed = false;
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(region).Concat(": ").Concat("", "\n\t"));
// Record updates.
// ToDo updateLogMonitor.RecordUpdatedValues(region);
// ToDo updateLogMonitor.LogUpdates();
}
catch (Exception exc) { SetErrorState(exc.Message); }
}
return !HasErrorState();
}
//-------------------------------------------------------------------
// Delete item.
public override bool RegionCanBeDeleted(SaxRegion region)
{
ClearErrorState();
if (!base.RegionCanBeDeleted(region)) return false;
return true;
}
public override bool DeleteRegion(SaxRegion region, DbUpdateInfo dbUpdateInfo)
{
String fn = GetType().Name + ".DeleteRegion";
ClearErrorState();
if (!RegionCanBeDeleted(region)) return false;
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
// Retrieve region.
dbConnection.Open();
Region_Db dbRegion = new Region_Db(CoreDbInfo);
dbRegion.PopulateFrom(dbCommand, aliasRegion, "Id=" + region.Id.ToString());
// Delete region.
dbCommand.CommandType = System.Data.CommandType.Text;
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.Region) + " WHERE Id=" + SysId.ToString(region.Id) + ";";
dbCommand.ExecuteNonQuery();
region.Changed = false;
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(region).Concat(": ").Concat("", "\n\t"));
}
catch (Exception exc) { SetErrorState(exc.Message); }
}
return !HasErrorState();
}
//-------------------------------------------------------------------
// Copy data properties to and from database.
private void PopulateTo(Region_Db dbRegion, SaxRegion region, DbUpdateInfo dbUpdateInfo)
{
dbRegion._Id = SysId.ToInt(region.Id);
dbRegion._RegionType = (short)region.RegionType;
dbRegion._CountryIso2Code = region.CountryIso2Code;
dbRegion._Name = region.Name;
dbRegion._Latitude = region.Latitude;
dbRegion._Longitude = region.Longitude;
dbRegion._RegionIdParent = SysId.ToInt(region.RegionIdParent);
dbRegion._Notes = region.Notes;
dbRegion._Status = SacsSystem.GetStatusCode(region.Status);
dbRegion._Flags = (short)region.Flags;
if (!SysId.IsValid(region.Id))
{
dbRegion._CreateOn = DateTime.Now;
dbRegion._CreateBy = dbUpdateInfo.UserId.ToInt();
dbRegion._CreateHost = dbUpdateInfo.Host;
}
dbRegion._UpdateOn = DateTime.Now;
dbRegion._UpdateBy = dbUpdateInfo.UserId.ToInt();
dbRegion._UpdateHost = dbUpdateInfo.Host;
}
private void PopulateFrom(Region_Db dbRegion, SaxRegion region)
{
//region.Id = new SysId(dbRegion._Id);
region.RegionType = (Sax.RegionType)dbRegion._RegionType;
region.CountryIso2Code = dbRegion._CountryIso2Code;
region.Name = dbRegion._Name;
region.Latitude = dbRegion._Latitude;
region.Longitude = dbRegion._Longitude;
region.RegionIdParent = new SysId(dbRegion._RegionIdParent);
region.Notes = dbRegion._Notes;
region.Status = SacsSystem.GetStatusForCode(dbRegion._Status);
region.SetCreateStamp(dbRegion._CreateOn, new SysId(dbRegion._CreateBy), dbRegion._CreateHost);
region.SetUpdateStamp(dbRegion._UpdateOn, new SysId(dbRegion._UpdateBy), dbRegion._UpdateHost);
region.AcceptChanges();
}
//-------------------------------------------------------------------
// Item column definitions.
private static readonly String aliasRegion = "Rgn";
private static readonly String aliasRegion_Parent = "PrtRgn";
private static readonly String prefixRegion_Parent = "PrtRgn_";
private static readonly String colRegion_ChildRegion_Count = "Rgn_ChildRegionCount";
private void SetRegionColDfn
(ColumnDfn col, String caption, int width, SaxDbDfn.ColumnIdx dbCol,
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
String alias = "", String prefix = "")
{
if (String.IsNullOrEmpty(alias) && SaxDbDfn.GetTableForColumn(dbCol) == SaxDbDfn.TableIdx.Region)
alias = aliasRegion;
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn.GetColumnName(dbCol, false), SaxDbDfn.GetColumnNameQual(dbCol, alias), dataType, align);
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn.ColumnIdx.Unknown)
col.MaxLength = (int)SaxDbDfn.GetColTextLen(dbCol);
}
public override ColumnDfn GetRegionColumnDfn(SaxRegion.Column columnId, string caption = "", int width = 0)
{
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
switch (columnId)
{
//-----------------------------------------------------------
case SaxRegion.Column.Pos:
SetRegionColDfn(columnDfn, "Pos", 60, SaxDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
columnDfn.ReadOnly = true;
columnDfn.Resizable = false;
break;
case SaxRegion.Column.Id:
SetRegionColDfn(columnDfn, "Id", 80, SaxDbDfn.ColumnIdx.Region_Id, ColumnAlignment.Right, DataValue.DataType.Long);
columnDfn.ReadOnly = true;
break;
case SaxRegion.Column.RegionType:
SetRegionColDfn(columnDfn, "Type", 80, SaxDbDfn.ColumnIdx.Region_RegionType, ColumnAlignment.Center, DataValue.DataType.Long);
break;
case SaxRegion.Column.RegionType_Desc:
SetRegionColDfn(columnDfn, "Type", 100, SaxDbDfn.ColumnIdx.Region_RegionType, ColumnAlignment.Center, DataValue.DataType.String);
break;
case SaxRegion.Column.CountryIso2Code:
SetRegionColDfn(columnDfn, "ISO2", 60, SaxDbDfn.ColumnIdx.Region_CountryIso2Code, ColumnAlignment.Center);
break;
case SaxRegion.Column.Name:
SetRegionColDfn(columnDfn, "Name", 120, SaxDbDfn.ColumnIdx.Region_Name);
break;
//-----------------------------------------------------------
// Parent Region.
case SaxRegion.Column.RegionIdParent:
SetRegionColDfn(columnDfn, "Parent Id", 80, SaxDbDfn.ColumnIdx.Region_RegionIdParent, ColumnAlignment.Right, DataValue.DataType.Long);
break;
case SaxRegion.Column.Parent_RegionType:
SetRegionColDfn(columnDfn, "Parent type", 80, SaxDbDfn.ColumnIdx.Region_RegionType, ColumnAlignment.Center, DataValue.DataType.Long, aliasRegion_Parent, prefixRegion_Parent);
columnDfn.ReadOnly = true;
break;
case SaxRegion.Column.Parent_RegionType_Desc:
SetRegionColDfn(columnDfn, "Parent type", 100, SaxDbDfn.ColumnIdx.Region_RegionType, ColumnAlignment.Center, DataValue.DataType.String, aliasRegion_Parent, prefixRegion_Parent);
columnDfn.ReadOnly = true;
break;
case SaxRegion.Column.Parent_Name:
SetRegionColDfn(columnDfn, "Parent", 120, SaxDbDfn.ColumnIdx.Region_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasRegion_Parent, prefixRegion_Parent);
columnDfn.ReadOnly = true;
break;
//-----------------------------------------------------------
// Derived properties.
case SaxRegion.Column.ChildRegionCount:
SetRegionColDfn(columnDfn, "Sub regions", 90, SaxDbDfn.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
columnDfn.DataName = colRegion_ChildRegion_Count;
columnDfn.ReadOnly = true;
break;
//-----------------------------------------------------------
// Common properties.
case SaxRegion.Column.Notes:
SetRegionColDfn(columnDfn, "Notes", 240, SaxDbDfn.ColumnIdx.Region_Notes);
break;
case SaxRegion.Column.Flags:
SetRegionColDfn(columnDfn, "Flags", 60, SaxDbDfn.ColumnIdx.Region_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
break;
case SaxRegion.Column.Status:
SetRegionColDfn(columnDfn, "Status", 80, SaxDbDfn.ColumnIdx.Region_Status, ColumnAlignment.Center);
break;
case SaxRegion.Column.Status_Desc:
SetRegionColDfn(columnDfn, "Status", 90, SaxDbDfn.ColumnIdx.Region_Status, ColumnAlignment.Center);
break;
case SaxRegion.Column.Status_Ind:
SetRegionColDfn(columnDfn, "Status", 80, SaxDbDfn.ColumnIdx.Region_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
break;
case SaxRegion.Column.CreateOn_Date:
SetRegionColDfn(columnDfn, "Created", 80, SaxDbDfn.ColumnIdx.Region_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
columnDfn.ReadOnly = true;
break;
case SaxRegion.Column.UpdateOn_Date:
SetRegionColDfn(columnDfn, "Updated", 80, SaxDbDfn.ColumnIdx.Region_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;
}
//-------------------------------------------------------------------
// Item query filter.
public override List<string> GetRegionQueryFilter(SaxRegion.Params prm)
{
List<String> filter = new List<String>();
// Item Ids.
String idsIncluded = prm.IdsIncluded.Concat(",");
if (!idsIncluded.IsEmpty())
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Region_Id, aliasRegion) + " IN (" + idsIncluded + ")");
String idsExcluded = prm.IdsExcluded.Concat(",");
if (!idsExcluded.IsEmpty())
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Region_Id, aliasRegion) + " NOT IN (" + idsExcluded + ")");
// Parent Region Ids.
String includedParentRegionIds = prm.IncludedParentRegionIds.Concat(",");
if (!includedParentRegionIds.IsEmpty())
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Region_RegionIdParent, aliasRegion) + " IN (" + includedParentRegionIds + ")");
// Region type.
if ((int)prm.RegionType > 0)
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Region_RegionType, aliasRegion) + "=" + (int)prm.RegionType);
// ISO 2 codes.
if (!prm.CountryIso2CodesIncluded.IsEmpty())
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Region_CountryIso2Code, aliasRegion) + " IN (" + DbQuery.FormatForIn(prm.CountryIso2CodesIncluded, true, false) + ")");
if (!prm.CountryIso2CodesExcluded.IsEmpty())
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Region_CountryIso2Code, aliasRegion) + " NOT IN (" + DbQuery.FormatForIn(prm.CountryIso2CodesExcluded, true, false) + ")");
// Generic filter.
if (!StringUtil.IsEmpty(prm.RegionFilter))
{
// Split filter into words.
List<String> filterWords = prm.RegionFilter.Split((char[])null).ToList();
filterWords.RemoveDuplicatesCI();
filterWords.RemoveBlanks();
foreach (String filterWord in filterWords)
{
List<String> regionFilter = new List<String>();
regionFilter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Region_CountryIso2Code, aliasRegion) + " Like '%" + DbQuery.FormatForLike(filterWord, true) + "%'");
regionFilter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Region_Name, aliasRegion) + " Like '%" + DbQuery.FormatForLike(filterWord, true) + "%'");
filter.Add(regionFilter.Concat(" OR ", "(", ")"));
}
}
// Name.
if (!StringUtil.IsEmpty(prm.NameFull))
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Region_Name, aliasRegion) + "='" + DbQuery.FormatForCondition(prm.NameFull) + "'");
if (!StringUtil.IsEmpty(prm.NamePartial))
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Region_Name, aliasRegion) + " Like '%" + DbQuery.FormatForLike(prm.NamePartial, true) + "%'");
// Notes.
if (!StringUtil.IsEmpty(prm.NotesPartial))
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Region_Notes, aliasRegion) + " LIKE '%" + DbQuery.FormatForLike(prm.NotesPartial) + "%'");
// Status.
if (prm.StatusCat == SaxRegion.StatusCat.ActiveOnly)
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Region_Status, aliasRegion) + "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'");
else if (prm.StatusCat == SaxRegion.StatusCat.NotDeleted)
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Region_Status, aliasRegion) + "!='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'");
if (filter.Count < 1) filter.Add("1=1");
return filter;
}
// Item sort columns.
public List<String> GetRegionSortColumns(SaxRegion.Params prm)
{
// Sort sequence:
List<String> sortColumnNames = new List<String>();
foreach (var columnDfn in prm.SortColumns)
{
// Need to ensure correct alias used for Region columns in case of conflict.
String sortCol = String.Empty;
if (SaxDbDfn.GetTableForColumn((SaxDbDfn.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn.TableIdx.Region)
{
sortCol = SaxDbDfn.GetColumnNameQual((SaxDbDfn.ColumnIdx)columnDfn.DbColumn, aliasRegion);
}
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(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Region_Id, aliasRegion) + " ASC");
}
return sortColumnNames;
}
//-------------------------------------------------------------------
// Item count.
private long GetRegionCount(String filter)
{
ClearErrorState();
return CoreDatabase.GetRowCount(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.Region) + " As " + aliasRegion, filter);
}
public override long GetRegionCount(SaxRegion.Params prm)
{
ClearErrorState();
return GetRegionCount(GetRegionQueryFilter(prm).Concat(" AND ", "(", ")"));
}
//-------------------------------------------------------------------
// Item list.
public override List<SaxRegion> GetRegionList(SaxRegion.Params prm)
{
List<SaxRegion> userReferences = new List<SaxRegion>();
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
qry.Tables.Add(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.Region), aliasRegion);
Region_Db dbRegion = new Region_Db(CoreDbInfo);
qry.Columns.AddRange(dbRegion.ExistingColumnNames);
qry.Filters.AddRange(GetRegionQueryFilter(prm));
qry.OrderBy.AddRange(GetRegionSortColumns(prm));
// Query data.
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
dbConnection.Open();
dbCommand.CommandText = qry.BuildQuery(prm.ResultsPaging);
using (DbDataReader dbDataReader = dbCommand.ExecuteReader())
{
while (dbDataReader.Read())
{
dbRegion = new Region_Db(CoreDbInfo);
dbRegion.PopulateFrom(dbDataReader);
userReferences.Add(CreateRegion(dbRegion));
}
}
}
catch (Exception exc)
{
SaLogger.Warn(GetType().Name + ".GetRegionList\n\tQuery: " + dbCommand.CommandText + "\n\t" + exc.GetType().Name + ": " + exc.Message);
}
}
return userReferences;
}
//-------------------------------------------------------------------
// Item query execution.
public override DbResultSet ExecuteRegionQuery(List<ColumnDfn> columns, SaxRegion.Params prm)
{
ClearErrorState();
//---------------------------------------------------------------------
// Construct query.
DbQuery query = new DbQuery(CoreDatabase.DbmsType);
query.Tables.Add(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.Region), aliasRegion);
// Add columns as defined in query list.
if (columns.HasId(SaxRegion.Column.Id))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Region_Id, aliasRegion));
if (columns.HasId(SaxRegion.Column.RegionType) || columns.HasId(SaxRegion.Column.RegionType_Desc))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Region_RegionType, aliasRegion));
if (columns.HasId(SaxRegion.Column.CountryIso2Code))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Region_CountryIso2Code, aliasRegion));
if (columns.HasId(SaxRegion.Column.Name))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Region_Name, aliasRegion));
bool hasParentRegionCols = columns.HasId(SaxRegion.Column.Parent_RegionType) || columns.HasId(SaxRegion.Column.Parent_RegionType_Desc) || columns.HasId(SaxRegion.Column.Parent_Name);
if (columns.HasId(SaxRegion.Column.RegionIdParent) || hasParentRegionCols)
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Region_RegionIdParent, aliasRegion));
// Common properties.
if (columns.HasId(SaxRegion.Column.Notes))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Region_Notes, aliasRegion));
if (columns.HasId(SaxRegion.Column.Flags))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Region_Flags, aliasRegion));
if (columns.HasId(SaxRegion.Column.Status) || columns.HasId(SaxRegion.Column.Status_Desc) || columns.HasId(SaxRegion.Column.Status_Ind))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Region_Status, aliasRegion));
if (columns.HasId(SaxRegion.Column.CreateOn_Date))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Region_CreateOn, aliasRegion));
if (columns.HasId(SaxRegion.Column.UpdateOn_Date))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Region_UpdateOn, aliasRegion));
//---------------------------------------------------------------------
// Parent Region.
if (hasParentRegionCols)
{
DbQueryJoin joinParentRegion = new DbQueryJoin(DbJoinType.LeftOuter);
joinParentRegion.Table = new StringPair(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.Region), aliasRegion_Parent);
joinParentRegion.Filters.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Region_Id, aliasRegion_Parent) + "=" + SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Region_RegionIdParent, aliasRegion));
query.Joins.Add(joinParentRegion);
List<SaxDbDfn.ColumnIdx> cols = new List<SaxDbDfn.ColumnIdx>();
cols.Add(SaxDbDfn.ColumnIdx.Region_RegionType);
cols.Add(SaxDbDfn.ColumnIdx.Region_Name);
foreach (var col in cols)
query.Columns.Add(SaxDbDfn.GetColumnNameQual(col, aliasRegion_Parent), prefixRegion_Parent + SaxDbDfn.GetColumnName(col, false));
}
//---------------------------------------------------------------------
// Child Region count.
if (columns.HasId(SaxRegion.Column.ChildRegionCount))
{
String aliasCount = "aChildRgn";
DbQuery queryCount = new DbQuery(CoreDatabase.DbmsType);
queryCount.Tables.Add(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.Region), aliasCount);
queryCount.Columns.Add("Count(*)");
queryCount.Filters.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Region_RegionIdParent, aliasCount) + "=" + SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Region_Id, aliasRegion));
query.Columns.Add("(" + queryCount.BuildQuery() + ")", colRegion_ChildRegion_Count);
}
//---------------------------------------------------------------------
// Populate filter.
query.Filters.AddRange(GetRegionQueryFilter(prm));
if (prm.IdsIncluded.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetRegionSortColumns(prm))
query.OrderBy.Add(sortColumn);
}
//---------------------------------------------------------------------
//return new DbResultSet_DataTableReader(db, query.BuildQuery(prm.ResultsPaging));
return DbResultSet_DataReader.ExecuteQuery(CoreDatabase, query.BuildQuery(prm.ResultsPaging));
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,497 @@
using Sarand.Net.Standard.Dbas.Data;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using Saxonite.Base.App;
using Saxonite.Net.Standard.Dbas.Bus;
using Saxonite.Net.Standard.Dbas.Internal;
using Saxonite.Net.Standard.Base.App;
using Saxonite.Net.Standard.Base.Bus;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Text;
using Sarand.Net.Standard.Base.Utils;
using System.Linq;
namespace Saxonite.Net.Standard.Dbas.Mgr
{
//=======================================================================
partial class SaxReferenceMgr_Dbas
{
//*******************************************************************
// Reference Mgr - Sport
//*******************************************************************
// Utilities.
private List<StringPair> GetLogProperties(SaxSport sport)
{
return new List<StringPair>()
{
new StringPair("Id", SysId.ToString(sport.Id)),
new StringPair("Name", sport.Name),
new StringPair("Status", sport.StatusCode)
};
}
//-------------------------------------------------------------------
// Create item.
public override SaxSport CreateSport()
{
ClearErrorState();
return new SaxSport_Dbas(CoreDatabase, null, 0);
}
private SaxSport_Dbas CreateSport(Sport_Db dbSport)
{
ClearErrorState();
SaxSport_Dbas sport = new SaxSport_Dbas(CoreDatabase, new SysId(dbSport._Id), (UInt16)dbSport._Flags);
PopulateFrom(dbSport, sport);
return sport;
}
//-------------------------------------------------------------------
// Get item.
public override SaxSport GetSport(SaxSport.Params prm)
{
ClearErrorState();
return GetSport(GetSportQueryFilter(prm).Concat(" And ", "(", ")"));
}
private SaxSport GetSport(String filter)
{
ClearErrorState();
long count = GetSportCount(filter);
if (count == 0) return null;
if (count != 1)
{
SetErrorState("Multiple items found");
return null;
}
SaxSport sport = null;
// Query data.
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
dbConnection.Open();
Sport_Db dbSport = new Sport_Db(CoreDbInfo);
dbSport.PopulateFrom(dbCommand, aliasSport, filter);
sport = CreateSport(dbSport);
}
catch (Exception exc)
{
SetErrorState("Database query exception");
SaLogger.Warn(GetType().Name + ".GetSport\n\tQuery: " + dbCommand.CommandText + "\n\t" + exc.GetType().Name + ": " + exc.Message);
}
}
return sport;
}
//-------------------------------------------------------------------
// Validate item.
public override bool IsValidSportData(SaxSport.Data data, SaxSport.ErrField errField)
{
ClearErrorState();
if (!base.IsValidSportData(data, errField)) return false;
return true;
}
//-------------------------------------------------------------------
// Insert item.
public override bool InsertSport(SaxSport sport, DbUpdateInfo dbUpdateInfo)
{
String fn = GetType().Name + ".InsertSport";
ClearErrorState();
if (!IsValidSport(sport)) return false;
if (SysId.IsValid(sport.Id)) return SetErrorState(ErrorMessage.ValiditemId);
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
dbConnection.Open();
Sport_Db dbSport = new Sport_Db(CoreDbInfo);
PopulateTo(dbSport, sport, dbUpdateInfo);
if (Sport_Db.FieldsNonId.Contains("Id"))
{
// Generate next Id.
// ToDo dbSport._Id = CoreDatabase.GetNextIdFromTable("Sport");
}
dbSport.ExecuteInsertCommand(dbCommand);
sport.Id = new SysId(dbSport._Id);
sport.Changed = false;
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(sport).Concat(": ").Concat("", "\n\t"));
}
catch (Exception exc) { SetErrorState(exc.Message); }
}
return !HasErrorState();
}
//-------------------------------------------------------------------
// Update item.
public override bool UpdateSport(SaxSport sport, DbUpdateInfo dbUpdateInfo)
{
String fn = GetType().Name + ".UpdateSport";
ClearErrorState();
if (!IsValidSport(sport)) return false;
if (!SysId.IsValid(sport.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
if (!sport.Changed)
{
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(sport).Concat(": ").Concat("", "\n\t"));
return true;
}
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
// Retrieve item.
dbConnection.Open();
Sport_Db dbSport = new Sport_Db(CoreDbInfo);
dbSport.PopulateFrom(dbCommand, aliasSport, "Id=" + SysId.ToString(sport.Id));
// ToDo SaxUpdateLogItemMonitor_Sport updateLogMonitor = new SaxUpdateLogItemMonitor_Sport(SessionContext, CreateSport(dbSport), dbUpdateInfo);
// Update properties.
PopulateTo(dbSport, sport, dbUpdateInfo);
dbSport.ExecuteUpdateCommand(dbCommand);
sport.Changed = false;
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(sport).Concat(": ").Concat("", "\n\t"));
// Record updates.
// ToDo updateLogMonitor.RecordUpdatedValues(sport);
// ToDo updateLogMonitor.LogUpdates();
}
catch (Exception exc) { SetErrorState(exc.Message); }
}
return !HasErrorState();
}
//-------------------------------------------------------------------
// Delete item.
public override bool SportCanBeDeleted(SaxSport sport)
{
ClearErrorState();
if (!base.SportCanBeDeleted(sport)) return false;
return true;
}
public override bool DeleteSport(SaxSport sport, DbUpdateInfo dbUpdateInfo)
{
String fn = GetType().Name + ".DeleteSport";
ClearErrorState();
if (!SportCanBeDeleted(sport)) return false;
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
// Retrieve sport.
dbConnection.Open();
Sport_Db dbSport = new Sport_Db(CoreDbInfo);
dbSport.PopulateFrom(dbCommand, aliasSport, "Id=" + sport.Id.ToString());
// Delete sport.
dbCommand.CommandType = System.Data.CommandType.Text;
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.Sport) + " WHERE Id=" + SysId.ToString(sport.Id) + ";";
dbCommand.ExecuteNonQuery();
sport.Changed = false;
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(sport).Concat(": ").Concat("", "\n\t"));
}
catch (Exception exc) { SetErrorState(exc.Message); }
}
return !HasErrorState();
}
//-------------------------------------------------------------------
// Copy data properties to and from database.
private void PopulateTo(Sport_Db dbSport, SaxSport sport, DbUpdateInfo dbUpdateInfo)
{
dbSport._Id = SysId.ToInt(sport.Id);
dbSport._Name = sport.Name;
dbSport._Notes = sport.Notes;
dbSport._Status = SacsSystem.GetStatusCode(sport.Status);
dbSport._Flags = (short)sport.Flags;
if (!SysId.IsValid(sport.Id))
{
dbSport._CreateOn = DateTime.Now;
dbSport._CreateBy = dbUpdateInfo.UserId.ToInt();
dbSport._CreateHost = dbUpdateInfo.Host;
}
dbSport._UpdateOn = DateTime.Now;
dbSport._UpdateBy = dbUpdateInfo.UserId.ToInt();
dbSport._UpdateHost = dbUpdateInfo.Host;
}
private void PopulateFrom(Sport_Db dbSport, SaxSport sport)
{
//sport.Id = new SysId(dbSport._Id);
sport.Name = dbSport._Name;
sport.Notes = dbSport._Notes;
sport.Status = SacsSystem.GetStatusForCode(dbSport._Status);
sport.SetCreateStamp(dbSport._CreateOn, new SysId(dbSport._CreateBy), dbSport._CreateHost);
sport.SetUpdateStamp(dbSport._UpdateOn, new SysId(dbSport._UpdateBy), dbSport._UpdateHost);
sport.AcceptChanges();
}
//-------------------------------------------------------------------
// Item column definitions.
private static readonly String aliasSport = "Sprt";
//private static readonly String colSport_AssociatedData_Count = "UsrAct_AD_Count";
private void SetSportColDfn
(ColumnDfn col, String caption, int width, SaxDbDfn.ColumnIdx dbCol,
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
String alias = "", String prefix = "")
{
if (String.IsNullOrEmpty(alias) && SaxDbDfn.GetTableForColumn(dbCol) == SaxDbDfn.TableIdx.Sport)
alias = aliasSport;
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn.GetColumnName(dbCol, false), SaxDbDfn.GetColumnNameQual(dbCol, alias), dataType, align);
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn.ColumnIdx.Unknown)
col.MaxLength = (int)SaxDbDfn.GetColTextLen(dbCol);
}
public override ColumnDfn GetSportColumnDfn(SaxSport.Column columnId, string caption = "", int width = 0)
{
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
switch (columnId)
{
//-----------------------------------------------------------
case SaxSport.Column.Pos:
SetSportColDfn(columnDfn, "Pos", 60, SaxDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
columnDfn.ReadOnly = true;
columnDfn.Resizable = false;
break;
case SaxSport.Column.Id:
SetSportColDfn(columnDfn, "Id", 80, SaxDbDfn.ColumnIdx.Sport_Id, ColumnAlignment.Right, DataValue.DataType.Long);
columnDfn.ReadOnly = true;
break;
case SaxSport.Column.Name:
SetSportColDfn(columnDfn, "Name", 120, SaxDbDfn.ColumnIdx.Sport_Name);
break;
//-----------------------------------------------------------
// Derived properties.
//-----------------------------------------------------------
// Common properties.
case SaxSport.Column.Notes:
SetSportColDfn(columnDfn, "Notes", 240, SaxDbDfn.ColumnIdx.Sport_Notes);
break;
case SaxSport.Column.Flags:
SetSportColDfn(columnDfn, "Flags", 60, SaxDbDfn.ColumnIdx.Sport_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
break;
case SaxSport.Column.Status:
SetSportColDfn(columnDfn, "Status", 80, SaxDbDfn.ColumnIdx.Sport_Status, ColumnAlignment.Center);
break;
case SaxSport.Column.Status_Desc:
SetSportColDfn(columnDfn, "Status", 90, SaxDbDfn.ColumnIdx.Sport_Status, ColumnAlignment.Center);
break;
case SaxSport.Column.Status_Ind:
SetSportColDfn(columnDfn, "Status", 80, SaxDbDfn.ColumnIdx.Sport_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
break;
case SaxSport.Column.CreateOn_Date:
SetSportColDfn(columnDfn, "Created", 80, SaxDbDfn.ColumnIdx.Sport_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
columnDfn.ReadOnly = true;
break;
case SaxSport.Column.UpdateOn_Date:
SetSportColDfn(columnDfn, "Updated", 80, SaxDbDfn.ColumnIdx.Sport_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;
}
//-------------------------------------------------------------------
// Item query filter.
public override List<string> GetSportQueryFilter(SaxSport.Params prm)
{
List<String> filter = new List<String>();
// Item Ids.
String includedIds = prm.IncludedIds.Concat(",");
if (!includedIds.IsEmpty())
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Sport_Id, aliasSport) + " IN (" + includedIds + ")");
String excludedIds = prm.ExcludedIds.Concat(",");
if (!excludedIds.IsEmpty())
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Sport_Id, aliasSport) + " NOT IN (" + excludedIds + ")");
// Generic filter.
if (!StringUtil.IsEmpty(prm.SportFilter))
{
// Split filter into words.
List<String> filterWords = prm.SportFilter.Split((char[])null).ToList();
filterWords.RemoveDuplicatesCI();
filterWords.RemoveBlanks();
foreach (String filterWord in filterWords)
{
List<String> sportFilter = new List<String>();
sportFilter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Sport_Name, aliasSport) + " Like '%" + DbQuery.FormatForLike(filterWord, true) + "%'");
filter.Add(sportFilter.Concat(" OR ", "(", ")"));
}
}
// Name.
if (!StringUtil.IsEmpty(prm.NameFull))
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Sport_Name, aliasSport) + "='" + DbQuery.FormatForCondition(prm.NameFull) + "'");
if (!StringUtil.IsEmpty(prm.NamePartial))
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Sport_Name, aliasSport) + " Like '%" + DbQuery.FormatForLike(prm.NamePartial, true) + "%'");
// Notes.
if (!StringUtil.IsEmpty(prm.NotesPartial))
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Sport_Notes, aliasSport) + " LIKE '%" + DbQuery.FormatForLike(prm.NotesPartial) + "%'");
// Status.
if (prm.StatusCat == SaxSport.StatusCat.ActiveOnly)
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Sport_Status, aliasSport) + "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'");
else if (prm.StatusCat == SaxSport.StatusCat.NotDeleted)
filter.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Sport_Status, aliasSport) + "!='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'");
if (filter.Count < 1) filter.Add("1=1");
return filter;
}
// Item sort columns.
public List<String> GetSportSortColumns(SaxSport.Params prm)
{
// Sort sequence:
List<String> sortColumnNames = new List<String>();
foreach (var columnDfn in prm.SortColumns)
{
// Need to ensure correct alias used for Sport columns in case of conflict.
String sortCol = String.Empty;
if (SaxDbDfn.GetTableForColumn((SaxDbDfn.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn.TableIdx.Sport)
{
sortCol = SaxDbDfn.GetColumnNameQual((SaxDbDfn.ColumnIdx)columnDfn.DbColumn, aliasSport);
}
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(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Sport_Id, aliasSport) + " ASC");
}
return sortColumnNames;
}
//-------------------------------------------------------------------
// Item count.
private long GetSportCount(String filter)
{
ClearErrorState();
return CoreDatabase.GetRowCount(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.Sport) + " As " + aliasSport, filter);
}
public override long GetSportCount(SaxSport.Params prm)
{
ClearErrorState();
return GetSportCount(GetSportQueryFilter(prm).Concat(" AND ", "(", ")"));
}
//-------------------------------------------------------------------
// Item list.
public override List<SaxSport> GetSportList(SaxSport.Params prm)
{
List<SaxSport> userReferences = new List<SaxSport>();
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
qry.Tables.Add(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.Sport), aliasSport);
Sport_Db dbSport = new Sport_Db(CoreDbInfo);
qry.Columns.AddRange(dbSport.ExistingColumnNames);
qry.Filters.AddRange(GetSportQueryFilter(prm));
qry.OrderBy.AddRange(GetSportSortColumns(prm));
// Query data.
using (var dbConnection = CoreDatabase.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
dbConnection.Open();
dbCommand.CommandText = qry.BuildQuery(prm.ResultsPaging);
using (DbDataReader dbDataReader = dbCommand.ExecuteReader())
{
while (dbDataReader.Read())
{
dbSport = new Sport_Db(CoreDbInfo);
dbSport.PopulateFrom(dbDataReader);
userReferences.Add(CreateSport(dbSport));
}
}
}
catch (Exception exc)
{
SaLogger.Warn(GetType().Name + ".GetSportList\n\tQuery: " + dbCommand.CommandText + "\n\t" + exc.GetType().Name + ": " + exc.Message);
}
}
return userReferences;
}
//-------------------------------------------------------------------
// Item query execution.
public override DbResultSet ExecuteSportQuery(List<ColumnDfn> columns, SaxSport.Params prm)
{
ClearErrorState();
//---------------------------------------------------------------------
// Construct query.
DbQuery query = new DbQuery(CoreDatabase.DbmsType);
query.Tables.Add(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.Sport), aliasSport);
// Add columns as defined in query list.
if (columns.HasId(SaxSport.Column.Id))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Sport_Id, aliasSport));
if (columns.HasId(SaxSport.Column.Name))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Sport_Name, aliasSport));
// Common properties.
if (columns.HasId(SaxSport.Column.Notes))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Sport_Notes, aliasSport));
if (columns.HasId(SaxSport.Column.Flags))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Sport_Flags, aliasSport));
if (columns.HasId(SaxSport.Column.Status) || columns.HasId(SaxSport.Column.Status_Desc) || columns.HasId(SaxSport.Column.Status_Ind))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Sport_Status, aliasSport));
if (columns.HasId(SaxSport.Column.CreateOn_Date))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Sport_CreateOn, aliasSport));
if (columns.HasId(SaxSport.Column.UpdateOn_Date))
query.Columns.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Sport_UpdateOn, aliasSport));
//---------------------------------------------------------------------
// Movement count.
/*
if (columns.HasId(SaxSport.Column.Movement_Count))
{
// Ref. SaxSport_Dbas.HasAssetMovements
String aliasMovement = "aCntMov";
DbQuery queryMovement = new DbQuery(SaxDatabase.DbmsType);
queryMovement.Tables.Add(SaxDbDfn.GetTableName(SaxDbDfn.TableIdx.AssetMovement), aliasMovement);
queryMovement.Columns.Add("Count(*)");
queryMovement.Filters.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.AssetMovement_AssetItemType, aliasMovement) + "=" + (int)Sax.AssetItemType.Sport);
queryMovement.Filters.Add(SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.AssetMovement_AssetItemId, aliasMovement) + "=" + SaxDbDfn.GetColumnNameQual(SaxDbDfn.ColumnIdx.Sport_Id, aliasSport));
query.Columns.Add("(" + queryMovement.BuildQuery() + ")", colSport_Movement_Count);
}
*/
//---------------------------------------------------------------------
// Populate filter.
query.Filters.AddRange(GetSportQueryFilter(prm));
if (prm.IncludedIds.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetSportSortColumns(prm))
query.OrderBy.Add(sortColumn);
}
//---------------------------------------------------------------------
//return new DbResultSet_DataTableReader(db, query.BuildQuery(prm.ResultsPaging));
return DbResultSet_DataReader.ExecuteQuery(CoreDatabase, query.BuildQuery(prm.ResultsPaging));
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,29 @@
using Saxonite.Net.Standard.Base.App;
using Saxonite.Net.Standard.Base.Mgr;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Saxonite.Net.Standard.Dbas.Mgr
{
//=======================================================================
public partial class SaxReferenceMgr_Dbas : SaxReferenceMgr
{
//-------------------------------------------------------------------
// Data members.
//-------------------------------------------------------------------
// Construction.
public SaxReferenceMgr_Dbas(SaxSessionContext sessionContext) : base (sessionContext)
{
}
//-------------------------------------------------------------------
// Properties.
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,14 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<RootNamespace>Saxonite.Net.Standard</RootNamespace>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Common-VS\Workspace\SacsStandardBase\SacsStandardBase.csproj" />
<ProjectReference Include="..\..\..\Common-VS\Workspace\SacsStandardDbas\SacsStandardDbas.csproj" />
<ProjectReference Include="..\SaxoniteStandardBase\SaxoniteStandardBase.csproj" />
</ItemGroup>
</Project>