v1.3.0 Restructure Saxonite workspace and upgrade to .NET 10 (#1)
Move Saxonite’s projects into a dedicated `Workspace` folder and align the solution with .NET 10 and the current Common workspace. Update encryption integration, test project structure and coverage, and repository guidance and upgrade notes. - Relocate application and library projects while retaining Git rename history. - Split tests into Admin, Online, and Shared projects; add representative behavioral and serialization tests. - Update Common integration, application version, and repository documentation. Application version: 1.3.0 Reviewed-on: #1 Co-authored-by: andy <andy@sarand.com>
This commit was merged in pull request #1.
This commit is contained in:
@@ -0,0 +1,127 @@
|
||||
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;
|
||||
using Saxonite.Net.Standard.Base.App;
|
||||
|
||||
namespace Saxonite.Net.Standard.Dbas.App
|
||||
{
|
||||
//=======================================================================
|
||||
public static class SaxDbDfnGenerator
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
/// <summary>
|
||||
/// Generate database definitions.
|
||||
/// </summary>
|
||||
public static bool Generate(Sax.Database dbInstance, String connectionString)
|
||||
{
|
||||
String fn = nameof(SaxDbDfnGenerator) + ".Generate";
|
||||
|
||||
// Locate output folder:
|
||||
String directory = GetOutputFolder(dbInstance);
|
||||
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(dbInstance, database, directory);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SaLogger.Error(fn + " " + ExceptionUtil.GetErrorStateMessage(exc));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
private static bool GenerateDatabaseDefinition(Sax.Database dbInstance, 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.UnionWith(new String[] { });
|
||||
// Schema - Columns.
|
||||
config.Schema.InsertOnlyColumns.Add(".*", "CreateOn,CreateBy,CreateHost");
|
||||
config.Schema.InsertOnlyColumns.Add("SomeOldTable", "Code");
|
||||
// Database definition class.
|
||||
config.DefinitionClass.Usings.Add("Sarand.Net.Standard.Base.Core");
|
||||
config.DefinitionClass.Usings.Add("Sarand.Net.Standard.Base.Dbas");
|
||||
config.DefinitionClass.Usings.Add("Sarand.Net.Standard.Base.Utils");
|
||||
config.DefinitionClass.Namespace = "Saxonite.Base.App";
|
||||
config.DefinitionClass.Classname = "SaxDbDfn_" + dbInstance.ToString();
|
||||
// Table class.
|
||||
config.TableClass.Usings.Add("Sarand.Net.Standard.Base.App");
|
||||
config.TableClass.Usings.Add("Sarand.Net.Standard.Base.Core");
|
||||
config.TableClass.Usings.Add("Sarand.Net.Standard.Base.Dbas");
|
||||
config.TableClass.Usings.Add("Sarand.Net.Standard.Base.Utils");
|
||||
config.TableClass.Namespace_BaseClass = "Saxonite.Net.Standard.Dbas.Data";
|
||||
config.TableClass.Namespace = "Saxonite.Net.Standard.Dbas.Internal." + dbInstance.ToString();
|
||||
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(Sax.Database dbInstance)
|
||||
{
|
||||
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\Saxonite-[Instance]\' folder.
|
||||
directory += Path.DirectorySeparatorChar + "Database" + Path.DirectorySeparatorChar + "Generated" + Path.DirectorySeparatorChar + "Saxonite-" + dbInstance.ToString();
|
||||
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,54 @@
|
||||
using Saxonite.Net.Standard.Base.App;
|
||||
using Saxonite.Net.Standard.Base.Mgr;
|
||||
using Saxonite.Net.Standard.Base.Mgr.Reference;
|
||||
using Saxonite.Net.Standard.Base.Mgr.Support;
|
||||
using Saxonite.Net.Standard.Dbas.Mgr;
|
||||
using Saxonite.Net.Standard.Dbas.Mgr.Reference;
|
||||
using Saxonite.Net.Standard.Dbas.Mgr.Support;
|
||||
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, SaxInternals internals)
|
||||
{
|
||||
return new SaxReferenceMgr_Dbas(sessionContext, internals);
|
||||
}
|
||||
public override SaxAccountMgr CreateAccountMgr(SaxSessionContext sessionContext, SaxInternals internals)
|
||||
{
|
||||
return new SaxAccountMgr_Dbas(sessionContext, internals);
|
||||
}
|
||||
public override SaxActivityMgr CreateActivityMgr(SaxSessionContext sessionContext, SaxInternals internals)
|
||||
{
|
||||
return new SaxActivityMgr_Dbas(sessionContext, internals);
|
||||
}
|
||||
public override SaxItemDataMgr CreateItemDataMgr(SaxSessionContext sessionContext, SaxInternals internals)
|
||||
{
|
||||
return new SaxItemDataMgr_Dbas(sessionContext, internals);
|
||||
}
|
||||
public override SaxReferenceGolfMgr CreateReferenceGolfMgr(SaxSessionContext sessionContext, SaxInternals internals)
|
||||
{
|
||||
return new SaxReferenceGolfMgr_Dbas(sessionContext, internals);
|
||||
}
|
||||
public override SaxSupportMgr CreateSupportMgr(SaxSessionContext sessionContext, SaxInternals internals)
|
||||
{
|
||||
return new SaxSupportMgr_Dbas(sessionContext, internals);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
using Sarand.Net.Standard.Base.Bus;
|
||||
using Sarand.Net.Standard.Base.Dbas;
|
||||
using Saxonite.Net.Standard.Base.Bus.Reference;
|
||||
using System;
|
||||
|
||||
namespace Saxonite.Net.Standard.Dbas.Bus.Reference
|
||||
{
|
||||
//=======================================================================
|
||||
public class SaxGolfUsgaCountry_Dbas : SaxGolfUsgaCountry
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private ISacsDatabase database;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SaxGolfUsgaCountry_Dbas(ISacsDatabase database, SysId id, UInt16 flags) :
|
||||
base(id)
|
||||
{
|
||||
this.database = database;
|
||||
Flags = flags;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Associated data.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
using Sarand.Net.Standard.Base.Bus;
|
||||
using Sarand.Net.Standard.Base.Dbas;
|
||||
using Saxonite.Net.Standard.Base.Bus.Reference;
|
||||
using System;
|
||||
|
||||
namespace Saxonite.Net.Standard.Dbas.Bus.Reference
|
||||
{
|
||||
//=======================================================================
|
||||
public class SaxGolfUsgaCourse_Dbas : SaxGolfUsgaCourse
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private ISacsDatabase database;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SaxGolfUsgaCourse_Dbas(ISacsDatabase database, SysId id, SysId facilityId, UInt16 flags) :
|
||||
base(id, facilityId)
|
||||
{
|
||||
this.database = database;
|
||||
Flags = flags;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Associated data.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
using Sarand.Net.Standard.Base.Bus;
|
||||
using Sarand.Net.Standard.Base.Dbas;
|
||||
using Saxonite.Net.Standard.Base.Bus.Reference;
|
||||
using System;
|
||||
|
||||
namespace Saxonite.Net.Standard.Dbas.Bus.Reference
|
||||
{
|
||||
//=======================================================================
|
||||
public class SaxGolfUsgaFacility_Dbas : SaxGolfUsgaFacility
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private ISacsDatabase database;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SaxGolfUsgaFacility_Dbas(ISacsDatabase database, SysId id, SysId provinceId, UInt16 flags) :
|
||||
base(id, provinceId)
|
||||
{
|
||||
this.database = database;
|
||||
Flags = flags;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Associated data.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
using Sarand.Net.Standard.Base.Bus;
|
||||
using Sarand.Net.Standard.Base.Dbas;
|
||||
using Saxonite.Net.Standard.Base.Bus.Reference;
|
||||
using System;
|
||||
|
||||
namespace Saxonite.Net.Standard.Dbas.Bus.Reference
|
||||
{
|
||||
//=======================================================================
|
||||
public class SaxGolfUsgaMarker_Dbas : SaxGolfUsgaMarker
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private ISacsDatabase database;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SaxGolfUsgaMarker_Dbas(ISacsDatabase database, SysId id, SysId courseId, UInt16 flags) :
|
||||
base(id, courseId)
|
||||
{
|
||||
this.database = database;
|
||||
Flags = flags;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Associated data.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
using Sarand.Net.Standard.Base.Bus;
|
||||
using Sarand.Net.Standard.Base.Dbas;
|
||||
using Saxonite.Net.Standard.Base.Bus.Reference;
|
||||
using System;
|
||||
|
||||
namespace Saxonite.Net.Standard.Dbas.Bus.Reference
|
||||
{
|
||||
//=======================================================================
|
||||
public class SaxGolfUsgaProvince_Dbas : SaxGolfUsgaProvince
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private ISacsDatabase database;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SaxGolfUsgaProvince_Dbas(ISacsDatabase database, SysId id, SysId countryId, UInt16 flags) :
|
||||
base(id, countryId)
|
||||
{
|
||||
this.database = database;
|
||||
Flags = flags;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Associated data.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
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 SaxActivityFeedback_Dbas : SaxActivityFeedback
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private ISacsDatabase database;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SaxActivityFeedback_Dbas(ISacsDatabase database, ItemId itemId) :
|
||||
base(itemId)
|
||||
{
|
||||
this.database = database;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// 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 SaxActivityIndex_Dbas : SaxActivityIndex
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private ISacsDatabase database;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SaxActivityIndex_Dbas(ISacsDatabase database, ItemId itemId, SysId sportId, SysId regionId, UInt16 flags) :
|
||||
base(itemId, sportId, regionId)
|
||||
{
|
||||
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 SaxArticle_Dbas : SaxArticle
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private ISacsDatabase database;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SaxArticle_Dbas(ISacsDatabase database, SysId id, SysId userAccountIdAuthor, SysId organisationId, UInt16 flags) :
|
||||
base(id, userAccountIdAuthor, 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 SaxItemAddress_Dbas : SaxItemAddress
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private ISacsDatabase database;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SaxItemAddress_Dbas(ISacsDatabase database, SysId id, ItemId itemId, Sax.AddressType addressType, UInt16 flags) :
|
||||
base(id, itemId, addressType)
|
||||
{
|
||||
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 SaxItemAssociation_Dbas : SaxItemAssociation
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private ISacsDatabase database;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SaxItemAssociation_Dbas(ISacsDatabase database, SysId id, ItemId itemIdFrom, ItemId itemIdTo, Sax.AssociationType associationType, UInt16 flags) :
|
||||
base(id, itemIdFrom, itemIdTo, associationType)
|
||||
{
|
||||
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 SaxItemImage_Dbas : SaxItemImage
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private ISacsDatabase database;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SaxItemImage_Dbas (ISacsDatabase database, SysId id, ItemId itemId, Sax.ImageType ImageType, UInt16 flags) :
|
||||
base(id, itemId, ImageType)
|
||||
{
|
||||
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 SaxItemSport_Dbas : SaxItemProcess
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// 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 SaxOrganisationEvent_Dbas : SaxOrganisationEvent
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private ISacsDatabase database;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SaxOrganisationEvent_Dbas(ISacsDatabase database, SysId id, SysId organisationId, UInt16 flags) :
|
||||
base(id, organisationId)
|
||||
{
|
||||
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 SaxOrganisationOpportunity_Dbas : SaxOrganisationOpportunity
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private ISacsDatabase database;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SaxOrganisationOpportunity_Dbas(ISacsDatabase database, SysId id, SysId organisationId, UInt16 flags) :
|
||||
base(id, organisationId)
|
||||
{
|
||||
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,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 SaxUserActivity_Dbas : SaxUserActivity
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private ISacsDatabase database;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SaxUserActivity_Dbas(ISacsDatabase database, SysId id, SysId userAccountId, ItemId itemId, UInt16 flags) :
|
||||
base(id, userAccountId, itemId)
|
||||
{
|
||||
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 SaxUserConfig_Dbas : SaxUserConfig
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private ISacsDatabase database;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SaxUserConfig_Dbas(ISacsDatabase database, SysId id, SysId userAccountId, Sax.UserConfigType configType, UInt16 flags) :
|
||||
base(id, userAccountId, configType)
|
||||
{
|
||||
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 SaxUserEligibility_Dbas : SaxUserEligibility
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private ISacsDatabase database;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SaxUserEligibility_Dbas (ISacsDatabase database, SysId id, SysId userAccountId, SysId regionId, Sax.EligibilityType eligibilityType, UInt16 flags) :
|
||||
base(id, userAccountId, regionId, eligibilityType)
|
||||
{
|
||||
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.App;
|
||||
using Saxonite.Net.Standard.Base.Bus;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Saxonite.Net.Standard.Dbas.Bus
|
||||
{
|
||||
//=======================================================================
|
||||
public class SaxUserOnline_Dbas : SaxUserOnline
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private ISacsDatabase database;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SaxUserOnline_Dbas (ISacsDatabase database, SysId userAccountId) :
|
||||
base(userAccountId)
|
||||
{
|
||||
this.database = database;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// 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,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 SaxUserSession_Dbas : SaxUserSession
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private ISacsDatabase database;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SaxUserSession_Dbas(ISacsDatabase database, SysId userAccountId, UInt16 flags) :
|
||||
base(userAccountId)
|
||||
{
|
||||
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 SaxUserSportExperience_Dbas : SaxUserSportExperience
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private ISacsDatabase database;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SaxUserSportExperience_Dbas(ISacsDatabase database, SysId id, SysId userUserId, UInt16 flags) :
|
||||
base(id, userUserId)
|
||||
{
|
||||
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 SaxUserSport_Dbas : SaxUserSport
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private ISacsDatabase database;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SaxUserSport_Dbas(ISacsDatabase database, SysId id, SysId userAccountId, SysId sportId, UInt16 flags) :
|
||||
base(id, userAccountId, sportId)
|
||||
{
|
||||
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.Bus;
|
||||
using Saxonite.Net.Standard.Base.Bus.Support;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Saxonite.Net.Standard.Dbas.Bus.Support
|
||||
{
|
||||
//=======================================================================
|
||||
public class SaxUserReport_Dbas : SaxUserReport
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private ISacsDatabase database;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SaxUserReport_Dbas(ISacsDatabase database, SysId id, SysId userAccountId, UInt16 flags) :
|
||||
base(id, userAccountId)
|
||||
{
|
||||
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,187 @@
|
||||
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 Thu 22-Aug-2024 18:00:16
|
||||
//---------------------------------------------------------------------------
|
||||
namespace Saxonite.Net.Standard.Dbas.Internal.Core
|
||||
{
|
||||
internal class ActivityFeedback_Db : SaxDbDataItem
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Column definitions.
|
||||
public class ColumnsData
|
||||
{
|
||||
public ColumnDataInt16 _ItemType { get; } = new ColumnDataInt16("ItemType");
|
||||
public ColumnDataInt64 _ItemId { get; } = new ColumnDataInt64("ItemId");
|
||||
public ColumnDataInt64 _ViewCount { get; } = new ColumnDataInt64("ViewCount");
|
||||
public ColumnDataInt64 _FeedbackCount { get; } = new ColumnDataInt64("FeedbackCount");
|
||||
public ColumnDataInt64 _FeedbackTotal { get; } = new ColumnDataInt64("FeedbackTotal");
|
||||
public ColumnDataDecimal _FeedbackAverage { get; } = new ColumnDataDecimal("FeedbackAverage");
|
||||
public ColumnDataDateTime _CreateOn { get; } = new ColumnDataDateTime("CreateOn");
|
||||
public ColumnDataDateTime _UpdateOn { get; } = new ColumnDataDateTime("UpdateOn");
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
protected static List<String> fields { get; } = new List<String>()
|
||||
{
|
||||
"ItemType",
|
||||
"ItemId",
|
||||
"ViewCount",
|
||||
"FeedbackCount",
|
||||
"FeedbackTotal",
|
||||
"FeedbackAverage",
|
||||
"CreateOn",
|
||||
"UpdateOn",
|
||||
};
|
||||
protected static List<String> fieldsId { get; } = new List<String>()
|
||||
{
|
||||
};
|
||||
protected static List<String> fieldsPrimary { get; } = new List<String>()
|
||||
{
|
||||
"ItemType",
|
||||
"ItemId",
|
||||
};
|
||||
protected static List<String> fieldsNullable { get; } = new List<String>()
|
||||
{
|
||||
};
|
||||
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
|
||||
{
|
||||
"CreateOn",
|
||||
"CreateBy",
|
||||
"CreateHost",
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
internal ActivityFeedback_Db (IDatabaseInfo dbInfo) : base(dbInfo)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public override String SchemaName { get; } = "dbo";
|
||||
public override String TableName { get; } = "ActivityFeedback";
|
||||
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 Int16 _ItemType { get { return Cols._ItemType.Value; } set { Cols._ItemType.Value = value; } }
|
||||
public Int64 _ItemId { get { return Cols._ItemId.Value; } set { Cols._ItemId.Value = value; } }
|
||||
public Int64 _ViewCount { get { return Cols._ViewCount.Value; } set { Cols._ViewCount.Value = value; } }
|
||||
public Int64 _FeedbackCount { get { return Cols._FeedbackCount.Value; } set { Cols._FeedbackCount.Value = value; } }
|
||||
public Int64 _FeedbackTotal { get { return Cols._FeedbackTotal.Value; } set { Cols._FeedbackTotal.Value = value; } }
|
||||
public Decimal _FeedbackAverage { get { return Cols._FeedbackAverage.Value; } set { Cols._FeedbackAverage.Value = value; } }
|
||||
public DateTime _CreateOn { get { return Cols._CreateOn.Value; } set { Cols._CreateOn.Value = value; } }
|
||||
public DateTime _UpdateOn { get { return Cols._UpdateOn.Value; } set { Cols._UpdateOn.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)
|
||||
{
|
||||
_ItemType = GetFieldInt16(dbDataReader, "ItemType", _ItemType);
|
||||
_ItemId = GetFieldInt64(dbDataReader, "ItemId", _ItemId);
|
||||
_ViewCount = GetFieldInt64(dbDataReader, "ViewCount", _ViewCount);
|
||||
_FeedbackCount = GetFieldInt64(dbDataReader, "FeedbackCount", _FeedbackCount);
|
||||
_FeedbackTotal = GetFieldInt64(dbDataReader, "FeedbackTotal", _FeedbackTotal);
|
||||
_FeedbackAverage = GetFieldDecimal(dbDataReader, "FeedbackAverage", _FeedbackAverage);
|
||||
_CreateOn = GetFieldDateTime(dbDataReader, "CreateOn", _CreateOn);
|
||||
_UpdateOn = GetFieldDateTime(dbDataReader, "UpdateOn", _UpdateOn);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert command.
|
||||
public override bool ExecuteInsertCommand (DbCommand dbCommand)
|
||||
{
|
||||
List<String> columnNames = ExistingColumnNamesNonId;
|
||||
// Construct query.
|
||||
String query =
|
||||
"INSERT INTO " + TableNameFmt + " " +
|
||||
"("+columnNames.Concat(",","[","]")+") ";
|
||||
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("ViewCount")) AddCommandParameter(dbCommand, "@ViewCount", _ViewCount);
|
||||
if (columnNames.ContainsCI("FeedbackCount")) AddCommandParameter(dbCommand, "@FeedbackCount", _FeedbackCount);
|
||||
if (columnNames.ContainsCI("FeedbackTotal")) AddCommandParameter(dbCommand, "@FeedbackTotal", _FeedbackTotal);
|
||||
if (columnNames.ContainsCI("FeedbackAverage")) AddCommandParameter(dbCommand, "@FeedbackAverage", _FeedbackAverage);
|
||||
if (columnNames.ContainsCI("CreateOn")) AddCommandParameter(dbCommand, "@CreateOn", _CreateOn);
|
||||
if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn);
|
||||
// Execute insert command.
|
||||
bool commandSuccess = false;
|
||||
int executeNonQuery = dbCommand.ExecuteNonQuery();
|
||||
if (executeNonQuery == 1)
|
||||
{
|
||||
commandSuccess = true;
|
||||
}
|
||||
return commandSuccess;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update command.
|
||||
public override bool ExecuteUpdateCommand (DbCommand dbCommand)
|
||||
{
|
||||
// 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 ItemType=@ItemType AND ItemId=@ItemId;";
|
||||
}
|
||||
else
|
||||
{
|
||||
query += columnNames.Concat(", ", "", "=?") + " ";
|
||||
query += "WHERE ItemType=? AND ItemId=?;";
|
||||
}
|
||||
dbCommand.CommandText = query;
|
||||
Log(GetType().Name + ".ExecuteUpdateCommand", dbCommand.CommandText);
|
||||
// Populate parameters.
|
||||
dbCommand.Parameters.Clear();
|
||||
if (columnNames.ContainsCI("ViewCount")) AddCommandParameter(dbCommand, "@ViewCount", _ViewCount);
|
||||
if (columnNames.ContainsCI("FeedbackCount")) AddCommandParameter(dbCommand, "@FeedbackCount", _FeedbackCount);
|
||||
if (columnNames.ContainsCI("FeedbackTotal")) AddCommandParameter(dbCommand, "@FeedbackTotal", _FeedbackTotal);
|
||||
if (columnNames.ContainsCI("FeedbackAverage")) AddCommandParameter(dbCommand, "@FeedbackAverage", _FeedbackAverage);
|
||||
if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn);
|
||||
AddCommandParameter(dbCommand, "@ItemType", _ItemType);
|
||||
AddCommandParameter(dbCommand, "@ItemId", _ItemId);
|
||||
int executeNonQueryResult = dbCommand.ExecuteNonQuery();
|
||||
return (executeNonQueryResult == 1);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,244 @@
|
||||
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 Thu 22-Aug-2024 18:00:16
|
||||
//---------------------------------------------------------------------------
|
||||
namespace Saxonite.Net.Standard.Dbas.Internal.Core
|
||||
{
|
||||
internal class ActivityIndex_Db : SaxDbDataItem
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Column definitions.
|
||||
public class ColumnsData
|
||||
{
|
||||
public ColumnDataInt16 _ItemType { get; } = new ColumnDataInt16("ItemType");
|
||||
public ColumnDataInt64 _ItemId { get; } = new ColumnDataInt64("ItemId");
|
||||
public ColumnDataInt32 _SportId { get; } = new ColumnDataInt32("SportId");
|
||||
public ColumnDataInt32 _RegionId { get; } = new ColumnDataInt32("RegionId");
|
||||
public ColumnDataInt32Nullable _UserAccountIdOwner { get; } = new ColumnDataInt32Nullable("UserAccountIdOwner");
|
||||
public ColumnDataInt32Nullable _OrganisationIdOwner { get; } = new ColumnDataInt32Nullable("OrganisationIdOwner");
|
||||
public ColumnDataDateTime _EffectiveOn { get; } = new ColumnDataDateTime("EffectiveOn");
|
||||
public ColumnDataDateTimeNullable _ExpiresOn { get; } = new ColumnDataDateTimeNullable("ExpiresOn");
|
||||
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>()
|
||||
{
|
||||
"ItemType",
|
||||
"ItemId",
|
||||
"SportId",
|
||||
"RegionId",
|
||||
"UserAccountIdOwner",
|
||||
"OrganisationIdOwner",
|
||||
"EffectiveOn",
|
||||
"ExpiresOn",
|
||||
"Notes",
|
||||
"Flags",
|
||||
"Status",
|
||||
"CreateOn",
|
||||
"CreateBy",
|
||||
"CreateHost",
|
||||
"UpdateOn",
|
||||
"UpdateBy",
|
||||
"UpdateHost",
|
||||
};
|
||||
protected static List<String> fieldsId { get; } = new List<String>()
|
||||
{
|
||||
};
|
||||
protected static List<String> fieldsPrimary { get; } = new List<String>()
|
||||
{
|
||||
"ItemType",
|
||||
"ItemId",
|
||||
"SportId",
|
||||
"RegionId",
|
||||
};
|
||||
protected static List<String> fieldsNullable { get; } = new List<String>()
|
||||
{
|
||||
"UserAccountIdOwner",
|
||||
"OrganisationIdOwner",
|
||||
"ExpiresOn",
|
||||
};
|
||||
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
|
||||
{
|
||||
"CreateOn",
|
||||
"CreateBy",
|
||||
"CreateHost",
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
internal ActivityIndex_Db (IDatabaseInfo dbInfo) : base(dbInfo)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public override String SchemaName { get; } = "dbo";
|
||||
public override String TableName { get; } = "ActivityIndex";
|
||||
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 Int16 _ItemType { get { return Cols._ItemType.Value; } set { Cols._ItemType.Value = value; } }
|
||||
public Int64 _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 Int32 _RegionId { get { return Cols._RegionId.Value; } set { Cols._RegionId.Value = value; } }
|
||||
public Int32? _UserAccountIdOwner { get { return Cols._UserAccountIdOwner.Value; } set { Cols._UserAccountIdOwner.Value = value; } }
|
||||
public Int32? _OrganisationIdOwner { get { return Cols._OrganisationIdOwner.Value; } set { Cols._OrganisationIdOwner.Value = value; } }
|
||||
public DateTime _EffectiveOn { get { return Cols._EffectiveOn.Value; } set { Cols._EffectiveOn.Value = value; } }
|
||||
public DateTime? _ExpiresOn { get { return Cols._ExpiresOn.Value; } set { Cols._ExpiresOn.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)
|
||||
{
|
||||
_ItemType = GetFieldInt16(dbDataReader, "ItemType", _ItemType);
|
||||
_ItemId = GetFieldInt64(dbDataReader, "ItemId", _ItemId);
|
||||
_SportId = GetFieldInt32(dbDataReader, "SportId", _SportId);
|
||||
_RegionId = GetFieldInt32(dbDataReader, "RegionId", _RegionId);
|
||||
_UserAccountIdOwner = GetFieldInt32Nullable(dbDataReader, "UserAccountIdOwner", _UserAccountIdOwner);
|
||||
_OrganisationIdOwner = GetFieldInt32Nullable(dbDataReader, "OrganisationIdOwner", _OrganisationIdOwner);
|
||||
_EffectiveOn = GetFieldDateTime(dbDataReader, "EffectiveOn", _EffectiveOn);
|
||||
_ExpiresOn = GetFieldDateTimeNullable(dbDataReader, "ExpiresOn", _ExpiresOn);
|
||||
_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;
|
||||
// Construct query.
|
||||
String query =
|
||||
"INSERT INTO " + TableNameFmt + " " +
|
||||
"("+columnNames.Concat(",","[","]")+") ";
|
||||
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("RegionId")) AddCommandParameter(dbCommand, "@RegionId", _RegionId);
|
||||
if (columnNames.ContainsCI("UserAccountIdOwner")) AddCommandParameter(dbCommand, "@UserAccountIdOwner", _UserAccountIdOwner);
|
||||
if (columnNames.ContainsCI("OrganisationIdOwner")) AddCommandParameter(dbCommand, "@OrganisationIdOwner", _OrganisationIdOwner);
|
||||
if (columnNames.ContainsCI("EffectiveOn")) AddCommandParameter(dbCommand, "@EffectiveOn", _EffectiveOn);
|
||||
if (columnNames.ContainsCI("ExpiresOn")) AddCommandParameter(dbCommand, "@ExpiresOn", _ExpiresOn);
|
||||
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)
|
||||
{
|
||||
commandSuccess = true;
|
||||
}
|
||||
return commandSuccess;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update command.
|
||||
public override bool ExecuteUpdateCommand (DbCommand dbCommand)
|
||||
{
|
||||
// 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 ItemType=@ItemType AND ItemId=@ItemId AND SportId=@SportId AND RegionId=@RegionId;";
|
||||
}
|
||||
else
|
||||
{
|
||||
query += columnNames.Concat(", ", "", "=?") + " ";
|
||||
query += "WHERE ItemType=? AND ItemId=? AND SportId=? AND RegionId=?;";
|
||||
}
|
||||
dbCommand.CommandText = query;
|
||||
Log(GetType().Name + ".ExecuteUpdateCommand", dbCommand.CommandText);
|
||||
// Populate parameters.
|
||||
dbCommand.Parameters.Clear();
|
||||
if (columnNames.ContainsCI("UserAccountIdOwner")) AddCommandParameter(dbCommand, "@UserAccountIdOwner", _UserAccountIdOwner);
|
||||
if (columnNames.ContainsCI("OrganisationIdOwner")) AddCommandParameter(dbCommand, "@OrganisationIdOwner", _OrganisationIdOwner);
|
||||
if (columnNames.ContainsCI("EffectiveOn")) AddCommandParameter(dbCommand, "@EffectiveOn", _EffectiveOn);
|
||||
if (columnNames.ContainsCI("ExpiresOn")) AddCommandParameter(dbCommand, "@ExpiresOn", _ExpiresOn);
|
||||
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, "@ItemType", _ItemType);
|
||||
AddCommandParameter(dbCommand, "@ItemId", _ItemId);
|
||||
AddCommandParameter(dbCommand, "@SportId", _SportId);
|
||||
AddCommandParameter(dbCommand, "@RegionId", _RegionId);
|
||||
int executeNonQueryResult = dbCommand.ExecuteNonQuery();
|
||||
return (executeNonQueryResult == 1);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,259 @@
|
||||
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 Thu 22-Aug-2024 18:00:16
|
||||
//---------------------------------------------------------------------------
|
||||
namespace Saxonite.Net.Standard.Dbas.Internal.Core
|
||||
{
|
||||
internal class Article_Db : SaxDbDataItem
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Column definitions.
|
||||
public class ColumnsData
|
||||
{
|
||||
public ColumnDataInt32 _Id { get; } = new ColumnDataInt32("Id", true);
|
||||
public ColumnDataInt32 _UserAccountIdAuthor { get; } = new ColumnDataInt32("UserAccountIdAuthor");
|
||||
public ColumnDataInt32 _OrganisationId { get; } = new ColumnDataInt32("OrganisationId");
|
||||
public ColumnDataInt32 _SportIdPrimary { get; } = new ColumnDataInt32("SportIdPrimary");
|
||||
public ColumnDataInt32 _RegionIdPrimary { get; } = new ColumnDataInt32("RegionIdPrimary");
|
||||
public ColumnDataString _Headline { get; } = new ColumnDataString("Headline");
|
||||
public ColumnDataString _Summary { get; } = new ColumnDataString("Summary");
|
||||
public ColumnDataInt32Nullable _ItemImageIdThumbnail { get; } = new ColumnDataInt32Nullable("ItemImageIdThumbnail");
|
||||
public ColumnDataString _BodyData { get; } = new ColumnDataString("BodyData");
|
||||
public ColumnDataDateTimeNullable _PublishedAt { get; } = new ColumnDataDateTimeNullable("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",
|
||||
"UserAccountIdAuthor",
|
||||
"OrganisationId",
|
||||
"SportIdPrimary",
|
||||
"RegionIdPrimary",
|
||||
"Headline",
|
||||
"Summary",
|
||||
"ItemImageIdThumbnail",
|
||||
"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> fieldsNullable { get; } = new List<String>()
|
||||
{
|
||||
"ItemImageIdThumbnail",
|
||||
"PublishedAt",
|
||||
};
|
||||
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
|
||||
{
|
||||
"CreateOn",
|
||||
"CreateBy",
|
||||
"CreateHost",
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
internal Article_Db (IDatabaseInfo dbInfo) : base(dbInfo)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public override String SchemaName { get; } = "dbo";
|
||||
public override String TableName { get; } = "Article";
|
||||
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 _UserAccountIdAuthor { get { return Cols._UserAccountIdAuthor.Value; } set { Cols._UserAccountIdAuthor.Value = value; } }
|
||||
public Int32 _OrganisationId { get { return Cols._OrganisationId.Value; } set { Cols._OrganisationId.Value = value; } }
|
||||
public Int32 _SportIdPrimary { get { return Cols._SportIdPrimary.Value; } set { Cols._SportIdPrimary.Value = value; } }
|
||||
public Int32 _RegionIdPrimary { get { return Cols._RegionIdPrimary.Value; } set { Cols._RegionIdPrimary.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 Int32? _ItemImageIdThumbnail { get { return Cols._ItemImageIdThumbnail.Value; } set { Cols._ItemImageIdThumbnail.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);
|
||||
_UserAccountIdAuthor = GetFieldInt32(dbDataReader, "UserAccountIdAuthor", _UserAccountIdAuthor);
|
||||
_OrganisationId = GetFieldInt32(dbDataReader, "OrganisationId", _OrganisationId);
|
||||
_SportIdPrimary = GetFieldInt32(dbDataReader, "SportIdPrimary", _SportIdPrimary);
|
||||
_RegionIdPrimary = GetFieldInt32(dbDataReader, "RegionIdPrimary", _RegionIdPrimary);
|
||||
_Headline = GetFieldString(dbDataReader, "Headline", _Headline);
|
||||
_Summary = GetFieldString(dbDataReader, "Summary", _Summary);
|
||||
_ItemImageIdThumbnail = GetFieldInt32Nullable(dbDataReader, "ItemImageIdThumbnail", _ItemImageIdThumbnail);
|
||||
_BodyData = GetFieldString(dbDataReader, "BodyData", _BodyData);
|
||||
_PublishedAt = GetFieldDateTimeNullable(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("UserAccountIdAuthor")) AddCommandParameter(dbCommand, "@UserAccountIdAuthor", _UserAccountIdAuthor);
|
||||
if (columnNames.ContainsCI("OrganisationId")) AddCommandParameter(dbCommand, "@OrganisationId", _OrganisationId);
|
||||
if (columnNames.ContainsCI("SportIdPrimary")) AddCommandParameter(dbCommand, "@SportIdPrimary", _SportIdPrimary);
|
||||
if (columnNames.ContainsCI("RegionIdPrimary")) AddCommandParameter(dbCommand, "@RegionIdPrimary", _RegionIdPrimary);
|
||||
if (columnNames.ContainsCI("Headline")) AddCommandParameter(dbCommand, "@Headline", _Headline);
|
||||
if (columnNames.ContainsCI("Summary")) AddCommandParameter(dbCommand, "@Summary", _Summary);
|
||||
if (columnNames.ContainsCI("ItemImageIdThumbnail")) AddCommandParameter(dbCommand, "@ItemImageIdThumbnail", _ItemImageIdThumbnail);
|
||||
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("UserAccountIdAuthor")) AddCommandParameter(dbCommand, "@UserAccountIdAuthor", _UserAccountIdAuthor);
|
||||
if (columnNames.ContainsCI("OrganisationId")) AddCommandParameter(dbCommand, "@OrganisationId", _OrganisationId);
|
||||
if (columnNames.ContainsCI("SportIdPrimary")) AddCommandParameter(dbCommand, "@SportIdPrimary", _SportIdPrimary);
|
||||
if (columnNames.ContainsCI("RegionIdPrimary")) AddCommandParameter(dbCommand, "@RegionIdPrimary", _RegionIdPrimary);
|
||||
if (columnNames.ContainsCI("Headline")) AddCommandParameter(dbCommand, "@Headline", _Headline);
|
||||
if (columnNames.ContainsCI("Summary")) AddCommandParameter(dbCommand, "@Summary", _Summary);
|
||||
if (columnNames.ContainsCI("ItemImageIdThumbnail")) AddCommandParameter(dbCommand, "@ItemImageIdThumbnail", _ItemImageIdThumbnail);
|
||||
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,339 @@
|
||||
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 Thu 22-Aug-2024 18:00:16
|
||||
//---------------------------------------------------------------------------
|
||||
namespace Saxonite.Net.Standard.Dbas.Internal.Core
|
||||
{
|
||||
internal class ItemAddress_Db : SaxDbDataItem
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Column definitions.
|
||||
public class ColumnsData
|
||||
{
|
||||
public ColumnDataInt64 _Id { get; } = new ColumnDataInt64("Id", true);
|
||||
public ColumnDataInt16 _ItemType { get; } = new ColumnDataInt16("ItemType");
|
||||
public ColumnDataInt32 _ItemId { get; } = new ColumnDataInt32("ItemId");
|
||||
public ColumnDataInt16 _AddressType { get; } = new ColumnDataInt16("AddressType");
|
||||
public ColumnDataString _Caption { get; } = new ColumnDataString("Caption");
|
||||
public ColumnDataString _Line1 { get; } = new ColumnDataString("Line1");
|
||||
public ColumnDataString _Line2 { get; } = new ColumnDataString("Line2");
|
||||
public ColumnDataString _Line3 { get; } = new ColumnDataString("Line3");
|
||||
public ColumnDataString _Town { get; } = new ColumnDataString("Town");
|
||||
public ColumnDataString _Province { get; } = new ColumnDataString("Province");
|
||||
public ColumnDataInt32 _RegionIdProvince { get; } = new ColumnDataInt32("RegionIdProvince");
|
||||
public ColumnDataString _Country { get; } = new ColumnDataString("Country");
|
||||
public ColumnDataInt32 _RegionIdCountry { get; } = new ColumnDataInt32("RegionIdCountry");
|
||||
public ColumnDataString _PostalCode { get; } = new ColumnDataString("PostalCode");
|
||||
public ColumnDataString _PhoneMain { get; } = new ColumnDataString("PhoneMain");
|
||||
public ColumnDataString _LocationSource { get; } = new ColumnDataString("LocationSource");
|
||||
public ColumnDataDateTimeNullable _LocationStoredAt { get; } = new ColumnDataDateTimeNullable("LocationStoredAt");
|
||||
public ColumnDataBoolean _LocationUpdateRequired { get; } = new ColumnDataBoolean("LocationUpdateRequired");
|
||||
public ColumnDataString _LocationData { get; } = new ColumnDataString("LocationData");
|
||||
public ColumnDataString _LocationFormattedAddress { get; } = new ColumnDataString("LocationFormattedAddress");
|
||||
public ColumnDataDecimalNullable _LocationLatitude { get; } = new ColumnDataDecimalNullable("LocationLatitude");
|
||||
public ColumnDataDecimalNullable _LocationLongitude { get; } = new ColumnDataDecimalNullable("LocationLongitude");
|
||||
public ColumnDataDecimalNullable _LocationAltitude { get; } = new ColumnDataDecimalNullable("LocationAltitude");
|
||||
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",
|
||||
"AddressType",
|
||||
"Caption",
|
||||
"Line1",
|
||||
"Line2",
|
||||
"Line3",
|
||||
"Town",
|
||||
"Province",
|
||||
"RegionIdProvince",
|
||||
"Country",
|
||||
"RegionIdCountry",
|
||||
"PostalCode",
|
||||
"PhoneMain",
|
||||
"LocationSource",
|
||||
"LocationStoredAt",
|
||||
"LocationUpdateRequired",
|
||||
"LocationData",
|
||||
"LocationFormattedAddress",
|
||||
"LocationLatitude",
|
||||
"LocationLongitude",
|
||||
"LocationAltitude",
|
||||
"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> fieldsNullable { get; } = new List<String>()
|
||||
{
|
||||
"LocationStoredAt",
|
||||
"LocationLatitude",
|
||||
"LocationLongitude",
|
||||
"LocationAltitude",
|
||||
};
|
||||
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
|
||||
{
|
||||
"CreateOn",
|
||||
"CreateBy",
|
||||
"CreateHost",
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
internal ItemAddress_Db (IDatabaseInfo dbInfo) : base(dbInfo)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public override String SchemaName { get; } = "dbo";
|
||||
public override String TableName { get; } = "ItemAddress";
|
||||
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 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 Int16 _AddressType { get { return Cols._AddressType.Value; } set { Cols._AddressType.Value = value; } }
|
||||
public String _Caption { get { return Cols._Caption.Value; } set { Cols._Caption.Value = value; } }
|
||||
public String _Line1 { get { return Cols._Line1.Value; } set { Cols._Line1.Value = value; } }
|
||||
public String _Line2 { get { return Cols._Line2.Value; } set { Cols._Line2.Value = value; } }
|
||||
public String _Line3 { get { return Cols._Line3.Value; } set { Cols._Line3.Value = value; } }
|
||||
public String _Town { get { return Cols._Town.Value; } set { Cols._Town.Value = value; } }
|
||||
public String _Province { get { return Cols._Province.Value; } set { Cols._Province.Value = value; } }
|
||||
public Int32 _RegionIdProvince { get { return Cols._RegionIdProvince.Value; } set { Cols._RegionIdProvince.Value = value; } }
|
||||
public String _Country { get { return Cols._Country.Value; } set { Cols._Country.Value = value; } }
|
||||
public Int32 _RegionIdCountry { get { return Cols._RegionIdCountry.Value; } set { Cols._RegionIdCountry.Value = value; } }
|
||||
public String _PostalCode { get { return Cols._PostalCode.Value; } set { Cols._PostalCode.Value = value; } }
|
||||
public String _PhoneMain { get { return Cols._PhoneMain.Value; } set { Cols._PhoneMain.Value = value; } }
|
||||
public String _LocationSource { get { return Cols._LocationSource.Value; } set { Cols._LocationSource.Value = value; } }
|
||||
public DateTime? _LocationStoredAt { get { return Cols._LocationStoredAt.Value; } set { Cols._LocationStoredAt.Value = value; } }
|
||||
public Boolean _LocationUpdateRequired { get { return Cols._LocationUpdateRequired.Value; } set { Cols._LocationUpdateRequired.Value = value; } }
|
||||
public String _LocationData { get { return Cols._LocationData.Value; } set { Cols._LocationData.Value = value; } }
|
||||
public String _LocationFormattedAddress { get { return Cols._LocationFormattedAddress.Value; } set { Cols._LocationFormattedAddress.Value = value; } }
|
||||
public Decimal? _LocationLatitude { get { return Cols._LocationLatitude.Value; } set { Cols._LocationLatitude.Value = value; } }
|
||||
public Decimal? _LocationLongitude { get { return Cols._LocationLongitude.Value; } set { Cols._LocationLongitude.Value = value; } }
|
||||
public Decimal? _LocationAltitude { get { return Cols._LocationAltitude.Value; } set { Cols._LocationAltitude.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);
|
||||
_ItemType = GetFieldInt16(dbDataReader, "ItemType", _ItemType);
|
||||
_ItemId = GetFieldInt32(dbDataReader, "ItemId", _ItemId);
|
||||
_AddressType = GetFieldInt16(dbDataReader, "AddressType", _AddressType);
|
||||
_Caption = GetFieldString(dbDataReader, "Caption", _Caption);
|
||||
_Line1 = GetFieldString(dbDataReader, "Line1", _Line1);
|
||||
_Line2 = GetFieldString(dbDataReader, "Line2", _Line2);
|
||||
_Line3 = GetFieldString(dbDataReader, "Line3", _Line3);
|
||||
_Town = GetFieldString(dbDataReader, "Town", _Town);
|
||||
_Province = GetFieldString(dbDataReader, "Province", _Province);
|
||||
_RegionIdProvince = GetFieldInt32(dbDataReader, "RegionIdProvince", _RegionIdProvince);
|
||||
_Country = GetFieldString(dbDataReader, "Country", _Country);
|
||||
_RegionIdCountry = GetFieldInt32(dbDataReader, "RegionIdCountry", _RegionIdCountry);
|
||||
_PostalCode = GetFieldString(dbDataReader, "PostalCode", _PostalCode);
|
||||
_PhoneMain = GetFieldString(dbDataReader, "PhoneMain", _PhoneMain);
|
||||
_LocationSource = GetFieldString(dbDataReader, "LocationSource", _LocationSource);
|
||||
_LocationStoredAt = GetFieldDateTimeNullable(dbDataReader, "LocationStoredAt", _LocationStoredAt);
|
||||
_LocationUpdateRequired = GetFieldBoolean(dbDataReader, "LocationUpdateRequired", _LocationUpdateRequired);
|
||||
_LocationData = GetFieldString(dbDataReader, "LocationData", _LocationData);
|
||||
_LocationFormattedAddress = GetFieldString(dbDataReader, "LocationFormattedAddress", _LocationFormattedAddress);
|
||||
_LocationLatitude = GetFieldDecimalNullable(dbDataReader, "LocationLatitude", _LocationLatitude);
|
||||
_LocationLongitude = GetFieldDecimalNullable(dbDataReader, "LocationLongitude", _LocationLongitude);
|
||||
_LocationAltitude = GetFieldDecimalNullable(dbDataReader, "LocationAltitude", _LocationAltitude);
|
||||
_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("AddressType")) AddCommandParameter(dbCommand, "@AddressType", _AddressType);
|
||||
if (columnNames.ContainsCI("Caption")) AddCommandParameter(dbCommand, "@Caption", _Caption);
|
||||
if (columnNames.ContainsCI("Line1")) AddCommandParameter(dbCommand, "@Line1", _Line1);
|
||||
if (columnNames.ContainsCI("Line2")) AddCommandParameter(dbCommand, "@Line2", _Line2);
|
||||
if (columnNames.ContainsCI("Line3")) AddCommandParameter(dbCommand, "@Line3", _Line3);
|
||||
if (columnNames.ContainsCI("Town")) AddCommandParameter(dbCommand, "@Town", _Town);
|
||||
if (columnNames.ContainsCI("Province")) AddCommandParameter(dbCommand, "@Province", _Province);
|
||||
if (columnNames.ContainsCI("RegionIdProvince")) AddCommandParameter(dbCommand, "@RegionIdProvince", _RegionIdProvince);
|
||||
if (columnNames.ContainsCI("Country")) AddCommandParameter(dbCommand, "@Country", _Country);
|
||||
if (columnNames.ContainsCI("RegionIdCountry")) AddCommandParameter(dbCommand, "@RegionIdCountry", _RegionIdCountry);
|
||||
if (columnNames.ContainsCI("PostalCode")) AddCommandParameter(dbCommand, "@PostalCode", _PostalCode);
|
||||
if (columnNames.ContainsCI("PhoneMain")) AddCommandParameter(dbCommand, "@PhoneMain", _PhoneMain);
|
||||
if (columnNames.ContainsCI("LocationSource")) AddCommandParameter(dbCommand, "@LocationSource", _LocationSource);
|
||||
if (columnNames.ContainsCI("LocationStoredAt")) AddCommandParameter(dbCommand, "@LocationStoredAt", _LocationStoredAt);
|
||||
if (columnNames.ContainsCI("LocationUpdateRequired")) AddCommandParameter(dbCommand, "@LocationUpdateRequired", _LocationUpdateRequired);
|
||||
if (columnNames.ContainsCI("LocationData")) AddCommandParameter(dbCommand, "@LocationData", _LocationData);
|
||||
if (columnNames.ContainsCI("LocationFormattedAddress")) AddCommandParameter(dbCommand, "@LocationFormattedAddress", _LocationFormattedAddress);
|
||||
if (columnNames.ContainsCI("LocationLatitude")) AddCommandParameter(dbCommand, "@LocationLatitude", _LocationLatitude);
|
||||
if (columnNames.ContainsCI("LocationLongitude")) AddCommandParameter(dbCommand, "@LocationLongitude", _LocationLongitude);
|
||||
if (columnNames.ContainsCI("LocationAltitude")) AddCommandParameter(dbCommand, "@LocationAltitude", _LocationAltitude);
|
||||
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("ItemType")) AddCommandParameter(dbCommand, "@ItemType", _ItemType);
|
||||
if (columnNames.ContainsCI("ItemId")) AddCommandParameter(dbCommand, "@ItemId", _ItemId);
|
||||
if (columnNames.ContainsCI("AddressType")) AddCommandParameter(dbCommand, "@AddressType", _AddressType);
|
||||
if (columnNames.ContainsCI("Caption")) AddCommandParameter(dbCommand, "@Caption", _Caption);
|
||||
if (columnNames.ContainsCI("Line1")) AddCommandParameter(dbCommand, "@Line1", _Line1);
|
||||
if (columnNames.ContainsCI("Line2")) AddCommandParameter(dbCommand, "@Line2", _Line2);
|
||||
if (columnNames.ContainsCI("Line3")) AddCommandParameter(dbCommand, "@Line3", _Line3);
|
||||
if (columnNames.ContainsCI("Town")) AddCommandParameter(dbCommand, "@Town", _Town);
|
||||
if (columnNames.ContainsCI("Province")) AddCommandParameter(dbCommand, "@Province", _Province);
|
||||
if (columnNames.ContainsCI("RegionIdProvince")) AddCommandParameter(dbCommand, "@RegionIdProvince", _RegionIdProvince);
|
||||
if (columnNames.ContainsCI("Country")) AddCommandParameter(dbCommand, "@Country", _Country);
|
||||
if (columnNames.ContainsCI("RegionIdCountry")) AddCommandParameter(dbCommand, "@RegionIdCountry", _RegionIdCountry);
|
||||
if (columnNames.ContainsCI("PostalCode")) AddCommandParameter(dbCommand, "@PostalCode", _PostalCode);
|
||||
if (columnNames.ContainsCI("PhoneMain")) AddCommandParameter(dbCommand, "@PhoneMain", _PhoneMain);
|
||||
if (columnNames.ContainsCI("LocationSource")) AddCommandParameter(dbCommand, "@LocationSource", _LocationSource);
|
||||
if (columnNames.ContainsCI("LocationStoredAt")) AddCommandParameter(dbCommand, "@LocationStoredAt", _LocationStoredAt);
|
||||
if (columnNames.ContainsCI("LocationUpdateRequired")) AddCommandParameter(dbCommand, "@LocationUpdateRequired", _LocationUpdateRequired);
|
||||
if (columnNames.ContainsCI("LocationData")) AddCommandParameter(dbCommand, "@LocationData", _LocationData);
|
||||
if (columnNames.ContainsCI("LocationFormattedAddress")) AddCommandParameter(dbCommand, "@LocationFormattedAddress", _LocationFormattedAddress);
|
||||
if (columnNames.ContainsCI("LocationLatitude")) AddCommandParameter(dbCommand, "@LocationLatitude", _LocationLatitude);
|
||||
if (columnNames.ContainsCI("LocationLongitude")) AddCommandParameter(dbCommand, "@LocationLongitude", _LocationLongitude);
|
||||
if (columnNames.ContainsCI("LocationAltitude")) AddCommandParameter(dbCommand, "@LocationAltitude", _LocationAltitude);
|
||||
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,233 @@
|
||||
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 Thu 22-Aug-2024 18:00:16
|
||||
//---------------------------------------------------------------------------
|
||||
namespace Saxonite.Net.Standard.Dbas.Internal.Core
|
||||
{
|
||||
internal class ItemAssociation_Db : SaxDbDataItem
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Column definitions.
|
||||
public class ColumnsData
|
||||
{
|
||||
public ColumnDataInt64 _Id { get; } = new ColumnDataInt64("Id", true);
|
||||
public ColumnDataInt16 _ItemTypeFrom { get; } = new ColumnDataInt16("ItemTypeFrom");
|
||||
public ColumnDataInt32 _ItemIdFrom { get; } = new ColumnDataInt32("ItemIdFrom");
|
||||
public ColumnDataInt16 _ItemTypeTo { get; } = new ColumnDataInt16("ItemTypeTo");
|
||||
public ColumnDataInt32 _ItemIdTo { get; } = new ColumnDataInt32("ItemIdTo");
|
||||
public ColumnDataInt16 _AssociationType { get; } = new ColumnDataInt16("AssociationType");
|
||||
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",
|
||||
"ItemTypeFrom",
|
||||
"ItemIdFrom",
|
||||
"ItemTypeTo",
|
||||
"ItemIdTo",
|
||||
"AssociationType",
|
||||
"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> fieldsNullable { get; } = new List<String>()
|
||||
{
|
||||
};
|
||||
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
|
||||
{
|
||||
"CreateOn",
|
||||
"CreateBy",
|
||||
"CreateHost",
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
internal ItemAssociation_Db (IDatabaseInfo dbInfo) : base(dbInfo)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public override String SchemaName { get; } = "dbo";
|
||||
public override String TableName { get; } = "ItemAssociation";
|
||||
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 Int16 _ItemTypeFrom { get { return Cols._ItemTypeFrom.Value; } set { Cols._ItemTypeFrom.Value = value; } }
|
||||
public Int32 _ItemIdFrom { get { return Cols._ItemIdFrom.Value; } set { Cols._ItemIdFrom.Value = value; } }
|
||||
public Int16 _ItemTypeTo { get { return Cols._ItemTypeTo.Value; } set { Cols._ItemTypeTo.Value = value; } }
|
||||
public Int32 _ItemIdTo { get { return Cols._ItemIdTo.Value; } set { Cols._ItemIdTo.Value = value; } }
|
||||
public Int16 _AssociationType { get { return Cols._AssociationType.Value; } set { Cols._AssociationType.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);
|
||||
_ItemTypeFrom = GetFieldInt16(dbDataReader, "ItemTypeFrom", _ItemTypeFrom);
|
||||
_ItemIdFrom = GetFieldInt32(dbDataReader, "ItemIdFrom", _ItemIdFrom);
|
||||
_ItemTypeTo = GetFieldInt16(dbDataReader, "ItemTypeTo", _ItemTypeTo);
|
||||
_ItemIdTo = GetFieldInt32(dbDataReader, "ItemIdTo", _ItemIdTo);
|
||||
_AssociationType = GetFieldInt16(dbDataReader, "AssociationType", _AssociationType);
|
||||
_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("ItemTypeFrom")) AddCommandParameter(dbCommand, "@ItemTypeFrom", _ItemTypeFrom);
|
||||
if (columnNames.ContainsCI("ItemIdFrom")) AddCommandParameter(dbCommand, "@ItemIdFrom", _ItemIdFrom);
|
||||
if (columnNames.ContainsCI("ItemTypeTo")) AddCommandParameter(dbCommand, "@ItemTypeTo", _ItemTypeTo);
|
||||
if (columnNames.ContainsCI("ItemIdTo")) AddCommandParameter(dbCommand, "@ItemIdTo", _ItemIdTo);
|
||||
if (columnNames.ContainsCI("AssociationType")) AddCommandParameter(dbCommand, "@AssociationType", _AssociationType);
|
||||
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("ItemTypeFrom")) AddCommandParameter(dbCommand, "@ItemTypeFrom", _ItemTypeFrom);
|
||||
if (columnNames.ContainsCI("ItemIdFrom")) AddCommandParameter(dbCommand, "@ItemIdFrom", _ItemIdFrom);
|
||||
if (columnNames.ContainsCI("ItemTypeTo")) AddCommandParameter(dbCommand, "@ItemTypeTo", _ItemTypeTo);
|
||||
if (columnNames.ContainsCI("ItemIdTo")) AddCommandParameter(dbCommand, "@ItemIdTo", _ItemIdTo);
|
||||
if (columnNames.ContainsCI("AssociationType")) AddCommandParameter(dbCommand, "@AssociationType", _AssociationType);
|
||||
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,275 @@
|
||||
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 Thu 22-Aug-2024 18:00:16
|
||||
//---------------------------------------------------------------------------
|
||||
namespace Saxonite.Net.Standard.Dbas.Internal.Core
|
||||
{
|
||||
internal class ItemImage_Db : SaxDbDataItem
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Column definitions.
|
||||
public class ColumnsData
|
||||
{
|
||||
public ColumnDataInt64 _Id { get; } = new ColumnDataInt64("Id", true);
|
||||
public ColumnDataInt16 _ItemType { get; } = new ColumnDataInt16("ItemType");
|
||||
public ColumnDataInt32 _ItemId { get; } = new ColumnDataInt32("ItemId");
|
||||
public ColumnDataInt16 _ImageType { get; } = new ColumnDataInt16("ImageType");
|
||||
public ColumnDataByte _ImageSeq { get; } = new ColumnDataByte("ImageSeq");
|
||||
public ColumnDataInt64 _SessionUid { get; } = new ColumnDataInt64("SessionUid");
|
||||
public ColumnDataInt32 _ImageUid { get; } = new ColumnDataInt32("ImageUid");
|
||||
public ColumnDataString _Filename { get; } = new ColumnDataString("Filename");
|
||||
public ColumnDataString _Mime { get; } = new ColumnDataString("Mime");
|
||||
public ColumnDataString _ContentType { get; } = new ColumnDataString("ContentType");
|
||||
public ColumnDataInt32 _Width { get; } = new ColumnDataInt32("Width");
|
||||
public ColumnDataInt32 _Height { get; } = new ColumnDataInt32("Height");
|
||||
public ColumnDataByteArray _ImageData { get; } = new ColumnDataByteArray("ImageData");
|
||||
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",
|
||||
"ImageType",
|
||||
"ImageSeq",
|
||||
"SessionUid",
|
||||
"ImageUid",
|
||||
"Filename",
|
||||
"Mime",
|
||||
"ContentType",
|
||||
"Width",
|
||||
"Height",
|
||||
"ImageData",
|
||||
"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> fieldsNullable { get; } = new List<String>()
|
||||
{
|
||||
};
|
||||
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
|
||||
{
|
||||
"CreateOn",
|
||||
"CreateBy",
|
||||
"CreateHost",
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
internal ItemImage_Db (IDatabaseInfo dbInfo) : base(dbInfo)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public override String SchemaName { get; } = "dbo";
|
||||
public override String TableName { get; } = "ItemImage";
|
||||
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 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 Int16 _ImageType { get { return Cols._ImageType.Value; } set { Cols._ImageType.Value = value; } }
|
||||
public Byte _ImageSeq { get { return Cols._ImageSeq.Value; } set { Cols._ImageSeq.Value = value; } }
|
||||
public Int64 _SessionUid { get { return Cols._SessionUid.Value; } set { Cols._SessionUid.Value = value; } }
|
||||
public Int32 _ImageUid { get { return Cols._ImageUid.Value; } set { Cols._ImageUid.Value = value; } }
|
||||
public String _Filename { get { return Cols._Filename.Value; } set { Cols._Filename.Value = value; } }
|
||||
public String _Mime { get { return Cols._Mime.Value; } set { Cols._Mime.Value = value; } }
|
||||
public String _ContentType { get { return Cols._ContentType.Value; } set { Cols._ContentType.Value = value; } }
|
||||
public Int32 _Width { get { return Cols._Width.Value; } set { Cols._Width.Value = value; } }
|
||||
public Int32 _Height { get { return Cols._Height.Value; } set { Cols._Height.Value = value; } }
|
||||
public Byte[] _ImageData { get { return Cols._ImageData.Value; } set { Cols._ImageData.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);
|
||||
_ItemType = GetFieldInt16(dbDataReader, "ItemType", _ItemType);
|
||||
_ItemId = GetFieldInt32(dbDataReader, "ItemId", _ItemId);
|
||||
_ImageType = GetFieldInt16(dbDataReader, "ImageType", _ImageType);
|
||||
_ImageSeq = GetFieldByte(dbDataReader, "ImageSeq", _ImageSeq);
|
||||
_SessionUid = GetFieldInt64(dbDataReader, "SessionUid", _SessionUid);
|
||||
_ImageUid = GetFieldInt32(dbDataReader, "ImageUid", _ImageUid);
|
||||
_Filename = GetFieldString(dbDataReader, "Filename", _Filename);
|
||||
_Mime = GetFieldString(dbDataReader, "Mime", _Mime);
|
||||
_ContentType = GetFieldString(dbDataReader, "ContentType", _ContentType);
|
||||
_Width = GetFieldInt32(dbDataReader, "Width", _Width);
|
||||
_Height = GetFieldInt32(dbDataReader, "Height", _Height);
|
||||
_ImageData = GetFieldByteArray(dbDataReader, "ImageData", _ImageData);
|
||||
_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("ImageType")) AddCommandParameter(dbCommand, "@ImageType", _ImageType);
|
||||
if (columnNames.ContainsCI("ImageSeq")) AddCommandParameter(dbCommand, "@ImageSeq", _ImageSeq);
|
||||
if (columnNames.ContainsCI("SessionUid")) AddCommandParameter(dbCommand, "@SessionUid", _SessionUid);
|
||||
if (columnNames.ContainsCI("ImageUid")) AddCommandParameter(dbCommand, "@ImageUid", _ImageUid);
|
||||
if (columnNames.ContainsCI("Filename")) AddCommandParameter(dbCommand, "@Filename", _Filename);
|
||||
if (columnNames.ContainsCI("Mime")) AddCommandParameter(dbCommand, "@Mime", _Mime);
|
||||
if (columnNames.ContainsCI("ContentType")) AddCommandParameter(dbCommand, "@ContentType", _ContentType);
|
||||
if (columnNames.ContainsCI("Width")) AddCommandParameter(dbCommand, "@Width", _Width);
|
||||
if (columnNames.ContainsCI("Height")) AddCommandParameter(dbCommand, "@Height", _Height);
|
||||
if (columnNames.ContainsCI("ImageData")) AddCommandParameter(dbCommand, "@ImageData", _ImageData);
|
||||
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("ItemType")) AddCommandParameter(dbCommand, "@ItemType", _ItemType);
|
||||
if (columnNames.ContainsCI("ItemId")) AddCommandParameter(dbCommand, "@ItemId", _ItemId);
|
||||
if (columnNames.ContainsCI("ImageType")) AddCommandParameter(dbCommand, "@ImageType", _ImageType);
|
||||
if (columnNames.ContainsCI("ImageSeq")) AddCommandParameter(dbCommand, "@ImageSeq", _ImageSeq);
|
||||
if (columnNames.ContainsCI("SessionUid")) AddCommandParameter(dbCommand, "@SessionUid", _SessionUid);
|
||||
if (columnNames.ContainsCI("ImageUid")) AddCommandParameter(dbCommand, "@ImageUid", _ImageUid);
|
||||
if (columnNames.ContainsCI("Filename")) AddCommandParameter(dbCommand, "@Filename", _Filename);
|
||||
if (columnNames.ContainsCI("Mime")) AddCommandParameter(dbCommand, "@Mime", _Mime);
|
||||
if (columnNames.ContainsCI("ContentType")) AddCommandParameter(dbCommand, "@ContentType", _ContentType);
|
||||
if (columnNames.ContainsCI("Width")) AddCommandParameter(dbCommand, "@Width", _Width);
|
||||
if (columnNames.ContainsCI("Height")) AddCommandParameter(dbCommand, "@Height", _Height);
|
||||
if (columnNames.ContainsCI("ImageData")) AddCommandParameter(dbCommand, "@ImageData", _ImageData);
|
||||
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,227 @@
|
||||
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 Thu 22-Aug-2024 18:00:16
|
||||
//---------------------------------------------------------------------------
|
||||
namespace Saxonite.Net.Standard.Dbas.Internal.Core
|
||||
{
|
||||
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> fieldsNullable { get; } = new List<String>()
|
||||
{
|
||||
};
|
||||
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,272 @@
|
||||
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 Thu 22-Aug-2024 18:00:16
|
||||
//---------------------------------------------------------------------------
|
||||
namespace Saxonite.Net.Standard.Dbas.Internal.Core
|
||||
{
|
||||
internal class OrganisationEvent_Db : SaxDbDataItem
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Column definitions.
|
||||
public class ColumnsData
|
||||
{
|
||||
public ColumnDataInt32 _Id { get; } = new ColumnDataInt32("Id", true);
|
||||
public ColumnDataInt32 _OrganisationId { get; } = new ColumnDataInt32("OrganisationId");
|
||||
public ColumnDataInt32 _SportIdPrimary { get; } = new ColumnDataInt32("SportIdPrimary");
|
||||
public ColumnDataInt32 _RegionIdCountry { get; } = new ColumnDataInt32("RegionIdCountry");
|
||||
public ColumnDataDateTime _EventAt { get; } = new ColumnDataDateTime("EventAt");
|
||||
public ColumnDataDateTimeNullable _EventTo { get; } = new ColumnDataDateTimeNullable("EventTo");
|
||||
public ColumnDataString _EventTypeCode { get; } = new ColumnDataString("EventTypeCode");
|
||||
public ColumnDataString _Summary { get; } = new ColumnDataString("Summary");
|
||||
public ColumnDataString _Details { get; } = new ColumnDataString("Details");
|
||||
public ColumnDataString _EventData { get; } = new ColumnDataString("EventData");
|
||||
public ColumnDataDateTimeNullable _PublishedAt { get; } = new ColumnDataDateTimeNullable("PublishedAt");
|
||||
public ColumnDataDateTimeNullable _ExpiresAt { get; } = new ColumnDataDateTimeNullable("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",
|
||||
"SportIdPrimary",
|
||||
"RegionIdCountry",
|
||||
"EventAt",
|
||||
"EventTo",
|
||||
"EventTypeCode",
|
||||
"Summary",
|
||||
"Details",
|
||||
"EventData",
|
||||
"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> fieldsNullable { get; } = new List<String>()
|
||||
{
|
||||
"EventTo",
|
||||
"PublishedAt",
|
||||
"ExpiresAt",
|
||||
};
|
||||
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
|
||||
{
|
||||
"CreateOn",
|
||||
"CreateBy",
|
||||
"CreateHost",
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
internal OrganisationEvent_Db (IDatabaseInfo dbInfo) : base(dbInfo)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public override String SchemaName { get; } = "dbo";
|
||||
public override String TableName { get; } = "OrganisationEvent";
|
||||
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 _SportIdPrimary { get { return Cols._SportIdPrimary.Value; } set { Cols._SportIdPrimary.Value = value; } }
|
||||
public Int32 _RegionIdCountry { get { return Cols._RegionIdCountry.Value; } set { Cols._RegionIdCountry.Value = value; } }
|
||||
public DateTime _EventAt { get { return Cols._EventAt.Value; } set { Cols._EventAt.Value = value; } }
|
||||
public DateTime? _EventTo { get { return Cols._EventTo.Value; } set { Cols._EventTo.Value = value; } }
|
||||
public String _EventTypeCode { get { return Cols._EventTypeCode.Value; } set { Cols._EventTypeCode.Value = value; } }
|
||||
public String _Summary { get { return Cols._Summary.Value; } set { Cols._Summary.Value = value; } }
|
||||
public String _Details { get { return Cols._Details.Value; } set { Cols._Details.Value = value; } }
|
||||
public String _EventData { get { return Cols._EventData.Value; } set { Cols._EventData.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);
|
||||
_SportIdPrimary = GetFieldInt32(dbDataReader, "SportIdPrimary", _SportIdPrimary);
|
||||
_RegionIdCountry = GetFieldInt32(dbDataReader, "RegionIdCountry", _RegionIdCountry);
|
||||
_EventAt = GetFieldDateTime(dbDataReader, "EventAt", _EventAt);
|
||||
_EventTo = GetFieldDateTimeNullable(dbDataReader, "EventTo", _EventTo);
|
||||
_EventTypeCode = GetFieldString(dbDataReader, "EventTypeCode", _EventTypeCode);
|
||||
_Summary = GetFieldString(dbDataReader, "Summary", _Summary);
|
||||
_Details = GetFieldString(dbDataReader, "Details", _Details);
|
||||
_EventData = GetFieldString(dbDataReader, "EventData", _EventData);
|
||||
_PublishedAt = GetFieldDateTimeNullable(dbDataReader, "PublishedAt", _PublishedAt);
|
||||
_ExpiresAt = GetFieldDateTimeNullable(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("SportIdPrimary")) AddCommandParameter(dbCommand, "@SportIdPrimary", _SportIdPrimary);
|
||||
if (columnNames.ContainsCI("RegionIdCountry")) AddCommandParameter(dbCommand, "@RegionIdCountry", _RegionIdCountry);
|
||||
if (columnNames.ContainsCI("EventAt")) AddCommandParameter(dbCommand, "@EventAt", _EventAt);
|
||||
if (columnNames.ContainsCI("EventTo")) AddCommandParameter(dbCommand, "@EventTo", _EventTo);
|
||||
if (columnNames.ContainsCI("EventTypeCode")) AddCommandParameter(dbCommand, "@EventTypeCode", _EventTypeCode);
|
||||
if (columnNames.ContainsCI("Summary")) AddCommandParameter(dbCommand, "@Summary", _Summary);
|
||||
if (columnNames.ContainsCI("Details")) AddCommandParameter(dbCommand, "@Details", _Details);
|
||||
if (columnNames.ContainsCI("EventData")) AddCommandParameter(dbCommand, "@EventData", _EventData);
|
||||
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("SportIdPrimary")) AddCommandParameter(dbCommand, "@SportIdPrimary", _SportIdPrimary);
|
||||
if (columnNames.ContainsCI("RegionIdCountry")) AddCommandParameter(dbCommand, "@RegionIdCountry", _RegionIdCountry);
|
||||
if (columnNames.ContainsCI("EventAt")) AddCommandParameter(dbCommand, "@EventAt", _EventAt);
|
||||
if (columnNames.ContainsCI("EventTo")) AddCommandParameter(dbCommand, "@EventTo", _EventTo);
|
||||
if (columnNames.ContainsCI("EventTypeCode")) AddCommandParameter(dbCommand, "@EventTypeCode", _EventTypeCode);
|
||||
if (columnNames.ContainsCI("Summary")) AddCommandParameter(dbCommand, "@Summary", _Summary);
|
||||
if (columnNames.ContainsCI("Details")) AddCommandParameter(dbCommand, "@Details", _Details);
|
||||
if (columnNames.ContainsCI("EventData")) AddCommandParameter(dbCommand, "@EventData", _EventData);
|
||||
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,259 @@
|
||||
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 Thu 22-Aug-2024 18:00:16
|
||||
//---------------------------------------------------------------------------
|
||||
namespace Saxonite.Net.Standard.Dbas.Internal.Core
|
||||
{
|
||||
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 _SportIdPrimary { get; } = new ColumnDataInt32("SportIdPrimary");
|
||||
public ColumnDataInt32 _RegionIdPrimary { get; } = new ColumnDataInt32("RegionIdPrimary");
|
||||
public ColumnDataString _OpportunityTypeCode { get; } = new ColumnDataString("OpportunityTypeCode");
|
||||
public ColumnDataString _Position { get; } = new ColumnDataString("Position");
|
||||
public ColumnDataString _Outline { get; } = new ColumnDataString("Outline");
|
||||
public ColumnDataString _OpportunityData { get; } = new ColumnDataString("OpportunityData");
|
||||
public ColumnDataDateTimeNullable _PublishedAt { get; } = new ColumnDataDateTimeNullable("PublishedAt");
|
||||
public ColumnDataDateTimeNullable _ExpiresAt { get; } = new ColumnDataDateTimeNullable("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",
|
||||
"SportIdPrimary",
|
||||
"RegionIdPrimary",
|
||||
"OpportunityTypeCode",
|
||||
"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> fieldsNullable { get; } = new List<String>()
|
||||
{
|
||||
"PublishedAt",
|
||||
"ExpiresAt",
|
||||
};
|
||||
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 _SportIdPrimary { get { return Cols._SportIdPrimary.Value; } set { Cols._SportIdPrimary.Value = value; } }
|
||||
public Int32 _RegionIdPrimary { get { return Cols._RegionIdPrimary.Value; } set { Cols._RegionIdPrimary.Value = value; } }
|
||||
public String _OpportunityTypeCode { get { return Cols._OpportunityTypeCode.Value; } set { Cols._OpportunityTypeCode.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);
|
||||
_SportIdPrimary = GetFieldInt32(dbDataReader, "SportIdPrimary", _SportIdPrimary);
|
||||
_RegionIdPrimary = GetFieldInt32(dbDataReader, "RegionIdPrimary", _RegionIdPrimary);
|
||||
_OpportunityTypeCode = GetFieldString(dbDataReader, "OpportunityTypeCode", _OpportunityTypeCode);
|
||||
_Position = GetFieldString(dbDataReader, "Position", _Position);
|
||||
_Outline = GetFieldString(dbDataReader, "Outline", _Outline);
|
||||
_OpportunityData = GetFieldString(dbDataReader, "OpportunityData", _OpportunityData);
|
||||
_PublishedAt = GetFieldDateTimeNullable(dbDataReader, "PublishedAt", _PublishedAt);
|
||||
_ExpiresAt = GetFieldDateTimeNullable(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("SportIdPrimary")) AddCommandParameter(dbCommand, "@SportIdPrimary", _SportIdPrimary);
|
||||
if (columnNames.ContainsCI("RegionIdPrimary")) AddCommandParameter(dbCommand, "@RegionIdPrimary", _RegionIdPrimary);
|
||||
if (columnNames.ContainsCI("OpportunityTypeCode")) AddCommandParameter(dbCommand, "@OpportunityTypeCode", _OpportunityTypeCode);
|
||||
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("SportIdPrimary")) AddCommandParameter(dbCommand, "@SportIdPrimary", _SportIdPrimary);
|
||||
if (columnNames.ContainsCI("RegionIdPrimary")) AddCommandParameter(dbCommand, "@RegionIdPrimary", _RegionIdPrimary);
|
||||
if (columnNames.ContainsCI("OpportunityTypeCode")) AddCommandParameter(dbCommand, "@OpportunityTypeCode", _OpportunityTypeCode);
|
||||
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,262 @@
|
||||
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 Thu 22-Aug-2024 18:00:16
|
||||
//---------------------------------------------------------------------------
|
||||
namespace Saxonite.Net.Standard.Dbas.Internal.Core
|
||||
{
|
||||
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 ColumnDataInt32Nullable _SportIdPrimary { get; } = new ColumnDataInt32Nullable("SportIdPrimary");
|
||||
public ColumnDataInt32Nullable _RegionIdPrimary { get; } = new ColumnDataInt32Nullable("RegionIdPrimary");
|
||||
public ColumnDataString _About { get; } = new ColumnDataString("About");
|
||||
public ColumnDataString _Facilities { get; } = new ColumnDataString("Facilities");
|
||||
public ColumnDataString _ContactData { get; } = new ColumnDataString("ContactData");
|
||||
public ColumnDataString _CountryIso2Code { get; } = new ColumnDataString("CountryIso2Code");
|
||||
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",
|
||||
"SportIdPrimary",
|
||||
"RegionIdPrimary",
|
||||
"About",
|
||||
"Facilities",
|
||||
"ContactData",
|
||||
"CountryIso2Code",
|
||||
"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> fieldsNullable { get; } = new List<String>()
|
||||
{
|
||||
"SportIdPrimary",
|
||||
"RegionIdPrimary",
|
||||
"About",
|
||||
"Facilities",
|
||||
"ContactData",
|
||||
};
|
||||
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? _SportIdPrimary { get { return Cols._SportIdPrimary.Value; } set { Cols._SportIdPrimary.Value = value; } }
|
||||
public Int32? _RegionIdPrimary { get { return Cols._RegionIdPrimary.Value; } set { Cols._RegionIdPrimary.Value = value; } }
|
||||
public String _About { get { return Cols._About.Value; } set { Cols._About.Value = value; } }
|
||||
public String _Facilities { get { return Cols._Facilities.Value; } set { Cols._Facilities.Value = value; } }
|
||||
public String _ContactData { get { return Cols._ContactData.Value; } set { Cols._ContactData.Value = value; } }
|
||||
public String _CountryIso2Code { get { return Cols._CountryIso2Code.Value; } set { Cols._CountryIso2Code.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);
|
||||
_SportIdPrimary = GetFieldInt32Nullable(dbDataReader, "SportIdPrimary", _SportIdPrimary);
|
||||
_RegionIdPrimary = GetFieldInt32Nullable(dbDataReader, "RegionIdPrimary", _RegionIdPrimary);
|
||||
_About = GetFieldString(dbDataReader, "About", _About);
|
||||
_Facilities = GetFieldString(dbDataReader, "Facilities", _Facilities);
|
||||
_ContactData = GetFieldString(dbDataReader, "ContactData", _ContactData);
|
||||
_CountryIso2Code = GetFieldString(dbDataReader, "CountryIso2Code", _CountryIso2Code);
|
||||
_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("SportIdPrimary")) AddCommandParameter(dbCommand, "@SportIdPrimary", _SportIdPrimary);
|
||||
if (columnNames.ContainsCI("RegionIdPrimary")) AddCommandParameter(dbCommand, "@RegionIdPrimary", _RegionIdPrimary);
|
||||
if (columnNames.ContainsCI("About")) AddCommandParameter(dbCommand, "@About", _About);
|
||||
if (columnNames.ContainsCI("Facilities")) AddCommandParameter(dbCommand, "@Facilities", _Facilities);
|
||||
if (columnNames.ContainsCI("ContactData")) AddCommandParameter(dbCommand, "@ContactData", _ContactData);
|
||||
if (columnNames.ContainsCI("CountryIso2Code")) AddCommandParameter(dbCommand, "@CountryIso2Code", _CountryIso2Code);
|
||||
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("SportIdPrimary")) AddCommandParameter(dbCommand, "@SportIdPrimary", _SportIdPrimary);
|
||||
if (columnNames.ContainsCI("RegionIdPrimary")) AddCommandParameter(dbCommand, "@RegionIdPrimary", _RegionIdPrimary);
|
||||
if (columnNames.ContainsCI("About")) AddCommandParameter(dbCommand, "@About", _About);
|
||||
if (columnNames.ContainsCI("Facilities")) AddCommandParameter(dbCommand, "@Facilities", _Facilities);
|
||||
if (columnNames.ContainsCI("ContactData")) AddCommandParameter(dbCommand, "@ContactData", _ContactData);
|
||||
if (columnNames.ContainsCI("CountryIso2Code")) AddCommandParameter(dbCommand, "@CountryIso2Code", _CountryIso2Code);
|
||||
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,241 @@
|
||||
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 Thu 22-Aug-2024 18:00:16
|
||||
//---------------------------------------------------------------------------
|
||||
namespace Saxonite.Net.Standard.Dbas.Internal.Core
|
||||
{
|
||||
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 ColumnDataDecimalNullable _Latitude { get; } = new ColumnDataDecimalNullable("Latitude");
|
||||
public ColumnDataDecimalNullable _Longitude { get; } = new ColumnDataDecimalNullable("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> fieldsNullable { get; } = new List<String>()
|
||||
{
|
||||
"Latitude",
|
||||
"Longitude",
|
||||
};
|
||||
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 = GetFieldDecimalNullable(dbDataReader, "Latitude", _Latitude);
|
||||
_Longitude = GetFieldDecimalNullable(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,230 @@
|
||||
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 Thu 22-Aug-2024 18:00:16
|
||||
//---------------------------------------------------------------------------
|
||||
namespace Saxonite.Net.Standard.Dbas.Internal.Core
|
||||
{
|
||||
internal class Sport_Db : SaxDbDataItem
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Column definitions.
|
||||
public class ColumnsData
|
||||
{
|
||||
public ColumnDataInt32 _Id { get; } = new ColumnDataInt32("Id", true);
|
||||
public ColumnDataInt16Nullable _Grouping { get; } = new ColumnDataInt16Nullable("Grouping");
|
||||
public ColumnDataInt32Nullable _SportIdParent { get; } = new ColumnDataInt32Nullable("SportIdParent");
|
||||
public ColumnDataString _Name { get; } = new ColumnDataString("Name");
|
||||
public ColumnDataInt16Nullable _SpecialityLabel { get; } = new ColumnDataInt16Nullable("SpecialityLabel");
|
||||
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",
|
||||
"Grouping",
|
||||
"SportIdParent",
|
||||
"Name",
|
||||
"SpecialityLabel",
|
||||
"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> fieldsNullable { get; } = new List<String>()
|
||||
{
|
||||
"Grouping",
|
||||
"SportIdParent",
|
||||
"SpecialityLabel",
|
||||
};
|
||||
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 Int16? _Grouping { get { return Cols._Grouping.Value; } set { Cols._Grouping.Value = value; } }
|
||||
public Int32? _SportIdParent { get { return Cols._SportIdParent.Value; } set { Cols._SportIdParent.Value = value; } }
|
||||
public String _Name { get { return Cols._Name.Value; } set { Cols._Name.Value = value; } }
|
||||
public Int16? _SpecialityLabel { get { return Cols._SpecialityLabel.Value; } set { Cols._SpecialityLabel.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);
|
||||
_Grouping = GetFieldInt16Nullable(dbDataReader, "Grouping", _Grouping);
|
||||
_SportIdParent = GetFieldInt32Nullable(dbDataReader, "SportIdParent", _SportIdParent);
|
||||
_Name = GetFieldString(dbDataReader, "Name", _Name);
|
||||
_SpecialityLabel = GetFieldInt16Nullable(dbDataReader, "SpecialityLabel", _SpecialityLabel);
|
||||
_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("Grouping")) AddCommandParameter(dbCommand, "@Grouping", _Grouping);
|
||||
if (columnNames.ContainsCI("SportIdParent")) AddCommandParameter(dbCommand, "@SportIdParent", _SportIdParent);
|
||||
if (columnNames.ContainsCI("Name")) AddCommandParameter(dbCommand, "@Name", _Name);
|
||||
if (columnNames.ContainsCI("SpecialityLabel")) AddCommandParameter(dbCommand, "@SpecialityLabel", _SpecialityLabel);
|
||||
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("Grouping")) AddCommandParameter(dbCommand, "@Grouping", _Grouping);
|
||||
if (columnNames.ContainsCI("SportIdParent")) AddCommandParameter(dbCommand, "@SportIdParent", _SportIdParent);
|
||||
if (columnNames.ContainsCI("Name")) AddCommandParameter(dbCommand, "@Name", _Name);
|
||||
if (columnNames.ContainsCI("SpecialityLabel")) AddCommandParameter(dbCommand, "@SpecialityLabel", _SpecialityLabel);
|
||||
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,360 @@
|
||||
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 Thu 22-Aug-2024 18:00:16
|
||||
//---------------------------------------------------------------------------
|
||||
namespace Saxonite.Net.Standard.Dbas.Internal.Core
|
||||
{
|
||||
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 _About { get; } = new ColumnDataString("About");
|
||||
public ColumnDataString _PhoneMain { get; } = new ColumnDataString("PhoneMain");
|
||||
public ColumnDataString _PhoneMobile { get; } = new ColumnDataString("PhoneMobile");
|
||||
public ColumnDataString _PhoneAlt { get; } = new ColumnDataString("PhoneAlt");
|
||||
public ColumnDataByteNullable _Gender { get; } = new ColumnDataByteNullable("Gender");
|
||||
public ColumnDataString _GenderOther { get; } = new ColumnDataString("GenderOther");
|
||||
public ColumnDataByteNullable _DateOfBirthDay { get; } = new ColumnDataByteNullable("DateOfBirthDay");
|
||||
public ColumnDataByteNullable _DateOfBirthMonth { get; } = new ColumnDataByteNullable("DateOfBirthMonth");
|
||||
public ColumnDataInt16Nullable _DateOfBirthYear { get; } = new ColumnDataInt16Nullable("DateOfBirthYear");
|
||||
public ColumnDataInt32Nullable _RegionIdCountry { get; } = new ColumnDataInt32Nullable("RegionIdCountry");
|
||||
public ColumnDataInt32Nullable _RegionIdProvince { get; } = new ColumnDataInt32Nullable("RegionIdProvince");
|
||||
public ColumnDataString _JournalistData { get; } = new ColumnDataString("JournalistData");
|
||||
public ColumnDataString _PasswordToken { get; } = new ColumnDataString("PasswordToken");
|
||||
public ColumnDataString _PasswordHashed { get; } = new ColumnDataString("PasswordHashed");
|
||||
public ColumnDataString _PasswordHistory { get; } = new ColumnDataString("PasswordHistory");
|
||||
public ColumnDataDateTimeNullable _PasswordChangedAt { get; } = new ColumnDataDateTimeNullable("PasswordChangedAt");
|
||||
public ColumnDataDateTimeNullable _LastLoginAt { get; } = new ColumnDataDateTimeNullable("LastLoginAt");
|
||||
public ColumnDataDateTimeNullable _LastInvalidLoginAt { get; } = new ColumnDataDateTimeNullable("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",
|
||||
"About",
|
||||
"PhoneMain",
|
||||
"PhoneMobile",
|
||||
"PhoneAlt",
|
||||
"Gender",
|
||||
"GenderOther",
|
||||
"DateOfBirthDay",
|
||||
"DateOfBirthMonth",
|
||||
"DateOfBirthYear",
|
||||
"RegionIdCountry",
|
||||
"RegionIdProvince",
|
||||
"JournalistData",
|
||||
"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> fieldsNullable { get; } = new List<String>()
|
||||
{
|
||||
"About",
|
||||
"Gender",
|
||||
"GenderOther",
|
||||
"DateOfBirthDay",
|
||||
"DateOfBirthMonth",
|
||||
"DateOfBirthYear",
|
||||
"RegionIdCountry",
|
||||
"RegionIdProvince",
|
||||
"JournalistData",
|
||||
"PasswordToken",
|
||||
"PasswordChangedAt",
|
||||
"LastLoginAt",
|
||||
"LastInvalidLoginAt",
|
||||
};
|
||||
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 _About { get { return Cols._About.Value; } set { Cols._About.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 Byte? _Gender { get { return Cols._Gender.Value; } set { Cols._Gender.Value = value; } }
|
||||
public String _GenderOther { get { return Cols._GenderOther.Value; } set { Cols._GenderOther.Value = value; } }
|
||||
public Byte? _DateOfBirthDay { get { return Cols._DateOfBirthDay.Value; } set { Cols._DateOfBirthDay.Value = value; } }
|
||||
public Byte? _DateOfBirthMonth { get { return Cols._DateOfBirthMonth.Value; } set { Cols._DateOfBirthMonth.Value = value; } }
|
||||
public Int16? _DateOfBirthYear { get { return Cols._DateOfBirthYear.Value; } set { Cols._DateOfBirthYear.Value = value; } }
|
||||
public Int32? _RegionIdCountry { get { return Cols._RegionIdCountry.Value; } set { Cols._RegionIdCountry.Value = value; } }
|
||||
public Int32? _RegionIdProvince { get { return Cols._RegionIdProvince.Value; } set { Cols._RegionIdProvince.Value = value; } }
|
||||
public String _JournalistData { get { return Cols._JournalistData.Value; } set { Cols._JournalistData.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);
|
||||
_About = GetFieldString(dbDataReader, "About", _About);
|
||||
_PhoneMain = GetFieldString(dbDataReader, "PhoneMain", _PhoneMain);
|
||||
_PhoneMobile = GetFieldString(dbDataReader, "PhoneMobile", _PhoneMobile);
|
||||
_PhoneAlt = GetFieldString(dbDataReader, "PhoneAlt", _PhoneAlt);
|
||||
_Gender = GetFieldByteNullable(dbDataReader, "Gender", _Gender);
|
||||
_GenderOther = GetFieldString(dbDataReader, "GenderOther", _GenderOther);
|
||||
_DateOfBirthDay = GetFieldByteNullable(dbDataReader, "DateOfBirthDay", _DateOfBirthDay);
|
||||
_DateOfBirthMonth = GetFieldByteNullable(dbDataReader, "DateOfBirthMonth", _DateOfBirthMonth);
|
||||
_DateOfBirthYear = GetFieldInt16Nullable(dbDataReader, "DateOfBirthYear", _DateOfBirthYear);
|
||||
_RegionIdCountry = GetFieldInt32Nullable(dbDataReader, "RegionIdCountry", _RegionIdCountry);
|
||||
_RegionIdProvince = GetFieldInt32Nullable(dbDataReader, "RegionIdProvince", _RegionIdProvince);
|
||||
_JournalistData = GetFieldString(dbDataReader, "JournalistData", _JournalistData);
|
||||
_PasswordToken = GetFieldString(dbDataReader, "PasswordToken", _PasswordToken);
|
||||
_PasswordHashed = GetFieldString(dbDataReader, "PasswordHashed", _PasswordHashed);
|
||||
_PasswordHistory = GetFieldString(dbDataReader, "PasswordHistory", _PasswordHistory);
|
||||
_PasswordChangedAt = GetFieldDateTimeNullable(dbDataReader, "PasswordChangedAt", _PasswordChangedAt);
|
||||
_LastLoginAt = GetFieldDateTimeNullable(dbDataReader, "LastLoginAt", _LastLoginAt);
|
||||
_LastInvalidLoginAt = GetFieldDateTimeNullable(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("About")) AddCommandParameter(dbCommand, "@About", _About);
|
||||
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("Gender")) AddCommandParameter(dbCommand, "@Gender", _Gender);
|
||||
if (columnNames.ContainsCI("GenderOther")) AddCommandParameter(dbCommand, "@GenderOther", _GenderOther);
|
||||
if (columnNames.ContainsCI("DateOfBirthDay")) AddCommandParameter(dbCommand, "@DateOfBirthDay", _DateOfBirthDay);
|
||||
if (columnNames.ContainsCI("DateOfBirthMonth")) AddCommandParameter(dbCommand, "@DateOfBirthMonth", _DateOfBirthMonth);
|
||||
if (columnNames.ContainsCI("DateOfBirthYear")) AddCommandParameter(dbCommand, "@DateOfBirthYear", _DateOfBirthYear);
|
||||
if (columnNames.ContainsCI("RegionIdCountry")) AddCommandParameter(dbCommand, "@RegionIdCountry", _RegionIdCountry);
|
||||
if (columnNames.ContainsCI("RegionIdProvince")) AddCommandParameter(dbCommand, "@RegionIdProvince", _RegionIdProvince);
|
||||
if (columnNames.ContainsCI("JournalistData")) AddCommandParameter(dbCommand, "@JournalistData", _JournalistData);
|
||||
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("About")) AddCommandParameter(dbCommand, "@About", _About);
|
||||
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("Gender")) AddCommandParameter(dbCommand, "@Gender", _Gender);
|
||||
if (columnNames.ContainsCI("GenderOther")) AddCommandParameter(dbCommand, "@GenderOther", _GenderOther);
|
||||
if (columnNames.ContainsCI("DateOfBirthDay")) AddCommandParameter(dbCommand, "@DateOfBirthDay", _DateOfBirthDay);
|
||||
if (columnNames.ContainsCI("DateOfBirthMonth")) AddCommandParameter(dbCommand, "@DateOfBirthMonth", _DateOfBirthMonth);
|
||||
if (columnNames.ContainsCI("DateOfBirthYear")) AddCommandParameter(dbCommand, "@DateOfBirthYear", _DateOfBirthYear);
|
||||
if (columnNames.ContainsCI("RegionIdCountry")) AddCommandParameter(dbCommand, "@RegionIdCountry", _RegionIdCountry);
|
||||
if (columnNames.ContainsCI("RegionIdProvince")) AddCommandParameter(dbCommand, "@RegionIdProvince", _RegionIdProvince);
|
||||
if (columnNames.ContainsCI("JournalistData")) AddCommandParameter(dbCommand, "@JournalistData", _JournalistData);
|
||||
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,280 @@
|
||||
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 Thu 22-Aug-2024 18:00:16
|
||||
//---------------------------------------------------------------------------
|
||||
namespace Saxonite.Net.Standard.Dbas.Internal.Core
|
||||
{
|
||||
internal class UserActivity_Db : SaxDbDataItem
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Column definitions.
|
||||
public class ColumnsData
|
||||
{
|
||||
public ColumnDataInt64 _Id { get; } = new ColumnDataInt64("Id", true);
|
||||
public ColumnDataInt32 _UserAccountId { get; } = new ColumnDataInt32("UserAccountId");
|
||||
public ColumnDataInt16 _ItemType { get; } = new ColumnDataInt16("ItemType");
|
||||
public ColumnDataInt64 _ItemId { get; } = new ColumnDataInt64("ItemId");
|
||||
public ColumnDataBoolean _CurrentlyListed { get; } = new ColumnDataBoolean("CurrentlyListed");
|
||||
public ColumnDataDateTime _ListedAtFirst { get; } = new ColumnDataDateTime("ListedAtFirst");
|
||||
public ColumnDataDateTimeNullable _ListedAtLast { get; } = new ColumnDataDateTimeNullable("ListedAtLast");
|
||||
public ColumnDataDateTimeNullable _ViewedAtFirst { get; } = new ColumnDataDateTimeNullable("ViewedAtFirst");
|
||||
public ColumnDataDateTimeNullable _ViewedAtLast { get; } = new ColumnDataDateTimeNullable("ViewedAtLast");
|
||||
public ColumnDataInt16 _Reaction { get; } = new ColumnDataInt16("Reaction");
|
||||
public ColumnDataDateTimeNullable _ReactedAtFirst { get; } = new ColumnDataDateTimeNullable("ReactedAtFirst");
|
||||
public ColumnDataDateTimeNullable _ReactedAtLast { get; } = new ColumnDataDateTimeNullable("ReactedAtLast");
|
||||
public ColumnDataString _UserActivityData { get; } = new ColumnDataString("UserActivityData");
|
||||
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",
|
||||
"ItemType",
|
||||
"ItemId",
|
||||
"CurrentlyListed",
|
||||
"ListedAtFirst",
|
||||
"ListedAtLast",
|
||||
"ViewedAtFirst",
|
||||
"ViewedAtLast",
|
||||
"Reaction",
|
||||
"ReactedAtFirst",
|
||||
"ReactedAtLast",
|
||||
"UserActivityData",
|
||||
"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> fieldsNullable { get; } = new List<String>()
|
||||
{
|
||||
"ListedAtLast",
|
||||
"ViewedAtFirst",
|
||||
"ViewedAtLast",
|
||||
"ReactedAtFirst",
|
||||
"ReactedAtLast",
|
||||
};
|
||||
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
|
||||
{
|
||||
"CreateOn",
|
||||
"CreateBy",
|
||||
"CreateHost",
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
internal UserActivity_Db (IDatabaseInfo dbInfo) : base(dbInfo)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public override String SchemaName { get; } = "dbo";
|
||||
public override String TableName { get; } = "UserActivity";
|
||||
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 Int16 _ItemType { get { return Cols._ItemType.Value; } set { Cols._ItemType.Value = value; } }
|
||||
public Int64 _ItemId { get { return Cols._ItemId.Value; } set { Cols._ItemId.Value = value; } }
|
||||
public Boolean _CurrentlyListed { get { return Cols._CurrentlyListed.Value; } set { Cols._CurrentlyListed.Value = value; } }
|
||||
public DateTime _ListedAtFirst { get { return Cols._ListedAtFirst.Value; } set { Cols._ListedAtFirst.Value = value; } }
|
||||
public DateTime? _ListedAtLast { get { return Cols._ListedAtLast.Value; } set { Cols._ListedAtLast.Value = value; } }
|
||||
public DateTime? _ViewedAtFirst { get { return Cols._ViewedAtFirst.Value; } set { Cols._ViewedAtFirst.Value = value; } }
|
||||
public DateTime? _ViewedAtLast { get { return Cols._ViewedAtLast.Value; } set { Cols._ViewedAtLast.Value = value; } }
|
||||
public Int16 _Reaction { get { return Cols._Reaction.Value; } set { Cols._Reaction.Value = value; } }
|
||||
public DateTime? _ReactedAtFirst { get { return Cols._ReactedAtFirst.Value; } set { Cols._ReactedAtFirst.Value = value; } }
|
||||
public DateTime? _ReactedAtLast { get { return Cols._ReactedAtLast.Value; } set { Cols._ReactedAtLast.Value = value; } }
|
||||
public String _UserActivityData { get { return Cols._UserActivityData.Value; } set { Cols._UserActivityData.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);
|
||||
_ItemType = GetFieldInt16(dbDataReader, "ItemType", _ItemType);
|
||||
_ItemId = GetFieldInt64(dbDataReader, "ItemId", _ItemId);
|
||||
_CurrentlyListed = GetFieldBoolean(dbDataReader, "CurrentlyListed", _CurrentlyListed);
|
||||
_ListedAtFirst = GetFieldDateTime(dbDataReader, "ListedAtFirst", _ListedAtFirst);
|
||||
_ListedAtLast = GetFieldDateTimeNullable(dbDataReader, "ListedAtLast", _ListedAtLast);
|
||||
_ViewedAtFirst = GetFieldDateTimeNullable(dbDataReader, "ViewedAtFirst", _ViewedAtFirst);
|
||||
_ViewedAtLast = GetFieldDateTimeNullable(dbDataReader, "ViewedAtLast", _ViewedAtLast);
|
||||
_Reaction = GetFieldInt16(dbDataReader, "Reaction", _Reaction);
|
||||
_ReactedAtFirst = GetFieldDateTimeNullable(dbDataReader, "ReactedAtFirst", _ReactedAtFirst);
|
||||
_ReactedAtLast = GetFieldDateTimeNullable(dbDataReader, "ReactedAtLast", _ReactedAtLast);
|
||||
_UserActivityData = GetFieldString(dbDataReader, "UserActivityData", _UserActivityData);
|
||||
_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("ItemType")) AddCommandParameter(dbCommand, "@ItemType", _ItemType);
|
||||
if (columnNames.ContainsCI("ItemId")) AddCommandParameter(dbCommand, "@ItemId", _ItemId);
|
||||
if (columnNames.ContainsCI("CurrentlyListed")) AddCommandParameter(dbCommand, "@CurrentlyListed", _CurrentlyListed);
|
||||
if (columnNames.ContainsCI("ListedAtFirst")) AddCommandParameter(dbCommand, "@ListedAtFirst", _ListedAtFirst);
|
||||
if (columnNames.ContainsCI("ListedAtLast")) AddCommandParameter(dbCommand, "@ListedAtLast", _ListedAtLast);
|
||||
if (columnNames.ContainsCI("ViewedAtFirst")) AddCommandParameter(dbCommand, "@ViewedAtFirst", _ViewedAtFirst);
|
||||
if (columnNames.ContainsCI("ViewedAtLast")) AddCommandParameter(dbCommand, "@ViewedAtLast", _ViewedAtLast);
|
||||
if (columnNames.ContainsCI("Reaction")) AddCommandParameter(dbCommand, "@Reaction", _Reaction);
|
||||
if (columnNames.ContainsCI("ReactedAtFirst")) AddCommandParameter(dbCommand, "@ReactedAtFirst", _ReactedAtFirst);
|
||||
if (columnNames.ContainsCI("ReactedAtLast")) AddCommandParameter(dbCommand, "@ReactedAtLast", _ReactedAtLast);
|
||||
if (columnNames.ContainsCI("UserActivityData")) AddCommandParameter(dbCommand, "@UserActivityData", _UserActivityData);
|
||||
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("ItemType")) AddCommandParameter(dbCommand, "@ItemType", _ItemType);
|
||||
if (columnNames.ContainsCI("ItemId")) AddCommandParameter(dbCommand, "@ItemId", _ItemId);
|
||||
if (columnNames.ContainsCI("CurrentlyListed")) AddCommandParameter(dbCommand, "@CurrentlyListed", _CurrentlyListed);
|
||||
if (columnNames.ContainsCI("ListedAtFirst")) AddCommandParameter(dbCommand, "@ListedAtFirst", _ListedAtFirst);
|
||||
if (columnNames.ContainsCI("ListedAtLast")) AddCommandParameter(dbCommand, "@ListedAtLast", _ListedAtLast);
|
||||
if (columnNames.ContainsCI("ViewedAtFirst")) AddCommandParameter(dbCommand, "@ViewedAtFirst", _ViewedAtFirst);
|
||||
if (columnNames.ContainsCI("ViewedAtLast")) AddCommandParameter(dbCommand, "@ViewedAtLast", _ViewedAtLast);
|
||||
if (columnNames.ContainsCI("Reaction")) AddCommandParameter(dbCommand, "@Reaction", _Reaction);
|
||||
if (columnNames.ContainsCI("ReactedAtFirst")) AddCommandParameter(dbCommand, "@ReactedAtFirst", _ReactedAtFirst);
|
||||
if (columnNames.ContainsCI("ReactedAtLast")) AddCommandParameter(dbCommand, "@ReactedAtLast", _ReactedAtLast);
|
||||
if (columnNames.ContainsCI("UserActivityData")) AddCommandParameter(dbCommand, "@UserActivityData", _UserActivityData);
|
||||
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,182 @@
|
||||
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 Thu 22-Aug-2024 18:00:16
|
||||
//---------------------------------------------------------------------------
|
||||
namespace Saxonite.Net.Standard.Dbas.Internal.Core
|
||||
{
|
||||
internal class UserConfig_Db : SaxDbDataItem
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Column definitions.
|
||||
public class ColumnsData
|
||||
{
|
||||
public ColumnDataInt64 _Id { get; } = new ColumnDataInt64("Id", true);
|
||||
public ColumnDataInt32 _UserAccountId { get; } = new ColumnDataInt32("UserAccountId");
|
||||
public ColumnDataInt16Nullable _ConfigType { get; } = new ColumnDataInt16Nullable("ConfigType");
|
||||
public ColumnDataString _ConfigData { get; } = new ColumnDataString("ConfigData");
|
||||
public ColumnDataDateTime _CreateOn { get; } = new ColumnDataDateTime("CreateOn");
|
||||
public ColumnDataDateTime _UpdateOn { get; } = new ColumnDataDateTime("UpdateOn");
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
protected static List<String> fields { get; } = new List<String>()
|
||||
{
|
||||
"Id",
|
||||
"UserAccountId",
|
||||
"ConfigType",
|
||||
"ConfigData",
|
||||
"CreateOn",
|
||||
"UpdateOn",
|
||||
};
|
||||
protected static List<String> fieldsId { get; } = new List<String>()
|
||||
{
|
||||
"Id",
|
||||
};
|
||||
protected static List<String> fieldsPrimary { get; } = new List<String>()
|
||||
{
|
||||
"Id",
|
||||
};
|
||||
protected static List<String> fieldsNullable { get; } = new List<String>()
|
||||
{
|
||||
"ConfigType",
|
||||
};
|
||||
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
|
||||
{
|
||||
"CreateOn",
|
||||
"CreateBy",
|
||||
"CreateHost",
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
internal UserConfig_Db (IDatabaseInfo dbInfo) : base(dbInfo)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public override String SchemaName { get; } = "dbo";
|
||||
public override String TableName { get; } = "UserConfig";
|
||||
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 Int16? _ConfigType { get { return Cols._ConfigType.Value; } set { Cols._ConfigType.Value = value; } }
|
||||
public String _ConfigData { get { return Cols._ConfigData.Value; } set { Cols._ConfigData.Value = value; } }
|
||||
public DateTime _CreateOn { get { return Cols._CreateOn.Value; } set { Cols._CreateOn.Value = value; } }
|
||||
public DateTime _UpdateOn { get { return Cols._UpdateOn.Value; } set { Cols._UpdateOn.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);
|
||||
_ConfigType = GetFieldInt16Nullable(dbDataReader, "ConfigType", _ConfigType);
|
||||
_ConfigData = GetFieldString(dbDataReader, "ConfigData", _ConfigData);
|
||||
_CreateOn = GetFieldDateTime(dbDataReader, "CreateOn", _CreateOn);
|
||||
_UpdateOn = GetFieldDateTime(dbDataReader, "UpdateOn", _UpdateOn);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// 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("ConfigType")) AddCommandParameter(dbCommand, "@ConfigType", _ConfigType);
|
||||
if (columnNames.ContainsCI("ConfigData")) AddCommandParameter(dbCommand, "@ConfigData", _ConfigData);
|
||||
if (columnNames.ContainsCI("CreateOn")) AddCommandParameter(dbCommand, "@CreateOn", _CreateOn);
|
||||
if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn);
|
||||
// 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("ConfigType")) AddCommandParameter(dbCommand, "@ConfigType", _ConfigType);
|
||||
if (columnNames.ContainsCI("ConfigData")) AddCommandParameter(dbCommand, "@ConfigData", _ConfigData);
|
||||
if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn);
|
||||
AddCommandParameter(dbCommand, "@Id", _Id);
|
||||
int executeNonQueryResult = dbCommand.ExecuteNonQuery();
|
||||
return (executeNonQueryResult == 1);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,235 @@
|
||||
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 Thu 22-Aug-2024 18:00:16
|
||||
//---------------------------------------------------------------------------
|
||||
namespace Saxonite.Net.Standard.Dbas.Internal.Core
|
||||
{
|
||||
internal class UserEligibility_Db : SaxDbDataItem
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Column definitions.
|
||||
public class ColumnsData
|
||||
{
|
||||
public ColumnDataInt64 _Id { get; } = new ColumnDataInt64("Id", true);
|
||||
public ColumnDataInt32 _UserAccountId { get; } = new ColumnDataInt32("UserAccountId");
|
||||
public ColumnDataInt32Nullable _RegionId { get; } = new ColumnDataInt32Nullable("RegionId");
|
||||
public ColumnDataInt16 _EligibilityType { get; } = new ColumnDataInt16("EligibilityType");
|
||||
public ColumnDataString _Info { get; } = new ColumnDataString("Info");
|
||||
public ColumnDataDateTimeNullable _ExpiresOn { get; } = new ColumnDataDateTimeNullable("ExpiresOn");
|
||||
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",
|
||||
"RegionId",
|
||||
"EligibilityType",
|
||||
"Info",
|
||||
"ExpiresOn",
|
||||
"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> fieldsNullable { get; } = new List<String>()
|
||||
{
|
||||
"RegionId",
|
||||
"ExpiresOn",
|
||||
};
|
||||
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
|
||||
{
|
||||
"CreateOn",
|
||||
"CreateBy",
|
||||
"CreateHost",
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
internal UserEligibility_Db (IDatabaseInfo dbInfo) : base(dbInfo)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public override String SchemaName { get; } = "dbo";
|
||||
public override String TableName { get; } = "UserEligibility";
|
||||
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? _RegionId { get { return Cols._RegionId.Value; } set { Cols._RegionId.Value = value; } }
|
||||
public Int16 _EligibilityType { get { return Cols._EligibilityType.Value; } set { Cols._EligibilityType.Value = value; } }
|
||||
public String _Info { get { return Cols._Info.Value; } set { Cols._Info.Value = value; } }
|
||||
public DateTime? _ExpiresOn { get { return Cols._ExpiresOn.Value; } set { Cols._ExpiresOn.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);
|
||||
_RegionId = GetFieldInt32Nullable(dbDataReader, "RegionId", _RegionId);
|
||||
_EligibilityType = GetFieldInt16(dbDataReader, "EligibilityType", _EligibilityType);
|
||||
_Info = GetFieldString(dbDataReader, "Info", _Info);
|
||||
_ExpiresOn = GetFieldDateTimeNullable(dbDataReader, "ExpiresOn", _ExpiresOn);
|
||||
_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("RegionId")) AddCommandParameter(dbCommand, "@RegionId", _RegionId);
|
||||
if (columnNames.ContainsCI("EligibilityType")) AddCommandParameter(dbCommand, "@EligibilityType", _EligibilityType);
|
||||
if (columnNames.ContainsCI("Info")) AddCommandParameter(dbCommand, "@Info", _Info);
|
||||
if (columnNames.ContainsCI("ExpiresOn")) AddCommandParameter(dbCommand, "@ExpiresOn", _ExpiresOn);
|
||||
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("RegionId")) AddCommandParameter(dbCommand, "@RegionId", _RegionId);
|
||||
if (columnNames.ContainsCI("EligibilityType")) AddCommandParameter(dbCommand, "@EligibilityType", _EligibilityType);
|
||||
if (columnNames.ContainsCI("Info")) AddCommandParameter(dbCommand, "@Info", _Info);
|
||||
if (columnNames.ContainsCI("ExpiresOn")) AddCommandParameter(dbCommand, "@ExpiresOn", _ExpiresOn);
|
||||
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,151 @@
|
||||
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 Thu 22-Aug-2024 18:00:16
|
||||
//---------------------------------------------------------------------------
|
||||
namespace Saxonite.Net.Standard.Dbas.Internal.Core
|
||||
{
|
||||
internal class UserOnline_Db : SaxDbDataItem
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Column definitions.
|
||||
public class ColumnsData
|
||||
{
|
||||
public ColumnDataInt32 _UserAccountId { get; } = new ColumnDataInt32("UserAccountId");
|
||||
public ColumnDataDateTime _OnlineAt { get; } = new ColumnDataDateTime("OnlineAt");
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
protected static List<String> fields { get; } = new List<String>()
|
||||
{
|
||||
"UserAccountId",
|
||||
"OnlineAt",
|
||||
};
|
||||
protected static List<String> fieldsId { get; } = new List<String>()
|
||||
{
|
||||
};
|
||||
protected static List<String> fieldsPrimary { get; } = new List<String>()
|
||||
{
|
||||
"UserAccountId",
|
||||
};
|
||||
protected static List<String> fieldsNullable { get; } = new List<String>()
|
||||
{
|
||||
};
|
||||
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
|
||||
{
|
||||
"CreateOn",
|
||||
"CreateBy",
|
||||
"CreateHost",
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
internal UserOnline_Db (IDatabaseInfo dbInfo) : base(dbInfo)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public override String SchemaName { get; } = "dbo";
|
||||
public override String TableName { get; } = "UserOnline";
|
||||
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 _UserAccountId { get { return Cols._UserAccountId.Value; } set { Cols._UserAccountId.Value = value; } }
|
||||
public DateTime _OnlineAt { get { return Cols._OnlineAt.Value; } set { Cols._OnlineAt.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)
|
||||
{
|
||||
_UserAccountId = GetFieldInt32(dbDataReader, "UserAccountId", _UserAccountId);
|
||||
_OnlineAt = GetFieldDateTime(dbDataReader, "OnlineAt", _OnlineAt);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert command.
|
||||
public override bool ExecuteInsertCommand (DbCommand dbCommand)
|
||||
{
|
||||
List<String> columnNames = ExistingColumnNamesNonId;
|
||||
// Construct query.
|
||||
String query =
|
||||
"INSERT INTO " + TableNameFmt + " " +
|
||||
"("+columnNames.Concat(",","[","]")+") ";
|
||||
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("OnlineAt")) AddCommandParameter(dbCommand, "@OnlineAt", _OnlineAt);
|
||||
// Execute insert command.
|
||||
bool commandSuccess = false;
|
||||
int executeNonQuery = dbCommand.ExecuteNonQuery();
|
||||
if (executeNonQuery == 1)
|
||||
{
|
||||
commandSuccess = true;
|
||||
}
|
||||
return commandSuccess;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update command.
|
||||
public override bool ExecuteUpdateCommand (DbCommand dbCommand)
|
||||
{
|
||||
// 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 UserAccountId=@UserAccountId;";
|
||||
}
|
||||
else
|
||||
{
|
||||
query += columnNames.Concat(", ", "", "=?") + " ";
|
||||
query += "WHERE UserAccountId=?;";
|
||||
}
|
||||
dbCommand.CommandText = query;
|
||||
Log(GetType().Name + ".ExecuteUpdateCommand", dbCommand.CommandText);
|
||||
// Populate parameters.
|
||||
dbCommand.Parameters.Clear();
|
||||
if (columnNames.ContainsCI("OnlineAt")) AddCommandParameter(dbCommand, "@OnlineAt", _OnlineAt);
|
||||
AddCommandParameter(dbCommand, "@UserAccountId", _UserAccountId);
|
||||
int executeNonQueryResult = dbCommand.ExecuteNonQuery();
|
||||
return (executeNonQueryResult == 1);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,233 @@
|
||||
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 Thu 22-Aug-2024 18:00:16
|
||||
//---------------------------------------------------------------------------
|
||||
namespace Saxonite.Net.Standard.Dbas.Internal.Core
|
||||
{
|
||||
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 _AdminComment { get; } = new ColumnDataString("AdminComment");
|
||||
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",
|
||||
"AdminComment",
|
||||
"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> fieldsNullable { get; } = new List<String>()
|
||||
{
|
||||
};
|
||||
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 _AdminComment { get { return Cols._AdminComment.Value; } set { Cols._AdminComment.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);
|
||||
_AdminComment = GetFieldString(dbDataReader, "AdminComment", _AdminComment);
|
||||
_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("AdminComment")) AddCommandParameter(dbCommand, "@AdminComment", _AdminComment);
|
||||
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("AdminComment")) AddCommandParameter(dbCommand, "@AdminComment", _AdminComment);
|
||||
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 Thu 22-Aug-2024 18:00:16
|
||||
//---------------------------------------------------------------------------
|
||||
namespace Saxonite.Net.Standard.Dbas.Internal.Core
|
||||
{
|
||||
internal class UserRole_Db : SaxDbDataItem
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Column definitions.
|
||||
public class ColumnsData
|
||||
{
|
||||
public ColumnDataInt64 _Id { get; } = new ColumnDataInt64("Id", true);
|
||||
public ColumnDataInt32 _UserAccountId { get; } = new ColumnDataInt32("UserAccountId");
|
||||
public ColumnDataString _UserRoleCode { get; } = new ColumnDataString("UserRoleCode");
|
||||
public ColumnDataDateTimeNullable _LastLoginAt { get; } = new ColumnDataDateTimeNullable("LastLoginAt");
|
||||
public ColumnDataDateTimeNullable _LastInvalidLoginAt { get; } = new ColumnDataDateTimeNullable("LastInvalidLoginAt");
|
||||
public ColumnDataInt16Nullable _InvalidLoginCount { get; } = new ColumnDataInt16Nullable("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",
|
||||
"UserAccountId",
|
||||
"UserRoleCode",
|
||||
"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> fieldsNullable { get; } = new List<String>()
|
||||
{
|
||||
"LastLoginAt",
|
||||
"LastInvalidLoginAt",
|
||||
"InvalidLoginCount",
|
||||
};
|
||||
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 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 String _UserRoleCode { get { return Cols._UserRoleCode.Value; } set { Cols._UserRoleCode.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 = GetFieldInt64(dbDataReader, "Id", _Id);
|
||||
_UserAccountId = GetFieldInt32(dbDataReader, "UserAccountId", _UserAccountId);
|
||||
_UserRoleCode = GetFieldString(dbDataReader, "UserRoleCode", _UserRoleCode);
|
||||
_LastLoginAt = GetFieldDateTimeNullable(dbDataReader, "LastLoginAt", _LastLoginAt);
|
||||
_LastInvalidLoginAt = GetFieldDateTimeNullable(dbDataReader, "LastInvalidLoginAt", _LastInvalidLoginAt);
|
||||
_InvalidLoginCount = GetFieldInt16Nullable(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("UserAccountId")) AddCommandParameter(dbCommand, "@UserAccountId", _UserAccountId);
|
||||
if (columnNames.ContainsCI("UserRoleCode")) AddCommandParameter(dbCommand, "@UserRoleCode", _UserRoleCode);
|
||||
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 = 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("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,176 @@
|
||||
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 Thu 22-Aug-2024 18:00:16
|
||||
//---------------------------------------------------------------------------
|
||||
namespace Saxonite.Net.Standard.Dbas.Internal.Core
|
||||
{
|
||||
internal class UserSession_Db : SaxDbDataItem
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Column definitions.
|
||||
public class ColumnsData
|
||||
{
|
||||
public ColumnDataInt32 _UserAccountId { get; } = new ColumnDataInt32("UserAccountId");
|
||||
public ColumnDataString _ActivityIndexIds { get; } = new ColumnDataString("ActivityIndexIds");
|
||||
public ColumnDataString _UserSessionData { get; } = new ColumnDataString("UserSessionData");
|
||||
public ColumnDataInt16 _Flags { get; } = new ColumnDataInt16("Flags");
|
||||
public ColumnDataDateTime _CreateOn { get; } = new ColumnDataDateTime("CreateOn");
|
||||
public ColumnDataDateTime _UpdateOn { get; } = new ColumnDataDateTime("UpdateOn");
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
protected static List<String> fields { get; } = new List<String>()
|
||||
{
|
||||
"UserAccountId",
|
||||
"ActivityIndexIds",
|
||||
"UserSessionData",
|
||||
"Flags",
|
||||
"CreateOn",
|
||||
"UpdateOn",
|
||||
};
|
||||
protected static List<String> fieldsId { get; } = new List<String>()
|
||||
{
|
||||
};
|
||||
protected static List<String> fieldsPrimary { get; } = new List<String>()
|
||||
{
|
||||
"UserAccountId",
|
||||
};
|
||||
protected static List<String> fieldsNullable { get; } = new List<String>()
|
||||
{
|
||||
"ActivityIndexIds",
|
||||
"UserSessionData",
|
||||
};
|
||||
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
|
||||
{
|
||||
"CreateOn",
|
||||
"CreateBy",
|
||||
"CreateHost",
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
internal UserSession_Db (IDatabaseInfo dbInfo) : base(dbInfo)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public override String SchemaName { get; } = "dbo";
|
||||
public override String TableName { get; } = "UserSession";
|
||||
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 _UserAccountId { get { return Cols._UserAccountId.Value; } set { Cols._UserAccountId.Value = value; } }
|
||||
public String _ActivityIndexIds { get { return Cols._ActivityIndexIds.Value; } set { Cols._ActivityIndexIds.Value = value; } }
|
||||
public String _UserSessionData { get { return Cols._UserSessionData.Value; } set { Cols._UserSessionData.Value = value; } }
|
||||
public Int16 _Flags { get { return Cols._Flags.Value; } set { Cols._Flags.Value = value; } }
|
||||
public DateTime _CreateOn { get { return Cols._CreateOn.Value; } set { Cols._CreateOn.Value = value; } }
|
||||
public DateTime _UpdateOn { get { return Cols._UpdateOn.Value; } set { Cols._UpdateOn.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)
|
||||
{
|
||||
_UserAccountId = GetFieldInt32(dbDataReader, "UserAccountId", _UserAccountId);
|
||||
_ActivityIndexIds = GetFieldString(dbDataReader, "ActivityIndexIds", _ActivityIndexIds);
|
||||
_UserSessionData = GetFieldString(dbDataReader, "UserSessionData", _UserSessionData);
|
||||
_Flags = GetFieldInt16(dbDataReader, "Flags", _Flags);
|
||||
_CreateOn = GetFieldDateTime(dbDataReader, "CreateOn", _CreateOn);
|
||||
_UpdateOn = GetFieldDateTime(dbDataReader, "UpdateOn", _UpdateOn);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert command.
|
||||
public override bool ExecuteInsertCommand (DbCommand dbCommand)
|
||||
{
|
||||
List<String> columnNames = ExistingColumnNamesNonId;
|
||||
// Construct query.
|
||||
String query =
|
||||
"INSERT INTO " + TableNameFmt + " " +
|
||||
"("+columnNames.Concat(",","[","]")+") ";
|
||||
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("ActivityIndexIds")) AddCommandParameter(dbCommand, "@ActivityIndexIds", _ActivityIndexIds);
|
||||
if (columnNames.ContainsCI("UserSessionData")) AddCommandParameter(dbCommand, "@UserSessionData", _UserSessionData);
|
||||
if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags);
|
||||
if (columnNames.ContainsCI("CreateOn")) AddCommandParameter(dbCommand, "@CreateOn", _CreateOn);
|
||||
if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn);
|
||||
// Execute insert command.
|
||||
bool commandSuccess = false;
|
||||
int executeNonQuery = dbCommand.ExecuteNonQuery();
|
||||
if (executeNonQuery == 1)
|
||||
{
|
||||
commandSuccess = true;
|
||||
}
|
||||
return commandSuccess;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update command.
|
||||
public override bool ExecuteUpdateCommand (DbCommand dbCommand)
|
||||
{
|
||||
// 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 UserAccountId=@UserAccountId;";
|
||||
}
|
||||
else
|
||||
{
|
||||
query += columnNames.Concat(", ", "", "=?") + " ";
|
||||
query += "WHERE UserAccountId=?;";
|
||||
}
|
||||
dbCommand.CommandText = query;
|
||||
Log(GetType().Name + ".ExecuteUpdateCommand", dbCommand.CommandText);
|
||||
// Populate parameters.
|
||||
dbCommand.Parameters.Clear();
|
||||
if (columnNames.ContainsCI("ActivityIndexIds")) AddCommandParameter(dbCommand, "@ActivityIndexIds", _ActivityIndexIds);
|
||||
if (columnNames.ContainsCI("UserSessionData")) AddCommandParameter(dbCommand, "@UserSessionData", _UserSessionData);
|
||||
if (columnNames.ContainsCI("Flags")) AddCommandParameter(dbCommand, "@Flags", _Flags);
|
||||
if (columnNames.ContainsCI("UpdateOn")) AddCommandParameter(dbCommand, "@UpdateOn", _UpdateOn);
|
||||
AddCommandParameter(dbCommand, "@UserAccountId", _UserAccountId);
|
||||
int executeNonQueryResult = dbCommand.ExecuteNonQuery();
|
||||
return (executeNonQueryResult == 1);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,289 @@
|
||||
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 Thu 22-Aug-2024 18:00:16
|
||||
//---------------------------------------------------------------------------
|
||||
namespace Saxonite.Net.Standard.Dbas.Internal.Core
|
||||
{
|
||||
internal class UserSportExperience_Db : SaxDbDataItem
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Column definitions.
|
||||
public class ColumnsData
|
||||
{
|
||||
public ColumnDataInt64 _Id { get; } = new ColumnDataInt64("Id", true);
|
||||
public ColumnDataInt64 _UserSportId { get; } = new ColumnDataInt64("UserSportId");
|
||||
public ColumnDataDateTime _PeriodFrom { get; } = new ColumnDataDateTime("PeriodFrom");
|
||||
public ColumnDataDateTimeNullable _PeriodTo { get; } = new ColumnDataDateTimeNullable("PeriodTo");
|
||||
public ColumnDataInt32 _OrganisationId { get; } = new ColumnDataInt32("OrganisationId");
|
||||
public ColumnDataString _OrganisationName { get; } = new ColumnDataString("OrganisationName");
|
||||
public ColumnDataString _Summary { get; } = new ColumnDataString("Summary");
|
||||
public ColumnDataString _Team { get; } = new ColumnDataString("Team");
|
||||
public ColumnDataString _League { get; } = new ColumnDataString("League");
|
||||
public ColumnDataString _Speciality { get; } = new ColumnDataString("Speciality");
|
||||
public ColumnDataString _SpecialitiesOther { get; } = new ColumnDataString("SpecialitiesOther");
|
||||
public ColumnDataInt32 _RegionIdNation { get; } = new ColumnDataInt32("RegionIdNation");
|
||||
public ColumnDataInt32 _RegionIdProvince { get; } = new ColumnDataInt32("RegionIdProvince");
|
||||
public ColumnDataString _Awards { get; } = new ColumnDataString("Awards");
|
||||
public ColumnDataString _UserSportExperienceData { get; } = new ColumnDataString("UserSportExperienceData");
|
||||
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",
|
||||
"UserSportId",
|
||||
"PeriodFrom",
|
||||
"PeriodTo",
|
||||
"OrganisationId",
|
||||
"OrganisationName",
|
||||
"Summary",
|
||||
"Team",
|
||||
"League",
|
||||
"Speciality",
|
||||
"SpecialitiesOther",
|
||||
"RegionIdNation",
|
||||
"RegionIdProvince",
|
||||
"Awards",
|
||||
"UserSportExperienceData",
|
||||
"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> fieldsNullable { get; } = new List<String>()
|
||||
{
|
||||
"PeriodTo",
|
||||
"Awards",
|
||||
};
|
||||
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
|
||||
{
|
||||
"CreateOn",
|
||||
"CreateBy",
|
||||
"CreateHost",
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
internal UserSportExperience_Db (IDatabaseInfo dbInfo) : base(dbInfo)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public override String SchemaName { get; } = "dbo";
|
||||
public override String TableName { get; } = "UserSportExperience";
|
||||
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 Int64 _UserSportId { get { return Cols._UserSportId.Value; } set { Cols._UserSportId.Value = value; } }
|
||||
public DateTime _PeriodFrom { get { return Cols._PeriodFrom.Value; } set { Cols._PeriodFrom.Value = value; } }
|
||||
public DateTime? _PeriodTo { get { return Cols._PeriodTo.Value; } set { Cols._PeriodTo.Value = value; } }
|
||||
public Int32 _OrganisationId { get { return Cols._OrganisationId.Value; } set { Cols._OrganisationId.Value = value; } }
|
||||
public String _OrganisationName { get { return Cols._OrganisationName.Value; } set { Cols._OrganisationName.Value = value; } }
|
||||
public String _Summary { get { return Cols._Summary.Value; } set { Cols._Summary.Value = value; } }
|
||||
public String _Team { get { return Cols._Team.Value; } set { Cols._Team.Value = value; } }
|
||||
public String _League { get { return Cols._League.Value; } set { Cols._League.Value = value; } }
|
||||
public String _Speciality { get { return Cols._Speciality.Value; } set { Cols._Speciality.Value = value; } }
|
||||
public String _SpecialitiesOther { get { return Cols._SpecialitiesOther.Value; } set { Cols._SpecialitiesOther.Value = value; } }
|
||||
public Int32 _RegionIdNation { get { return Cols._RegionIdNation.Value; } set { Cols._RegionIdNation.Value = value; } }
|
||||
public Int32 _RegionIdProvince { get { return Cols._RegionIdProvince.Value; } set { Cols._RegionIdProvince.Value = value; } }
|
||||
public String _Awards { get { return Cols._Awards.Value; } set { Cols._Awards.Value = value; } }
|
||||
public String _UserSportExperienceData { get { return Cols._UserSportExperienceData.Value; } set { Cols._UserSportExperienceData.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);
|
||||
_UserSportId = GetFieldInt64(dbDataReader, "UserSportId", _UserSportId);
|
||||
_PeriodFrom = GetFieldDateTime(dbDataReader, "PeriodFrom", _PeriodFrom);
|
||||
_PeriodTo = GetFieldDateTimeNullable(dbDataReader, "PeriodTo", _PeriodTo);
|
||||
_OrganisationId = GetFieldInt32(dbDataReader, "OrganisationId", _OrganisationId);
|
||||
_OrganisationName = GetFieldString(dbDataReader, "OrganisationName", _OrganisationName);
|
||||
_Summary = GetFieldString(dbDataReader, "Summary", _Summary);
|
||||
_Team = GetFieldString(dbDataReader, "Team", _Team);
|
||||
_League = GetFieldString(dbDataReader, "League", _League);
|
||||
_Speciality = GetFieldString(dbDataReader, "Speciality", _Speciality);
|
||||
_SpecialitiesOther = GetFieldString(dbDataReader, "SpecialitiesOther", _SpecialitiesOther);
|
||||
_RegionIdNation = GetFieldInt32(dbDataReader, "RegionIdNation", _RegionIdNation);
|
||||
_RegionIdProvince = GetFieldInt32(dbDataReader, "RegionIdProvince", _RegionIdProvince);
|
||||
_Awards = GetFieldString(dbDataReader, "Awards", _Awards);
|
||||
_UserSportExperienceData = GetFieldString(dbDataReader, "UserSportExperienceData", _UserSportExperienceData);
|
||||
_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("UserSportId")) AddCommandParameter(dbCommand, "@UserSportId", _UserSportId);
|
||||
if (columnNames.ContainsCI("PeriodFrom")) AddCommandParameter(dbCommand, "@PeriodFrom", _PeriodFrom);
|
||||
if (columnNames.ContainsCI("PeriodTo")) AddCommandParameter(dbCommand, "@PeriodTo", _PeriodTo);
|
||||
if (columnNames.ContainsCI("OrganisationId")) AddCommandParameter(dbCommand, "@OrganisationId", _OrganisationId);
|
||||
if (columnNames.ContainsCI("OrganisationName")) AddCommandParameter(dbCommand, "@OrganisationName", _OrganisationName);
|
||||
if (columnNames.ContainsCI("Summary")) AddCommandParameter(dbCommand, "@Summary", _Summary);
|
||||
if (columnNames.ContainsCI("Team")) AddCommandParameter(dbCommand, "@Team", _Team);
|
||||
if (columnNames.ContainsCI("League")) AddCommandParameter(dbCommand, "@League", _League);
|
||||
if (columnNames.ContainsCI("Speciality")) AddCommandParameter(dbCommand, "@Speciality", _Speciality);
|
||||
if (columnNames.ContainsCI("SpecialitiesOther")) AddCommandParameter(dbCommand, "@SpecialitiesOther", _SpecialitiesOther);
|
||||
if (columnNames.ContainsCI("RegionIdNation")) AddCommandParameter(dbCommand, "@RegionIdNation", _RegionIdNation);
|
||||
if (columnNames.ContainsCI("RegionIdProvince")) AddCommandParameter(dbCommand, "@RegionIdProvince", _RegionIdProvince);
|
||||
if (columnNames.ContainsCI("Awards")) AddCommandParameter(dbCommand, "@Awards", _Awards);
|
||||
if (columnNames.ContainsCI("UserSportExperienceData")) AddCommandParameter(dbCommand, "@UserSportExperienceData", _UserSportExperienceData);
|
||||
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("UserSportId")) AddCommandParameter(dbCommand, "@UserSportId", _UserSportId);
|
||||
if (columnNames.ContainsCI("PeriodFrom")) AddCommandParameter(dbCommand, "@PeriodFrom", _PeriodFrom);
|
||||
if (columnNames.ContainsCI("PeriodTo")) AddCommandParameter(dbCommand, "@PeriodTo", _PeriodTo);
|
||||
if (columnNames.ContainsCI("OrganisationId")) AddCommandParameter(dbCommand, "@OrganisationId", _OrganisationId);
|
||||
if (columnNames.ContainsCI("OrganisationName")) AddCommandParameter(dbCommand, "@OrganisationName", _OrganisationName);
|
||||
if (columnNames.ContainsCI("Summary")) AddCommandParameter(dbCommand, "@Summary", _Summary);
|
||||
if (columnNames.ContainsCI("Team")) AddCommandParameter(dbCommand, "@Team", _Team);
|
||||
if (columnNames.ContainsCI("League")) AddCommandParameter(dbCommand, "@League", _League);
|
||||
if (columnNames.ContainsCI("Speciality")) AddCommandParameter(dbCommand, "@Speciality", _Speciality);
|
||||
if (columnNames.ContainsCI("SpecialitiesOther")) AddCommandParameter(dbCommand, "@SpecialitiesOther", _SpecialitiesOther);
|
||||
if (columnNames.ContainsCI("RegionIdNation")) AddCommandParameter(dbCommand, "@RegionIdNation", _RegionIdNation);
|
||||
if (columnNames.ContainsCI("RegionIdProvince")) AddCommandParameter(dbCommand, "@RegionIdProvince", _RegionIdProvince);
|
||||
if (columnNames.ContainsCI("Awards")) AddCommandParameter(dbCommand, "@Awards", _Awards);
|
||||
if (columnNames.ContainsCI("UserSportExperienceData")) AddCommandParameter(dbCommand, "@UserSportExperienceData", _UserSportExperienceData);
|
||||
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,257 @@
|
||||
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 Thu 22-Aug-2024 18:00:16
|
||||
//---------------------------------------------------------------------------
|
||||
namespace Saxonite.Net.Standard.Dbas.Internal.Core
|
||||
{
|
||||
internal class UserSport_Db : SaxDbDataItem
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Column definitions.
|
||||
public class ColumnsData
|
||||
{
|
||||
public ColumnDataInt64 _Id { get; } = new ColumnDataInt64("Id", true);
|
||||
public ColumnDataInt32 _UserAccountId { get; } = new ColumnDataInt32("UserAccountId");
|
||||
public ColumnDataInt32 _SportId { get; } = new ColumnDataInt32("SportId");
|
||||
public ColumnDataString _About { get; } = new ColumnDataString("About");
|
||||
public ColumnDataString _ContactsData { get; } = new ColumnDataString("ContactsData");
|
||||
public ColumnDataInt16Nullable _Participating { get; } = new ColumnDataInt16Nullable("Participating");
|
||||
public ColumnDataInt16Nullable _Preparing { get; } = new ColumnDataInt16Nullable("Preparing");
|
||||
public ColumnDataInt16Nullable _Officiating { get; } = new ColumnDataInt16Nullable("Officiating");
|
||||
public ColumnDataString _UserSportData { get; } = new ColumnDataString("UserSportData");
|
||||
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",
|
||||
"SportId",
|
||||
"About",
|
||||
"ContactsData",
|
||||
"Participating",
|
||||
"Preparing",
|
||||
"Officiating",
|
||||
"UserSportData",
|
||||
"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> fieldsNullable { get; } = new List<String>()
|
||||
{
|
||||
"About",
|
||||
"ContactsData",
|
||||
"Participating",
|
||||
"Preparing",
|
||||
"Officiating",
|
||||
"UserSportData",
|
||||
};
|
||||
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
|
||||
{
|
||||
"CreateOn",
|
||||
"CreateBy",
|
||||
"CreateHost",
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
internal UserSport_Db (IDatabaseInfo dbInfo) : base(dbInfo)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public override String SchemaName { get; } = "dbo";
|
||||
public override String TableName { get; } = "UserSport";
|
||||
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 _SportId { get { return Cols._SportId.Value; } set { Cols._SportId.Value = value; } }
|
||||
public String _About { get { return Cols._About.Value; } set { Cols._About.Value = value; } }
|
||||
public String _ContactsData { get { return Cols._ContactsData.Value; } set { Cols._ContactsData.Value = value; } }
|
||||
public Int16? _Participating { get { return Cols._Participating.Value; } set { Cols._Participating.Value = value; } }
|
||||
public Int16? _Preparing { get { return Cols._Preparing.Value; } set { Cols._Preparing.Value = value; } }
|
||||
public Int16? _Officiating { get { return Cols._Officiating.Value; } set { Cols._Officiating.Value = value; } }
|
||||
public String _UserSportData { get { return Cols._UserSportData.Value; } set { Cols._UserSportData.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);
|
||||
_SportId = GetFieldInt32(dbDataReader, "SportId", _SportId);
|
||||
_About = GetFieldString(dbDataReader, "About", _About);
|
||||
_ContactsData = GetFieldString(dbDataReader, "ContactsData", _ContactsData);
|
||||
_Participating = GetFieldInt16Nullable(dbDataReader, "Participating", _Participating);
|
||||
_Preparing = GetFieldInt16Nullable(dbDataReader, "Preparing", _Preparing);
|
||||
_Officiating = GetFieldInt16Nullable(dbDataReader, "Officiating", _Officiating);
|
||||
_UserSportData = GetFieldString(dbDataReader, "UserSportData", _UserSportData);
|
||||
_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("SportId")) AddCommandParameter(dbCommand, "@SportId", _SportId);
|
||||
if (columnNames.ContainsCI("About")) AddCommandParameter(dbCommand, "@About", _About);
|
||||
if (columnNames.ContainsCI("ContactsData")) AddCommandParameter(dbCommand, "@ContactsData", _ContactsData);
|
||||
if (columnNames.ContainsCI("Participating")) AddCommandParameter(dbCommand, "@Participating", _Participating);
|
||||
if (columnNames.ContainsCI("Preparing")) AddCommandParameter(dbCommand, "@Preparing", _Preparing);
|
||||
if (columnNames.ContainsCI("Officiating")) AddCommandParameter(dbCommand, "@Officiating", _Officiating);
|
||||
if (columnNames.ContainsCI("UserSportData")) AddCommandParameter(dbCommand, "@UserSportData", _UserSportData);
|
||||
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("SportId")) AddCommandParameter(dbCommand, "@SportId", _SportId);
|
||||
if (columnNames.ContainsCI("About")) AddCommandParameter(dbCommand, "@About", _About);
|
||||
if (columnNames.ContainsCI("ContactsData")) AddCommandParameter(dbCommand, "@ContactsData", _ContactsData);
|
||||
if (columnNames.ContainsCI("Participating")) AddCommandParameter(dbCommand, "@Participating", _Participating);
|
||||
if (columnNames.ContainsCI("Preparing")) AddCommandParameter(dbCommand, "@Preparing", _Preparing);
|
||||
if (columnNames.ContainsCI("Officiating")) AddCommandParameter(dbCommand, "@Officiating", _Officiating);
|
||||
if (columnNames.ContainsCI("UserSportData")) AddCommandParameter(dbCommand, "@UserSportData", _UserSportData);
|
||||
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.App;
|
||||
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 Tue 27-Aug-2024 19:41:31
|
||||
//---------------------------------------------------------------------------
|
||||
namespace Saxonite.Net.Standard.Dbas.Internal.Reference
|
||||
{
|
||||
internal class Golf_UsgaCountry_Db : SaxDbDataItem
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Column definitions.
|
||||
public class ColumnsData
|
||||
{
|
||||
public ColumnDataInt64 _Id { get; } = new ColumnDataInt64("Id", true);
|
||||
public ColumnDataString _CountryCode { get; } = new ColumnDataString("CountryCode");
|
||||
public ColumnDataString _CountryName { get; } = new ColumnDataString("CountryName");
|
||||
public ColumnDataString _EntCountryCode { get; } = new ColumnDataString("EntCountryCode");
|
||||
public ColumnDataDateTimeNullable _ProvincesUpdateAt { get; } = new ColumnDataDateTimeNullable("ProvincesUpdateAt");
|
||||
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",
|
||||
"CountryCode",
|
||||
"CountryName",
|
||||
"EntCountryCode",
|
||||
"ProvincesUpdateAt",
|
||||
"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> fieldsNullable { get; } = new List<String>()
|
||||
{
|
||||
"EntCountryCode",
|
||||
"ProvincesUpdateAt",
|
||||
};
|
||||
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
|
||||
{
|
||||
"CreateOn",
|
||||
"CreateBy",
|
||||
"CreateHost",
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
internal Golf_UsgaCountry_Db (IDatabaseInfo dbInfo) : base(dbInfo)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public override String SchemaName { get; } = "golf";
|
||||
public override String TableName { get; } = "UsgaCountry";
|
||||
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 String _CountryCode { get { return Cols._CountryCode.Value; } set { Cols._CountryCode.Value = value; } }
|
||||
public String _CountryName { get { return Cols._CountryName.Value; } set { Cols._CountryName.Value = value; } }
|
||||
public String _EntCountryCode { get { return Cols._EntCountryCode.Value; } set { Cols._EntCountryCode.Value = value; } }
|
||||
public DateTime? _ProvincesUpdateAt { get { return Cols._ProvincesUpdateAt.Value; } set { Cols._ProvincesUpdateAt.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); } }
|
||||
public List<String> UpdatableColumns { get { return ExistingColumnNamesNonId.Where(item => !fieldsPrimary.ContainsCI(item) && !fieldsIgnoreOnUpdate.ContainsCI(item)).ToList(); } }
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// 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);
|
||||
_CountryCode = GetFieldString(dbDataReader, "CountryCode", _CountryCode);
|
||||
_CountryName = GetFieldString(dbDataReader, "CountryName", _CountryName);
|
||||
_EntCountryCode = GetFieldString(dbDataReader, "EntCountryCode", _EntCountryCode);
|
||||
_ProvincesUpdateAt = GetFieldDateTimeNullable(dbDataReader, "ProvincesUpdateAt", _ProvincesUpdateAt);
|
||||
_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("CountryCode")) AddCommandParameter(dbCommand, "@CountryCode", _CountryCode);
|
||||
if (columnNames.ContainsCI("CountryName")) AddCommandParameter(dbCommand, "@CountryName", _CountryName);
|
||||
if (columnNames.ContainsCI("EntCountryCode")) AddCommandParameter(dbCommand, "@EntCountryCode", _EntCountryCode);
|
||||
if (columnNames.ContainsCI("ProvincesUpdateAt")) AddCommandParameter(dbCommand, "@ProvincesUpdateAt", _ProvincesUpdateAt);
|
||||
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, List<String> columnsToUpdate = null)
|
||||
{
|
||||
// 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 = (columnsToUpdate?.Any() ?? false ? columnsToUpdate : UpdatableColumns).Where(col => UpdatableColumns.ContainsCI(col)).ToList();
|
||||
if (!columnNames.Any())
|
||||
{
|
||||
SaLogger.Warn($"{SysUtil.Fn} No columns to update. [{GetType().Name}]");
|
||||
return false;
|
||||
}
|
||||
// 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("CountryCode")) AddCommandParameter(dbCommand, "@CountryCode", _CountryCode);
|
||||
if (columnNames.ContainsCI("CountryName")) AddCommandParameter(dbCommand, "@CountryName", _CountryName);
|
||||
if (columnNames.ContainsCI("EntCountryCode")) AddCommandParameter(dbCommand, "@EntCountryCode", _EntCountryCode);
|
||||
if (columnNames.ContainsCI("ProvincesUpdateAt")) AddCommandParameter(dbCommand, "@ProvincesUpdateAt", _ProvincesUpdateAt);
|
||||
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,309 @@
|
||||
using Microsoft.Data.SqlClient;
|
||||
using Sarand.Net.Standard.Base.App;
|
||||
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 Tue 27-Aug-2024 19:41:31
|
||||
//---------------------------------------------------------------------------
|
||||
namespace Saxonite.Net.Standard.Dbas.Internal.Reference
|
||||
{
|
||||
internal class Golf_UsgaCourse_Db : SaxDbDataItem
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Column definitions.
|
||||
public class ColumnsData
|
||||
{
|
||||
public ColumnDataInt64 _Id { get; } = new ColumnDataInt64("Id", true);
|
||||
public ColumnDataInt64 _FacilityId { get; } = new ColumnDataInt64("FacilityId");
|
||||
public ColumnDataInt64 _UsgaCourseId { get; } = new ColumnDataInt64("UsgaCourseId");
|
||||
public ColumnDataInt64 _LegacyCrpCourseId { get; } = new ColumnDataInt64("LegacyCrpCourseId");
|
||||
public ColumnDataString _Caption { get; } = new ColumnDataString("Caption");
|
||||
public ColumnDataString _CourseName { get; } = new ColumnDataString("CourseName");
|
||||
public ColumnDataString _FullName { get; } = new ColumnDataString("FullName");
|
||||
public ColumnDataString _Address1 { get; } = new ColumnDataString("Address1");
|
||||
public ColumnDataString _Address2 { get; } = new ColumnDataString("Address2");
|
||||
public ColumnDataString _City { get; } = new ColumnDataString("City");
|
||||
public ColumnDataString _PostalCode { get; } = new ColumnDataString("PostalCode");
|
||||
public ColumnDataDecimalNullable _Latitude { get; } = new ColumnDataDecimalNullable("Latitude");
|
||||
public ColumnDataDecimalNullable _Longitude { get; } = new ColumnDataDecimalNullable("Longitude");
|
||||
public ColumnDataString _Email { get; } = new ColumnDataString("Email");
|
||||
public ColumnDataString _Telephone { get; } = new ColumnDataString("Telephone");
|
||||
public ColumnDataDateTimeNullable _MarkersUpdateAt { get; } = new ColumnDataDateTimeNullable("MarkersUpdateAt");
|
||||
public ColumnDataString _MarkersData { get; } = new ColumnDataString("MarkersData");
|
||||
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",
|
||||
"FacilityId",
|
||||
"UsgaCourseId",
|
||||
"LegacyCrpCourseId",
|
||||
"Caption",
|
||||
"CourseName",
|
||||
"FullName",
|
||||
"Address1",
|
||||
"Address2",
|
||||
"City",
|
||||
"PostalCode",
|
||||
"Latitude",
|
||||
"Longitude",
|
||||
"Email",
|
||||
"Telephone",
|
||||
"MarkersUpdateAt",
|
||||
"MarkersData",
|
||||
"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> fieldsNullable { get; } = new List<String>()
|
||||
{
|
||||
"Latitude",
|
||||
"Longitude",
|
||||
"MarkersUpdateAt",
|
||||
};
|
||||
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
|
||||
{
|
||||
"CreateOn",
|
||||
"CreateBy",
|
||||
"CreateHost",
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
internal Golf_UsgaCourse_Db (IDatabaseInfo dbInfo) : base(dbInfo)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public override String SchemaName { get; } = "golf";
|
||||
public override String TableName { get; } = "UsgaCourse";
|
||||
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 Int64 _FacilityId { get { return Cols._FacilityId.Value; } set { Cols._FacilityId.Value = value; } }
|
||||
public Int64 _UsgaCourseId { get { return Cols._UsgaCourseId.Value; } set { Cols._UsgaCourseId.Value = value; } }
|
||||
public Int64 _LegacyCrpCourseId { get { return Cols._LegacyCrpCourseId.Value; } set { Cols._LegacyCrpCourseId.Value = value; } }
|
||||
public String _Caption { get { return Cols._Caption.Value; } set { Cols._Caption.Value = value; } }
|
||||
public String _CourseName { get { return Cols._CourseName.Value; } set { Cols._CourseName.Value = value; } }
|
||||
public String _FullName { get { return Cols._FullName.Value; } set { Cols._FullName.Value = value; } }
|
||||
public String _Address1 { get { return Cols._Address1.Value; } set { Cols._Address1.Value = value; } }
|
||||
public String _Address2 { get { return Cols._Address2.Value; } set { Cols._Address2.Value = value; } }
|
||||
public String _City { get { return Cols._City.Value; } set { Cols._City.Value = value; } }
|
||||
public String _PostalCode { get { return Cols._PostalCode.Value; } set { Cols._PostalCode.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 String _Email { get { return Cols._Email.Value; } set { Cols._Email.Value = value; } }
|
||||
public String _Telephone { get { return Cols._Telephone.Value; } set { Cols._Telephone.Value = value; } }
|
||||
public DateTime? _MarkersUpdateAt { get { return Cols._MarkersUpdateAt.Value; } set { Cols._MarkersUpdateAt.Value = value; } }
|
||||
public String _MarkersData { get { return Cols._MarkersData.Value; } set { Cols._MarkersData.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); } }
|
||||
public List<String> UpdatableColumns { get { return ExistingColumnNamesNonId.Where(item => !fieldsPrimary.ContainsCI(item) && !fieldsIgnoreOnUpdate.ContainsCI(item)).ToList(); } }
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// 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);
|
||||
_FacilityId = GetFieldInt64(dbDataReader, "FacilityId", _FacilityId);
|
||||
_UsgaCourseId = GetFieldInt64(dbDataReader, "UsgaCourseId", _UsgaCourseId);
|
||||
_LegacyCrpCourseId = GetFieldInt64(dbDataReader, "LegacyCrpCourseId", _LegacyCrpCourseId);
|
||||
_Caption = GetFieldString(dbDataReader, "Caption", _Caption);
|
||||
_CourseName = GetFieldString(dbDataReader, "CourseName", _CourseName);
|
||||
_FullName = GetFieldString(dbDataReader, "FullName", _FullName);
|
||||
_Address1 = GetFieldString(dbDataReader, "Address1", _Address1);
|
||||
_Address2 = GetFieldString(dbDataReader, "Address2", _Address2);
|
||||
_City = GetFieldString(dbDataReader, "City", _City);
|
||||
_PostalCode = GetFieldString(dbDataReader, "PostalCode", _PostalCode);
|
||||
_Latitude = GetFieldDecimalNullable(dbDataReader, "Latitude", _Latitude);
|
||||
_Longitude = GetFieldDecimalNullable(dbDataReader, "Longitude", _Longitude);
|
||||
_Email = GetFieldString(dbDataReader, "Email", _Email);
|
||||
_Telephone = GetFieldString(dbDataReader, "Telephone", _Telephone);
|
||||
_MarkersUpdateAt = GetFieldDateTimeNullable(dbDataReader, "MarkersUpdateAt", _MarkersUpdateAt);
|
||||
_MarkersData = GetFieldString(dbDataReader, "MarkersData", _MarkersData);
|
||||
_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("FacilityId")) AddCommandParameter(dbCommand, "@FacilityId", _FacilityId);
|
||||
if (columnNames.ContainsCI("UsgaCourseId")) AddCommandParameter(dbCommand, "@UsgaCourseId", _UsgaCourseId);
|
||||
if (columnNames.ContainsCI("LegacyCrpCourseId")) AddCommandParameter(dbCommand, "@LegacyCrpCourseId", _LegacyCrpCourseId);
|
||||
if (columnNames.ContainsCI("Caption")) AddCommandParameter(dbCommand, "@Caption", _Caption);
|
||||
if (columnNames.ContainsCI("CourseName")) AddCommandParameter(dbCommand, "@CourseName", _CourseName);
|
||||
if (columnNames.ContainsCI("FullName")) AddCommandParameter(dbCommand, "@FullName", _FullName);
|
||||
if (columnNames.ContainsCI("Address1")) AddCommandParameter(dbCommand, "@Address1", _Address1);
|
||||
if (columnNames.ContainsCI("Address2")) AddCommandParameter(dbCommand, "@Address2", _Address2);
|
||||
if (columnNames.ContainsCI("City")) AddCommandParameter(dbCommand, "@City", _City);
|
||||
if (columnNames.ContainsCI("PostalCode")) AddCommandParameter(dbCommand, "@PostalCode", _PostalCode);
|
||||
if (columnNames.ContainsCI("Latitude")) AddCommandParameter(dbCommand, "@Latitude", _Latitude);
|
||||
if (columnNames.ContainsCI("Longitude")) AddCommandParameter(dbCommand, "@Longitude", _Longitude);
|
||||
if (columnNames.ContainsCI("Email")) AddCommandParameter(dbCommand, "@Email", _Email);
|
||||
if (columnNames.ContainsCI("Telephone")) AddCommandParameter(dbCommand, "@Telephone", _Telephone);
|
||||
if (columnNames.ContainsCI("MarkersUpdateAt")) AddCommandParameter(dbCommand, "@MarkersUpdateAt", _MarkersUpdateAt);
|
||||
if (columnNames.ContainsCI("MarkersData")) AddCommandParameter(dbCommand, "@MarkersData", _MarkersData);
|
||||
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, List<String> columnsToUpdate = null)
|
||||
{
|
||||
// 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 = (columnsToUpdate?.Any() ?? false ? columnsToUpdate : UpdatableColumns).Where(col => UpdatableColumns.ContainsCI(col)).ToList();
|
||||
if (!columnNames.Any())
|
||||
{
|
||||
SaLogger.Warn($"{SysUtil.Fn} No columns to update. [{GetType().Name}]");
|
||||
return false;
|
||||
}
|
||||
// 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("FacilityId")) AddCommandParameter(dbCommand, "@FacilityId", _FacilityId);
|
||||
if (columnNames.ContainsCI("UsgaCourseId")) AddCommandParameter(dbCommand, "@UsgaCourseId", _UsgaCourseId);
|
||||
if (columnNames.ContainsCI("LegacyCrpCourseId")) AddCommandParameter(dbCommand, "@LegacyCrpCourseId", _LegacyCrpCourseId);
|
||||
if (columnNames.ContainsCI("Caption")) AddCommandParameter(dbCommand, "@Caption", _Caption);
|
||||
if (columnNames.ContainsCI("CourseName")) AddCommandParameter(dbCommand, "@CourseName", _CourseName);
|
||||
if (columnNames.ContainsCI("FullName")) AddCommandParameter(dbCommand, "@FullName", _FullName);
|
||||
if (columnNames.ContainsCI("Address1")) AddCommandParameter(dbCommand, "@Address1", _Address1);
|
||||
if (columnNames.ContainsCI("Address2")) AddCommandParameter(dbCommand, "@Address2", _Address2);
|
||||
if (columnNames.ContainsCI("City")) AddCommandParameter(dbCommand, "@City", _City);
|
||||
if (columnNames.ContainsCI("PostalCode")) AddCommandParameter(dbCommand, "@PostalCode", _PostalCode);
|
||||
if (columnNames.ContainsCI("Latitude")) AddCommandParameter(dbCommand, "@Latitude", _Latitude);
|
||||
if (columnNames.ContainsCI("Longitude")) AddCommandParameter(dbCommand, "@Longitude", _Longitude);
|
||||
if (columnNames.ContainsCI("Email")) AddCommandParameter(dbCommand, "@Email", _Email);
|
||||
if (columnNames.ContainsCI("Telephone")) AddCommandParameter(dbCommand, "@Telephone", _Telephone);
|
||||
if (columnNames.ContainsCI("MarkersUpdateAt")) AddCommandParameter(dbCommand, "@MarkersUpdateAt", _MarkersUpdateAt);
|
||||
if (columnNames.ContainsCI("MarkersData")) AddCommandParameter(dbCommand, "@MarkersData", _MarkersData);
|
||||
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,278 @@
|
||||
using Microsoft.Data.SqlClient;
|
||||
using Sarand.Net.Standard.Base.App;
|
||||
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 Tue 27-Aug-2024 19:41:31
|
||||
//---------------------------------------------------------------------------
|
||||
namespace Saxonite.Net.Standard.Dbas.Internal.Reference
|
||||
{
|
||||
internal class Golf_UsgaFacility_Db : SaxDbDataItem
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Column definitions.
|
||||
public class ColumnsData
|
||||
{
|
||||
public ColumnDataInt64 _Id { get; } = new ColumnDataInt64("Id", true);
|
||||
public ColumnDataInt64 _ProvinceId { get; } = new ColumnDataInt64("ProvinceId");
|
||||
public ColumnDataInt64 _UsgaFacilityId { get; } = new ColumnDataInt64("UsgaFacilityId");
|
||||
public ColumnDataString _FacilityName { get; } = new ColumnDataString("FacilityName");
|
||||
public ColumnDataString _Address1 { get; } = new ColumnDataString("Address1");
|
||||
public ColumnDataString _Address2 { get; } = new ColumnDataString("Address2");
|
||||
public ColumnDataString _City { get; } = new ColumnDataString("City");
|
||||
public ColumnDataString _PostalCode { get; } = new ColumnDataString("PostalCode");
|
||||
public ColumnDataDecimalNullable _Latitude { get; } = new ColumnDataDecimalNullable("Latitude");
|
||||
public ColumnDataDecimalNullable _Longitude { get; } = new ColumnDataDecimalNullable("Longitude");
|
||||
public ColumnDataString _Email { get; } = new ColumnDataString("Email");
|
||||
public ColumnDataString _Telephone { get; } = new ColumnDataString("Telephone");
|
||||
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",
|
||||
"ProvinceId",
|
||||
"UsgaFacilityId",
|
||||
"FacilityName",
|
||||
"Address1",
|
||||
"Address2",
|
||||
"City",
|
||||
"PostalCode",
|
||||
"Latitude",
|
||||
"Longitude",
|
||||
"Email",
|
||||
"Telephone",
|
||||
"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> fieldsNullable { get; } = new List<String>()
|
||||
{
|
||||
"Latitude",
|
||||
"Longitude",
|
||||
};
|
||||
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
|
||||
{
|
||||
"CreateOn",
|
||||
"CreateBy",
|
||||
"CreateHost",
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
internal Golf_UsgaFacility_Db (IDatabaseInfo dbInfo) : base(dbInfo)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public override String SchemaName { get; } = "golf";
|
||||
public override String TableName { get; } = "UsgaFacility";
|
||||
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 Int64 _ProvinceId { get { return Cols._ProvinceId.Value; } set { Cols._ProvinceId.Value = value; } }
|
||||
public Int64 _UsgaFacilityId { get { return Cols._UsgaFacilityId.Value; } set { Cols._UsgaFacilityId.Value = value; } }
|
||||
public String _FacilityName { get { return Cols._FacilityName.Value; } set { Cols._FacilityName.Value = value; } }
|
||||
public String _Address1 { get { return Cols._Address1.Value; } set { Cols._Address1.Value = value; } }
|
||||
public String _Address2 { get { return Cols._Address2.Value; } set { Cols._Address2.Value = value; } }
|
||||
public String _City { get { return Cols._City.Value; } set { Cols._City.Value = value; } }
|
||||
public String _PostalCode { get { return Cols._PostalCode.Value; } set { Cols._PostalCode.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 String _Email { get { return Cols._Email.Value; } set { Cols._Email.Value = value; } }
|
||||
public String _Telephone { get { return Cols._Telephone.Value; } set { Cols._Telephone.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); } }
|
||||
public List<String> UpdatableColumns { get { return ExistingColumnNamesNonId.Where(item => !fieldsPrimary.ContainsCI(item) && !fieldsIgnoreOnUpdate.ContainsCI(item)).ToList(); } }
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// 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);
|
||||
_ProvinceId = GetFieldInt64(dbDataReader, "ProvinceId", _ProvinceId);
|
||||
_UsgaFacilityId = GetFieldInt64(dbDataReader, "UsgaFacilityId", _UsgaFacilityId);
|
||||
_FacilityName = GetFieldString(dbDataReader, "FacilityName", _FacilityName);
|
||||
_Address1 = GetFieldString(dbDataReader, "Address1", _Address1);
|
||||
_Address2 = GetFieldString(dbDataReader, "Address2", _Address2);
|
||||
_City = GetFieldString(dbDataReader, "City", _City);
|
||||
_PostalCode = GetFieldString(dbDataReader, "PostalCode", _PostalCode);
|
||||
_Latitude = GetFieldDecimalNullable(dbDataReader, "Latitude", _Latitude);
|
||||
_Longitude = GetFieldDecimalNullable(dbDataReader, "Longitude", _Longitude);
|
||||
_Email = GetFieldString(dbDataReader, "Email", _Email);
|
||||
_Telephone = GetFieldString(dbDataReader, "Telephone", _Telephone);
|
||||
_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("ProvinceId")) AddCommandParameter(dbCommand, "@ProvinceId", _ProvinceId);
|
||||
if (columnNames.ContainsCI("UsgaFacilityId")) AddCommandParameter(dbCommand, "@UsgaFacilityId", _UsgaFacilityId);
|
||||
if (columnNames.ContainsCI("FacilityName")) AddCommandParameter(dbCommand, "@FacilityName", _FacilityName);
|
||||
if (columnNames.ContainsCI("Address1")) AddCommandParameter(dbCommand, "@Address1", _Address1);
|
||||
if (columnNames.ContainsCI("Address2")) AddCommandParameter(dbCommand, "@Address2", _Address2);
|
||||
if (columnNames.ContainsCI("City")) AddCommandParameter(dbCommand, "@City", _City);
|
||||
if (columnNames.ContainsCI("PostalCode")) AddCommandParameter(dbCommand, "@PostalCode", _PostalCode);
|
||||
if (columnNames.ContainsCI("Latitude")) AddCommandParameter(dbCommand, "@Latitude", _Latitude);
|
||||
if (columnNames.ContainsCI("Longitude")) AddCommandParameter(dbCommand, "@Longitude", _Longitude);
|
||||
if (columnNames.ContainsCI("Email")) AddCommandParameter(dbCommand, "@Email", _Email);
|
||||
if (columnNames.ContainsCI("Telephone")) AddCommandParameter(dbCommand, "@Telephone", _Telephone);
|
||||
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, List<String> columnsToUpdate = null)
|
||||
{
|
||||
// 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 = (columnsToUpdate?.Any() ?? false ? columnsToUpdate : UpdatableColumns).Where(col => UpdatableColumns.ContainsCI(col)).ToList();
|
||||
if (!columnNames.Any())
|
||||
{
|
||||
SaLogger.Warn($"{SysUtil.Fn} No columns to update. [{GetType().Name}]");
|
||||
return false;
|
||||
}
|
||||
// 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("ProvinceId")) AddCommandParameter(dbCommand, "@ProvinceId", _ProvinceId);
|
||||
if (columnNames.ContainsCI("UsgaFacilityId")) AddCommandParameter(dbCommand, "@UsgaFacilityId", _UsgaFacilityId);
|
||||
if (columnNames.ContainsCI("FacilityName")) AddCommandParameter(dbCommand, "@FacilityName", _FacilityName);
|
||||
if (columnNames.ContainsCI("Address1")) AddCommandParameter(dbCommand, "@Address1", _Address1);
|
||||
if (columnNames.ContainsCI("Address2")) AddCommandParameter(dbCommand, "@Address2", _Address2);
|
||||
if (columnNames.ContainsCI("City")) AddCommandParameter(dbCommand, "@City", _City);
|
||||
if (columnNames.ContainsCI("PostalCode")) AddCommandParameter(dbCommand, "@PostalCode", _PostalCode);
|
||||
if (columnNames.ContainsCI("Latitude")) AddCommandParameter(dbCommand, "@Latitude", _Latitude);
|
||||
if (columnNames.ContainsCI("Longitude")) AddCommandParameter(dbCommand, "@Longitude", _Longitude);
|
||||
if (columnNames.ContainsCI("Email")) AddCommandParameter(dbCommand, "@Email", _Email);
|
||||
if (columnNames.ContainsCI("Telephone")) AddCommandParameter(dbCommand, "@Telephone", _Telephone);
|
||||
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,282 @@
|
||||
using Microsoft.Data.SqlClient;
|
||||
using Sarand.Net.Standard.Base.App;
|
||||
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 Tue 27-Aug-2024 19:41:31
|
||||
//---------------------------------------------------------------------------
|
||||
namespace Saxonite.Net.Standard.Dbas.Internal.Reference
|
||||
{
|
||||
internal class Golf_UsgaMarker_Db : SaxDbDataItem
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Column definitions.
|
||||
public class ColumnsData
|
||||
{
|
||||
public ColumnDataInt64 _Id { get; } = new ColumnDataInt64("Id", true);
|
||||
public ColumnDataInt64 _CourseId { get; } = new ColumnDataInt64("CourseId");
|
||||
public ColumnDataInt64 _UsgaMarkerId { get; } = new ColumnDataInt64("UsgaMarkerId");
|
||||
public ColumnDataString _Caption { get; } = new ColumnDataString("Caption");
|
||||
public ColumnDataInt16 _Holes { get; } = new ColumnDataInt16("Holes");
|
||||
public ColumnDataString _HolesCaption { get; } = new ColumnDataString("HolesCaption");
|
||||
public ColumnDataString _Tee { get; } = new ColumnDataString("Tee");
|
||||
public ColumnDataString _Gender { get; } = new ColumnDataString("Gender");
|
||||
public ColumnDataInt16 _SlopeRating { get; } = new ColumnDataInt16("SlopeRating");
|
||||
public ColumnDataInt16 _Par { get; } = new ColumnDataInt16("Par");
|
||||
public ColumnDataDecimal _CourseRating { get; } = new ColumnDataDecimal("CourseRating");
|
||||
public ColumnDataDecimal _BogeyRating { get; } = new ColumnDataDecimal("BogeyRating");
|
||||
public ColumnDataInt16 _Length { get; } = new ColumnDataInt16("Length");
|
||||
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",
|
||||
"CourseId",
|
||||
"UsgaMarkerId",
|
||||
"Caption",
|
||||
"Holes",
|
||||
"HolesCaption",
|
||||
"Tee",
|
||||
"Gender",
|
||||
"SlopeRating",
|
||||
"Par",
|
||||
"CourseRating",
|
||||
"BogeyRating",
|
||||
"Length",
|
||||
"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> fieldsNullable { get; } = new List<String>()
|
||||
{
|
||||
};
|
||||
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
|
||||
{
|
||||
"CreateOn",
|
||||
"CreateBy",
|
||||
"CreateHost",
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
internal Golf_UsgaMarker_Db (IDatabaseInfo dbInfo) : base(dbInfo)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public override String SchemaName { get; } = "golf";
|
||||
public override String TableName { get; } = "UsgaMarker";
|
||||
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 Int64 _CourseId { get { return Cols._CourseId.Value; } set { Cols._CourseId.Value = value; } }
|
||||
public Int64 _UsgaMarkerId { get { return Cols._UsgaMarkerId.Value; } set { Cols._UsgaMarkerId.Value = value; } }
|
||||
public String _Caption { get { return Cols._Caption.Value; } set { Cols._Caption.Value = value; } }
|
||||
public Int16 _Holes { get { return Cols._Holes.Value; } set { Cols._Holes.Value = value; } }
|
||||
public String _HolesCaption { get { return Cols._HolesCaption.Value; } set { Cols._HolesCaption.Value = value; } }
|
||||
public String _Tee { get { return Cols._Tee.Value; } set { Cols._Tee.Value = value; } }
|
||||
public String _Gender { get { return Cols._Gender.Value; } set { Cols._Gender.Value = value; } }
|
||||
public Int16 _SlopeRating { get { return Cols._SlopeRating.Value; } set { Cols._SlopeRating.Value = value; } }
|
||||
public Int16 _Par { get { return Cols._Par.Value; } set { Cols._Par.Value = value; } }
|
||||
public Decimal _CourseRating { get { return Cols._CourseRating.Value; } set { Cols._CourseRating.Value = value; } }
|
||||
public Decimal _BogeyRating { get { return Cols._BogeyRating.Value; } set { Cols._BogeyRating.Value = value; } }
|
||||
public Int16 _Length { get { return Cols._Length.Value; } set { Cols._Length.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); } }
|
||||
public List<String> UpdatableColumns { get { return ExistingColumnNamesNonId.Where(item => !fieldsPrimary.ContainsCI(item) && !fieldsIgnoreOnUpdate.ContainsCI(item)).ToList(); } }
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// 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);
|
||||
_CourseId = GetFieldInt64(dbDataReader, "CourseId", _CourseId);
|
||||
_UsgaMarkerId = GetFieldInt64(dbDataReader, "UsgaMarkerId", _UsgaMarkerId);
|
||||
_Caption = GetFieldString(dbDataReader, "Caption", _Caption);
|
||||
_Holes = GetFieldInt16(dbDataReader, "Holes", _Holes);
|
||||
_HolesCaption = GetFieldString(dbDataReader, "HolesCaption", _HolesCaption);
|
||||
_Tee = GetFieldString(dbDataReader, "Tee", _Tee);
|
||||
_Gender = GetFieldString(dbDataReader, "Gender", _Gender);
|
||||
_SlopeRating = GetFieldInt16(dbDataReader, "SlopeRating", _SlopeRating);
|
||||
_Par = GetFieldInt16(dbDataReader, "Par", _Par);
|
||||
_CourseRating = GetFieldDecimal(dbDataReader, "CourseRating", _CourseRating);
|
||||
_BogeyRating = GetFieldDecimal(dbDataReader, "BogeyRating", _BogeyRating);
|
||||
_Length = GetFieldInt16(dbDataReader, "Length", _Length);
|
||||
_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("CourseId")) AddCommandParameter(dbCommand, "@CourseId", _CourseId);
|
||||
if (columnNames.ContainsCI("UsgaMarkerId")) AddCommandParameter(dbCommand, "@UsgaMarkerId", _UsgaMarkerId);
|
||||
if (columnNames.ContainsCI("Caption")) AddCommandParameter(dbCommand, "@Caption", _Caption);
|
||||
if (columnNames.ContainsCI("Holes")) AddCommandParameter(dbCommand, "@Holes", _Holes);
|
||||
if (columnNames.ContainsCI("HolesCaption")) AddCommandParameter(dbCommand, "@HolesCaption", _HolesCaption);
|
||||
if (columnNames.ContainsCI("Tee")) AddCommandParameter(dbCommand, "@Tee", _Tee);
|
||||
if (columnNames.ContainsCI("Gender")) AddCommandParameter(dbCommand, "@Gender", _Gender);
|
||||
if (columnNames.ContainsCI("SlopeRating")) AddCommandParameter(dbCommand, "@SlopeRating", _SlopeRating);
|
||||
if (columnNames.ContainsCI("Par")) AddCommandParameter(dbCommand, "@Par", _Par);
|
||||
if (columnNames.ContainsCI("CourseRating")) AddCommandParameter(dbCommand, "@CourseRating", _CourseRating);
|
||||
if (columnNames.ContainsCI("BogeyRating")) AddCommandParameter(dbCommand, "@BogeyRating", _BogeyRating);
|
||||
if (columnNames.ContainsCI("Length")) AddCommandParameter(dbCommand, "@Length", _Length);
|
||||
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, List<String> columnsToUpdate = null)
|
||||
{
|
||||
// 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 = (columnsToUpdate?.Any() ?? false ? columnsToUpdate : UpdatableColumns).Where(col => UpdatableColumns.ContainsCI(col)).ToList();
|
||||
if (!columnNames.Any())
|
||||
{
|
||||
SaLogger.Warn($"{SysUtil.Fn} No columns to update. [{GetType().Name}]");
|
||||
return false;
|
||||
}
|
||||
// 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("CourseId")) AddCommandParameter(dbCommand, "@CourseId", _CourseId);
|
||||
if (columnNames.ContainsCI("UsgaMarkerId")) AddCommandParameter(dbCommand, "@UsgaMarkerId", _UsgaMarkerId);
|
||||
if (columnNames.ContainsCI("Caption")) AddCommandParameter(dbCommand, "@Caption", _Caption);
|
||||
if (columnNames.ContainsCI("Holes")) AddCommandParameter(dbCommand, "@Holes", _Holes);
|
||||
if (columnNames.ContainsCI("HolesCaption")) AddCommandParameter(dbCommand, "@HolesCaption", _HolesCaption);
|
||||
if (columnNames.ContainsCI("Tee")) AddCommandParameter(dbCommand, "@Tee", _Tee);
|
||||
if (columnNames.ContainsCI("Gender")) AddCommandParameter(dbCommand, "@Gender", _Gender);
|
||||
if (columnNames.ContainsCI("SlopeRating")) AddCommandParameter(dbCommand, "@SlopeRating", _SlopeRating);
|
||||
if (columnNames.ContainsCI("Par")) AddCommandParameter(dbCommand, "@Par", _Par);
|
||||
if (columnNames.ContainsCI("CourseRating")) AddCommandParameter(dbCommand, "@CourseRating", _CourseRating);
|
||||
if (columnNames.ContainsCI("BogeyRating")) AddCommandParameter(dbCommand, "@BogeyRating", _BogeyRating);
|
||||
if (columnNames.ContainsCI("Length")) AddCommandParameter(dbCommand, "@Length", _Length);
|
||||
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,241 @@
|
||||
using Microsoft.Data.SqlClient;
|
||||
using Sarand.Net.Standard.Base.App;
|
||||
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 Tue 27-Aug-2024 19:41:31
|
||||
//---------------------------------------------------------------------------
|
||||
namespace Saxonite.Net.Standard.Dbas.Internal.Reference
|
||||
{
|
||||
internal class Golf_UsgaProvince_Db : SaxDbDataItem
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Column definitions.
|
||||
public class ColumnsData
|
||||
{
|
||||
public ColumnDataInt64 _Id { get; } = new ColumnDataInt64("Id", true);
|
||||
public ColumnDataInt64 _CountryId { get; } = new ColumnDataInt64("CountryId");
|
||||
public ColumnDataString _ProvinceCode { get; } = new ColumnDataString("ProvinceCode");
|
||||
public ColumnDataString _EntProvinceCode { get; } = new ColumnDataString("EntProvinceCode");
|
||||
public ColumnDataString _ProvinceName { get; } = new ColumnDataString("ProvinceName");
|
||||
public ColumnDataDateTimeNullable _CoursesUpdateAt { get; } = new ColumnDataDateTimeNullable("CoursesUpdateAt");
|
||||
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",
|
||||
"CountryId",
|
||||
"ProvinceCode",
|
||||
"EntProvinceCode",
|
||||
"ProvinceName",
|
||||
"CoursesUpdateAt",
|
||||
"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> fieldsNullable { get; } = new List<String>()
|
||||
{
|
||||
"CoursesUpdateAt",
|
||||
};
|
||||
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
|
||||
{
|
||||
"CreateOn",
|
||||
"CreateBy",
|
||||
"CreateHost",
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
internal Golf_UsgaProvince_Db (IDatabaseInfo dbInfo) : base(dbInfo)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public override String SchemaName { get; } = "golf";
|
||||
public override String TableName { get; } = "UsgaProvince";
|
||||
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 Int64 _CountryId { get { return Cols._CountryId.Value; } set { Cols._CountryId.Value = value; } }
|
||||
public String _ProvinceCode { get { return Cols._ProvinceCode.Value; } set { Cols._ProvinceCode.Value = value; } }
|
||||
public String _EntProvinceCode { get { return Cols._EntProvinceCode.Value; } set { Cols._EntProvinceCode.Value = value; } }
|
||||
public String _ProvinceName { get { return Cols._ProvinceName.Value; } set { Cols._ProvinceName.Value = value; } }
|
||||
public DateTime? _CoursesUpdateAt { get { return Cols._CoursesUpdateAt.Value; } set { Cols._CoursesUpdateAt.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); } }
|
||||
public List<String> UpdatableColumns { get { return ExistingColumnNamesNonId.Where(item => !fieldsPrimary.ContainsCI(item) && !fieldsIgnoreOnUpdate.ContainsCI(item)).ToList(); } }
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// 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);
|
||||
_CountryId = GetFieldInt64(dbDataReader, "CountryId", _CountryId);
|
||||
_ProvinceCode = GetFieldString(dbDataReader, "ProvinceCode", _ProvinceCode);
|
||||
_EntProvinceCode = GetFieldString(dbDataReader, "EntProvinceCode", _EntProvinceCode);
|
||||
_ProvinceName = GetFieldString(dbDataReader, "ProvinceName", _ProvinceName);
|
||||
_CoursesUpdateAt = GetFieldDateTimeNullable(dbDataReader, "CoursesUpdateAt", _CoursesUpdateAt);
|
||||
_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("CountryId")) AddCommandParameter(dbCommand, "@CountryId", _CountryId);
|
||||
if (columnNames.ContainsCI("ProvinceCode")) AddCommandParameter(dbCommand, "@ProvinceCode", _ProvinceCode);
|
||||
if (columnNames.ContainsCI("EntProvinceCode")) AddCommandParameter(dbCommand, "@EntProvinceCode", _EntProvinceCode);
|
||||
if (columnNames.ContainsCI("ProvinceName")) AddCommandParameter(dbCommand, "@ProvinceName", _ProvinceName);
|
||||
if (columnNames.ContainsCI("CoursesUpdateAt")) AddCommandParameter(dbCommand, "@CoursesUpdateAt", _CoursesUpdateAt);
|
||||
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, List<String> columnsToUpdate = null)
|
||||
{
|
||||
// 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 = (columnsToUpdate?.Any() ?? false ? columnsToUpdate : UpdatableColumns).Where(col => UpdatableColumns.ContainsCI(col)).ToList();
|
||||
if (!columnNames.Any())
|
||||
{
|
||||
SaLogger.Warn($"{SysUtil.Fn} No columns to update. [{GetType().Name}]");
|
||||
return false;
|
||||
}
|
||||
// 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("CountryId")) AddCommandParameter(dbCommand, "@CountryId", _CountryId);
|
||||
if (columnNames.ContainsCI("ProvinceCode")) AddCommandParameter(dbCommand, "@ProvinceCode", _ProvinceCode);
|
||||
if (columnNames.ContainsCI("EntProvinceCode")) AddCommandParameter(dbCommand, "@EntProvinceCode", _EntProvinceCode);
|
||||
if (columnNames.ContainsCI("ProvinceName")) AddCommandParameter(dbCommand, "@ProvinceName", _ProvinceName);
|
||||
if (columnNames.ContainsCI("CoursesUpdateAt")) AddCommandParameter(dbCommand, "@CoursesUpdateAt", _CoursesUpdateAt);
|
||||
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,228 @@
|
||||
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 Thu 22-Aug-2024 18:00:17
|
||||
//---------------------------------------------------------------------------
|
||||
namespace Saxonite.Net.Standard.Dbas.Internal.Support
|
||||
{
|
||||
internal class UserReportComment_Db : SaxDbDataItem
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Column definitions.
|
||||
public class ColumnsData
|
||||
{
|
||||
public ColumnDataInt64 _Id { get; } = new ColumnDataInt64("Id", true);
|
||||
public ColumnDataInt64 _UserReportId { get; } = new ColumnDataInt64("UserReportId");
|
||||
public ColumnDataDateTimeNullable _RecordedAt { get; } = new ColumnDataDateTimeNullable("RecordedAt");
|
||||
public ColumnDataInt32 _UserAccountId { get; } = new ColumnDataInt32("UserAccountId");
|
||||
public ColumnDataString _CommentData { get; } = new ColumnDataString("CommentData");
|
||||
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",
|
||||
"UserReportId",
|
||||
"RecordedAt",
|
||||
"UserAccountId",
|
||||
"CommentData",
|
||||
"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> fieldsNullable { get; } = new List<String>()
|
||||
{
|
||||
"RecordedAt",
|
||||
};
|
||||
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
|
||||
{
|
||||
"CreateOn",
|
||||
"CreateBy",
|
||||
"CreateHost",
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
internal UserReportComment_Db (IDatabaseInfo dbInfo) : base(dbInfo)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public override String SchemaName { get; } = "dbo";
|
||||
public override String TableName { get; } = "UserReportComment";
|
||||
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 Int64 _UserReportId { get { return Cols._UserReportId.Value; } set { Cols._UserReportId.Value = value; } }
|
||||
public DateTime? _RecordedAt { get { return Cols._RecordedAt.Value; } set { Cols._RecordedAt.Value = value; } }
|
||||
public Int32 _UserAccountId { get { return Cols._UserAccountId.Value; } set { Cols._UserAccountId.Value = value; } }
|
||||
public String _CommentData { get { return Cols._CommentData.Value; } set { Cols._CommentData.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);
|
||||
_UserReportId = GetFieldInt64(dbDataReader, "UserReportId", _UserReportId);
|
||||
_RecordedAt = GetFieldDateTimeNullable(dbDataReader, "RecordedAt", _RecordedAt);
|
||||
_UserAccountId = GetFieldInt32(dbDataReader, "UserAccountId", _UserAccountId);
|
||||
_CommentData = GetFieldString(dbDataReader, "CommentData", _CommentData);
|
||||
_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("UserReportId")) AddCommandParameter(dbCommand, "@UserReportId", _UserReportId);
|
||||
if (columnNames.ContainsCI("RecordedAt")) AddCommandParameter(dbCommand, "@RecordedAt", _RecordedAt);
|
||||
if (columnNames.ContainsCI("UserAccountId")) AddCommandParameter(dbCommand, "@UserAccountId", _UserAccountId);
|
||||
if (columnNames.ContainsCI("CommentData")) AddCommandParameter(dbCommand, "@CommentData", _CommentData);
|
||||
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("UserReportId")) AddCommandParameter(dbCommand, "@UserReportId", _UserReportId);
|
||||
if (columnNames.ContainsCI("RecordedAt")) AddCommandParameter(dbCommand, "@RecordedAt", _RecordedAt);
|
||||
if (columnNames.ContainsCI("UserAccountId")) AddCommandParameter(dbCommand, "@UserAccountId", _UserAccountId);
|
||||
if (columnNames.ContainsCI("CommentData")) AddCommandParameter(dbCommand, "@CommentData", _CommentData);
|
||||
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,239 @@
|
||||
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 Thu 22-Aug-2024 18:00:17
|
||||
//---------------------------------------------------------------------------
|
||||
namespace Saxonite.Net.Standard.Dbas.Internal.Support
|
||||
{
|
||||
internal class UserReport_Db : SaxDbDataItem
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Column definitions.
|
||||
public class ColumnsData
|
||||
{
|
||||
public ColumnDataInt64 _Id { get; } = new ColumnDataInt64("Id", true);
|
||||
public ColumnDataInt32 _UserAccountId { get; } = new ColumnDataInt32("UserAccountId");
|
||||
public ColumnDataInt16 _ReportType { get; } = new ColumnDataInt16("ReportType");
|
||||
public ColumnDataString _Title { get; } = new ColumnDataString("Title");
|
||||
public ColumnDataString _Report { get; } = new ColumnDataString("Report");
|
||||
public ColumnDataDateTime _RecordedOn { get; } = new ColumnDataDateTime("RecordedOn");
|
||||
public ColumnDataString _ReportData { get; } = new ColumnDataString("ReportData");
|
||||
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",
|
||||
"ReportType",
|
||||
"Title",
|
||||
"Report",
|
||||
"RecordedOn",
|
||||
"ReportData",
|
||||
"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> fieldsNullable { get; } = new List<String>()
|
||||
{
|
||||
};
|
||||
protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()
|
||||
{
|
||||
"CreateOn",
|
||||
"CreateBy",
|
||||
"CreateHost",
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
internal UserReport_Db (IDatabaseInfo dbInfo) : base(dbInfo)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public override String SchemaName { get; } = "dbo";
|
||||
public override String TableName { get; } = "UserReport";
|
||||
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 Int16 _ReportType { get { return Cols._ReportType.Value; } set { Cols._ReportType.Value = value; } }
|
||||
public String _Title { get { return Cols._Title.Value; } set { Cols._Title.Value = value; } }
|
||||
public String _Report { get { return Cols._Report.Value; } set { Cols._Report.Value = value; } }
|
||||
public DateTime _RecordedOn { get { return Cols._RecordedOn.Value; } set { Cols._RecordedOn.Value = value; } }
|
||||
public String _ReportData { get { return Cols._ReportData.Value; } set { Cols._ReportData.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);
|
||||
_ReportType = GetFieldInt16(dbDataReader, "ReportType", _ReportType);
|
||||
_Title = GetFieldString(dbDataReader, "Title", _Title);
|
||||
_Report = GetFieldString(dbDataReader, "Report", _Report);
|
||||
_RecordedOn = GetFieldDateTime(dbDataReader, "RecordedOn", _RecordedOn);
|
||||
_ReportData = GetFieldString(dbDataReader, "ReportData", _ReportData);
|
||||
_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("ReportType")) AddCommandParameter(dbCommand, "@ReportType", _ReportType);
|
||||
if (columnNames.ContainsCI("Title")) AddCommandParameter(dbCommand, "@Title", _Title);
|
||||
if (columnNames.ContainsCI("Report")) AddCommandParameter(dbCommand, "@Report", _Report);
|
||||
if (columnNames.ContainsCI("RecordedOn")) AddCommandParameter(dbCommand, "@RecordedOn", _RecordedOn);
|
||||
if (columnNames.ContainsCI("ReportData")) AddCommandParameter(dbCommand, "@ReportData", _ReportData);
|
||||
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("ReportType")) AddCommandParameter(dbCommand, "@ReportType", _ReportType);
|
||||
if (columnNames.ContainsCI("Title")) AddCommandParameter(dbCommand, "@Title", _Title);
|
||||
if (columnNames.ContainsCI("Report")) AddCommandParameter(dbCommand, "@Report", _Report);
|
||||
if (columnNames.ContainsCI("RecordedOn")) AddCommandParameter(dbCommand, "@RecordedOn", _RecordedOn);
|
||||
if (columnNames.ContainsCI("ReportData")) AddCommandParameter(dbCommand, "@ReportData", _ReportData);
|
||||
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);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
}
|
||||
+729
@@ -0,0 +1,729 @@
|
||||
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 Sarand.Net.Standard.Base.Utils;
|
||||
using Sarand.Net.Standard.Dbas.Data;
|
||||
using Saxonite.Base.App;
|
||||
using Saxonite.Net.Standard.Base.App;
|
||||
using Saxonite.Net.Standard.Base.Bus;
|
||||
using Saxonite.Net.Standard.Base.Bus.Reference;
|
||||
using Saxonite.Net.Standard.Dbas.Bus.Reference;
|
||||
using Saxonite.Net.Standard.Dbas.Internal.Reference;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
|
||||
namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
|
||||
{
|
||||
//=======================================================================
|
||||
partial class SaxReferenceGolfMgr_Dbas
|
||||
{
|
||||
//*******************************************************************
|
||||
// Support Mgr - User Report
|
||||
//*******************************************************************
|
||||
// Utilities.
|
||||
private List<StringPair> GetLogProperties(SaxGolfUsgaCountry usgaCountry)
|
||||
{
|
||||
return new List<StringPair>()
|
||||
{
|
||||
new StringPair("Id",SysId.ToString(usgaCountry.Id)),
|
||||
new StringPair("Country code",usgaCountry.CountryCode),
|
||||
new StringPair("Country name",usgaCountry.CountryName),
|
||||
new StringPair("Status",usgaCountry.StatusCode)
|
||||
};
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create item.
|
||||
public override SaxGolfUsgaCountry CreateUsgaCountry()
|
||||
{
|
||||
ClearErrorState();
|
||||
return new SaxGolfUsgaCountry_Dbas(ReferenceDatabase, null, 0);
|
||||
}
|
||||
private SaxGolfUsgaCountry_Dbas CreateUsgaCountry(Golf_UsgaCountry_Db dbUsgaCountry)
|
||||
{
|
||||
ClearErrorState();
|
||||
SaxGolfUsgaCountry_Dbas usgaCountry = new SaxGolfUsgaCountry_Dbas(ReferenceDatabase, new SysId(dbUsgaCountry._Id), (ushort)dbUsgaCountry._Flags);
|
||||
PopulateFrom(dbUsgaCountry, usgaCountry);
|
||||
return usgaCountry;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get item.
|
||||
public override SaxGolfUsgaCountry GetUsgaCountry(SaxGolfUsgaCountry.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetUsgaCountry(GetUsgaCountryQueryFilter(prm).Concat(" And ", "(", ")"));
|
||||
}
|
||||
private SaxGolfUsgaCountry GetUsgaCountry(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetUsgaCountryCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple items found");
|
||||
return null;
|
||||
}
|
||||
SaxGolfUsgaCountry usgaCountry = null;
|
||||
// Query data.
|
||||
using (var dbConnection = ReferenceDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
Golf_UsgaCountry_Db dbUsgaCountry = new Golf_UsgaCountry_Db(ReferenceDbInfo);
|
||||
dbUsgaCountry.PopulateFrom(dbCommand, aliasUsgaCountry, filter);
|
||||
usgaCountry = CreateUsgaCountry(dbUsgaCountry);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return usgaCountry;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate item.
|
||||
public override bool IsValidUsgaCountryData(SaxGolfUsgaCountry.Data data, SaxGolfUsgaCountry.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidUsgaCountryData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert item.
|
||||
public override bool InsertUsgaCountry(SaxGolfUsgaCountry usgaCountry, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertUsgaCountry";
|
||||
ClearErrorState();
|
||||
if (!IsValidUsgaCountry(usgaCountry)) return false;
|
||||
if (SysId.IsValid(usgaCountry.Id)) return SetErrorState(ErrorMessage.ValidItemId);
|
||||
using (var dbConnection = ReferenceDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
Golf_UsgaCountry_Db dbUsgaCountry = new Golf_UsgaCountry_Db(ReferenceDbInfo);
|
||||
PopulateTo(dbUsgaCountry, usgaCountry, dbUpdateInfo);
|
||||
if (Golf_UsgaCountry_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
dbUsgaCountry._Id = ReferenceDatabase.GetNextIdFromTable("UsgaCountry");
|
||||
}
|
||||
dbUsgaCountry.ExecuteInsertCommand(dbCommand);
|
||||
usgaCountry.Id = new SysId(dbUsgaCountry._Id);
|
||||
usgaCountry.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(usgaCountry).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update item.
|
||||
public override bool UpdateUsgaCountry(SaxGolfUsgaCountry usgaCountry, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdateUsgaCountry";
|
||||
ClearErrorState();
|
||||
if (!IsValidUsgaCountry(usgaCountry)) return false;
|
||||
if (!SysId.IsValid(usgaCountry.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!usgaCountry.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(usgaCountry).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = ReferenceDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
Golf_UsgaCountry_Db dbUsgaCountry = new Golf_UsgaCountry_Db(ReferenceDbInfo);
|
||||
dbUsgaCountry.PopulateFrom(dbCommand, aliasUsgaCountry, "Id=" + SysId.ToString(usgaCountry.Id));
|
||||
// ToDo SaxUpdateLogItemMonitor_UsgaCountry updateLogMonitor = new SaxUpdateLogItemMonitor_UsgaCountry(SessionContext, CreateUsgaCountry(dbUsgaCountry), dbUpdateInfo);
|
||||
// Update item.
|
||||
PopulateTo(dbUsgaCountry, usgaCountry, dbUpdateInfo);
|
||||
dbUsgaCountry.ExecuteUpdateCommand(dbCommand);
|
||||
usgaCountry.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(usgaCountry).Concat(": ").Concat("", "\n\t"));
|
||||
// Record updates.
|
||||
// ToDo updateLogMonitor.RecordUpdatedValues(usgaCountry);
|
||||
// ToDo updateLogMonitor.LogUpdates();
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete item.
|
||||
public override bool UsgaCountryCanBeDeleted(SaxGolfUsgaCountry usgaCountry)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.UsgaCountryCanBeDeleted(usgaCountry)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteUsgaCountry(SaxGolfUsgaCountry usgaCountry, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeleteUsgaCountry";
|
||||
ClearErrorState();
|
||||
if (!UsgaCountryCanBeDeleted(usgaCountry)) return false;
|
||||
|
||||
// User Roles are logically deleted by changing the status.
|
||||
usgaCountry.Status = SaStatus.Deleted;
|
||||
return UpdateUsgaCountry(usgaCountry, dbUpdateInfo);
|
||||
|
||||
/*
|
||||
* Physical deletion.
|
||||
using (var dbConnection = ReferenceDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
Golf_UsgaCountry_Db dbUsgaCountry = new Golf_UsgaCountry_Db(ReferenceDbInfo);
|
||||
dbUsgaCountry.PopulateFrom(dbCommand, aliasUsgaCountry, "Id=" + usgaCountry.Id.ToString());
|
||||
// Delete item.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaCountry) + " WHERE Id=" + SysId.ToString(usgaCountry.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
usgaCountry.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(usgaCountry).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
*/
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(Golf_UsgaCountry_Db dbUsgaCountry, SaxGolfUsgaCountry usgaCountry, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbUsgaCountry._Id = SysId.ToLong(usgaCountry.Id);
|
||||
dbUsgaCountry._CountryCode = usgaCountry.CountryCode;
|
||||
dbUsgaCountry._EntCountryCode = usgaCountry.EntCountryCode;
|
||||
dbUsgaCountry._CountryName = usgaCountry.CountryName;
|
||||
dbUsgaCountry._ProvincesUpdateAt = usgaCountry.ProvincesUpdateAt;
|
||||
// Common.
|
||||
dbUsgaCountry._Notes = usgaCountry.Notes;
|
||||
dbUsgaCountry._Status = SacsSystem.GetStatusCode(usgaCountry.Status);
|
||||
dbUsgaCountry._Flags = (short)usgaCountry.Flags;
|
||||
if (!SysId.IsValid(usgaCountry.Id))
|
||||
{
|
||||
dbUsgaCountry._CreateOn = DateTime.Now;
|
||||
dbUsgaCountry._CreateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbUsgaCountry._CreateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
dbUsgaCountry._UpdateOn = DateTime.Now;
|
||||
dbUsgaCountry._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbUsgaCountry._UpdateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
private void PopulateFrom(Golf_UsgaCountry_Db dbUsgaCountry, SaxGolfUsgaCountry usgaCountry)
|
||||
{
|
||||
//usgaCountry.Id = new SysId(dbUsgaCountry._Id);
|
||||
usgaCountry.CountryCode = dbUsgaCountry._CountryCode;
|
||||
usgaCountry.EntCountryCode = dbUsgaCountry._EntCountryCode;
|
||||
usgaCountry.CountryName = dbUsgaCountry._CountryName;
|
||||
usgaCountry.ProvincesUpdateAt = dbUsgaCountry._ProvincesUpdateAt;
|
||||
// Common.
|
||||
usgaCountry.Notes = dbUsgaCountry._Notes;
|
||||
usgaCountry.Status = SacsSystem.GetStatusForCode(dbUsgaCountry._Status);
|
||||
usgaCountry.SetCreateStamp(dbUsgaCountry._CreateOn, new SysId(dbUsgaCountry._CreateBy), dbUsgaCountry._CreateHost);
|
||||
usgaCountry.SetUpdateStamp(dbUsgaCountry._UpdateOn, new SysId(dbUsgaCountry._UpdateBy), dbUsgaCountry._UpdateHost);
|
||||
usgaCountry.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Bulk updates.
|
||||
/// <summary>
|
||||
/// Bulk update USGA Countries.
|
||||
/// <para>- Country code must be supplied to act as identifier.</para>
|
||||
/// <para>- Other properties are validated as per country rules - check error state.</para>
|
||||
/// <para>- Other properties are left as is if null.</para>
|
||||
/// </summary>
|
||||
public override bool BulkUpdateUsgaCountries(List<UsgaCountryData> countries, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<UsgaCountryData> countriesToUpdate = new List<UsgaCountryData>();
|
||||
|
||||
// Validate supplied data.
|
||||
foreach (UsgaCountryData country in countries)
|
||||
{
|
||||
// Validate country properties.
|
||||
// Code is mandatory, other values only validated if non-null.
|
||||
if (!IsValidValue(country.CountryCode, "code", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_CountryCode), true)) return false;
|
||||
if (country.EntCountryCode != null && !IsValidValue(country.EntCountryCode, "ent code", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_EntCountryCode))) return false;
|
||||
if (country.CountryName != null && !IsValidValue(country.CountryName, "name", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_CountryName))) return false;
|
||||
countriesToUpdate.Add(country);
|
||||
}
|
||||
int MaxBulkUpdateBatchSize = 64;
|
||||
int batchSize = countriesToUpdate.Any() ? (int)Math.Ceiling(countriesToUpdate.Count() / Math.Ceiling((double)countriesToUpdate.Count() / MaxBulkUpdateBatchSize)) : MaxBulkUpdateBatchSize;
|
||||
while (countriesToUpdate.Any())
|
||||
{
|
||||
List<String> query = new List<string>();
|
||||
query.Add($"Declare @statusActive VarChar(3) = '{SacsSystem.GetStatusCode(SaxGolfUsgaCountry.DefaultStatus)}';");
|
||||
query.Add($"Declare @updateOn DateTime = GetDate();");
|
||||
query.Add($"Declare @updateBy Int = {SysId.ToLong(dbUpdateInfo.UserId)};");
|
||||
query.Add($"Declare @updateHost VarChar(100) = '{DbQuery.FormatForCondition(dbUpdateInfo.Host)}';");
|
||||
query.Add("Merge");
|
||||
query.Add($"Into {SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaCountry)} uCty");
|
||||
query.Add("Using");
|
||||
query.Add("(");
|
||||
query.Add("Select '' CountryCode, '' EntCountryCode, '' CountryName");
|
||||
foreach (UsgaCountryData country in countriesToUpdate.ExtractRange(0, batchSize))
|
||||
query.Add($"Union Select '{DbQuery.FormatForCondition(country.CountryCode)}', " + (country.EntCountryCode != null ? $"'{DbQuery.FormatForCondition(country.EntCountryCode)}'" : "Null") + ", " + (country.CountryName != null ? $"'{DbQuery.FormatForCondition(country.CountryName)}'" : "Null"));
|
||||
query.Add(") dCty");
|
||||
query.Add("On uCty.CountryCode=dCty.CountryCode");
|
||||
// Always update countries so that they are time stamped.
|
||||
// Was: query.Add("When Matched And ((dCty.EntCountryCode Is Not Null And uCty.EntCountryCode!=dCty.EntCountryCode) Or (dCty.CountryName Is Not Null And uCty.CountryName!=dCty.CountryName) Or uCty.Status!=@statusActive)");
|
||||
query.Add("When Matched");
|
||||
query.Add("Then Update Set");
|
||||
query.Add(" EntCountryCode=Coalesce(dCty.EntCountryCode,uCty.EntCountryCode),");
|
||||
query.Add(" CountryName=Coalesce(dCty.CountryName,uCty.CountryName),");
|
||||
query.Add(" Status=@statusActive,");
|
||||
query.Add(" UpdateOn=@updateOn,");
|
||||
query.Add(" UpdateBy=@updateBy,");
|
||||
query.Add(" UpdateHost=@updateHost");
|
||||
query.Add("When Not Matched And Len(IsNull(dCty.CountryName,''))>0");
|
||||
query.Add("Then Insert (CountryCode,EntCountryCode,CountryName,Notes,Flags,Status,CreateOn,CreateBy,CreateHost,UpdateOn,UpdateBy,UpdateHost)");
|
||||
query.Add($"Values (dCty.CountryCode,Coalesce(dCty.EntCountryCode,''),dCty.CountryName,'',0,@statusActive,@updateOn,@updateBy,@updateHost,@updateOn,@updateBy,@updateHost)");
|
||||
query.Add(";");
|
||||
//SaLogger.Info($"{SysUtil.Fn} Bulk USGA Country update query:\n\t{query.Concat("\n\t")}");
|
||||
|
||||
try
|
||||
{
|
||||
int result = ReferenceDatabase.ExecuteNonQuery(query.Concat("\n"));
|
||||
if (ReferenceDatabase.HasErrorState())
|
||||
SaLogger.Warn($"{SysUtil.Fn} Error executing bulk USGA Country update - {ReferenceDatabase.ErrorStateMessage}");
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SaLogger.Warn(SysUtil.Fn + " " + ExceptionUtil.GetLogMessage(exc, " executing bulk USGA Country update"));
|
||||
}
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item column definitions.
|
||||
private static readonly String aliasUsgaCountry = "UsgPrv";
|
||||
private static readonly String aliasUsgaCountry_Dummy = "UsgPrv_Cty";
|
||||
private static readonly String prefixUsgaCountry_Dummy = aliasUsgaCountry_Dummy + "_";
|
||||
private static readonly String colCountry_Province_Count = "Cty_Prv_Count";
|
||||
private static readonly String colCountry_Province_Active_Count = "Cty_Prv_Act_Count";
|
||||
private static readonly String colCountry_Facility_Count = "Cty_Fty_Count";
|
||||
private static readonly String colCountry_Facility_Active_Count = "Cty_Fty_Act_Count";
|
||||
private static readonly String colCountry_Courses_Percent = "Cty_Crs_Perc";
|
||||
private void SetUsgaCountryColDfn
|
||||
(ColumnDfn col, String caption, int width, SaxDbDfn_Reference.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SaxDbDfn_Reference.GetTableForColumn(dbCol) == SaxDbDfn_Reference.TableIdx.UsgaCountry)
|
||||
alias = aliasUsgaCountry;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn_Reference.GetColumnName(dbCol, false), SaxDbDfn_Reference.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn_Reference.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SaxDbDfn_Reference.GetColTextLen(dbCol);
|
||||
}
|
||||
public override ColumnDfn GetUsgaCountryColumnDfn(SaxGolfUsgaCountry.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
//-----------------------------------------------------------
|
||||
case SaxGolfUsgaCountry.Column.Pos:
|
||||
SetUsgaCountryColDfn(columnDfn, "Pos", 60, SaxDbDfn_Reference.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
case SaxGolfUsgaCountry.Column.Id:
|
||||
SetUsgaCountryColDfn(columnDfn, "Id", 80, SaxDbDfn_Reference.ColumnIdx.UsgaCountry_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-------------------------------------------------------
|
||||
case SaxGolfUsgaCountry.Column.CountryCode:
|
||||
SetUsgaCountryColDfn(columnDfn, "Code", 80, SaxDbDfn_Reference.ColumnIdx.UsgaCountry_CountryCode, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaCountry.Column.CountryName:
|
||||
SetUsgaCountryColDfn(columnDfn, "Name", 120, SaxDbDfn_Reference.ColumnIdx.UsgaCountry_CountryName, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaCountry.Column.ProvincesUpdateAt_Date:
|
||||
SetUsgaCountryColDfn(columnDfn, "Provinces updated", 120, SaxDbDfn_Reference.ColumnIdx.UsgaCountry_ProvincesUpdateAt, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Derived properties.
|
||||
case SaxGolfUsgaCountry.Column.ProvinceCount_All:
|
||||
SetUsgaCountryColDfn(columnDfn, "Provinces", 60, SaxDbDfn_Reference.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.DataName = colCountry_Province_Count;
|
||||
break;
|
||||
case SaxGolfUsgaCountry.Column.ProvinceCount_Active:
|
||||
SetUsgaCountryColDfn(columnDfn, "Provinces (act)", 60, SaxDbDfn_Reference.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.DataName = colCountry_Province_Active_Count;
|
||||
break;
|
||||
case SaxGolfUsgaCountry.Column.FacilityCount_All:
|
||||
SetUsgaCountryColDfn(columnDfn, "Facilities", 60, SaxDbDfn_Reference.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.DataName = colCountry_Facility_Count;
|
||||
break;
|
||||
case SaxGolfUsgaCountry.Column.FacilityCount_Active:
|
||||
SetUsgaCountryColDfn(columnDfn, "Facilities (act)", 60, SaxDbDfn_Reference.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.DataName = colCountry_Facility_Active_Count;
|
||||
break;
|
||||
|
||||
case SaxGolfUsgaCountry.Column.FacilityPercent:
|
||||
SetUsgaCountryColDfn(columnDfn, "Courses %", 60, SaxDbDfn_Reference.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.DataName = colCountry_Courses_Percent;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Common properties.
|
||||
case SaxGolfUsgaCountry.Column.Notes:
|
||||
SetUsgaCountryColDfn(columnDfn, "Notes", 240, SaxDbDfn_Reference.ColumnIdx.UsgaCountry_Notes);
|
||||
break;
|
||||
case SaxGolfUsgaCountry.Column.Flags:
|
||||
SetUsgaCountryColDfn(columnDfn, "Flags", 60, SaxDbDfn_Reference.ColumnIdx.UsgaCountry_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxGolfUsgaCountry.Column.Status:
|
||||
SetUsgaCountryColDfn(columnDfn, "Status", 80, SaxDbDfn_Reference.ColumnIdx.UsgaCountry_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxGolfUsgaCountry.Column.Status_Desc:
|
||||
SetUsgaCountryColDfn(columnDfn, "Status", 90, SaxDbDfn_Reference.ColumnIdx.UsgaCountry_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxGolfUsgaCountry.Column.Status_Ind:
|
||||
SetUsgaCountryColDfn(columnDfn, "Status", 80, SaxDbDfn_Reference.ColumnIdx.UsgaCountry_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SaxGolfUsgaCountry.Column.CreateOn_Date:
|
||||
SetUsgaCountryColDfn(columnDfn, "Created", 80, SaxDbDfn_Reference.ColumnIdx.UsgaCountry_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaCountry.Column.UpdateOn_Date:
|
||||
SetUsgaCountryColDfn(columnDfn, "Updated", 80, SaxDbDfn_Reference.ColumnIdx.UsgaCountry_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> GetUsgaCountryQueryFilter(SaxGolfUsgaCountry.Params prm)
|
||||
{
|
||||
List<String> filter = new List<String>();
|
||||
String col_Id = SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_Id, aliasUsgaCountry);
|
||||
|
||||
// Item Ids.
|
||||
if (prm.IdsIncluded.HasValidIds())
|
||||
filter.Add($"{col_Id} IN ({prm.IdsIncluded.Concat(",")})");
|
||||
if (prm.IdsExcluded.HasValidIds())
|
||||
filter.Add($"{col_Id} NOT IN ({prm.IdsExcluded.Concat(",")})");
|
||||
|
||||
// Country code.
|
||||
if (prm.CountryCodesIncluded.Any(item => !StringUtil.IsBlank(item)))
|
||||
filter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_CountryCode, aliasUsgaCountry)} In ({prm.CountryCodesIncluded.Select(item => DbQuery.FormatForCondition(item)).Concat(",","'","'")})");
|
||||
|
||||
if (!StringUtil.IsBlank(prm.CountryFilter))
|
||||
{
|
||||
// Split filter into words.
|
||||
List<String> filterWords = prm.CountryFilter.Split((char[])null).ToList();
|
||||
filterWords.RemoveDuplicatesCI();
|
||||
filterWords.RemoveBlanks();
|
||||
foreach (String filterWord in filterWords)
|
||||
{
|
||||
List<String> countryFilter = new List<String>();
|
||||
countryFilter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_CountryCode, aliasUsgaCountry)} Like '%{DbQuery.FormatForLike(filterWord, true)}%'");
|
||||
countryFilter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_CountryName, aliasUsgaCountry)} Like '%{DbQuery.FormatForLike(filterWord, true)}%'");
|
||||
filter.Add(countryFilter.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
}
|
||||
|
||||
// Name.
|
||||
if (!StringUtil.IsEmpty(prm.CountryNameFull))
|
||||
filter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_CountryName, aliasUsgaCountry)}='{DbQuery.FormatForCondition(prm.CountryNameFull)}'");
|
||||
if (!StringUtil.IsEmpty(prm.CountryNamePartial))
|
||||
filter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_CountryName, aliasUsgaCountry)} LIKE '%{DbQuery.FormatForLike(prm.CountryNamePartial)}%'");
|
||||
|
||||
// Flags.
|
||||
if (prm.PriorityFlagState != SacsHierarchyItem.Params.FlagState.Either)
|
||||
filter.Add(DbQuery.BuildBitMappedFilter(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_Flags, aliasUsgaCountry), SaxGolfUsgaCountry.Flag_Priority, prm.PriorityFlagState == SacsHierarchyItem.Params.FlagState.True));
|
||||
|
||||
// Associated data.
|
||||
if (prm.HasProvinces != SacsHierarchyItem.Params.BoolState.Either)
|
||||
{
|
||||
String existsPrefix = (prm.HasProvinces == SacsHierarchyItem.Params.BoolState.True ? "" : "Not ");
|
||||
filter.Add($"{existsPrefix} Exists (Select 1 From {SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaProvince)} Where {SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_CountryId)}={col_Id})");
|
||||
}
|
||||
|
||||
// Notes.
|
||||
if (!StringUtil.IsEmpty(prm.NotesPartial))
|
||||
filter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_Notes, aliasUsgaCountry)} LIKE '%{DbQuery.FormatForLike(prm.NotesPartial)}%'");
|
||||
|
||||
// Status.
|
||||
if (prm.StatusCat != SaxGolfUsgaCountry.StatusCat.Any)
|
||||
filter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_Status, aliasUsgaCountry)} {GetUsgaCountryStatusCatFilterCondition(prm.StatusCat)}");
|
||||
|
||||
if (filter.Count < 1 && prm.IncludeDefaultFilter) filter.Add("1=1");
|
||||
return filter;
|
||||
}
|
||||
internal static String GetUsgaCountryStatusCatFilterCondition(SaxGolfUsgaCountry.StatusCat statusCat)
|
||||
{
|
||||
if (statusCat == SaxGolfUsgaCountry.StatusCat.ActiveOnly)
|
||||
return $"='{SacsSystem.GetStatusCode(SaStatus.Active)}'";
|
||||
if (statusCat == SaxGolfUsgaCountry.StatusCat.InactiveOnly)
|
||||
return $"='{SacsSystem.GetStatusCode(SaStatus.Inactive)}'";
|
||||
if (statusCat == SaxGolfUsgaCountry.StatusCat.NotDeleted)
|
||||
return $"!='{SacsSystem.GetStatusCode(SaStatus.Deleted)}'";
|
||||
if (statusCat == SaxGolfUsgaCountry.StatusCat.DeletedOnly)
|
||||
return $"='{SacsSystem.GetStatusCode(SaStatus.Deleted)}'";
|
||||
return "";
|
||||
}
|
||||
// Item sort columns.
|
||||
public List<String> GetUsgaCountrySortColumns(SaxGolfUsgaCountry.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
HashSet<String> sortColumnNames = new HashSet<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for UsgaCountry columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SaxDbDfn_Reference.GetTableForColumn((SaxDbDfn_Reference.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn_Reference.TableIdx.UsgaCountry)
|
||||
{
|
||||
sortCol = SaxDbDfn_Reference.GetColumnNameQual((SaxDbDfn_Reference.ColumnIdx)columnDfn.DbColumn, aliasUsgaCountry);
|
||||
}
|
||||
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();
|
||||
AddRandomSortColumn(prm, sortColumnNames);
|
||||
if (sortColumnNames.IsEmpty())
|
||||
{
|
||||
// Default sort columns.
|
||||
sortColumnNames.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_Id, aliasUsgaCountry) + " ASC");
|
||||
}
|
||||
return sortColumnNames.ToList();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item count.
|
||||
private long GetUsgaCountryCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return ReferenceDatabase.GetRowCount(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaCountry) + " As " + aliasUsgaCountry, filter);
|
||||
}
|
||||
public override long GetUsgaCountryCount(SaxGolfUsgaCountry.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetUsgaCountryCount(GetUsgaCountryQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item list.
|
||||
public override List<SaxGolfUsgaCountry> GetUsgaCountryList(SaxGolfUsgaCountry.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<SaxGolfUsgaCountry> userRoles = new List<SaxGolfUsgaCountry>();
|
||||
DbQuery qry = new DbQuery(ReferenceDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaCountry), aliasUsgaCountry);
|
||||
Golf_UsgaCountry_Db dbUsgaCountry = new Golf_UsgaCountry_Db(ReferenceDbInfo);
|
||||
qry.Columns.AddRange(dbUsgaCountry.ExistingColumnNames);
|
||||
qry.Filters.AddRange(GetUsgaCountryQueryFilter(prm));
|
||||
qry.OrderBy.AddRange(GetUsgaCountrySortColumns(prm));
|
||||
// Query data.
|
||||
using (var dbConnection = ReferenceDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
dbCommand.CommandText = qry.BuildQuery(prm.ResultsPaging);
|
||||
using (DbDataReader dbDataReader = dbCommand.ExecuteReader())
|
||||
{
|
||||
while (dbDataReader.Read())
|
||||
{
|
||||
dbUsgaCountry = new Golf_UsgaCountry_Db(ReferenceDbInfo);
|
||||
dbUsgaCountry.PopulateFrom(dbDataReader);
|
||||
userRoles.Add(CreateUsgaCountry(dbUsgaCountry));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return userRoles;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item query execution.
|
||||
public override DbResultSet ExecuteUsgaCountryQuery(List<ColumnDfn> columns, SaxGolfUsgaCountry.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(ReferenceDatabase.DbmsType);
|
||||
query.Tables.Add(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaCountry), aliasUsgaCountry);
|
||||
|
||||
// Add columns as defined in query list.
|
||||
if (columns.HasId(SaxGolfUsgaCountry.Column.Id))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_Id, aliasUsgaCountry));
|
||||
if (columns.HasId(SaxGolfUsgaCountry.Column.CountryCode))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_CountryCode, aliasUsgaCountry));
|
||||
if (columns.HasId(SaxGolfUsgaCountry.Column.CountryName))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_CountryName, aliasUsgaCountry));
|
||||
if (columns.HasId(SaxGolfUsgaCountry.Column.ProvincesUpdateAt_Date))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_ProvincesUpdateAt, aliasUsgaCountry));
|
||||
// Common properties.
|
||||
if (columns.HasId(SaxGolfUsgaCountry.Column.Notes))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_Notes, aliasUsgaCountry));
|
||||
if (columns.HasId(SaxGolfUsgaCountry.Column.Flags))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_Flags, aliasUsgaCountry));
|
||||
if (columns.HasId(SaxGolfUsgaCountry.Column.Status) || columns.HasId(SaxGolfUsgaCountry.Column.Status_Desc) || columns.HasId(SaxGolfUsgaCountry.Column.Status_Ind))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_Status, aliasUsgaCountry));
|
||||
if (columns.HasId(SaxGolfUsgaCountry.Column.CreateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_CreateOn, aliasUsgaCountry));
|
||||
if (columns.HasId(SaxGolfUsgaCountry.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_UpdateOn, aliasUsgaCountry));
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Province count.
|
||||
if (columns.HasId(SaxGolfUsgaCountry.Column.ProvinceCount_All))
|
||||
{
|
||||
String aliasProvince = "aCtyPrv_Count";
|
||||
DbQuery queryProvince = new DbQuery(CoreDatabase.DbmsType);
|
||||
queryProvince.Tables.Add(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaProvince), aliasProvince);
|
||||
queryProvince.Columns.Add("Count(*)");
|
||||
queryProvince.Filters.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_CountryId, aliasProvince) + "=" + SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_Id, aliasUsgaCountry));
|
||||
query.Columns.Add("(" + queryProvince.BuildQuery() + ")", colCountry_Province_Count);
|
||||
}
|
||||
|
||||
// Active Province count.
|
||||
if (columns.HasId(SaxGolfUsgaCountry.Column.ProvinceCount_Active))
|
||||
{
|
||||
String aliasProvince = "aCtyPrvAct_Count";
|
||||
DbQuery queryProvince = new DbQuery(CoreDatabase.DbmsType);
|
||||
queryProvince.Tables.Add(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaProvince), aliasProvince);
|
||||
queryProvince.Columns.Add("Count(*)");
|
||||
queryProvince.Filters.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_CountryId, aliasProvince) + "=" + SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_Id, aliasUsgaCountry));
|
||||
queryProvince.Filters.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Status, aliasProvince) + "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'");
|
||||
query.Columns.Add("(" + queryProvince.BuildQuery() + ")", colCountry_Province_Active_Count);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Facility count.
|
||||
if (columns.HasId(SaxGolfUsgaCountry.Column.ProvinceCount_All))
|
||||
{
|
||||
String aliasProvince = "aCtyFty_Count_Prv";
|
||||
DbQuery queryProvince = new DbQuery(CoreDatabase.DbmsType);
|
||||
queryProvince.Tables.Add(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaProvince), aliasProvince);
|
||||
queryProvince.Columns.Add("Count(*)");
|
||||
queryProvince.Filters.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_CountryId, aliasProvince) + "=" + SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_Id, aliasUsgaCountry));
|
||||
// Join to Facility.
|
||||
String aliasFacility = "aCtyFty_Count_Fty";
|
||||
DbQueryJoin joinFacility = new DbQueryJoin(DbJoinType.Inner);
|
||||
joinFacility.Table = new StringPair(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaFacility), aliasFacility);
|
||||
joinFacility.Filters.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_ProvinceId, aliasFacility) + "=" + SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Id, aliasProvince));
|
||||
queryProvince.Joins.Add(joinFacility);
|
||||
// Construct sub-query.
|
||||
query.Columns.Add("(" + queryProvince.BuildQuery() + ")", colCountry_Facility_Count);
|
||||
}
|
||||
|
||||
// Active Facility count.
|
||||
if (columns.HasId(SaxGolfUsgaCountry.Column.ProvinceCount_Active))
|
||||
{
|
||||
String aliasProvince = "aCtyFty_Count_Prv";
|
||||
DbQuery queryProvince = new DbQuery(CoreDatabase.DbmsType);
|
||||
queryProvince.Tables.Add(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaProvince), aliasProvince);
|
||||
queryProvince.Columns.Add("Count(*)");
|
||||
queryProvince.Filters.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_CountryId, aliasProvince)}={SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_Id, aliasUsgaCountry)}");
|
||||
queryProvince.Filters.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Status, aliasProvince)}='{SacsSystem.GetStatusCode(SaStatus.Active)}'");
|
||||
// Join to Facility.
|
||||
String aliasFacility = "aCtyFty_Count_Fty";
|
||||
DbQueryJoin joinFacility = new DbQueryJoin(DbJoinType.Inner);
|
||||
joinFacility.Table = new StringPair(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaFacility), aliasFacility);
|
||||
joinFacility.Filters.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_ProvinceId, aliasFacility)}={SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Id, aliasProvince)}");
|
||||
joinFacility.Filters.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_Status, aliasFacility)}='{SacsSystem.GetStatusCode(SaStatus.Active)}'");
|
||||
queryProvince.Joins.Add(joinFacility);
|
||||
// Construct sub-query.
|
||||
query.Columns.Add("(" + queryProvince.BuildQuery() + ")", colCountry_Facility_Active_Count);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Facility population %.
|
||||
if (columns.HasId(SaxGolfUsgaCountry.Column.FacilityPercent))
|
||||
{
|
||||
// Sub query to count provinces & provinces with facilities, and work out the percent with facilities.
|
||||
String alias_Province = "prv";
|
||||
String alias_Facility = "fty";
|
||||
String table_Province = $"{SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaProvince)} {alias_Province}";
|
||||
String table_Facility = $"{SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaFacility)} {alias_Facility}";
|
||||
String col_Country_Id = SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_Id, aliasUsgaCountry);
|
||||
String col_Province_Id = SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Id, alias_Province);
|
||||
String col_Province_CountryId = SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_CountryId, alias_Province);
|
||||
String col_Facility_ProvinceId = SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_ProvinceId, alias_Facility);
|
||||
String name_ProvinceCount = "ProvinceCount";
|
||||
String name_ProvincesWithFacilities = "ProvincesWithFacilities";
|
||||
List<String> subQuery = new List<String>();
|
||||
subQuery.Add($"Select Convert (decimal(9,2), Case When {name_ProvinceCount} > 0 Then 100.0 * (1.0 * {name_ProvincesWithFacilities} / {name_ProvinceCount}) Else 0 End)");
|
||||
subQuery.Add($"From");
|
||||
subQuery.Add($"(");
|
||||
subQuery.Add($"Select");
|
||||
subQuery.Add($"{name_ProvinceCount} = (select Count(*) From {table_Province} Where {col_Province_CountryId}={col_Country_Id}),");
|
||||
subQuery.Add($"{name_ProvincesWithFacilities} = (select Count(*) From {table_Province} Where {col_Province_CountryId}={col_Country_Id} and {col_Province_Id} in (Select {col_Facility_ProvinceId} from {table_Facility}))");
|
||||
subQuery.Add($") dat");
|
||||
query.Columns.Add($"({subQuery.Concat(" ")})", colCountry_Courses_Percent);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetUsgaCountryQueryFilter(prm));
|
||||
|
||||
if (prm.IdsIncluded.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetUsgaCountrySortColumns(prm))
|
||||
query.OrderBy.Add(sortColumn);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
//return new DbResultSet_DataTableReader(db, query.BuildQuery(prm.ResultsPaging));
|
||||
return DbResultSet_DataReader.ExecuteQuery(ReferenceDatabase, query.BuildQuery(prm.ResultsPaging));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
+810
@@ -0,0 +1,810 @@
|
||||
using DocumentFormat.OpenXml.Office2016.Excel;
|
||||
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 Sarand.Net.Standard.Base.Utils;
|
||||
using Sarand.Net.Standard.Dbas.Data;
|
||||
using Saxonite.Base.App;
|
||||
using Saxonite.Net.Standard.Base.App;
|
||||
using Saxonite.Net.Standard.Base.Bus;
|
||||
using Saxonite.Net.Standard.Base.Bus.Reference;
|
||||
using Saxonite.Net.Standard.Dbas.Bus.Reference;
|
||||
using Saxonite.Net.Standard.Dbas.Internal.Reference;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
|
||||
namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
|
||||
{
|
||||
//=======================================================================
|
||||
partial class SaxReferenceGolfMgr_Dbas
|
||||
{
|
||||
//*******************************************************************
|
||||
// Support Mgr - User Report
|
||||
//*******************************************************************
|
||||
// Utilities.
|
||||
private List<StringPair> GetLogProperties(SaxGolfUsgaCourse usgaCourse)
|
||||
{
|
||||
return new List<StringPair>()
|
||||
{
|
||||
new StringPair("Id",SysId.ToString(usgaCourse.Id)),
|
||||
new StringPair("Facility Id",SysId.ToString(usgaCourse.FacilityId)),
|
||||
new StringPair("Usga Course Id",SysId.ToString(usgaCourse.UsgaCourseId)),
|
||||
new StringPair("Caption",usgaCourse.Caption),
|
||||
new StringPair("Status",usgaCourse.StatusCode)
|
||||
};
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create item.
|
||||
public override SaxGolfUsgaCourse CreateUsgaCourse(SysId facilityId)
|
||||
{
|
||||
ClearErrorState();
|
||||
return new SaxGolfUsgaCourse_Dbas(ReferenceDatabase, null, facilityId, 0);
|
||||
}
|
||||
private SaxGolfUsgaCourse_Dbas CreateUsgaCourse(Golf_UsgaCourse_Db dbUsgaCourse)
|
||||
{
|
||||
ClearErrorState();
|
||||
SaxGolfUsgaCourse_Dbas usgaCourse = new SaxGolfUsgaCourse_Dbas(ReferenceDatabase, new SysId(dbUsgaCourse._Id), new SysId(dbUsgaCourse._FacilityId), (ushort)dbUsgaCourse._Flags);
|
||||
PopulateFrom(dbUsgaCourse, usgaCourse);
|
||||
return usgaCourse;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get item.
|
||||
public override SaxGolfUsgaCourse GetUsgaCourse(SaxGolfUsgaCourse.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetUsgaCourse(GetUsgaCourseQueryFilter(prm).Concat(" And ", "(", ")"));
|
||||
}
|
||||
private SaxGolfUsgaCourse GetUsgaCourse(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetUsgaCourseCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple items found");
|
||||
return null;
|
||||
}
|
||||
SaxGolfUsgaCourse usgaCourse = null;
|
||||
// Query data.
|
||||
using (var dbConnection = ReferenceDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
Golf_UsgaCourse_Db dbUsgaCourse = new Golf_UsgaCourse_Db(ReferenceDbInfo);
|
||||
dbUsgaCourse.PopulateFrom(dbCommand, aliasUsgaCourse, filter);
|
||||
usgaCourse = CreateUsgaCourse(dbUsgaCourse);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return usgaCourse;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate item.
|
||||
public override bool IsValidUsgaCourseData(SaxGolfUsgaCourse.Data data, SaxGolfUsgaCourse.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidUsgaCourseData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert item.
|
||||
public override bool InsertUsgaCourse(SaxGolfUsgaCourse usgaCourse, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertUsgaCourse";
|
||||
ClearErrorState();
|
||||
if (!IsValidUsgaCourse(usgaCourse)) return false;
|
||||
if (SysId.IsValid(usgaCourse.Id)) return SetErrorState(ErrorMessage.ValidItemId);
|
||||
using (var dbConnection = ReferenceDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
Golf_UsgaCourse_Db dbUsgaCourse = new Golf_UsgaCourse_Db(ReferenceDbInfo);
|
||||
PopulateTo(dbUsgaCourse, usgaCourse, dbUpdateInfo);
|
||||
if (Golf_UsgaCourse_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
dbUsgaCourse._Id = ReferenceDatabase.GetNextIdFromTable("UsgaCourse");
|
||||
}
|
||||
dbUsgaCourse.ExecuteInsertCommand(dbCommand);
|
||||
usgaCourse.Id = new SysId(dbUsgaCourse._Id);
|
||||
usgaCourse.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(usgaCourse).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update item.
|
||||
public override bool UpdateUsgaCourse(SaxGolfUsgaCourse usgaCourse, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdateUsgaCourse";
|
||||
ClearErrorState();
|
||||
if (!IsValidUsgaCourse(usgaCourse)) return false;
|
||||
if (!SysId.IsValid(usgaCourse.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!usgaCourse.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(usgaCourse).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = ReferenceDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
Golf_UsgaCourse_Db dbUsgaCourse = new Golf_UsgaCourse_Db(ReferenceDbInfo);
|
||||
dbUsgaCourse.PopulateFrom(dbCommand, aliasUsgaCourse, "Id=" + SysId.ToString(usgaCourse.Id));
|
||||
// ToDo SaxUpdateLogItemMonitor_UsgaCourse updateLogMonitor = new SaxUpdateLogItemMonitor_UsgaCourse(SessionContext, CreateUsgaCourse(dbUsgaCourse), dbUpdateInfo);
|
||||
// Update item.
|
||||
PopulateTo(dbUsgaCourse, usgaCourse, dbUpdateInfo);
|
||||
dbUsgaCourse.ExecuteUpdateCommand(dbCommand);
|
||||
usgaCourse.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(usgaCourse).Concat(": ").Concat("", "\n\t"));
|
||||
// Record updates.
|
||||
// ToDo updateLogMonitor.RecordUpdatedValues(usgaCourse);
|
||||
// ToDo updateLogMonitor.LogUpdates();
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete item.
|
||||
public override bool UsgaCourseCanBeDeleted(SaxGolfUsgaCourse usgaCourse)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.UsgaCourseCanBeDeleted(usgaCourse)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteUsgaCourse(SaxGolfUsgaCourse usgaCourse, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeleteUsgaCourse";
|
||||
ClearErrorState();
|
||||
if (!UsgaCourseCanBeDeleted(usgaCourse)) return false;
|
||||
|
||||
// User Roles are logically deleted by changing the status.
|
||||
usgaCourse.Status = SaStatus.Deleted;
|
||||
return UpdateUsgaCourse(usgaCourse, dbUpdateInfo);
|
||||
|
||||
/*
|
||||
* Physical deletion.
|
||||
using (var dbConnection = ReferenceDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
Golf_UsgaCourse_Db dbUsgaCourse = new Golf_UsgaCourse_Db(ReferenceDbInfo);
|
||||
dbUsgaCourse.PopulateFrom(dbCommand, aliasUsgaCourse, "Id=" + usgaCourse.Id.ToString());
|
||||
// Delete item.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaCourse) + " WHERE Id=" + SysId.ToString(usgaCourse.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
usgaCourse.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(usgaCourse).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
*/
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(Golf_UsgaCourse_Db dbUsgaCourse, SaxGolfUsgaCourse usgaCourse, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbUsgaCourse._Id = SysId.ToLong(usgaCourse.Id);
|
||||
dbUsgaCourse._FacilityId = SysId.ToInt(usgaCourse.FacilityId);
|
||||
dbUsgaCourse._UsgaCourseId = SysId.ToInt(usgaCourse.UsgaCourseId);
|
||||
dbUsgaCourse._LegacyCrpCourseId = SysId.ToInt(usgaCourse.LegacyCrpCourseId);
|
||||
dbUsgaCourse._Caption = usgaCourse.Caption;
|
||||
dbUsgaCourse._CourseName = usgaCourse.CourseName;
|
||||
dbUsgaCourse._FullName = usgaCourse.FullName;
|
||||
dbUsgaCourse._Address1 = usgaCourse.Address1;
|
||||
dbUsgaCourse._Address2 = usgaCourse.Address2;
|
||||
dbUsgaCourse._City = usgaCourse.City;
|
||||
dbUsgaCourse._PostalCode = usgaCourse.PostalCode;
|
||||
dbUsgaCourse._Latitude = usgaCourse.Latitude;
|
||||
dbUsgaCourse._Longitude = usgaCourse.Longitude;
|
||||
dbUsgaCourse._Email = usgaCourse.Email;
|
||||
dbUsgaCourse._Telephone = usgaCourse.Telephone;
|
||||
dbUsgaCourse._MarkersUpdateAt = usgaCourse.MarkersUpdateAt;
|
||||
dbUsgaCourse._MarkersData = usgaCourse.MarkersData;
|
||||
// Common.
|
||||
dbUsgaCourse._Notes = usgaCourse.Notes;
|
||||
dbUsgaCourse._Status = SacsSystem.GetStatusCode(usgaCourse.Status);
|
||||
dbUsgaCourse._Flags = (short)usgaCourse.Flags;
|
||||
if (!SysId.IsValid(usgaCourse.Id))
|
||||
{
|
||||
dbUsgaCourse._CreateOn = DateTime.Now;
|
||||
dbUsgaCourse._CreateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbUsgaCourse._CreateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
dbUsgaCourse._UpdateOn = DateTime.Now;
|
||||
dbUsgaCourse._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbUsgaCourse._UpdateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
private void PopulateFrom(Golf_UsgaCourse_Db dbUsgaCourse, SaxGolfUsgaCourse usgaCourse)
|
||||
{
|
||||
//usgaCourse.Id = new SysId(dbUsgaCourse._Id);
|
||||
usgaCourse.FacilityId = new SysId(dbUsgaCourse._FacilityId);
|
||||
usgaCourse.UsgaCourseId = new SysId(dbUsgaCourse._UsgaCourseId);
|
||||
usgaCourse.LegacyCrpCourseId = new SysId(dbUsgaCourse._LegacyCrpCourseId);
|
||||
usgaCourse.Caption = dbUsgaCourse._Caption;
|
||||
usgaCourse.CourseName = dbUsgaCourse._CourseName;
|
||||
usgaCourse.FullName = dbUsgaCourse._FullName;
|
||||
usgaCourse.Address1 = dbUsgaCourse._Address1;
|
||||
usgaCourse.Address2 = dbUsgaCourse._Address2;
|
||||
usgaCourse.City = dbUsgaCourse._City;
|
||||
usgaCourse.PostalCode = dbUsgaCourse._PostalCode;
|
||||
usgaCourse.Latitude = dbUsgaCourse._Latitude;
|
||||
usgaCourse.Longitude = dbUsgaCourse._Longitude;
|
||||
usgaCourse.Email = dbUsgaCourse._Email;
|
||||
usgaCourse.Telephone = dbUsgaCourse._Telephone;
|
||||
usgaCourse.MarkersUpdateAt = dbUsgaCourse._MarkersUpdateAt;
|
||||
usgaCourse.MarkersData = dbUsgaCourse._MarkersData;
|
||||
// Common.
|
||||
usgaCourse.Notes = dbUsgaCourse._Notes;
|
||||
usgaCourse.Status = SacsSystem.GetStatusForCode(dbUsgaCourse._Status);
|
||||
usgaCourse.SetCreateStamp(dbUsgaCourse._CreateOn, new SysId(dbUsgaCourse._CreateBy), dbUsgaCourse._CreateHost);
|
||||
usgaCourse.SetUpdateStamp(dbUsgaCourse._UpdateOn, new SysId(dbUsgaCourse._UpdateBy), dbUsgaCourse._UpdateHost);
|
||||
usgaCourse.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Bulk updates.
|
||||
/// <summary>
|
||||
/// Bulk update USGA Courses.
|
||||
/// <para>- Facility Id must be supplied to identify parent.</para>
|
||||
/// <para>- Course Id must be supplied to act as identifier.</para>
|
||||
/// <para>- Other properties are validated as per course rules - check error state.</para>
|
||||
/// <para>- Other properties are left as is if null.</para>
|
||||
/// </summary>
|
||||
public override bool BulkUpdateUsgaCourses(List<UsgaCourseData> courses, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<UsgaCourseData> coursesToUpdate = new List<UsgaCourseData>();
|
||||
|
||||
// Validate supplied data.
|
||||
foreach (UsgaCourseData course in courses)
|
||||
{
|
||||
// Validate course properties.
|
||||
// Facility and Course Codes are mandatory, other values only validated if non-null.
|
||||
if (!SysId.IsValid(course.UsgaFacilityId)) return SetErrorState("Facility Id must be supplied");
|
||||
if (!SysId.IsValid(course.UsgaCourseId)) return SetErrorState("USGA Course Id must be supplied");
|
||||
if (course.Caption != null && !IsValidValue(course.Caption, "caption", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Caption), true)) return false;
|
||||
if (course.CourseName != null && !IsValidValue(course.CourseName, "name", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_CourseName))) return false;
|
||||
if (course.FullName != null && !IsValidValue(course.FullName, "full name", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_FullName))) return false;
|
||||
if (course.Address1 != null && !IsValidValue(course.Address1, "address 1", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Address1))) return false;
|
||||
if (course.Address2 != null && !IsValidValue(course.Address2, "address 2", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Address2))) return false;
|
||||
if (course.City != null && !IsValidValue(course.City, "city", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_City))) return false;
|
||||
if (course.Email != null && !IsValidValue(course.Email, "email", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Email))) return false;
|
||||
if (course.Telephone != null && !IsValidValue(course.Telephone, "telephone", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Telephone))) return false;
|
||||
coursesToUpdate.Add(course);
|
||||
}
|
||||
int MaxBulkUpdateBatchSize = 64;
|
||||
int batchSize = coursesToUpdate.Any() ? (int)Math.Ceiling(coursesToUpdate.Count() / Math.Ceiling((double)coursesToUpdate.Count() / MaxBulkUpdateBatchSize)) : MaxBulkUpdateBatchSize;
|
||||
while (coursesToUpdate.Any())
|
||||
{
|
||||
List<String> query = new List<string>();
|
||||
query.Add($"Declare @statusActive VarChar(3) = '{SacsSystem.GetStatusCode(SaxGolfUsgaCourse.DefaultStatus)}';");
|
||||
query.Add($"Declare @updateOn DateTime = GetDate();");
|
||||
query.Add($"Declare @updateBy Int = {SysId.ToLong(dbUpdateInfo.UserId)};");
|
||||
query.Add($"Declare @updateHost VarChar(100) = '{DbQuery.FormatForCondition(dbUpdateInfo.Host)}';");
|
||||
query.Add("Merge");
|
||||
query.Add($"Into {SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaCourse)} uCrs");
|
||||
query.Add("Using");
|
||||
query.Add("(");
|
||||
query.Add("Select dFty.Id FacilityId, dCrs.UsgaFacilityId, dCrs.UsgaCourseId, dCrs.LegacyCrpCourseId, dCrs.Caption, dCrs.CourseName, dCrs.FullName, dCrs.Address1, dCrs.Address2, dCrs.City, dCrs.PostalCode, dCrs.Email, dCrs.Telephone");
|
||||
query.Add("From");
|
||||
query.Add("(");
|
||||
query.Add("Select 0 UsgaFacilityId, 0 UsgaCourseId, 0 LegacyCrpCourseId, '' Caption, '' CourseName, '' FullName, '' Address1, '' Address2, '' City, '' PostalCode, '' Email, '' Telephone");
|
||||
foreach (UsgaCourseData course in coursesToUpdate.ExtractRange(0, batchSize))
|
||||
query.Add($"Union Select {course.UsgaFacilityId}, {course.UsgaCourseId}, " +
|
||||
(SysId.IsValid(course.LegacyCrpCourseId) ? $"{course.LegacyCrpCourseId}" : "Null") + "," +
|
||||
(course.Caption != null ? $"'{DbQuery.FormatForCondition(course.Caption)}'" : "Null") + "," +
|
||||
(course.CourseName != null ? $"'{DbQuery.FormatForCondition(course.CourseName)}'" : "Null") + "," +
|
||||
(course.FullName != null ? $"'{DbQuery.FormatForCondition(course.FullName)}'" : "Null") + "," +
|
||||
(course.Address1 != null ? $"'{DbQuery.FormatForCondition(course.Address1)}'" : "Null") + "," +
|
||||
(course.Address2 != null ? $"'{DbQuery.FormatForCondition(course.Address2)}'" : "Null") + "," +
|
||||
(course.City != null ? $"'{DbQuery.FormatForCondition(course.City)}'" : "Null") + "," +
|
||||
(course.PostalCode != null ? $"'{DbQuery.FormatForCondition(course.PostalCode)}'" : "Null") + "," +
|
||||
(course.Email != null ? $"'{DbQuery.FormatForCondition(course.Email)}'" : "Null") + "," +
|
||||
(course.Telephone != null ? $"'{DbQuery.FormatForCondition(course.Telephone)}'" : "Null"));
|
||||
query.Add(") dCrs");
|
||||
query.Add($"Inner Join {SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaFacility)} dFty On dFty.UsgaFacilityId=dCrs.UsgaFacilityId");
|
||||
query.Add(") dCrs");
|
||||
query.Add("On uCrs.FacilityId=dCrs.FacilityId And uCrs.UsgaCourseId=dCrs.UsgaCourseId");
|
||||
query.Add("When Matched And ((dCrs.LegacyCrpCourseId Is Not Null And uCrs.LegacyCrpCourseId!=dCrs.LegacyCrpCourseId) Or (dCrs.Caption Is Not Null And uCrs.Caption!=dCrs.Caption) Or (dCrs.CourseName Is Not Null And uCrs.CourseName!=dCrs.CourseName) Or (dCrs.FullName Is Not Null And uCrs.FullName!=dCrs.FullName) Or (dCrs.Address1 Is Not Null And uCrs.Address1!=dCrs.Address1) Or (dCrs.Address2 Is Not Null And uCrs.Address2!=dCrs.Address2) Or (dCrs.City Is Not Null And uCrs.City!=dCrs.City) Or (dCrs.PostalCode Is Not Null And uCrs.PostalCode!=dCrs.PostalCode) Or (dCrs.Email Is Not Null And uCrs.Email!=dCrs.Email) Or (dCrs.Telephone Is Not Null And uCrs.Telephone!=dCrs.Telephone) Or uCrs.Status!=@statusActive)");
|
||||
query.Add("Then Update Set");
|
||||
query.Add(" LegacyCrpCourseId=Coalesce(dCrs.LegacyCrpCourseId,uCrs.LegacyCrpCourseId),");
|
||||
query.Add(" Caption=Coalesce(dCrs.Caption,uCrs.Caption),");
|
||||
query.Add(" CourseName=Coalesce(dCrs.CourseName,uCrs.CourseName),");
|
||||
query.Add(" FullName=Coalesce(dCrs.FullName,uCrs.FullName),");
|
||||
query.Add(" Address1=Coalesce(dCrs.Address1,uCrs.Address1),");
|
||||
query.Add(" Address2=Coalesce(dCrs.Address2,uCrs.Address2),");
|
||||
query.Add(" City=Coalesce(dCrs.City,uCrs.City),");
|
||||
query.Add(" PostalCode=Coalesce(dCrs.PostalCode,uCrs.PostalCode),");
|
||||
query.Add(" Email=Coalesce(dCrs.Email,uCrs.Email),");
|
||||
query.Add(" Telephone=Coalesce(dCrs.Telephone,uCrs.Telephone),");
|
||||
query.Add(" Status=@statusActive,");
|
||||
query.Add(" UpdateOn=@updateOn,");
|
||||
query.Add(" UpdateBy=@updateBy,");
|
||||
query.Add(" UpdateHost=@updateHost");
|
||||
query.Add("When Not Matched And Len(Coalesce(dCrs.Caption,''))>0");
|
||||
query.Add("Then Insert (FacilityId,UsgaCourseId,LegacyCrpCourseId,Caption,CourseName,FullName,Address1,Address2,City,PostalCode,Email,Telephone,MarkersData,Notes,Flags,Status,CreateOn,CreateBy,CreateHost,UpdateOn,UpdateBy,UpdateHost)");
|
||||
query.Add($"Values (dCrs.FacilityId,dCrs.UsgaCourseId,Coalesce(dCrs.LegacyCrpCourseId,0),dCrs.Caption,Coalesce(dCrs.CourseName,''),Coalesce(dCrs.FullName,''),Coalesce(dCrs.Address1,''),Coalesce(dCrs.Address2,''),Coalesce(dCrs.City,''),Coalesce(dCrs.PostalCode,''),Coalesce(dCrs.Email,''),Coalesce(dCrs.Telephone,''),'','',0,@statusActive,@updateOn,@updateBy,@updateHost,@updateOn,@updateBy,@updateHost)");
|
||||
query.Add(";");
|
||||
//SaLogger.Info($"{SysUtil.Fn} Bulk USGA Course update query:\n\t{query.Concat("\n\t")}");
|
||||
|
||||
try
|
||||
{
|
||||
int result = ReferenceDatabase.ExecuteNonQuery(query.Concat("\n"));
|
||||
if (ReferenceDatabase.HasErrorState())
|
||||
SaLogger.Warn($"{SysUtil.Fn} Error executing bulk USGA Course update - {ReferenceDatabase.ErrorStateMessage}");
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SaLogger.Warn(SysUtil.Fn + " " + ExceptionUtil.GetLogMessage(exc, " executing bulk USGA Course update"));
|
||||
}
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item column definitions.
|
||||
private static readonly String aliasUsgaCourse = "UsgCrs";
|
||||
private static readonly String aliasUsgaCourse_Facility = "UsgCrs_Cty";
|
||||
private static readonly String prefixUsgaCourse_Facility = aliasUsgaCourse_Facility + "_";
|
||||
private static readonly String colCourse_Marker_Count = "Crs_Mkr_Count";
|
||||
private static readonly String colCourse_Marker_Active_Count = "Crs_Mkr_Act_Count";
|
||||
private void SetUsgaCourseColDfn
|
||||
(ColumnDfn col, String caption, int width, SaxDbDfn_Reference.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SaxDbDfn_Reference.GetTableForColumn(dbCol) == SaxDbDfn_Reference.TableIdx.UsgaCourse)
|
||||
alias = aliasUsgaCourse;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn_Reference.GetColumnName(dbCol, false), SaxDbDfn_Reference.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn_Reference.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SaxDbDfn_Reference.GetColTextLen(dbCol);
|
||||
}
|
||||
public override ColumnDfn GetUsgaCourseColumnDfn(SaxGolfUsgaCourse.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
//-----------------------------------------------------------
|
||||
case SaxGolfUsgaCourse.Column.Pos:
|
||||
SetUsgaCourseColDfn(columnDfn, "Pos", 60, SaxDbDfn_Reference.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
case SaxGolfUsgaCourse.Column.Id:
|
||||
SetUsgaCourseColDfn(columnDfn, "Id", 80, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-------------------------------------------------------
|
||||
case SaxGolfUsgaCourse.Column.FacilityId:
|
||||
SetUsgaCourseColDfn(columnDfn, "Facility #", 80, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_FacilityId, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaCourse.Column.Facility_Name:
|
||||
SetUsgaCourseColDfn(columnDfn, "Facility", 120, SaxDbDfn_Reference.ColumnIdx.UsgaFacility_FacilityName, ColumnAlignment.Center, DataValue.DataType.String, aliasUsgaCourse_Facility, prefixUsgaCourse_Facility);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-------------------------------------------------------
|
||||
case SaxGolfUsgaCourse.Column.UsgaCourseId:
|
||||
SetUsgaCourseColDfn(columnDfn, "Id", 80, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_UsgaCourseId, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaCourse.Column.LegacyCrpCourseId:
|
||||
SetUsgaCourseColDfn(columnDfn, "CRP Id", 80, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_LegacyCrpCourseId, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaCourse.Column.Caption:
|
||||
SetUsgaCourseColDfn(columnDfn, "Caption", 120, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Caption, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaCourse.Column.CourseName:
|
||||
SetUsgaCourseColDfn(columnDfn, "Name", 120, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_CourseName, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaCourse.Column.FullName:
|
||||
SetUsgaCourseColDfn(columnDfn, "Full Name", 120, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_FullName, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaCourse.Column.Address1:
|
||||
SetUsgaCourseColDfn(columnDfn, "Address 1", 120, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Address1, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaCourse.Column.Address2:
|
||||
SetUsgaCourseColDfn(columnDfn, "Address 2", 120, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Address2, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaCourse.Column.City:
|
||||
SetUsgaCourseColDfn(columnDfn, "City", 120, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_City, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaCourse.Column.Email:
|
||||
SetUsgaCourseColDfn(columnDfn, "Email", 120, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Email, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaCourse.Column.Telephone:
|
||||
SetUsgaCourseColDfn(columnDfn, "Telephone", 120, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Telephone, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaCourse.Column.MarkersUpdateOn_Date:
|
||||
SetUsgaCourseColDfn(columnDfn, "Markers updated", 120, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_MarkersUpdateAt, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Derived properties.
|
||||
case SaxGolfUsgaCourse.Column.MarkerCount_All:
|
||||
SetUsgaProvinceColDfn(columnDfn, "Markers", 60, SaxDbDfn_Reference.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.DataName = colCourse_Marker_Count;
|
||||
break;
|
||||
case SaxGolfUsgaCourse.Column.MarkerCount_Active:
|
||||
SetUsgaProvinceColDfn(columnDfn, "Markers (act)", 60, SaxDbDfn_Reference.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.DataName = colCourse_Marker_Active_Count;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Common properties.
|
||||
case SaxGolfUsgaCourse.Column.Notes:
|
||||
SetUsgaCourseColDfn(columnDfn, "Notes", 240, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Notes);
|
||||
break;
|
||||
case SaxGolfUsgaCourse.Column.Flags:
|
||||
SetUsgaCourseColDfn(columnDfn, "Flags", 60, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaCourse.Column.Status:
|
||||
SetUsgaCourseColDfn(columnDfn, "Status", 80, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Status, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaCourse.Column.Status_Desc:
|
||||
SetUsgaCourseColDfn(columnDfn, "Status", 90, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Status, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaCourse.Column.Status_Ind:
|
||||
SetUsgaCourseColDfn(columnDfn, "Status", 80, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaCourse.Column.CreateOn_Date:
|
||||
SetUsgaCourseColDfn(columnDfn, "Created", 80, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaCourse.Column.UpdateOn_Date:
|
||||
SetUsgaCourseColDfn(columnDfn, "Updated", 80, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_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> GetUsgaCourseQueryFilter(SaxGolfUsgaCourse.Params prm)
|
||||
{
|
||||
List<String> filter = new List<String>();
|
||||
String col_Id = SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Id, aliasUsgaCourse);
|
||||
String col_FacilityId = SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_FacilityId, aliasUsgaCourse);
|
||||
String col_CourseName = SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_CourseName, aliasUsgaCourse);
|
||||
|
||||
// Item Ids.
|
||||
if (prm.IdsIncluded.HasValidIds())
|
||||
filter.Add($"{col_Id} IN ({prm.IdsIncluded.Concat(",")})");
|
||||
if (prm.IdsExcluded.HasValidIds())
|
||||
filter.Add($"{col_Id} NOT IN ({prm.IdsExcluded.Concat(",")})");
|
||||
|
||||
// Provinces.
|
||||
if (prm.ProvinceIdsIncluded.HasValidIds())
|
||||
{
|
||||
String provinceIdsIncluded = prm.ProvinceIdsIncluded.Concat(",");
|
||||
if (StringUtil.IsBlank(prm.Alias_Province))
|
||||
filter.Add($"{col_FacilityId} IN (SELECT Id FROM {SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaFacility)} WHERE ProvinceId IN ({provinceIdsIncluded}))");
|
||||
else
|
||||
filter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Id, prm.Alias_Province)} IN ({provinceIdsIncluded})");
|
||||
}
|
||||
|
||||
// Facilities.
|
||||
if (prm.FacilityIdsIncluded.HasValidIds())
|
||||
filter.Add($"{col_FacilityId} IN ({prm.FacilityIdsIncluded.Concat(",")})");
|
||||
|
||||
// USGA Course Ids.
|
||||
if (prm.UsgaCourseIdsIncluded.HasValidIds())
|
||||
filter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_UsgaCourseId, aliasUsgaCourse)} IN ({prm.UsgaCourseIdsIncluded.Concat(",")})");
|
||||
|
||||
if (!StringUtil.IsBlank(prm.CourseFilter))
|
||||
{
|
||||
// Split filter into words.
|
||||
List<String> filterWords = prm.CourseFilter.Split((char[])null).ToList();
|
||||
filterWords.RemoveDuplicatesCI();
|
||||
filterWords.RemoveBlanks();
|
||||
foreach (String filterWord in filterWords)
|
||||
{
|
||||
List<String> courseFilter = new List<String>();
|
||||
courseFilter.Add($"{col_CourseName} Like '%{DbQuery.FormatForLike(filterWord, true)}%'");
|
||||
courseFilter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_FullName, aliasUsgaCourse)} Like '%{DbQuery.FormatForLike(filterWord, true)}%'");
|
||||
courseFilter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Address1, aliasUsgaCourse)} Like '%{DbQuery.FormatForLike(filterWord, true)}%'");
|
||||
courseFilter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Address2, aliasUsgaCourse)} Like '%{DbQuery.FormatForLike(filterWord, true)}%'");
|
||||
courseFilter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_City, aliasUsgaCourse)} Like '%{DbQuery.FormatForLike(filterWord, true)}%'");
|
||||
filter.Add(courseFilter.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
}
|
||||
|
||||
// Name.
|
||||
if (!StringUtil.IsEmpty(prm.CourseNameFull))
|
||||
filter.Add($"{col_CourseName}='{DbQuery.FormatForCondition(prm.CourseNameFull)}'");
|
||||
if (!StringUtil.IsEmpty(prm.CourseNamePartial))
|
||||
filter.Add($"{col_CourseName} LIKE '%{DbQuery.FormatForLike(prm.CourseNamePartial)}%'");
|
||||
|
||||
// Markers data.
|
||||
if (prm.HasMarkersData != SacsHierarchyItem.Params.BoolState.Either)
|
||||
{
|
||||
String lenComparison = (prm.HasMarkers == SacsHierarchyItem.Params.BoolState.True ? ">0" : "<1");
|
||||
filter.Add($"Len(LTrim(RTrim(IsNull({SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaMarker)})))){lenComparison}");
|
||||
}
|
||||
|
||||
// Flags.
|
||||
if (prm.PriorityFlagState != SacsHierarchyItem.Params.FlagState.Either)
|
||||
filter.Add(DbQuery.BuildBitMappedFilter(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Flags, aliasUsgaCourse), SaxGolfUsgaCourse.Flag_Priority, prm.PriorityFlagState == SacsHierarchyItem.Params.FlagState.True));
|
||||
|
||||
// Associated data.
|
||||
if (prm.HasMarkers != SacsHierarchyItem.Params.BoolState.Either)
|
||||
{
|
||||
String existsPrefix = (prm.HasMarkers == SacsHierarchyItem.Params.BoolState.True ? "" : "Not ");
|
||||
filter.Add($"{existsPrefix} Exists (Select 1 From {SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaMarker)} Where {SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_CourseId)}={col_Id})");
|
||||
}
|
||||
|
||||
// Notes.
|
||||
if (!StringUtil.IsEmpty(prm.NotesPartial))
|
||||
filter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Notes, aliasUsgaCourse)} LIKE '%{DbQuery.FormatForLike(prm.NotesPartial)}%'");
|
||||
|
||||
// Status.
|
||||
if (prm.StatusCat != SaxGolfUsgaCourse.StatusCat.Any)
|
||||
filter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Status, aliasUsgaCourse)} {GetUsgaCourseStatusCatFilterCondition(prm.StatusCat)}");
|
||||
|
||||
if (filter.Count < 1 && prm.IncludeDefaultFilter) filter.Add("1=1");
|
||||
return filter;
|
||||
}
|
||||
internal static String GetUsgaCourseStatusCatFilterCondition(SaxGolfUsgaCourse.StatusCat statusCat)
|
||||
{
|
||||
if (statusCat == SaxGolfUsgaCourse.StatusCat.ActiveOnly)
|
||||
return $"='{SacsSystem.GetStatusCode(SaStatus.Active)}'";
|
||||
if (statusCat == SaxGolfUsgaCourse.StatusCat.InactiveOnly)
|
||||
return $"='{SacsSystem.GetStatusCode(SaStatus.Inactive)}'";
|
||||
if (statusCat == SaxGolfUsgaCourse.StatusCat.NotDeleted)
|
||||
return $"!='{SacsSystem.GetStatusCode(SaStatus.Deleted)}'";
|
||||
if (statusCat == SaxGolfUsgaCourse.StatusCat.DeletedOnly)
|
||||
return $"='{SacsSystem.GetStatusCode(SaStatus.Deleted)}'";
|
||||
return "";
|
||||
}
|
||||
// Item sort columns.
|
||||
public HashSet<String> GetUsgaCourseSortColumns(SaxGolfUsgaCourse.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
HashSet<String> sortColumnNames = new HashSet<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for UsgaCourse columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SaxDbDfn_Reference.GetTableForColumn((SaxDbDfn_Reference.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn_Reference.TableIdx.UsgaCourse)
|
||||
{
|
||||
sortCol = SaxDbDfn_Reference.GetColumnNameQual((SaxDbDfn_Reference.ColumnIdx)columnDfn.DbColumn, aliasUsgaCourse);
|
||||
}
|
||||
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();
|
||||
AddRandomSortColumn(prm, sortColumnNames);
|
||||
if (sortColumnNames.IsEmpty())
|
||||
{
|
||||
// Default sort columns.
|
||||
sortColumnNames.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Id, aliasUsgaCourse) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item count.
|
||||
private long GetUsgaCourseCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return ReferenceDatabase.GetRowCount(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaCourse) + " As " + aliasUsgaCourse, filter);
|
||||
}
|
||||
public override long GetUsgaCourseCount(SaxGolfUsgaCourse.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetUsgaCourseCount(GetUsgaCourseQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item list.
|
||||
public override List<SaxGolfUsgaCourse> GetUsgaCourseList(SaxGolfUsgaCourse.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<SaxGolfUsgaCourse> userRoles = new List<SaxGolfUsgaCourse>();
|
||||
DbQuery qry = new DbQuery(ReferenceDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaCourse), aliasUsgaCourse);
|
||||
Golf_UsgaCourse_Db dbUsgaCourse = new Golf_UsgaCourse_Db(ReferenceDbInfo);
|
||||
qry.Columns.AddRange(dbUsgaCourse.ExistingColumnNames);
|
||||
qry.Filters.AddRange(GetUsgaCourseQueryFilter(prm));
|
||||
qry.OrderBy.AddRange(GetUsgaCourseSortColumns(prm));
|
||||
// Query data.
|
||||
using (var dbConnection = ReferenceDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
dbCommand.CommandText = qry.BuildQuery(prm.ResultsPaging);
|
||||
using (DbDataReader dbDataReader = dbCommand.ExecuteReader())
|
||||
{
|
||||
while (dbDataReader.Read())
|
||||
{
|
||||
dbUsgaCourse = new Golf_UsgaCourse_Db(ReferenceDbInfo);
|
||||
dbUsgaCourse.PopulateFrom(dbDataReader);
|
||||
userRoles.Add(CreateUsgaCourse(dbUsgaCourse));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return userRoles;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item query execution.
|
||||
public override DbResultSet ExecuteUsgaCourseQuery(List<ColumnDfn> columns, SaxGolfUsgaCourse.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(ReferenceDatabase.DbmsType);
|
||||
query.Tables.Add(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaCourse), aliasUsgaCourse);
|
||||
|
||||
// Add columns as defined in query list.
|
||||
if (columns.HasId(SaxGolfUsgaCourse.Column.Id))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Id, aliasUsgaCourse));
|
||||
bool hasFacilityCols = (columns.HasId(SaxGolfUsgaCourse.Column.Facility_Name));
|
||||
if (columns.HasId(SaxGolfUsgaCourse.Column.FacilityId) || hasFacilityCols)
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_FacilityId, aliasUsgaCourse));
|
||||
if (columns.HasId(SaxGolfUsgaCourse.Column.UsgaCourseId))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_UsgaCourseId, aliasUsgaCourse));
|
||||
if (columns.HasId(SaxGolfUsgaCourse.Column.LegacyCrpCourseId))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_LegacyCrpCourseId, aliasUsgaCourse));
|
||||
if (columns.HasId(SaxGolfUsgaCourse.Column.Caption))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Caption, aliasUsgaCourse));
|
||||
if (columns.HasId(SaxGolfUsgaCourse.Column.CourseName))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_CourseName, aliasUsgaCourse));
|
||||
if (columns.HasId(SaxGolfUsgaCourse.Column.FullName))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_FullName, aliasUsgaCourse));
|
||||
if (columns.HasId(SaxGolfUsgaCourse.Column.Address1))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Address1, aliasUsgaCourse));
|
||||
if (columns.HasId(SaxGolfUsgaCourse.Column.Address2))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Address2, aliasUsgaCourse));
|
||||
if (columns.HasId(SaxGolfUsgaCourse.Column.City))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_City, aliasUsgaCourse));
|
||||
if (columns.HasId(SaxGolfUsgaCourse.Column.Email))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Email, aliasUsgaCourse));
|
||||
if (columns.HasId(SaxGolfUsgaCourse.Column.Telephone))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Telephone, aliasUsgaCourse));
|
||||
if (columns.HasId(SaxGolfUsgaCourse.Column.MarkersUpdateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_MarkersUpdateAt, aliasUsgaCourse));
|
||||
// Common properties.
|
||||
if (columns.HasId(SaxGolfUsgaCourse.Column.Notes))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Notes, aliasUsgaCourse));
|
||||
if (columns.HasId(SaxGolfUsgaCourse.Column.Flags))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Flags, aliasUsgaCourse));
|
||||
if (columns.HasId(SaxGolfUsgaCourse.Column.Status) || columns.HasId(SaxGolfUsgaCourse.Column.Status_Desc) || columns.HasId(SaxGolfUsgaCourse.Column.Status_Ind))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Status, aliasUsgaCourse));
|
||||
if (columns.HasId(SaxGolfUsgaCourse.Column.CreateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_CreateOn, aliasUsgaCourse));
|
||||
if (columns.HasId(SaxGolfUsgaCourse.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_UpdateOn, aliasUsgaCourse));
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Facility.
|
||||
if (hasFacilityCols)
|
||||
{
|
||||
DbQueryJoin joinFacility = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinFacility.Table = new StringPair(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaFacility), aliasUsgaCourse_Facility);
|
||||
joinFacility.Filters.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_Id, aliasUsgaCourse_Facility) + "=" + SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_FacilityId, aliasUsgaCourse));
|
||||
query.Joins.Add(joinFacility);
|
||||
List<SaxDbDfn_Reference.ColumnIdx> cols = new List<SaxDbDfn_Reference.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_UsgaFacilityId);
|
||||
cols.Add(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_FacilityName);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(col, aliasUsgaCourse_Facility), prefixUsgaCourse_Facility + SaxDbDfn_Reference.GetColumnName(col, false));
|
||||
prm.Alias_Facility = aliasUsgaCourse_Facility;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Marker count.
|
||||
if (columns.HasId(SaxGolfUsgaCourse.Column.MarkerCount_All))
|
||||
{
|
||||
String aliasMarker = "aCrsMkr_Count";
|
||||
DbQuery queryMarker = new DbQuery(CoreDatabase.DbmsType);
|
||||
queryMarker.Tables.Add(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaMarker), aliasMarker);
|
||||
queryMarker.Columns.Add("Count(*)");
|
||||
queryMarker.Filters.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_CourseId, aliasMarker) + "=" + SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Id, aliasUsgaCourse));
|
||||
query.Columns.Add("(" + queryMarker.BuildQuery() + ")", colCourse_Marker_Count);
|
||||
}
|
||||
|
||||
// Active Marker count.
|
||||
if (columns.HasId(SaxGolfUsgaCourse.Column.MarkerCount_Active))
|
||||
{
|
||||
String aliasMarker = "aCrsMkrAct_Count";
|
||||
DbQuery queryMarker = new DbQuery(CoreDatabase.DbmsType);
|
||||
queryMarker.Tables.Add(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaMarker), aliasMarker);
|
||||
queryMarker.Columns.Add("Count(*)");
|
||||
queryMarker.Filters.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_CourseId, aliasMarker) + "=" + SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Id, aliasUsgaCourse));
|
||||
queryMarker.Filters.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Status, aliasMarker) + "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'");
|
||||
query.Columns.Add("(" + queryMarker.BuildQuery() + ")", colCourse_Marker_Active_Count);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetUsgaCourseQueryFilter(prm));
|
||||
|
||||
if (prm.IdsIncluded.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetUsgaCourseSortColumns(prm))
|
||||
query.OrderBy.Add(sortColumn);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
//return new DbResultSet_DataTableReader(db, query.BuildQuery(prm.ResultsPaging));
|
||||
return DbResultSet_DataReader.ExecuteQuery(ReferenceDatabase, query.BuildQuery(prm.ResultsPaging));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
+667
@@ -0,0 +1,667 @@
|
||||
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 Sarand.Net.Standard.Base.Utils;
|
||||
using Sarand.Net.Standard.Dbas.Data;
|
||||
using Saxonite.Base.App;
|
||||
using Saxonite.Net.Standard.Base.App;
|
||||
using Saxonite.Net.Standard.Base.Bus;
|
||||
using Saxonite.Net.Standard.Base.Bus.Reference;
|
||||
using Saxonite.Net.Standard.Dbas.Bus.Reference;
|
||||
using Saxonite.Net.Standard.Dbas.Internal.Reference;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
|
||||
namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
|
||||
{
|
||||
//=======================================================================
|
||||
partial class SaxReferenceGolfMgr_Dbas
|
||||
{
|
||||
//*******************************************************************
|
||||
// Support Mgr - User Report
|
||||
//*******************************************************************
|
||||
// Utilities.
|
||||
private List<StringPair> GetLogProperties(SaxGolfUsgaFacility usgaFacility)
|
||||
{
|
||||
return new List<StringPair>()
|
||||
{
|
||||
new StringPair("Id",SysId.ToString(usgaFacility.Id)),
|
||||
new StringPair("Province Id",SysId.ToString(usgaFacility.ProvinceId)),
|
||||
new StringPair("Usga Facility Id",SysId.ToString(usgaFacility.UsgaFacilityId)),
|
||||
new StringPair("Facility name",usgaFacility.FacilityName),
|
||||
new StringPair("Status",usgaFacility.StatusCode)
|
||||
};
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create item.
|
||||
public override SaxGolfUsgaFacility CreateUsgaFacility(SysId usgaProvinceId)
|
||||
{
|
||||
ClearErrorState();
|
||||
return new SaxGolfUsgaFacility_Dbas(ReferenceDatabase, null, usgaProvinceId, 0);
|
||||
}
|
||||
private SaxGolfUsgaFacility_Dbas CreateUsgaFacility(Golf_UsgaFacility_Db dbUsgaFacility)
|
||||
{
|
||||
ClearErrorState();
|
||||
SaxGolfUsgaFacility_Dbas usgaFacility = new SaxGolfUsgaFacility_Dbas(ReferenceDatabase, new SysId(dbUsgaFacility._Id), new SysId(dbUsgaFacility._ProvinceId), (ushort)dbUsgaFacility._Flags);
|
||||
PopulateFrom(dbUsgaFacility, usgaFacility);
|
||||
return usgaFacility;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get item.
|
||||
public override SaxGolfUsgaFacility GetUsgaFacility(SaxGolfUsgaFacility.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetUsgaFacility(GetUsgaFacilityQueryFilter(prm).Concat(" And ", "(", ")"));
|
||||
}
|
||||
private SaxGolfUsgaFacility GetUsgaFacility(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetUsgaFacilityCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple items found");
|
||||
return null;
|
||||
}
|
||||
SaxGolfUsgaFacility usgaFacility = null;
|
||||
// Query data.
|
||||
using (var dbConnection = ReferenceDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
Golf_UsgaFacility_Db dbUsgaFacility = new Golf_UsgaFacility_Db(ReferenceDbInfo);
|
||||
dbUsgaFacility.PopulateFrom(dbCommand, aliasUsgaFacility, filter);
|
||||
usgaFacility = CreateUsgaFacility(dbUsgaFacility);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return usgaFacility;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate item.
|
||||
public override bool IsValidUsgaFacilityData(SaxGolfUsgaFacility.Data data, SaxGolfUsgaFacility.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidUsgaFacilityData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert item.
|
||||
public override bool InsertUsgaFacility(SaxGolfUsgaFacility usgaFacility, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertUsgaFacility";
|
||||
ClearErrorState();
|
||||
if (!IsValidUsgaFacility(usgaFacility)) return false;
|
||||
if (SysId.IsValid(usgaFacility.Id)) return SetErrorState(ErrorMessage.ValidItemId);
|
||||
using (var dbConnection = ReferenceDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
Golf_UsgaFacility_Db dbUsgaFacility = new Golf_UsgaFacility_Db(ReferenceDbInfo);
|
||||
PopulateTo(dbUsgaFacility, usgaFacility, dbUpdateInfo);
|
||||
if (Golf_UsgaFacility_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
dbUsgaFacility._Id = ReferenceDatabase.GetNextIdFromTable("UsgaFacility");
|
||||
}
|
||||
dbUsgaFacility.ExecuteInsertCommand(dbCommand);
|
||||
usgaFacility.Id = new SysId(dbUsgaFacility._Id);
|
||||
usgaFacility.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(usgaFacility).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update item.
|
||||
public override bool UpdateUsgaFacility(SaxGolfUsgaFacility usgaFacility, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdateUsgaFacility";
|
||||
ClearErrorState();
|
||||
if (!IsValidUsgaFacility(usgaFacility)) return false;
|
||||
if (!SysId.IsValid(usgaFacility.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!usgaFacility.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(usgaFacility).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = ReferenceDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
Golf_UsgaFacility_Db dbUsgaFacility = new Golf_UsgaFacility_Db(ReferenceDbInfo);
|
||||
dbUsgaFacility.PopulateFrom(dbCommand, aliasUsgaFacility, "Id=" + SysId.ToString(usgaFacility.Id));
|
||||
// ToDo SaxUpdateLogItemMonitor_UsgaFacility updateLogMonitor = new SaxUpdateLogItemMonitor_UsgaFacility(SessionContext, CreateUsgaFacility(dbUsgaFacility), dbUpdateInfo);
|
||||
// Update item.
|
||||
PopulateTo(dbUsgaFacility, usgaFacility, dbUpdateInfo);
|
||||
dbUsgaFacility.ExecuteUpdateCommand(dbCommand);
|
||||
usgaFacility.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(usgaFacility).Concat(": ").Concat("", "\n\t"));
|
||||
// Record updates.
|
||||
// ToDo updateLogMonitor.RecordUpdatedValues(usgaFacility);
|
||||
// ToDo updateLogMonitor.LogUpdates();
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete item.
|
||||
public override bool UsgaFacilityCanBeDeleted(SaxGolfUsgaFacility usgaFacility)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.UsgaFacilityCanBeDeleted(usgaFacility)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteUsgaFacility(SaxGolfUsgaFacility usgaFacility, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeleteUsgaFacility";
|
||||
ClearErrorState();
|
||||
if (!UsgaFacilityCanBeDeleted(usgaFacility)) return false;
|
||||
|
||||
// User Roles are logically deleted by changing the status.
|
||||
usgaFacility.Status = SaStatus.Deleted;
|
||||
return UpdateUsgaFacility(usgaFacility, dbUpdateInfo);
|
||||
|
||||
/*
|
||||
* Physical deletion.
|
||||
using (var dbConnection = ReferenceDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
Golf_UsgaFacility_Db dbUsgaFacility = new Golf_UsgaFacility_Db(ReferenceDbInfo);
|
||||
dbUsgaFacility.PopulateFrom(dbCommand, aliasUsgaFacility, "Id=" + usgaFacility.Id.ToString());
|
||||
// Delete item.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaFacility) + " WHERE Id=" + SysId.ToString(usgaFacility.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
usgaFacility.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(usgaFacility).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
*/
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(Golf_UsgaFacility_Db dbUsgaFacility, SaxGolfUsgaFacility usgaFacility, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbUsgaFacility._Id = SysId.ToLong(usgaFacility.Id);
|
||||
dbUsgaFacility._ProvinceId = SysId.ToInt(usgaFacility.ProvinceId);
|
||||
dbUsgaFacility._UsgaFacilityId = SysId.ToLong(usgaFacility.UsgaFacilityId);
|
||||
dbUsgaFacility._FacilityName = usgaFacility.FacilityName;
|
||||
dbUsgaFacility._Address1 = usgaFacility.Address1;
|
||||
dbUsgaFacility._Address2 = usgaFacility.Address2;
|
||||
dbUsgaFacility._City = usgaFacility.City;
|
||||
dbUsgaFacility._PostalCode = usgaFacility.PostalCode;
|
||||
dbUsgaFacility._Latitude = usgaFacility.Latitude;
|
||||
dbUsgaFacility._Longitude = usgaFacility.Longitude;
|
||||
dbUsgaFacility._Email = usgaFacility.Email;
|
||||
dbUsgaFacility._Telephone = usgaFacility.Telephone;
|
||||
// Common.
|
||||
dbUsgaFacility._Notes = usgaFacility.Notes;
|
||||
dbUsgaFacility._Status = SacsSystem.GetStatusCode(usgaFacility.Status);
|
||||
dbUsgaFacility._Flags = (short)usgaFacility.Flags;
|
||||
if (!SysId.IsValid(usgaFacility.Id))
|
||||
{
|
||||
dbUsgaFacility._CreateOn = DateTime.Now;
|
||||
dbUsgaFacility._CreateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbUsgaFacility._CreateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
dbUsgaFacility._UpdateOn = DateTime.Now;
|
||||
dbUsgaFacility._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbUsgaFacility._UpdateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
private void PopulateFrom(Golf_UsgaFacility_Db dbUsgaFacility, SaxGolfUsgaFacility usgaFacility)
|
||||
{
|
||||
//usgaFacility.Id = new SysId(dbUsgaFacility._Id);
|
||||
usgaFacility.ProvinceId = new SysId(dbUsgaFacility._ProvinceId);
|
||||
usgaFacility.UsgaFacilityId = new SysId(dbUsgaFacility._UsgaFacilityId);
|
||||
usgaFacility.FacilityName = dbUsgaFacility._FacilityName;
|
||||
usgaFacility.Address1 = dbUsgaFacility._Address1;
|
||||
usgaFacility.Address2 = dbUsgaFacility._Address2;
|
||||
usgaFacility.City = dbUsgaFacility._City;
|
||||
usgaFacility.PostalCode = dbUsgaFacility._PostalCode;
|
||||
usgaFacility.Latitude = dbUsgaFacility._Latitude;
|
||||
usgaFacility.Longitude = dbUsgaFacility._Longitude;
|
||||
usgaFacility.Email = dbUsgaFacility._Email;
|
||||
usgaFacility.Telephone = dbUsgaFacility._Telephone;
|
||||
// Common.
|
||||
usgaFacility.Notes = dbUsgaFacility._Notes;
|
||||
usgaFacility.Status = SacsSystem.GetStatusForCode(dbUsgaFacility._Status);
|
||||
usgaFacility.SetCreateStamp(dbUsgaFacility._CreateOn, new SysId(dbUsgaFacility._CreateBy), dbUsgaFacility._CreateHost);
|
||||
usgaFacility.SetUpdateStamp(dbUsgaFacility._UpdateOn, new SysId(dbUsgaFacility._UpdateBy), dbUsgaFacility._UpdateHost);
|
||||
usgaFacility.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Bulk updates.
|
||||
/// <summary>
|
||||
/// Bulk update USGA Facilities.
|
||||
/// <para>- Province code must be supplied to identify parent.</para>
|
||||
/// <para>- Facility Id must be supplied to act as identifier.</para>
|
||||
/// <para>- Other properties are validated as per facility rules - check error state.</para>
|
||||
/// <para>- Other properties are left as is if null.</para>
|
||||
/// </summary>
|
||||
public override bool BulkUpdateUsgaFacilities(List<UsgaFacilityData> facilities, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<UsgaFacilityData> facilitiesToUpdate = new List<UsgaFacilityData>();
|
||||
|
||||
// Validate supplied data.
|
||||
foreach (UsgaFacilityData facility in facilities)
|
||||
{
|
||||
// Validate facility properties.
|
||||
// Province and Facility Codes are mandatory, other values only validated if non-null.
|
||||
if (!IsValidValue(facility.ProvinceCode, "province", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_ProvinceCode), true)) return false;
|
||||
if (!SysId.IsValid(facility.UsgaFacilityId)) return SetErrorState("USGA Facility Id must be supplied");
|
||||
if (facility.FacilityName != null && !IsValidValue(facility.FacilityName, "name", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_FacilityName))) return false;
|
||||
if (facility.Address1 != null && !IsValidValue(facility.Address1, "address 1", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_Address1))) return false;
|
||||
if (facility.Address2 != null && !IsValidValue(facility.Address2, "address 2", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_Address2))) return false;
|
||||
if (facility.City != null && !IsValidValue(facility.City, "city", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_City))) return false;
|
||||
if (facility.Email != null && !IsValidValue(facility.Email, "email", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_Email))) return false;
|
||||
if (facility.Telephone != null && !IsValidValue(facility.Telephone, "telephone", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_Telephone))) return false;
|
||||
facilitiesToUpdate.Add(facility);
|
||||
}
|
||||
int MaxBulkUpdateBatchSize = 64;
|
||||
int batchSize = facilitiesToUpdate.Any() ? (int)Math.Ceiling(facilitiesToUpdate.Count() / Math.Ceiling((double)facilitiesToUpdate.Count() / MaxBulkUpdateBatchSize)) : MaxBulkUpdateBatchSize;
|
||||
while (facilitiesToUpdate.Any())
|
||||
{
|
||||
List<String> query = new List<string>();
|
||||
query.Add($"Declare @statusActive VarChar(3) = '{SacsSystem.GetStatusCode(SaxGolfUsgaFacility.DefaultStatus)}';");
|
||||
query.Add($"Declare @updateOn DateTime = GetDate();");
|
||||
query.Add($"Declare @updateBy Int = {SysId.ToLong(dbUpdateInfo.UserId)};");
|
||||
query.Add($"Declare @updateHost VarChar(100) = '{DbQuery.FormatForCondition(dbUpdateInfo.Host)}';");
|
||||
query.Add("Merge");
|
||||
query.Add($"Into {SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaFacility)} uFty");
|
||||
query.Add("Using");
|
||||
query.Add("(");
|
||||
query.Add("Select dPrv.Id ProvinceId, dFty.ProvinceCode, dFty.UsgaFacilityId, dFty.FacilityName, dFty.Address1, dFty.Address2, dFty.City, dFty.PostalCode, dFty.Email, dFty.Telephone");
|
||||
query.Add("From");
|
||||
query.Add("(");
|
||||
query.Add("Select '' ProvinceCode, 0 UsgaFacilityId, '' FacilityName, '' Address1, '' Address2, '' City, '' PostalCode, '' Email, '' Telephone");
|
||||
foreach (UsgaFacilityData facility in facilitiesToUpdate.ExtractRange(0, batchSize))
|
||||
query.Add($"Union Select '{DbQuery.FormatForCondition(facility.ProvinceCode)}', {SysId.ToString(facility.UsgaFacilityId)}, " +
|
||||
(facility.FacilityName != null ? $"'{DbQuery.FormatForCondition(facility.FacilityName)}'" : "Null") + "," +
|
||||
(facility.Address1 != null ? $"'{DbQuery.FormatForCondition(facility.Address1)}'" : "Null") + "," +
|
||||
(facility.Address2 != null ? $"'{DbQuery.FormatForCondition(facility.Address2)}'" : "Null") + "," +
|
||||
(facility.City != null ? $"'{DbQuery.FormatForCondition(facility.City)}'" : "Null") + "," +
|
||||
(facility.PostalCode != null ? $"'{DbQuery.FormatForCondition(facility.PostalCode)}'" : "Null") + "," +
|
||||
(facility.Email != null ? $"'{DbQuery.FormatForCondition(facility.Email)}'" : "Null") + "," +
|
||||
(facility.Telephone != null ? $"'{DbQuery.FormatForCondition(facility.Telephone)}'" : "Null"));
|
||||
query.Add(") dFty");
|
||||
query.Add($"Inner Join {SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaProvince)} dPrv On dPrv.ProvinceCode=dFty.ProvinceCode");
|
||||
query.Add(") dFty");
|
||||
query.Add("On uFty.ProvinceId=dFty.ProvinceId And uFty.UsgaFacilityId=dFty.UsgaFacilityId");
|
||||
query.Add("When Matched And ((dFty.FacilityName Is Not Null And uFty.FacilityName!=dFty.FacilityName) Or (dFty.Address1 Is Not Null And uFty.Address1!=dFty.Address1) Or (dFty.Address2 Is Not Null And uFty.Address2!=dFty.Address2) Or (dFty.City Is Not Null And uFty.City!=dFty.City) Or (dFty.PostalCode Is Not Null And uFty.PostalCode!=dFty.PostalCode) Or (dFty.Email Is Not Null And uFty.Email!=dFty.Email) Or (dFty.Telephone Is Not Null And uFty.Telephone!=dFty.Telephone) Or uFty.Status!=@statusActive)");
|
||||
query.Add("Then Update Set");
|
||||
query.Add(" FacilityName=Coalesce(dFty.FacilityName,uFty.FacilityName),");
|
||||
query.Add(" Address1=Coalesce(dFty.Address1,uFty.Address1),");
|
||||
query.Add(" Address2=Coalesce(dFty.Address2,uFty.Address2),");
|
||||
query.Add(" City=Coalesce(dFty.City,uFty.City),");
|
||||
query.Add(" PostalCode=Coalesce(dFty.PostalCode,uFty.PostalCode),");
|
||||
query.Add(" Email=Coalesce(dFty.Email,uFty.Email),");
|
||||
query.Add(" Telephone=Coalesce(dFty.Telephone,uFty.Telephone),");
|
||||
query.Add(" Status=@statusActive,");
|
||||
query.Add(" UpdateOn=@updateOn,");
|
||||
query.Add(" UpdateBy=@updateBy,");
|
||||
query.Add(" UpdateHost=@updateHost");
|
||||
query.Add("When Not Matched And Len(IsNull(dFty.FacilityName,''))>0");
|
||||
query.Add("Then Insert (ProvinceId,UsgaFacilityId,FacilityName,Address1,Address2,City,PostalCode,Email,Telephone,Notes,Flags,Status,CreateOn,CreateBy,CreateHost,UpdateOn,UpdateBy,UpdateHost)");
|
||||
query.Add($"Values (dFty.ProvinceId,dFty.UsgaFacilityId,dFty.FacilityName,Coalesce(dFty.Address1,''),Coalesce(dFty.Address2,''),Coalesce(dFty.City,''),Coalesce(dFty.PostalCode,''),Coalesce(dFty.Email,''),Coalesce(dFty.Telephone,''),'',0,@statusActive,@updateOn,@updateBy,@updateHost,@updateOn,@updateBy,@updateHost)");
|
||||
query.Add(";");
|
||||
//SaLogger.Info($"{SysUtil.Fn} Bulk USGA Facility update query:\n\t{query.Concat("\n\t")}");
|
||||
|
||||
try
|
||||
{
|
||||
int result = ReferenceDatabase.ExecuteNonQuery(query.Concat("\n"));
|
||||
if (ReferenceDatabase.HasErrorState())
|
||||
SaLogger.Warn($"{SysUtil.Fn} Error executing bulk USGA Facility update - {ReferenceDatabase.ErrorStateMessage}");
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SaLogger.Warn(SysUtil.Fn + " " + ExceptionUtil.GetLogMessage(exc, " executing bulk USGA Facility update"));
|
||||
}
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item column definitions.
|
||||
private static readonly String aliasUsgaFacility = "UsgFty";
|
||||
private static readonly String aliasUsgaFacility_Province = "UsgFty_Prv";
|
||||
private static readonly String prefixUsgaFacility_Province = aliasUsgaFacility_Province + "_";
|
||||
private void SetUsgaFacilityColDfn
|
||||
(ColumnDfn col, String caption, int width, SaxDbDfn_Reference.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SaxDbDfn_Reference.GetTableForColumn(dbCol) == SaxDbDfn_Reference.TableIdx.UsgaFacility)
|
||||
alias = aliasUsgaFacility;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn_Reference.GetColumnName(dbCol, false), SaxDbDfn_Reference.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn_Reference.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SaxDbDfn_Reference.GetColTextLen(dbCol);
|
||||
}
|
||||
public override ColumnDfn GetUsgaFacilityColumnDfn(SaxGolfUsgaFacility.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
//-----------------------------------------------------------
|
||||
case SaxGolfUsgaFacility.Column.Pos:
|
||||
SetUsgaFacilityColDfn(columnDfn, "Pos", 60, SaxDbDfn_Reference.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
case SaxGolfUsgaFacility.Column.Id:
|
||||
SetUsgaFacilityColDfn(columnDfn, "Id", 80, SaxDbDfn_Reference.ColumnIdx.UsgaFacility_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-------------------------------------------------------
|
||||
case SaxGolfUsgaFacility.Column.ProvinceId:
|
||||
SetUsgaFacilityColDfn(columnDfn, "Province #", 80, SaxDbDfn_Reference.ColumnIdx.UsgaFacility_ProvinceId, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaFacility.Column.Province_Name:
|
||||
SetUsgaFacilityColDfn(columnDfn, "Province", 120, SaxDbDfn_Reference.ColumnIdx.UsgaProvince_ProvinceName, ColumnAlignment.Center, DataValue.DataType.String, aliasUsgaFacility_Province, prefixUsgaFacility_Province);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-------------------------------------------------------
|
||||
case SaxGolfUsgaFacility.Column.UsgaFacilityId:
|
||||
SetUsgaFacilityColDfn(columnDfn, "USGA Id", 80, SaxDbDfn_Reference.ColumnIdx.UsgaFacility_UsgaFacilityId, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaFacility.Column.FacilityName:
|
||||
SetUsgaFacilityColDfn(columnDfn, "Name", 120, SaxDbDfn_Reference.ColumnIdx.UsgaFacility_FacilityName, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Derived properties.
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Common properties.
|
||||
case SaxGolfUsgaFacility.Column.Notes:
|
||||
SetUsgaFacilityColDfn(columnDfn, "Notes", 240, SaxDbDfn_Reference.ColumnIdx.UsgaFacility_Notes);
|
||||
break;
|
||||
case SaxGolfUsgaFacility.Column.Flags:
|
||||
SetUsgaFacilityColDfn(columnDfn, "Flags", 60, SaxDbDfn_Reference.ColumnIdx.UsgaFacility_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxGolfUsgaFacility.Column.Status:
|
||||
SetUsgaFacilityColDfn(columnDfn, "Status", 80, SaxDbDfn_Reference.ColumnIdx.UsgaFacility_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxGolfUsgaFacility.Column.Status_Desc:
|
||||
SetUsgaFacilityColDfn(columnDfn, "Status", 90, SaxDbDfn_Reference.ColumnIdx.UsgaFacility_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxGolfUsgaFacility.Column.Status_Ind:
|
||||
SetUsgaFacilityColDfn(columnDfn, "Status", 80, SaxDbDfn_Reference.ColumnIdx.UsgaFacility_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SaxGolfUsgaFacility.Column.CreateOn_Date:
|
||||
SetUsgaFacilityColDfn(columnDfn, "Created", 80, SaxDbDfn_Reference.ColumnIdx.UsgaFacility_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaFacility.Column.UpdateOn_Date:
|
||||
SetUsgaFacilityColDfn(columnDfn, "Updated", 80, SaxDbDfn_Reference.ColumnIdx.UsgaFacility_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> GetUsgaFacilityQueryFilter(SaxGolfUsgaFacility.Params prm)
|
||||
{
|
||||
List<String> filter = new List<String>();
|
||||
String col_Id = SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_Id, aliasUsgaFacility);
|
||||
|
||||
// Item Ids.
|
||||
if (prm.IdsIncluded.HasValidIds())
|
||||
filter.Add($"{col_Id} IN ({prm.IdsIncluded.Concat(",")})");
|
||||
if (prm.IdsExcluded.HasValidIds())
|
||||
filter.Add($"{col_Id} NOT IN ({prm.IdsExcluded.Concat(",")})");
|
||||
|
||||
// Countries.
|
||||
if (prm.ProvinceIdsIncluded.HasValidIds())
|
||||
filter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_ProvinceId, aliasUsgaFacility)} IN ({prm.ProvinceIdsIncluded.Concat(",")})");
|
||||
|
||||
if (!StringUtil.IsBlank(prm.FacilityFilter))
|
||||
{
|
||||
// Split filter into words.
|
||||
List<String> filterWords = prm.FacilityFilter.Split((char[])null).ToList();
|
||||
filterWords.RemoveDuplicatesCI();
|
||||
filterWords.RemoveBlanks();
|
||||
foreach (String filterWord in filterWords)
|
||||
{
|
||||
List<String> facilityFilter = new List<String>();
|
||||
facilityFilter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_FacilityName, aliasUsgaFacility)} Like '%{DbQuery.FormatForLike(filterWord, true)}%'");
|
||||
filter.Add(facilityFilter.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
}
|
||||
|
||||
// Name.
|
||||
if (!StringUtil.IsEmpty(prm.FacilityNameFull))
|
||||
filter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_FacilityName, aliasUsgaFacility)}='{DbQuery.FormatForCondition(prm.FacilityNameFull)}'");
|
||||
if (!StringUtil.IsEmpty(prm.FacilityNamePartial))
|
||||
filter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_FacilityName, aliasUsgaFacility)} LIKE '%{DbQuery.FormatForLike(prm.FacilityNamePartial)}%'");
|
||||
|
||||
// Associated data.
|
||||
if (prm.HasCourses != SacsHierarchyItem.Params.BoolState.Either)
|
||||
{
|
||||
String existsPrefix = (prm.HasCourses == SacsHierarchyItem.Params.BoolState.True ? "" : "Not ");
|
||||
filter.Add($"{existsPrefix} Exists (Select 1 From {SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaCourse)} Where {SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_FacilityId)}={col_Id})");
|
||||
}
|
||||
|
||||
// Notes.
|
||||
if (!StringUtil.IsEmpty(prm.NotesPartial))
|
||||
filter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_Notes, aliasUsgaFacility)} LIKE '%{DbQuery.FormatForLike(prm.NotesPartial)}%'");
|
||||
|
||||
// Status.
|
||||
if (prm.StatusCat != SaxGolfUsgaFacility.StatusCat.Any)
|
||||
filter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_Status, aliasUsgaFacility)} {GetUsgaFacilityStatusCatFilterCondition(prm.StatusCat)}");
|
||||
|
||||
if (filter.Count < 1 && prm.IncludeDefaultFilter) filter.Add("1=1");
|
||||
return filter;
|
||||
}
|
||||
internal static String GetUsgaFacilityStatusCatFilterCondition(SaxGolfUsgaFacility.StatusCat statusCat)
|
||||
{
|
||||
if (statusCat == SaxGolfUsgaFacility.StatusCat.ActiveOnly)
|
||||
return $"='{SacsSystem.GetStatusCode(SaStatus.Active)}'";
|
||||
if (statusCat == SaxGolfUsgaFacility.StatusCat.InactiveOnly)
|
||||
return $"='{SacsSystem.GetStatusCode(SaStatus.Inactive)}'";
|
||||
if (statusCat == SaxGolfUsgaFacility.StatusCat.NotDeleted)
|
||||
return $"!='{SacsSystem.GetStatusCode(SaStatus.Deleted)}'";
|
||||
if (statusCat == SaxGolfUsgaFacility.StatusCat.DeletedOnly)
|
||||
return $"='{SacsSystem.GetStatusCode(SaStatus.Deleted)}'";
|
||||
return "";
|
||||
}
|
||||
// Item sort columns.
|
||||
public HashSet<String> GetUsgaFacilitySortColumns(SaxGolfUsgaFacility.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
HashSet<String> sortColumnNames = new HashSet<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for UsgaFacility columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SaxDbDfn_Reference.GetTableForColumn((SaxDbDfn_Reference.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn_Reference.TableIdx.UsgaFacility)
|
||||
{
|
||||
sortCol = SaxDbDfn_Reference.GetColumnNameQual((SaxDbDfn_Reference.ColumnIdx)columnDfn.DbColumn, aliasUsgaFacility);
|
||||
}
|
||||
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();
|
||||
AddRandomSortColumn(prm, sortColumnNames);
|
||||
if (sortColumnNames.IsEmpty())
|
||||
{
|
||||
// Default sort columns.
|
||||
sortColumnNames.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_Id, aliasUsgaFacility) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item count.
|
||||
private long GetUsgaFacilityCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return ReferenceDatabase.GetRowCount(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaFacility) + " As " + aliasUsgaFacility, filter);
|
||||
}
|
||||
public override long GetUsgaFacilityCount(SaxGolfUsgaFacility.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetUsgaFacilityCount(GetUsgaFacilityQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item list.
|
||||
public override List<SaxGolfUsgaFacility> GetUsgaFacilityList(SaxGolfUsgaFacility.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<SaxGolfUsgaFacility> userRoles = new List<SaxGolfUsgaFacility>();
|
||||
DbQuery qry = new DbQuery(ReferenceDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaFacility), aliasUsgaFacility);
|
||||
Golf_UsgaFacility_Db dbUsgaFacility = new Golf_UsgaFacility_Db(ReferenceDbInfo);
|
||||
qry.Columns.AddRange(dbUsgaFacility.ExistingColumnNames);
|
||||
qry.Filters.AddRange(GetUsgaFacilityQueryFilter(prm));
|
||||
qry.OrderBy.AddRange(GetUsgaFacilitySortColumns(prm));
|
||||
// Query data.
|
||||
using (var dbConnection = ReferenceDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
dbCommand.CommandText = qry.BuildQuery(prm.ResultsPaging);
|
||||
using (DbDataReader dbDataReader = dbCommand.ExecuteReader())
|
||||
{
|
||||
while (dbDataReader.Read())
|
||||
{
|
||||
dbUsgaFacility = new Golf_UsgaFacility_Db(ReferenceDbInfo);
|
||||
dbUsgaFacility.PopulateFrom(dbDataReader);
|
||||
userRoles.Add(CreateUsgaFacility(dbUsgaFacility));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return userRoles;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item query execution.
|
||||
public override DbResultSet ExecuteUsgaFacilityQuery(List<ColumnDfn> columns, SaxGolfUsgaFacility.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(ReferenceDatabase.DbmsType);
|
||||
query.Tables.Add(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaFacility), aliasUsgaFacility);
|
||||
|
||||
// Add columns as defined in query list.
|
||||
if (columns.HasId(SaxGolfUsgaFacility.Column.Id))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_Id, aliasUsgaFacility));
|
||||
bool hasProvinceCols = (columns.HasId(SaxGolfUsgaFacility.Column.Province_Name));
|
||||
if (columns.HasId(SaxGolfUsgaFacility.Column.ProvinceId) || hasProvinceCols)
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_ProvinceId, aliasUsgaFacility));
|
||||
if (columns.HasId(SaxGolfUsgaFacility.Column.UsgaFacilityId))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_UsgaFacilityId, aliasUsgaFacility));
|
||||
if (columns.HasId(SaxGolfUsgaFacility.Column.FacilityName))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_FacilityName, aliasUsgaFacility));
|
||||
// Common properties.
|
||||
if (columns.HasId(SaxGolfUsgaFacility.Column.Notes))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_Notes, aliasUsgaFacility));
|
||||
if (columns.HasId(SaxGolfUsgaFacility.Column.Flags))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_Flags, aliasUsgaFacility));
|
||||
if (columns.HasId(SaxGolfUsgaFacility.Column.Status) || columns.HasId(SaxGolfUsgaFacility.Column.Status_Desc) || columns.HasId(SaxGolfUsgaFacility.Column.Status_Ind))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_Status, aliasUsgaFacility));
|
||||
if (columns.HasId(SaxGolfUsgaFacility.Column.CreateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_CreateOn, aliasUsgaFacility));
|
||||
if (columns.HasId(SaxGolfUsgaFacility.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_UpdateOn, aliasUsgaFacility));
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Province.
|
||||
if (hasProvinceCols)
|
||||
{
|
||||
DbQueryJoin joinProvince = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinProvince.Table = new StringPair(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaProvince), aliasUsgaFacility_Province);
|
||||
joinProvince.Filters.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Id, aliasUsgaFacility_Province) + "=" + SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_ProvinceId, aliasUsgaFacility));
|
||||
query.Joins.Add(joinProvince);
|
||||
List<SaxDbDfn_Reference.ColumnIdx> cols = new List<SaxDbDfn_Reference.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_ProvinceName);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(col, aliasUsgaFacility_Province), prefixUsgaFacility_Province + SaxDbDfn_Reference.GetColumnName(col, false));
|
||||
prm.Alias_Province = aliasUsgaFacility_Province;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetUsgaFacilityQueryFilter(prm));
|
||||
|
||||
if (prm.IdsIncluded.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetUsgaFacilitySortColumns(prm))
|
||||
query.OrderBy.Add(sortColumn);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
//return new DbResultSet_DataTableReader(db, query.BuildQuery(prm.ResultsPaging));
|
||||
return DbResultSet_DataReader.ExecuteQuery(ReferenceDatabase, query.BuildQuery(prm.ResultsPaging));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
+730
@@ -0,0 +1,730 @@
|
||||
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 Sarand.Net.Standard.Base.Utils;
|
||||
using Sarand.Net.Standard.Dbas.Data;
|
||||
using Saxonite.Base.App;
|
||||
using Saxonite.Net.Standard.Base.App;
|
||||
using Saxonite.Net.Standard.Base.Bus;
|
||||
using Saxonite.Net.Standard.Base.Bus.Reference;
|
||||
using Saxonite.Net.Standard.Dbas.Bus.Reference;
|
||||
using Saxonite.Net.Standard.Dbas.Internal.Reference;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
|
||||
namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
|
||||
{
|
||||
//=======================================================================
|
||||
partial class SaxReferenceGolfMgr_Dbas
|
||||
{
|
||||
//*******************************************************************
|
||||
// Support Mgr - User Report
|
||||
//*******************************************************************
|
||||
// Utilities.
|
||||
private List<StringPair> GetLogProperties(SaxGolfUsgaMarker usgaMarker)
|
||||
{
|
||||
return new List<StringPair>()
|
||||
{
|
||||
new StringPair("Id",SysId.ToString(usgaMarker.Id)),
|
||||
new StringPair("Course Id",SysId.ToString(usgaMarker.CourseId)),
|
||||
new StringPair("Usga Marker Id",SysId.ToString(usgaMarker.UsgaMarkerId)),
|
||||
new StringPair("Caption",usgaMarker.Caption),
|
||||
new StringPair("Status",usgaMarker.StatusCode)
|
||||
};
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create item.
|
||||
public override SaxGolfUsgaMarker CreateUsgaMarker(SysId courseId)
|
||||
{
|
||||
ClearErrorState();
|
||||
return new SaxGolfUsgaMarker_Dbas(ReferenceDatabase, null, courseId, 0);
|
||||
}
|
||||
private SaxGolfUsgaMarker_Dbas CreateUsgaMarker(Golf_UsgaMarker_Db dbUsgaMarker)
|
||||
{
|
||||
ClearErrorState();
|
||||
SaxGolfUsgaMarker_Dbas usgaMarker = new SaxGolfUsgaMarker_Dbas(ReferenceDatabase, new SysId(dbUsgaMarker._Id), new SysId(dbUsgaMarker._CourseId), (ushort)dbUsgaMarker._Flags);
|
||||
PopulateFrom(dbUsgaMarker, usgaMarker);
|
||||
return usgaMarker;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get item.
|
||||
public override SaxGolfUsgaMarker GetUsgaMarker(SaxGolfUsgaMarker.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetUsgaMarker(GetUsgaMarkerQueryFilter(prm).Concat(" And ", "(", ")"));
|
||||
}
|
||||
private SaxGolfUsgaMarker GetUsgaMarker(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetUsgaMarkerCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple items found");
|
||||
return null;
|
||||
}
|
||||
SaxGolfUsgaMarker usgaMarker = null;
|
||||
// Query data.
|
||||
using (var dbConnection = ReferenceDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
Golf_UsgaMarker_Db dbUsgaMarker = new Golf_UsgaMarker_Db(ReferenceDbInfo);
|
||||
dbUsgaMarker.PopulateFrom(dbCommand, aliasUsgaMarker, filter);
|
||||
usgaMarker = CreateUsgaMarker(dbUsgaMarker);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return usgaMarker;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate item.
|
||||
public override bool IsValidUsgaMarkerData(SaxGolfUsgaMarker.Data data, SaxGolfUsgaMarker.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidUsgaMarkerData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert item.
|
||||
public override bool InsertUsgaMarker(SaxGolfUsgaMarker usgaMarker, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertUsgaMarker";
|
||||
ClearErrorState();
|
||||
if (!IsValidUsgaMarker(usgaMarker)) return false;
|
||||
if (SysId.IsValid(usgaMarker.Id)) return SetErrorState(ErrorMessage.ValidItemId);
|
||||
using (var dbConnection = ReferenceDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
Golf_UsgaMarker_Db dbUsgaMarker = new Golf_UsgaMarker_Db(ReferenceDbInfo);
|
||||
PopulateTo(dbUsgaMarker, usgaMarker, dbUpdateInfo);
|
||||
if (Golf_UsgaMarker_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
dbUsgaMarker._Id = ReferenceDatabase.GetNextIdFromTable("UsgaMarker");
|
||||
}
|
||||
dbUsgaMarker.ExecuteInsertCommand(dbCommand);
|
||||
usgaMarker.Id = new SysId(dbUsgaMarker._Id);
|
||||
usgaMarker.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(usgaMarker).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update item.
|
||||
public override bool UpdateUsgaMarker(SaxGolfUsgaMarker usgaMarker, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdateUsgaMarker";
|
||||
ClearErrorState();
|
||||
if (!IsValidUsgaMarker(usgaMarker)) return false;
|
||||
if (!SysId.IsValid(usgaMarker.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!usgaMarker.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(usgaMarker).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = ReferenceDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
Golf_UsgaMarker_Db dbUsgaMarker = new Golf_UsgaMarker_Db(ReferenceDbInfo);
|
||||
dbUsgaMarker.PopulateFrom(dbCommand, aliasUsgaMarker, "Id=" + SysId.ToString(usgaMarker.Id));
|
||||
// ToDo SaxUpdateLogItemMonitor_UsgaMarker updateLogMonitor = new SaxUpdateLogItemMonitor_UsgaMarker(SessionContext, CreateUsgaMarker(dbUsgaMarker), dbUpdateInfo);
|
||||
// Update item.
|
||||
PopulateTo(dbUsgaMarker, usgaMarker, dbUpdateInfo);
|
||||
dbUsgaMarker.ExecuteUpdateCommand(dbCommand);
|
||||
usgaMarker.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(usgaMarker).Concat(": ").Concat("", "\n\t"));
|
||||
// Record updates.
|
||||
// ToDo updateLogMonitor.RecordUpdatedValues(usgaMarker);
|
||||
// ToDo updateLogMonitor.LogUpdates();
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete item.
|
||||
public override bool UsgaMarkerCanBeDeleted(SaxGolfUsgaMarker usgaMarker)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.UsgaMarkerCanBeDeleted(usgaMarker)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteUsgaMarker(SaxGolfUsgaMarker usgaMarker, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeleteUsgaMarker";
|
||||
ClearErrorState();
|
||||
if (!UsgaMarkerCanBeDeleted(usgaMarker)) return false;
|
||||
|
||||
// User Roles are logically deleted by changing the status.
|
||||
usgaMarker.Status = SaStatus.Deleted;
|
||||
return UpdateUsgaMarker(usgaMarker, dbUpdateInfo);
|
||||
|
||||
/*
|
||||
* Physical deletion.
|
||||
using (var dbConnection = ReferenceDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
Golf_UsgaMarker_Db dbUsgaMarker = new Golf_UsgaMarker_Db(ReferenceDbInfo);
|
||||
dbUsgaMarker.PopulateFrom(dbCommand, aliasUsgaMarker, "Id=" + usgaMarker.Id.ToString());
|
||||
// Delete item.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaMarker) + " WHERE Id=" + SysId.ToString(usgaMarker.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
usgaMarker.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(usgaMarker).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
*/
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(Golf_UsgaMarker_Db dbUsgaMarker, SaxGolfUsgaMarker usgaMarker, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbUsgaMarker._Id = SysId.ToLong(usgaMarker.Id);
|
||||
dbUsgaMarker._CourseId = SysId.ToInt(usgaMarker.CourseId);
|
||||
dbUsgaMarker._UsgaMarkerId = SysId.ToInt(usgaMarker.UsgaMarkerId);
|
||||
dbUsgaMarker._Caption = usgaMarker.Caption;
|
||||
dbUsgaMarker._Holes = usgaMarker.Holes;
|
||||
dbUsgaMarker._HolesCaption = usgaMarker.HolesCaption;
|
||||
dbUsgaMarker._Tee = usgaMarker.Tee;
|
||||
dbUsgaMarker._Gender = usgaMarker.Gender;
|
||||
dbUsgaMarker._SlopeRating = usgaMarker.SlopeRating;
|
||||
dbUsgaMarker._Par = usgaMarker.Par;
|
||||
dbUsgaMarker._CourseRating = usgaMarker.CourseRating;
|
||||
dbUsgaMarker._BogeyRating = usgaMarker.BogeyRating;
|
||||
dbUsgaMarker._Length = usgaMarker.Length;
|
||||
// Common.
|
||||
dbUsgaMarker._Notes = usgaMarker.Notes;
|
||||
dbUsgaMarker._Status = SacsSystem.GetStatusCode(usgaMarker.Status);
|
||||
dbUsgaMarker._Flags = (short)usgaMarker.Flags;
|
||||
if (!SysId.IsValid(usgaMarker.Id))
|
||||
{
|
||||
dbUsgaMarker._CreateOn = DateTime.Now;
|
||||
dbUsgaMarker._CreateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbUsgaMarker._CreateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
dbUsgaMarker._UpdateOn = DateTime.Now;
|
||||
dbUsgaMarker._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbUsgaMarker._UpdateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
private void PopulateFrom(Golf_UsgaMarker_Db dbUsgaMarker, SaxGolfUsgaMarker usgaMarker)
|
||||
{
|
||||
//usgaMarker.Id = new SysId(dbUsgaMarker._Id);
|
||||
usgaMarker.CourseId = new SysId(dbUsgaMarker._CourseId);
|
||||
usgaMarker.UsgaMarkerId = new SysId(dbUsgaMarker._UsgaMarkerId);
|
||||
usgaMarker.Caption = dbUsgaMarker._Caption;
|
||||
usgaMarker.Holes = dbUsgaMarker._Holes;
|
||||
usgaMarker.HolesCaption = dbUsgaMarker._HolesCaption;
|
||||
usgaMarker.Tee = dbUsgaMarker._Tee;
|
||||
usgaMarker.Gender = dbUsgaMarker._Gender;
|
||||
usgaMarker.SlopeRating = dbUsgaMarker._SlopeRating;
|
||||
usgaMarker.Par = dbUsgaMarker._Par;
|
||||
usgaMarker.CourseRating = dbUsgaMarker._CourseRating;
|
||||
usgaMarker.BogeyRating = dbUsgaMarker._BogeyRating;
|
||||
usgaMarker.Length = dbUsgaMarker._Length;
|
||||
// Common.
|
||||
usgaMarker.Notes = dbUsgaMarker._Notes;
|
||||
usgaMarker.Status = SacsSystem.GetStatusForCode(dbUsgaMarker._Status);
|
||||
usgaMarker.SetCreateStamp(dbUsgaMarker._CreateOn, new SysId(dbUsgaMarker._CreateBy), dbUsgaMarker._CreateHost);
|
||||
usgaMarker.SetUpdateStamp(dbUsgaMarker._UpdateOn, new SysId(dbUsgaMarker._UpdateBy), dbUsgaMarker._UpdateHost);
|
||||
usgaMarker.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Bulk updates.
|
||||
/// <summary>
|
||||
/// Bulk update USGA Markers.
|
||||
/// <para>- Course Id must be supplied to identify parent.</para>
|
||||
/// <para>- Marker Id must be supplied to act as identifier.</para>
|
||||
/// <para>- Other properties are validated as per marker rules - check error state.</para>
|
||||
/// <para>- Other properties are left as is if null.</para>
|
||||
/// </summary>
|
||||
public override bool BulkUpdateUsgaMarkers(List<UsgaMarkerData> markers, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<UsgaMarkerData> markersToUpdate = new List<UsgaMarkerData>();
|
||||
|
||||
// Validate supplied data.
|
||||
foreach (UsgaMarkerData marker in markers)
|
||||
{
|
||||
// Validate marker properties.
|
||||
// Course and Marker Codes are mandatory, other values only validated if non-null.
|
||||
if (!SysId.IsValid(marker.UsgaCourseId)) return SetErrorState("USGA Course Id must be supplied");
|
||||
// 9 hole markers missing Id: if (!SysId.IsValid(marker.UsgaMarkerId)) return SetErrorState("USGA Marker Id must be supplied");
|
||||
if (marker.Caption != null && !IsValidValue(marker.HolesCaption, "caption", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_HolesCaption))) return false;
|
||||
if (marker.Holes < 1) return SetErrorState("Holes must be supplied");
|
||||
if (marker.HolesCaption != null && !IsValidValue(marker.HolesCaption, "holes caption", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_HolesCaption), true)) return false;
|
||||
if (marker.Tee != null && !IsValidValue(marker.Tee, "tee", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Tee), true)) return false;
|
||||
if (marker.Gender != null && !IsValidValue(marker.Gender, "gender", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Gender))) return false;
|
||||
if (marker.SlopeRating < 1) return SetErrorState("Slope rating must be supplied");
|
||||
if (marker.Par < 1) return SetErrorState("Par must be supplied");
|
||||
if (marker.CourseRating < 1) return SetErrorState("Course rating must be supplied");
|
||||
markersToUpdate.Add(marker);
|
||||
}
|
||||
int MaxBulkUpdateBatchSize = 64;
|
||||
int batchSize = markersToUpdate.Any() ? (int)Math.Ceiling(markersToUpdate.Count() / Math.Ceiling((double)markersToUpdate.Count() / MaxBulkUpdateBatchSize)) : MaxBulkUpdateBatchSize;
|
||||
while (markersToUpdate.Any())
|
||||
{
|
||||
List<String> query = new List<string>();
|
||||
query.Add($"Declare @statusActive VarChar(3) = '{SacsSystem.GetStatusCode(SaxGolfUsgaMarker.DefaultStatus)}';");
|
||||
query.Add($"Declare @updateOn DateTime = GetDate();");
|
||||
query.Add($"Declare @updateBy Int = {SysId.ToLong(dbUpdateInfo.UserId)};");
|
||||
query.Add($"Declare @updateHost VarChar(100) = '{DbQuery.FormatForCondition(dbUpdateInfo.Host)}';");
|
||||
query.Add("Merge");
|
||||
query.Add($"Into {SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaMarker)} uMkr");
|
||||
query.Add("Using");
|
||||
query.Add("(");
|
||||
query.Add("Select uCrs.Id CourseId, dMkr.UsgaCourseId, dMkr.UsgaMarkerId, dMkr.Caption, dMkr.Holes, dMkr.HolesCaption, dMkr.Tee, dMkr.Gender, dMkr.SlopeRating, dMkr.Par, dMkr.CourseRating, dMkr.BogeyRating, dMkr.Length");
|
||||
query.Add("From");
|
||||
query.Add("(");
|
||||
query.Add("Select 0 UsgaCourseId, 0 UsgaMarkerId, '' Caption, 0 Holes, '' HolesCaption, '' Tee, '' Gender, 0 SlopeRating, 0 Par, 0 CourseRating, 0 BogeyRating, 0 Length");
|
||||
foreach (UsgaMarkerData marker in markersToUpdate.ExtractRange(0, batchSize))
|
||||
query.Add($"Union Select {marker.UsgaCourseId},{StringUtil.OnBlank(SysId.ToString(marker.UsgaMarkerId), "0")}," +
|
||||
(marker.Caption != null ? $"'{DbQuery.FormatForCondition(marker.Caption)}'" : "Null") + "," +
|
||||
$"{marker.Holes}," +
|
||||
(marker.HolesCaption != null ? $"'{DbQuery.FormatForCondition(marker.HolesCaption)}'" : "Null") + "," +
|
||||
(marker.Tee != null ? $"'{DbQuery.FormatForCondition(marker.Tee)}'" : "Null") + "," +
|
||||
(marker.Gender != null ? $"'{DbQuery.FormatForCondition(marker.Gender)}'" : "Null") + "," +
|
||||
$"{marker.SlopeRating}," +
|
||||
$"{marker.Par}," +
|
||||
$"{marker.CourseRating}," +
|
||||
(marker.BogeyRating > 0 ? $"{marker.BogeyRating}" : "Null") + "," +
|
||||
(marker.Length > 0 ? $"{marker.Length}" : "Null"));
|
||||
query.Add(") dMkr");
|
||||
query.Add($"Inner Join {SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaCourse)} uCrs On uCrs.UsgaCourseId=dMkr.UsgaCourseId");
|
||||
query.Add(") dMkr");
|
||||
// Want to use UsgaMarkerId to identify the Marker alongside the CourseId, but only 18 hole markers have an Id value.
|
||||
// Use alternative identifiers for now: Holes Caption, Tee and Gender.
|
||||
// Was: query.Add("On uMkr.CourseId=dMkr.CourseId And uMkr.UsgaMarkerId=dMkr.UsgaMarkerId");
|
||||
query.Add("On uMkr.CourseId=dMkr.CourseId And uMkr.HolesCaption=dMkr.HolesCaption And uMkr.Tee=dMkr.Tee And uMkr.Gender=Coalesce(dMkr.Gender,'')");
|
||||
query.Add("When Matched And ((dMkr.Caption Is Not Null And uMkr.Caption!=dMkr.Caption) Or (uMkr.Holes!=dMkr.Holes) Or (dMkr.HolesCaption Is Not Null And uMkr.HolesCaption!=dMkr.HolesCaption) Or (dMkr.Tee Is Not Null And uMkr.Tee!=dMkr.Tee) Or (dMkr.Gender Is Not Null And uMkr.Gender!=dMkr.Gender) Or (uMkr.SlopeRating!=dMkr.SlopeRating) Or (uMkr.Par!=dMkr.Par) Or (uMkr.CourseRating!=dMkr.CourseRating) Or (dMkr.BogeyRating Is Not Null And uMkr.BogeyRating!=dMkr.BogeyRating) Or (dMkr.Length Is Not Null And uMkr.Length!=dMkr.Length) Or uMkr.Status!=@statusActive)");
|
||||
query.Add("Then Update Set");
|
||||
query.Add(" Caption=Coalesce(dMkr.Caption,uMkr.Caption),");
|
||||
query.Add(" Holes=Coalesce(dMkr.Holes,uMkr.Holes),");
|
||||
query.Add(" HolesCaption=Coalesce(dMkr.HolesCaption,uMkr.HolesCaption),");
|
||||
query.Add(" Tee=Coalesce(dMkr.Tee,uMkr.Tee),");
|
||||
query.Add(" Gender=Coalesce(dMkr.Gender,uMkr.Gender),");
|
||||
query.Add(" SlopeRating=Coalesce(dMkr.SlopeRating,uMkr.SlopeRating),");
|
||||
query.Add(" Par=Coalesce(dMkr.Par,uMkr.Par),");
|
||||
query.Add(" CourseRating=Coalesce(dMkr.CourseRating,uMkr.CourseRating),");
|
||||
query.Add(" BogeyRating=Coalesce(dMkr.BogeyRating,uMkr.BogeyRating),");
|
||||
query.Add(" Length=Coalesce(dMkr.Length,uMkr.Length),");
|
||||
query.Add(" Status=@statusActive,");
|
||||
query.Add(" UpdateOn=@updateOn,");
|
||||
query.Add(" UpdateBy=@updateBy,");
|
||||
query.Add(" UpdateHost=@updateHost");
|
||||
query.Add("When Not Matched And Len(Coalesce(dMkr.Caption,''))>0 And dMkr.Holes>0 And dMkr.SlopeRating>0 And dMkr.Par>0 And dMkr.CourseRating>0");
|
||||
query.Add("Then Insert (CourseId,UsgaMarkerId,Caption,Holes,HolesCaption,Tee,Gender,SlopeRating,Par,CourseRating,BogeyRating,Length,Notes,Flags,Status,CreateOn,CreateBy,CreateHost,UpdateOn,UpdateBy,UpdateHost)");
|
||||
query.Add($"Values (dMkr.CourseId,dMkr.UsgaMarkerId,Coalesce(dMkr.Caption,''),dMkr.Holes,Coalesce(dMkr.HolesCaption,''),Coalesce(dMkr.Tee,''),Coalesce(dMkr.Gender,''),Coalesce(dMkr.SlopeRating,''),Coalesce(dMkr.Par,''),Coalesce(dMkr.CourseRating,''),Coalesce(dMkr.BogeyRating,''),Coalesce(dMkr.Length,''),'',0,@statusActive,@updateOn,@updateBy,@updateHost,@updateOn,@updateBy,@updateHost)");
|
||||
query.Add(";");
|
||||
//SaLogger.Info($"{SysUtil.Fn} Bulk USGA Marker update query:\n\t{query.Concat("\n\t")}");
|
||||
|
||||
try
|
||||
{
|
||||
int result = ReferenceDatabase.ExecuteNonQuery(query.Concat("\n"));
|
||||
if (ReferenceDatabase.HasErrorState())
|
||||
SaLogger.Warn($"{SysUtil.Fn} Error executing bulk USGA Marker update - {ReferenceDatabase.ErrorStateMessage}");
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SaLogger.Warn(SysUtil.Fn + " " + ExceptionUtil.GetLogMessage(exc, " executing bulk USGA Marker update"));
|
||||
}
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item column definitions.
|
||||
private static readonly String aliasUsgaMarker = "UsgMkr";
|
||||
private static readonly String aliasUsgaMarker_Course = "UsgMkr_Cty";
|
||||
private static readonly String prefixUsgaMarker_Course = aliasUsgaMarker_Course + "_";
|
||||
private void SetUsgaMarkerColDfn
|
||||
(ColumnDfn col, String caption, int width, SaxDbDfn_Reference.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SaxDbDfn_Reference.GetTableForColumn(dbCol) == SaxDbDfn_Reference.TableIdx.UsgaMarker)
|
||||
alias = aliasUsgaMarker;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn_Reference.GetColumnName(dbCol, false), SaxDbDfn_Reference.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn_Reference.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SaxDbDfn_Reference.GetColTextLen(dbCol);
|
||||
}
|
||||
public override ColumnDfn GetUsgaMarkerColumnDfn(SaxGolfUsgaMarker.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
//-----------------------------------------------------------
|
||||
case SaxGolfUsgaMarker.Column.Pos:
|
||||
SetUsgaMarkerColDfn(columnDfn, "Pos", 60, SaxDbDfn_Reference.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
case SaxGolfUsgaMarker.Column.Id:
|
||||
SetUsgaMarkerColDfn(columnDfn, "Id", 80, SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-------------------------------------------------------
|
||||
case SaxGolfUsgaMarker.Column.CourseId:
|
||||
SetUsgaMarkerColDfn(columnDfn, "Course #", 80, SaxDbDfn_Reference.ColumnIdx.UsgaMarker_CourseId, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaMarker.Column.Course_Name:
|
||||
SetUsgaMarkerColDfn(columnDfn, "Course", 120, SaxDbDfn_Reference.ColumnIdx.UsgaCourse_CourseName, ColumnAlignment.Center, DataValue.DataType.String, aliasUsgaMarker_Course, prefixUsgaMarker_Course);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-------------------------------------------------------
|
||||
case SaxGolfUsgaMarker.Column.UsgaMarkerId:
|
||||
SetUsgaMarkerColDfn(columnDfn, "Id", 80, SaxDbDfn_Reference.ColumnIdx.UsgaMarker_UsgaMarkerId, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaMarker.Column.Caption:
|
||||
SetUsgaMarkerColDfn(columnDfn, "Caption", 160, SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Caption);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaMarker.Column.Holes:
|
||||
SetUsgaMarkerColDfn(columnDfn, "Holes", 80, SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Holes, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaMarker.Column.HolesCaption:
|
||||
SetUsgaMarkerColDfn(columnDfn, "Holes", 100, SaxDbDfn_Reference.ColumnIdx.UsgaMarker_HolesCaption, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaMarker.Column.Tee:
|
||||
SetUsgaMarkerColDfn(columnDfn, "Tee", 100, SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Tee, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaMarker.Column.Gender:
|
||||
SetUsgaMarkerColDfn(columnDfn, "Gender", 100, SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Gender, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaMarker.Column.SlopeRating:
|
||||
SetUsgaMarkerColDfn(columnDfn, "Slope Rating", 80, SaxDbDfn_Reference.ColumnIdx.UsgaMarker_SlopeRating, ColumnAlignment.Center, DataValue.DataType.Decimal);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaMarker.Column.Par:
|
||||
SetUsgaMarkerColDfn(columnDfn, "Par", 80, SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Par, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaMarker.Column.CourseRating:
|
||||
SetUsgaMarkerColDfn(columnDfn, "Course Rating", 80, SaxDbDfn_Reference.ColumnIdx.UsgaMarker_CourseRating, ColumnAlignment.Center, DataValue.DataType.Decimal);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaMarker.Column.BogeyRating:
|
||||
SetUsgaMarkerColDfn(columnDfn, "Bogey Rating", 80, SaxDbDfn_Reference.ColumnIdx.UsgaMarker_BogeyRating, ColumnAlignment.Center, DataValue.DataType.Decimal);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaMarker.Column.Length:
|
||||
SetUsgaMarkerColDfn(columnDfn, "Length", 80, SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Length, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Derived properties.
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Common properties.
|
||||
case SaxGolfUsgaMarker.Column.Notes:
|
||||
SetUsgaMarkerColDfn(columnDfn, "Notes", 240, SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Notes);
|
||||
break;
|
||||
case SaxGolfUsgaMarker.Column.Flags:
|
||||
SetUsgaMarkerColDfn(columnDfn, "Flags", 60, SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxGolfUsgaMarker.Column.Status:
|
||||
SetUsgaMarkerColDfn(columnDfn, "Status", 80, SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxGolfUsgaMarker.Column.Status_Desc:
|
||||
SetUsgaMarkerColDfn(columnDfn, "Status", 90, SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxGolfUsgaMarker.Column.Status_Ind:
|
||||
SetUsgaMarkerColDfn(columnDfn, "Status", 80, SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SaxGolfUsgaMarker.Column.CreateOn_Date:
|
||||
SetUsgaMarkerColDfn(columnDfn, "Created", 80, SaxDbDfn_Reference.ColumnIdx.UsgaMarker_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaMarker.Column.UpdateOn_Date:
|
||||
SetUsgaMarkerColDfn(columnDfn, "Updated", 80, SaxDbDfn_Reference.ColumnIdx.UsgaMarker_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> GetUsgaMarkerQueryFilter(SaxGolfUsgaMarker.Params prm)
|
||||
{
|
||||
List<String> filter = new List<String>();
|
||||
String col_Id = SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Id, aliasUsgaMarker);
|
||||
|
||||
// Item Ids.
|
||||
if (prm.IdsIncluded.HasValidIds())
|
||||
filter.Add($"{col_Id} IN ({prm.IdsIncluded.Concat(",")})");
|
||||
if (prm.IdsExcluded.HasValidIds())
|
||||
filter.Add($"{col_Id} NOT IN ({prm.IdsExcluded.Concat(",")})");
|
||||
|
||||
// Courses.
|
||||
if (prm.CourseIdsIncluded.HasValidIds())
|
||||
filter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_CourseId, aliasUsgaMarker)} IN ({prm.CourseIdsIncluded.Concat(",")})");
|
||||
|
||||
if (!StringUtil.IsBlank(prm.MarkerFilter))
|
||||
{
|
||||
// Split filter into words.
|
||||
List<String> filterWords = prm.MarkerFilter.Split((char[])null).ToList();
|
||||
filterWords.RemoveDuplicatesCI();
|
||||
filterWords.RemoveBlanks();
|
||||
foreach (String filterWord in filterWords)
|
||||
{
|
||||
List<String> markerFilter = new List<String>();
|
||||
markerFilter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Caption, aliasUsgaMarker)} Like '%{DbQuery.FormatForLike(filterWord, true)}%'");
|
||||
markerFilter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_HolesCaption, aliasUsgaMarker)} Like '%{DbQuery.FormatForLike(filterWord, true)}%'");
|
||||
markerFilter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Tee, aliasUsgaMarker)} Like '%{DbQuery.FormatForLike(filterWord, true)}%'");
|
||||
markerFilter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Gender, aliasUsgaMarker)} Like '%{DbQuery.FormatForLike(filterWord, true)}%'");
|
||||
filter.Add(markerFilter.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
}
|
||||
|
||||
// Marker properties.
|
||||
if (prm.Holes > 0)
|
||||
filter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Holes, aliasUsgaMarker)}={prm.Holes}");
|
||||
if (!StringUtil.IsEmpty(prm.Gender))
|
||||
filter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Gender, aliasUsgaMarker)}='{DbQuery.FormatForLike(prm.Gender)}'");
|
||||
|
||||
// Notes.
|
||||
if (!StringUtil.IsEmpty(prm.NotesPartial))
|
||||
filter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Notes, aliasUsgaMarker)} LIKE '%{DbQuery.FormatForLike(prm.NotesPartial)}%'");
|
||||
|
||||
// Status.
|
||||
if (prm.StatusCat != SaxGolfUsgaMarker.StatusCat.Any)
|
||||
filter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Status, aliasUsgaMarker)} {GetUsgaMarkerStatusCatFilterCondition(prm.StatusCat)}");
|
||||
|
||||
if (filter.Count < 1 && prm.IncludeDefaultFilter) filter.Add("1=1");
|
||||
return filter;
|
||||
}
|
||||
internal static String GetUsgaMarkerStatusCatFilterCondition(SaxGolfUsgaMarker.StatusCat statusCat)
|
||||
{
|
||||
if (statusCat == SaxGolfUsgaMarker.StatusCat.ActiveOnly)
|
||||
return $"='{SacsSystem.GetStatusCode(SaStatus.Active)}'";
|
||||
if (statusCat == SaxGolfUsgaMarker.StatusCat.InactiveOnly)
|
||||
return $"='{SacsSystem.GetStatusCode(SaStatus.Inactive)}'";
|
||||
if (statusCat == SaxGolfUsgaMarker.StatusCat.NotDeleted)
|
||||
return $"!='{SacsSystem.GetStatusCode(SaStatus.Deleted)}'";
|
||||
if (statusCat == SaxGolfUsgaMarker.StatusCat.DeletedOnly)
|
||||
return $"='{SacsSystem.GetStatusCode(SaStatus.Deleted)}'";
|
||||
return "";
|
||||
}
|
||||
// Item sort columns.
|
||||
public HashSet<String> GetUsgaMarkerSortColumns(SaxGolfUsgaMarker.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
HashSet<String> sortColumnNames = new HashSet<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for UsgaMarker columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SaxDbDfn_Reference.GetTableForColumn((SaxDbDfn_Reference.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn_Reference.TableIdx.UsgaMarker)
|
||||
{
|
||||
sortCol = SaxDbDfn_Reference.GetColumnNameQual((SaxDbDfn_Reference.ColumnIdx)columnDfn.DbColumn, aliasUsgaMarker);
|
||||
}
|
||||
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();
|
||||
AddRandomSortColumn(prm, sortColumnNames);
|
||||
if (sortColumnNames.IsEmpty())
|
||||
{
|
||||
// Default sort columns.
|
||||
sortColumnNames.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Id, aliasUsgaMarker) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item count.
|
||||
private long GetUsgaMarkerCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return ReferenceDatabase.GetRowCount(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaMarker) + " As " + aliasUsgaMarker, filter);
|
||||
}
|
||||
public override long GetUsgaMarkerCount(SaxGolfUsgaMarker.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetUsgaMarkerCount(GetUsgaMarkerQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item list.
|
||||
public override List<SaxGolfUsgaMarker> GetUsgaMarkerList(SaxGolfUsgaMarker.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<SaxGolfUsgaMarker> userRoles = new List<SaxGolfUsgaMarker>();
|
||||
DbQuery qry = new DbQuery(ReferenceDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaMarker), aliasUsgaMarker);
|
||||
Golf_UsgaMarker_Db dbUsgaMarker = new Golf_UsgaMarker_Db(ReferenceDbInfo);
|
||||
qry.Columns.AddRange(dbUsgaMarker.ExistingColumnNames);
|
||||
qry.Filters.AddRange(GetUsgaMarkerQueryFilter(prm));
|
||||
qry.OrderBy.AddRange(GetUsgaMarkerSortColumns(prm));
|
||||
// Query data.
|
||||
using (var dbConnection = ReferenceDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
dbCommand.CommandText = qry.BuildQuery(prm.ResultsPaging);
|
||||
using (DbDataReader dbDataReader = dbCommand.ExecuteReader())
|
||||
{
|
||||
while (dbDataReader.Read())
|
||||
{
|
||||
dbUsgaMarker = new Golf_UsgaMarker_Db(ReferenceDbInfo);
|
||||
dbUsgaMarker.PopulateFrom(dbDataReader);
|
||||
userRoles.Add(CreateUsgaMarker(dbUsgaMarker));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return userRoles;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item query execution.
|
||||
public override DbResultSet ExecuteUsgaMarkerQuery(List<ColumnDfn> columns, SaxGolfUsgaMarker.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(ReferenceDatabase.DbmsType);
|
||||
query.Tables.Add(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaMarker), aliasUsgaMarker);
|
||||
|
||||
// Add columns as defined in query list.
|
||||
if (columns.HasId(SaxGolfUsgaMarker.Column.Id))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Id, aliasUsgaMarker));
|
||||
bool hasCourseCols = (columns.HasId(SaxGolfUsgaMarker.Column.Course_Name));
|
||||
if (columns.HasId(SaxGolfUsgaMarker.Column.CourseId) || hasCourseCols)
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_CourseId, aliasUsgaMarker));
|
||||
if (columns.HasId(SaxGolfUsgaMarker.Column.UsgaMarkerId))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_UsgaMarkerId, aliasUsgaMarker));
|
||||
if (columns.HasId(SaxGolfUsgaMarker.Column.Caption))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Caption, aliasUsgaMarker));
|
||||
if (columns.HasId(SaxGolfUsgaMarker.Column.Holes))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Holes, aliasUsgaMarker));
|
||||
if (columns.HasId(SaxGolfUsgaMarker.Column.HolesCaption))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_HolesCaption, aliasUsgaMarker));
|
||||
if (columns.HasId(SaxGolfUsgaMarker.Column.Tee))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Tee, aliasUsgaMarker));
|
||||
if (columns.HasId(SaxGolfUsgaMarker.Column.Gender))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Gender, aliasUsgaMarker));
|
||||
if (columns.HasId(SaxGolfUsgaMarker.Column.SlopeRating))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_SlopeRating, aliasUsgaMarker));
|
||||
if (columns.HasId(SaxGolfUsgaMarker.Column.Par))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Par, aliasUsgaMarker));
|
||||
if (columns.HasId(SaxGolfUsgaMarker.Column.CourseRating))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_CourseRating, aliasUsgaMarker));
|
||||
if (columns.HasId(SaxGolfUsgaMarker.Column.BogeyRating))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_BogeyRating, aliasUsgaMarker));
|
||||
if (columns.HasId(SaxGolfUsgaMarker.Column.Length))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Length, aliasUsgaMarker));
|
||||
// Common properties.
|
||||
if (columns.HasId(SaxGolfUsgaMarker.Column.Notes))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Notes, aliasUsgaMarker));
|
||||
if (columns.HasId(SaxGolfUsgaMarker.Column.Flags))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Flags, aliasUsgaMarker));
|
||||
if (columns.HasId(SaxGolfUsgaMarker.Column.Status) || columns.HasId(SaxGolfUsgaMarker.Column.Status_Desc) || columns.HasId(SaxGolfUsgaMarker.Column.Status_Ind))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_Status, aliasUsgaMarker));
|
||||
if (columns.HasId(SaxGolfUsgaMarker.Column.CreateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_CreateOn, aliasUsgaMarker));
|
||||
if (columns.HasId(SaxGolfUsgaMarker.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_UpdateOn, aliasUsgaMarker));
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Course.
|
||||
if (hasCourseCols)
|
||||
{
|
||||
DbQueryJoin joinCourse = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinCourse.Table = new StringPair(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaCourse), aliasUsgaMarker_Course);
|
||||
joinCourse.Filters.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Id, aliasUsgaMarker_Course) + "=" + SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_CourseId, aliasUsgaMarker));
|
||||
query.Joins.Add(joinCourse);
|
||||
List<SaxDbDfn_Reference.ColumnIdx> cols = new List<SaxDbDfn_Reference.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_CourseName);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(col, aliasUsgaMarker_Course), prefixUsgaMarker_Course + SaxDbDfn_Reference.GetColumnName(col, false));
|
||||
prm.Alias_Course = aliasUsgaMarker_Course;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetUsgaMarkerQueryFilter(prm));
|
||||
|
||||
if (prm.IdsIncluded.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetUsgaMarkerSortColumns(prm))
|
||||
query.OrderBy.Add(sortColumn);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
//return new DbResultSet_DataTableReader(db, query.BuildQuery(prm.ResultsPaging));
|
||||
return DbResultSet_DataReader.ExecuteQuery(ReferenceDatabase, query.BuildQuery(prm.ResultsPaging));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
+772
@@ -0,0 +1,772 @@
|
||||
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 Sarand.Net.Standard.Base.Utils;
|
||||
using Sarand.Net.Standard.Dbas.Data;
|
||||
using Saxonite.Base.App;
|
||||
using Saxonite.Net.Standard.Base.App;
|
||||
using Saxonite.Net.Standard.Base.Bus;
|
||||
using Saxonite.Net.Standard.Base.Bus.Reference;
|
||||
using Saxonite.Net.Standard.Dbas.Bus.Reference;
|
||||
using Saxonite.Net.Standard.Dbas.Internal.Reference;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
|
||||
namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
|
||||
{
|
||||
//=======================================================================
|
||||
partial class SaxReferenceGolfMgr_Dbas
|
||||
{
|
||||
//*******************************************************************
|
||||
// Support Mgr - User Report
|
||||
//*******************************************************************
|
||||
// Utilities.
|
||||
private List<StringPair> GetLogProperties(SaxGolfUsgaProvince usgaProvince)
|
||||
{
|
||||
return new List<StringPair>()
|
||||
{
|
||||
new StringPair("Id",SysId.ToString(usgaProvince.Id)),
|
||||
new StringPair("Country Id",SysId.ToString(usgaProvince.CountryId)),
|
||||
new StringPair("Province code",usgaProvince.ProvinceCode),
|
||||
new StringPair("Province name",usgaProvince.ProvinceName),
|
||||
new StringPair("Status",usgaProvince.StatusCode)
|
||||
};
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create item.
|
||||
public override SaxGolfUsgaProvince CreateUsgaProvince(SysId countryId)
|
||||
{
|
||||
ClearErrorState();
|
||||
return new SaxGolfUsgaProvince_Dbas(ReferenceDatabase, null, countryId, 0);
|
||||
}
|
||||
private SaxGolfUsgaProvince_Dbas CreateUsgaProvince(Golf_UsgaProvince_Db dbUsgaProvince)
|
||||
{
|
||||
ClearErrorState();
|
||||
SaxGolfUsgaProvince_Dbas usgaProvince = new SaxGolfUsgaProvince_Dbas(ReferenceDatabase, new SysId(dbUsgaProvince._Id), new SysId(dbUsgaProvince._CountryId), (ushort)dbUsgaProvince._Flags);
|
||||
PopulateFrom(dbUsgaProvince, usgaProvince);
|
||||
return usgaProvince;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get item.
|
||||
public override SaxGolfUsgaProvince GetUsgaProvince(SaxGolfUsgaProvince.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetUsgaProvince(GetUsgaProvinceQueryFilter(prm).Concat(" And ", "(", ")"));
|
||||
}
|
||||
private SaxGolfUsgaProvince GetUsgaProvince(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetUsgaProvinceCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple items found");
|
||||
return null;
|
||||
}
|
||||
SaxGolfUsgaProvince usgaProvince = null;
|
||||
// Query data.
|
||||
using (var dbConnection = ReferenceDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
Golf_UsgaProvince_Db dbUsgaProvince = new Golf_UsgaProvince_Db(ReferenceDbInfo);
|
||||
dbUsgaProvince.PopulateFrom(dbCommand, aliasUsgaProvince, filter);
|
||||
usgaProvince = CreateUsgaProvince(dbUsgaProvince);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return usgaProvince;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate item.
|
||||
public override bool IsValidUsgaProvinceData(SaxGolfUsgaProvince.Data data, SaxGolfUsgaProvince.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidUsgaProvinceData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert item.
|
||||
public override bool InsertUsgaProvince(SaxGolfUsgaProvince usgaProvince, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertUsgaProvince";
|
||||
ClearErrorState();
|
||||
if (!IsValidUsgaProvince(usgaProvince)) return false;
|
||||
if (SysId.IsValid(usgaProvince.Id)) return SetErrorState(ErrorMessage.ValidItemId);
|
||||
using (var dbConnection = ReferenceDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
Golf_UsgaProvince_Db dbUsgaProvince = new Golf_UsgaProvince_Db(ReferenceDbInfo);
|
||||
PopulateTo(dbUsgaProvince, usgaProvince, dbUpdateInfo);
|
||||
if (Golf_UsgaProvince_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
dbUsgaProvince._Id = ReferenceDatabase.GetNextIdFromTable("UsgaProvince");
|
||||
}
|
||||
dbUsgaProvince.ExecuteInsertCommand(dbCommand);
|
||||
usgaProvince.Id = new SysId(dbUsgaProvince._Id);
|
||||
usgaProvince.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(usgaProvince).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update item.
|
||||
public override bool UpdateUsgaProvince(SaxGolfUsgaProvince usgaProvince, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdateUsgaProvince";
|
||||
ClearErrorState();
|
||||
if (!IsValidUsgaProvince(usgaProvince)) return false;
|
||||
if (!SysId.IsValid(usgaProvince.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!usgaProvince.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(usgaProvince).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = ReferenceDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
Golf_UsgaProvince_Db dbUsgaProvince = new Golf_UsgaProvince_Db(ReferenceDbInfo);
|
||||
dbUsgaProvince.PopulateFrom(dbCommand, aliasUsgaProvince, "Id=" + SysId.ToString(usgaProvince.Id));
|
||||
// ToDo SaxUpdateLogItemMonitor_UsgaProvince updateLogMonitor = new SaxUpdateLogItemMonitor_UsgaProvince(SessionContext, CreateUsgaProvince(dbUsgaProvince), dbUpdateInfo);
|
||||
// Update item.
|
||||
PopulateTo(dbUsgaProvince, usgaProvince, dbUpdateInfo);
|
||||
dbUsgaProvince.ExecuteUpdateCommand(dbCommand);
|
||||
usgaProvince.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(usgaProvince).Concat(": ").Concat("", "\n\t"));
|
||||
// Record updates.
|
||||
// ToDo updateLogMonitor.RecordUpdatedValues(usgaProvince);
|
||||
// ToDo updateLogMonitor.LogUpdates();
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete item.
|
||||
public override bool UsgaProvinceCanBeDeleted(SaxGolfUsgaProvince usgaProvince)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.UsgaProvinceCanBeDeleted(usgaProvince)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteUsgaProvince(SaxGolfUsgaProvince usgaProvince, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeleteUsgaProvince";
|
||||
ClearErrorState();
|
||||
if (!UsgaProvinceCanBeDeleted(usgaProvince)) return false;
|
||||
|
||||
// User Roles are logically deleted by changing the status.
|
||||
usgaProvince.Status = SaStatus.Deleted;
|
||||
return UpdateUsgaProvince(usgaProvince, dbUpdateInfo);
|
||||
|
||||
/*
|
||||
* Physical deletion.
|
||||
using (var dbConnection = ReferenceDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
Golf_UsgaProvince_Db dbUsgaProvince = new Golf_UsgaProvince_Db(ReferenceDbInfo);
|
||||
dbUsgaProvince.PopulateFrom(dbCommand, aliasUsgaProvince, "Id=" + usgaProvince.Id.ToString());
|
||||
// Delete item.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaProvince) + " WHERE Id=" + SysId.ToString(usgaProvince.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
usgaProvince.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(usgaProvince).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
*/
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(Golf_UsgaProvince_Db dbUsgaProvince, SaxGolfUsgaProvince usgaProvince, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbUsgaProvince._Id = SysId.ToLong(usgaProvince.Id);
|
||||
dbUsgaProvince._CountryId = SysId.ToInt(usgaProvince.CountryId);
|
||||
dbUsgaProvince._ProvinceCode = usgaProvince.ProvinceCode;
|
||||
dbUsgaProvince._EntProvinceCode = usgaProvince.EntProvinceCode;
|
||||
dbUsgaProvince._ProvinceName = usgaProvince.ProvinceName;
|
||||
dbUsgaProvince._CoursesUpdateAt = usgaProvince.CoursesUpdateAt;
|
||||
// Common.
|
||||
dbUsgaProvince._Notes = usgaProvince.Notes;
|
||||
dbUsgaProvince._Status = SacsSystem.GetStatusCode(usgaProvince.Status);
|
||||
dbUsgaProvince._Flags = (short)usgaProvince.Flags;
|
||||
if (!SysId.IsValid(usgaProvince.Id))
|
||||
{
|
||||
dbUsgaProvince._CreateOn = DateTime.Now;
|
||||
dbUsgaProvince._CreateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbUsgaProvince._CreateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
dbUsgaProvince._UpdateOn = DateTime.Now;
|
||||
dbUsgaProvince._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbUsgaProvince._UpdateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
private void PopulateFrom(Golf_UsgaProvince_Db dbUsgaProvince, SaxGolfUsgaProvince usgaProvince)
|
||||
{
|
||||
//usgaProvince.Id = new SysId(dbUsgaProvince._Id);
|
||||
usgaProvince.CountryId = new SysId(dbUsgaProvince._CountryId);
|
||||
usgaProvince.ProvinceCode = dbUsgaProvince._ProvinceCode;
|
||||
usgaProvince.EntProvinceCode = dbUsgaProvince._EntProvinceCode;
|
||||
usgaProvince.ProvinceName = dbUsgaProvince._ProvinceName;
|
||||
usgaProvince.CoursesUpdateAt = dbUsgaProvince._CoursesUpdateAt;
|
||||
// Common.
|
||||
usgaProvince.Notes = dbUsgaProvince._Notes;
|
||||
usgaProvince.Status = SacsSystem.GetStatusForCode(dbUsgaProvince._Status);
|
||||
usgaProvince.SetCreateStamp(dbUsgaProvince._CreateOn, new SysId(dbUsgaProvince._CreateBy), dbUsgaProvince._CreateHost);
|
||||
usgaProvince.SetUpdateStamp(dbUsgaProvince._UpdateOn, new SysId(dbUsgaProvince._UpdateBy), dbUsgaProvince._UpdateHost);
|
||||
usgaProvince.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Bulk updates.
|
||||
/// <summary>
|
||||
/// Bulk update USGA Provinces.
|
||||
/// <para>- Country code must be supplied to identify parent.</para>
|
||||
/// <para>- Province code must be supplied to act as identifier.</para>
|
||||
/// <para>- Other properties are validated as per province rules - check error state.</para>
|
||||
/// <para>- Other properties are left as is if null.</para>
|
||||
/// </summary>
|
||||
public override bool BulkUpdateUsgaProvinces(List<UsgaProvinceData> provinces, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<UsgaProvinceData> provincesToUpdate = new List<UsgaProvinceData>();
|
||||
|
||||
// Validate supplied data.
|
||||
foreach (UsgaProvinceData province in provinces)
|
||||
{
|
||||
// Validate province properties.
|
||||
// Country and Province Codes are mandatory, other values only validated if non-null.
|
||||
if (!IsValidValue(province.CountryCode, "country", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_CountryCode), true)) return false;
|
||||
if (!IsValidValue(province.ProvinceCode, "code", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_ProvinceCode), true)) return false;
|
||||
if (!IsValidValue(province.EntProvinceCode, "ENT code", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_EntProvinceCode))) return false;
|
||||
if (province.ProvinceName != null && !IsValidValue(province.ProvinceName, "name", (long)SaxDbDfn_Reference.GetColTextLen(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_ProvinceName))) return false;
|
||||
provincesToUpdate.Add(province);
|
||||
}
|
||||
int MaxBulkUpdateBatchSize = 64;
|
||||
int batchSize = provincesToUpdate.Any() ? (int)Math.Ceiling(provincesToUpdate.Count() / Math.Ceiling((double)provincesToUpdate.Count() / MaxBulkUpdateBatchSize)) : MaxBulkUpdateBatchSize;
|
||||
while (provincesToUpdate.Any())
|
||||
{
|
||||
List<String> query = new List<string>();
|
||||
query.Add($"Declare @statusActive VarChar(3) = '{SacsSystem.GetStatusCode(SaxGolfUsgaProvince.DefaultStatus)}';");
|
||||
query.Add($"Declare @updateOn DateTime = GetDate();");
|
||||
query.Add($"Declare @updateBy Int = {SysId.ToLong(dbUpdateInfo.UserId)};");
|
||||
query.Add($"Declare @updateHost VarChar(100) = '{DbQuery.FormatForCondition(dbUpdateInfo.Host)}';");
|
||||
query.Add("Merge");
|
||||
query.Add($"Into {SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaProvince)} uPrv");
|
||||
query.Add("Using");
|
||||
query.Add("(");
|
||||
query.Add("Select dCty.Id CountryId, dPrv.CountryCode, dPrv.ProvinceCode, dPrv.EntProvinceCode, dPrv.ProvinceName");
|
||||
query.Add("From");
|
||||
query.Add("(");
|
||||
query.Add("Select '' CountryCode, '' ProvinceCode, '' EntProvinceCode, '' ProvinceName");
|
||||
foreach (UsgaProvinceData province in provincesToUpdate.ExtractRange(0, batchSize))
|
||||
query.Add($"Union Select '{DbQuery.FormatForCondition(province.CountryCode)}', '{DbQuery.FormatForCondition(province.ProvinceCode)}', " + (province.EntProvinceCode != null ? $"'{DbQuery.FormatForCondition(province.EntProvinceCode)}'" : "Null") + "," + (province.ProvinceName != null ? $"'{DbQuery.FormatForCondition(province.ProvinceName)}'" : "Null"));
|
||||
query.Add(") dPrv");
|
||||
query.Add($"Inner Join {SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaCountry)} dCty On dCty.CountryCode=dPrv.CountryCode");
|
||||
query.Add(") dPrv");
|
||||
query.Add("On uPrv.CountryId=dPrv.CountryId And uPrv.ProvinceCode=dPrv.ProvinceCode");
|
||||
query.Add("When Matched And ((dPrv.EntProvinceCode Is Not Null And uPrv.EntProvinceCode!=dPrv.EntProvinceCode) Or (dPrv.ProvinceName Is Not Null And uPrv.ProvinceName!=dPrv.ProvinceName) Or uPrv.Status!=@statusActive)");
|
||||
query.Add("Then Update Set");
|
||||
query.Add(" EntProvinceCode=Coalesce(dPrv.EntProvinceCode,uPrv.EntProvinceCode),");
|
||||
query.Add(" ProvinceName=Coalesce(dPrv.ProvinceName,uPrv.ProvinceName),");
|
||||
query.Add(" Status=@statusActive,");
|
||||
query.Add(" UpdateOn=@updateOn,");
|
||||
query.Add(" UpdateBy=@updateBy,");
|
||||
query.Add(" UpdateHost=@updateHost");
|
||||
query.Add("When Not Matched And Len(IsNull(dPrv.ProvinceName,''))>0");
|
||||
query.Add("Then Insert (CountryId,ProvinceCode,EntProvinceCode,ProvinceName,Notes,Flags,Status,CreateOn,CreateBy,CreateHost,UpdateOn,UpdateBy,UpdateHost)");
|
||||
query.Add($"Values (dPrv.CountryId,dPrv.ProvinceCode,Coalesce(dPrv.EntProvinceCode,''),dPrv.ProvinceName,'',0,@statusActive,@updateOn,@updateBy,@updateHost,@updateOn,@updateBy,@updateHost)");
|
||||
query.Add(";");
|
||||
//SaLogger.Info($"{SysUtil.Fn} Bulk USGA Province update query:\n\t{query.Concat("\n\t")}");
|
||||
|
||||
try
|
||||
{
|
||||
int result = ReferenceDatabase.ExecuteNonQuery(query.Concat("\n"));
|
||||
if (ReferenceDatabase.HasErrorState())
|
||||
SaLogger.Warn($"{SysUtil.Fn} Error executing bulk USGA Province update - {ReferenceDatabase.ErrorStateMessage}");
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SaLogger.Warn(SysUtil.Fn + " " + ExceptionUtil.GetLogMessage(exc, " executing bulk USGA Province update"));
|
||||
}
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item column definitions.
|
||||
private static readonly String aliasUsgaProvince = "UsgPrv";
|
||||
private static readonly String aliasUsgaProvince_Country = "UsgPrv_Cty";
|
||||
private static readonly String prefixUsgaProvince_Country = aliasUsgaProvince_Country + "_";
|
||||
private static readonly String colProvince_Facility_Count = "Prv_Fty_Count";
|
||||
private static readonly String colProvince_Facility_Active_Count = "Prv_Fty_Act_Count";
|
||||
private static readonly String colProvince_Course_Count = "Prv_Crs_Count";
|
||||
private static readonly String colProvince_Course_Active_Count = "Prv_Crs_Act_Count";
|
||||
private static readonly String colProvince_Markers_Percent = "Prv_Mkr_Perc";
|
||||
private void SetUsgaProvinceColDfn
|
||||
(ColumnDfn col, String caption, int width, SaxDbDfn_Reference.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SaxDbDfn_Reference.GetTableForColumn(dbCol) == SaxDbDfn_Reference.TableIdx.UsgaProvince)
|
||||
alias = aliasUsgaProvince;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn_Reference.GetColumnName(dbCol, false), SaxDbDfn_Reference.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn_Reference.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SaxDbDfn_Reference.GetColTextLen(dbCol);
|
||||
}
|
||||
public override ColumnDfn GetUsgaProvinceColumnDfn(SaxGolfUsgaProvince.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
//-----------------------------------------------------------
|
||||
case SaxGolfUsgaProvince.Column.Pos:
|
||||
SetUsgaProvinceColDfn(columnDfn, "Pos", 60, SaxDbDfn_Reference.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
case SaxGolfUsgaProvince.Column.Id:
|
||||
SetUsgaProvinceColDfn(columnDfn, "Id", 80, SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-------------------------------------------------------
|
||||
case SaxGolfUsgaProvince.Column.CountryId:
|
||||
SetUsgaProvinceColDfn(columnDfn, "Country #", 80, SaxDbDfn_Reference.ColumnIdx.UsgaProvince_CountryId, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaProvince.Column.Country_Name:
|
||||
SetUsgaProvinceColDfn(columnDfn, "Country", 120, SaxDbDfn_Reference.ColumnIdx.UsgaCountry_CountryName, ColumnAlignment.Center, DataValue.DataType.String, aliasUsgaProvince_Country, prefixUsgaProvince_Country);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-------------------------------------------------------
|
||||
case SaxGolfUsgaProvince.Column.ProvinceCode:
|
||||
SetUsgaProvinceColDfn(columnDfn, "Code", 80, SaxDbDfn_Reference.ColumnIdx.UsgaProvince_ProvinceCode, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaProvince.Column.ProvinceName:
|
||||
SetUsgaProvinceColDfn(columnDfn, "Name", 120, SaxDbDfn_Reference.ColumnIdx.UsgaProvince_ProvinceName, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaProvince.Column.CoursesUpdateAt_Date:
|
||||
SetUsgaProvinceColDfn(columnDfn, "Courses updated", 120, SaxDbDfn_Reference.ColumnIdx.UsgaProvince_CoursesUpdateAt, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Derived properties.
|
||||
case SaxGolfUsgaProvince.Column.FacilityCount_All:
|
||||
SetUsgaProvinceColDfn(columnDfn, "Facilities", 60, SaxDbDfn_Reference.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.DataName = colProvince_Facility_Count;
|
||||
break;
|
||||
case SaxGolfUsgaProvince.Column.FacilityCount_Active:
|
||||
SetUsgaProvinceColDfn(columnDfn, "Facilities (act)", 60, SaxDbDfn_Reference.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.DataName = colProvince_Facility_Active_Count;
|
||||
break;
|
||||
case SaxGolfUsgaProvince.Column.CourseCount_All:
|
||||
SetUsgaProvinceColDfn(columnDfn, "Courses", 60, SaxDbDfn_Reference.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.DataName = colProvince_Course_Count;
|
||||
break;
|
||||
case SaxGolfUsgaProvince.Column.CourseCount_Active:
|
||||
SetUsgaProvinceColDfn(columnDfn, "Courses (act)", 60, SaxDbDfn_Reference.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.DataName = colProvince_Course_Active_Count;
|
||||
break;
|
||||
|
||||
case SaxGolfUsgaProvince.Column.MarkerPercent:
|
||||
SetUsgaCountryColDfn(columnDfn, "Markers %", 60, SaxDbDfn_Reference.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.DataName = colProvince_Markers_Percent;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Common properties.
|
||||
case SaxGolfUsgaProvince.Column.Notes:
|
||||
SetUsgaProvinceColDfn(columnDfn, "Notes", 240, SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Notes);
|
||||
break;
|
||||
case SaxGolfUsgaProvince.Column.Flags:
|
||||
SetUsgaProvinceColDfn(columnDfn, "Flags", 60, SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxGolfUsgaProvince.Column.Status:
|
||||
SetUsgaProvinceColDfn(columnDfn, "Status", 80, SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxGolfUsgaProvince.Column.Status_Desc:
|
||||
SetUsgaProvinceColDfn(columnDfn, "Status", 90, SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxGolfUsgaProvince.Column.Status_Ind:
|
||||
SetUsgaProvinceColDfn(columnDfn, "Status", 80, SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SaxGolfUsgaProvince.Column.CreateOn_Date:
|
||||
SetUsgaProvinceColDfn(columnDfn, "Created", 80, SaxDbDfn_Reference.ColumnIdx.UsgaProvince_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxGolfUsgaProvince.Column.UpdateOn_Date:
|
||||
SetUsgaProvinceColDfn(columnDfn, "Updated", 80, SaxDbDfn_Reference.ColumnIdx.UsgaProvince_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> GetUsgaProvinceQueryFilter(SaxGolfUsgaProvince.Params prm)
|
||||
{
|
||||
List<String> filter = new List<String>();
|
||||
String col_Id = SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Id, aliasUsgaProvince);
|
||||
|
||||
// Item Ids.
|
||||
if (prm.IdsIncluded.HasValidIds())
|
||||
filter.Add($"{col_Id} IN ({prm.IdsIncluded.Concat(",")})");
|
||||
if (prm.IdsExcluded.HasValidIds())
|
||||
filter.Add($"{col_Id} NOT IN ({prm.IdsExcluded.Concat(",")})");
|
||||
|
||||
// Countries.
|
||||
if (prm.CountryIdsIncluded.HasValidIds())
|
||||
filter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_CountryId, aliasUsgaProvince)} IN ({prm.CountryIdsIncluded.Concat(",")})");
|
||||
|
||||
// Province code.
|
||||
if (!StringUtil.IsEmpty(prm.ProvinceCodeFull))
|
||||
filter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_ProvinceCode, aliasUsgaProvince)}='{DbQuery.FormatForCondition(prm.ProvinceCodeFull)}'");
|
||||
|
||||
if (!StringUtil.IsBlank(prm.ProvinceFilter))
|
||||
{
|
||||
// Split filter into words.
|
||||
List<String> filterWords = prm.ProvinceFilter.Split((char[])null).ToList();
|
||||
filterWords.RemoveDuplicatesCI();
|
||||
filterWords.RemoveBlanks();
|
||||
foreach (String filterWord in filterWords)
|
||||
{
|
||||
List<String> provinceFilter = new List<String>();
|
||||
provinceFilter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_ProvinceCode, aliasUsgaProvince)} Like '%{DbQuery.FormatForLike(filterWord, true)}%'");
|
||||
provinceFilter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_ProvinceName, aliasUsgaProvince)} Like '%{DbQuery.FormatForLike(filterWord, true)}%'");
|
||||
filter.Add(provinceFilter.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
}
|
||||
|
||||
// Name.
|
||||
if (!StringUtil.IsEmpty(prm.ProvinceNameFull))
|
||||
filter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_ProvinceName, aliasUsgaProvince)}='{DbQuery.FormatForCondition(prm.ProvinceNameFull)}'");
|
||||
if (!StringUtil.IsEmpty(prm.ProvinceNamePartial))
|
||||
filter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_ProvinceName, aliasUsgaProvince)} LIKE '%{DbQuery.FormatForLike(prm.ProvinceNamePartial)}%'");
|
||||
|
||||
// Flags.
|
||||
if (prm.PriorityFlagState != SacsHierarchyItem.Params.FlagState.Either)
|
||||
filter.Add(DbQuery.BuildBitMappedFilter(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Flags, aliasUsgaProvince), SaxGolfUsgaProvince.Flag_Priority, prm.PriorityFlagState == SacsHierarchyItem.Params.FlagState.True));
|
||||
|
||||
// Associated data.
|
||||
if (prm.HasFacilities != SacsHierarchyItem.Params.BoolState.Either)
|
||||
{
|
||||
String existsPrefix = (prm.HasFacilities == SacsHierarchyItem.Params.BoolState.True ? "" : "Not ");
|
||||
filter.Add($"{existsPrefix} Exists (Select 1 From {SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaFacility)} Where {SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_ProvinceId)}={col_Id})");
|
||||
}
|
||||
|
||||
// Notes.
|
||||
if (!StringUtil.IsEmpty(prm.NotesPartial))
|
||||
filter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Notes, aliasUsgaProvince)} LIKE '%{DbQuery.FormatForLike(prm.NotesPartial)}%'");
|
||||
|
||||
// Status.
|
||||
if (prm.StatusCat != SaxGolfUsgaProvince.StatusCat.Any)
|
||||
filter.Add($"{SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Status, aliasUsgaProvince)} {GetUsgaProvinceStatusCatFilterCondition(prm.StatusCat)}");
|
||||
|
||||
if (filter.Count < 1 && prm.IncludeDefaultFilter) filter.Add("1=1");
|
||||
return filter;
|
||||
}
|
||||
internal static String GetUsgaProvinceStatusCatFilterCondition(SaxGolfUsgaProvince.StatusCat statusCat)
|
||||
{
|
||||
if (statusCat == SaxGolfUsgaProvince.StatusCat.ActiveOnly)
|
||||
return $"='{SacsSystem.GetStatusCode(SaStatus.Active)}'";
|
||||
if (statusCat == SaxGolfUsgaProvince.StatusCat.InactiveOnly)
|
||||
return $"='{SacsSystem.GetStatusCode(SaStatus.Inactive)}'";
|
||||
if (statusCat == SaxGolfUsgaProvince.StatusCat.NotDeleted)
|
||||
return $"!='{SacsSystem.GetStatusCode(SaStatus.Deleted)}'";
|
||||
if (statusCat == SaxGolfUsgaProvince.StatusCat.DeletedOnly)
|
||||
return $"='{SacsSystem.GetStatusCode(SaStatus.Deleted)}'";
|
||||
return "";
|
||||
}
|
||||
// Item sort columns.
|
||||
public HashSet<String> GetUsgaProvinceSortColumns(SaxGolfUsgaProvince.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
HashSet<String> sortColumnNames = new HashSet<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for UsgaProvince columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SaxDbDfn_Reference.GetTableForColumn((SaxDbDfn_Reference.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn_Reference.TableIdx.UsgaProvince)
|
||||
{
|
||||
sortCol = SaxDbDfn_Reference.GetColumnNameQual((SaxDbDfn_Reference.ColumnIdx)columnDfn.DbColumn, aliasUsgaProvince);
|
||||
}
|
||||
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();
|
||||
AddRandomSortColumn(prm, sortColumnNames);
|
||||
if (sortColumnNames.IsEmpty())
|
||||
{
|
||||
// Default sort columns.
|
||||
sortColumnNames.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Id, aliasUsgaProvince) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item count.
|
||||
private long GetUsgaProvinceCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return ReferenceDatabase.GetRowCount(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaProvince) + " As " + aliasUsgaProvince, filter);
|
||||
}
|
||||
public override long GetUsgaProvinceCount(SaxGolfUsgaProvince.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetUsgaProvinceCount(GetUsgaProvinceQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item list.
|
||||
public override List<SaxGolfUsgaProvince> GetUsgaProvinceList(SaxGolfUsgaProvince.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<SaxGolfUsgaProvince> userRoles = new List<SaxGolfUsgaProvince>();
|
||||
DbQuery qry = new DbQuery(ReferenceDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaProvince), aliasUsgaProvince);
|
||||
Golf_UsgaProvince_Db dbUsgaProvince = new Golf_UsgaProvince_Db(ReferenceDbInfo);
|
||||
qry.Columns.AddRange(dbUsgaProvince.ExistingColumnNames);
|
||||
qry.Filters.AddRange(GetUsgaProvinceQueryFilter(prm));
|
||||
qry.OrderBy.AddRange(GetUsgaProvinceSortColumns(prm));
|
||||
// Query data.
|
||||
using (var dbConnection = ReferenceDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
dbCommand.CommandText = qry.BuildQuery(prm.ResultsPaging);
|
||||
using (DbDataReader dbDataReader = dbCommand.ExecuteReader())
|
||||
{
|
||||
while (dbDataReader.Read())
|
||||
{
|
||||
dbUsgaProvince = new Golf_UsgaProvince_Db(ReferenceDbInfo);
|
||||
dbUsgaProvince.PopulateFrom(dbDataReader);
|
||||
userRoles.Add(CreateUsgaProvince(dbUsgaProvince));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return userRoles;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item query execution.
|
||||
public override DbResultSet ExecuteUsgaProvinceQuery(List<ColumnDfn> columns, SaxGolfUsgaProvince.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(ReferenceDatabase.DbmsType);
|
||||
query.Tables.Add(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaProvince), aliasUsgaProvince);
|
||||
|
||||
// Add columns as defined in query list.
|
||||
if (columns.HasId(SaxGolfUsgaProvince.Column.Id))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Id, aliasUsgaProvince));
|
||||
bool hasCountryCols = (columns.HasId(SaxGolfUsgaProvince.Column.Country_Name));
|
||||
if (columns.HasId(SaxGolfUsgaProvince.Column.CountryId) || hasCountryCols)
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_CountryId, aliasUsgaProvince));
|
||||
if (columns.HasId(SaxGolfUsgaProvince.Column.ProvinceCode))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_ProvinceCode, aliasUsgaProvince));
|
||||
if (columns.HasId(SaxGolfUsgaProvince.Column.ProvinceName))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_ProvinceName, aliasUsgaProvince));
|
||||
if (columns.HasId(SaxGolfUsgaProvince.Column.CoursesUpdateAt_Date))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_CoursesUpdateAt, aliasUsgaProvince));
|
||||
// Common properties.
|
||||
if (columns.HasId(SaxGolfUsgaProvince.Column.Notes))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Notes, aliasUsgaProvince));
|
||||
if (columns.HasId(SaxGolfUsgaProvince.Column.Flags))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Flags, aliasUsgaProvince));
|
||||
if (columns.HasId(SaxGolfUsgaProvince.Column.Status) || columns.HasId(SaxGolfUsgaProvince.Column.Status_Desc) || columns.HasId(SaxGolfUsgaProvince.Column.Status_Ind))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Status, aliasUsgaProvince));
|
||||
if (columns.HasId(SaxGolfUsgaProvince.Column.CreateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_CreateOn, aliasUsgaProvince));
|
||||
if (columns.HasId(SaxGolfUsgaProvince.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_UpdateOn, aliasUsgaProvince));
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Country.
|
||||
if (hasCountryCols)
|
||||
{
|
||||
DbQueryJoin joinCountry = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinCountry.Table = new StringPair(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaCountry), aliasUsgaProvince_Country);
|
||||
joinCountry.Filters.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_Id, aliasUsgaProvince_Country) + "=" + SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_CountryId, aliasUsgaProvince));
|
||||
query.Joins.Add(joinCountry);
|
||||
List<SaxDbDfn_Reference.ColumnIdx> cols = new List<SaxDbDfn_Reference.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Reference.ColumnIdx.UsgaCountry_CountryName);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Reference.GetColumnNameQual(col, aliasUsgaProvince_Country), prefixUsgaProvince_Country + SaxDbDfn_Reference.GetColumnName(col, false));
|
||||
prm.Alias_Country = aliasUsgaProvince_Country;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Facility count.
|
||||
if (columns.HasId(SaxGolfUsgaProvince.Column.FacilityCount_All))
|
||||
{
|
||||
String aliasFacility = "aPrvFty_Count";
|
||||
DbQuery queryFacility = new DbQuery(CoreDatabase.DbmsType);
|
||||
queryFacility.Tables.Add(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaFacility), aliasFacility);
|
||||
queryFacility.Columns.Add("Count(*)");
|
||||
queryFacility.Filters.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_ProvinceId, aliasFacility) + "=" + SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Id, aliasUsgaProvince));
|
||||
query.Columns.Add("(" + queryFacility.BuildQuery() + ")", colProvince_Facility_Count);
|
||||
}
|
||||
|
||||
// Active Facility count.
|
||||
if (columns.HasId(SaxGolfUsgaProvince.Column.FacilityCount_Active))
|
||||
{
|
||||
String aliasFacility = "aPrvFtyAct_Count";
|
||||
DbQuery queryFacility = new DbQuery(CoreDatabase.DbmsType);
|
||||
queryFacility.Tables.Add(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaFacility), aliasFacility);
|
||||
queryFacility.Columns.Add("Count(*)");
|
||||
queryFacility.Filters.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_ProvinceId, aliasFacility) + "=" + SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Id, aliasUsgaProvince));
|
||||
queryFacility.Filters.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_Status, aliasFacility) + "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'");
|
||||
query.Columns.Add("(" + queryFacility.BuildQuery() + ")", colProvince_Facility_Active_Count);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Course count.
|
||||
if (columns.HasId(SaxGolfUsgaProvince.Column.FacilityCount_All))
|
||||
{
|
||||
String aliasFacility = "aPrvFty_Count_Fty";
|
||||
DbQuery queryFacility = new DbQuery(CoreDatabase.DbmsType);
|
||||
queryFacility.Tables.Add(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaFacility), aliasFacility);
|
||||
queryFacility.Columns.Add("Count(*)");
|
||||
queryFacility.Filters.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_ProvinceId, aliasFacility) + "=" + SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Id, aliasUsgaProvince));
|
||||
// Join to Course.
|
||||
String aliasCourse = "aPrvFty_Count_Crs";
|
||||
DbQueryJoin joinCourse = new DbQueryJoin(DbJoinType.Inner);
|
||||
joinCourse.Table = new StringPair(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaCourse), aliasCourse);
|
||||
joinCourse.Filters.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_FacilityId, aliasCourse) + "=" + SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_Id, aliasFacility));
|
||||
queryFacility.Joins.Add(joinCourse);
|
||||
// Construct sub-query.
|
||||
query.Columns.Add("(" + queryFacility.BuildQuery() + ")", colProvince_Course_Count);
|
||||
}
|
||||
|
||||
// Active Course count.
|
||||
if (columns.HasId(SaxGolfUsgaProvince.Column.FacilityCount_Active))
|
||||
{
|
||||
String aliasFacility = "aPrvFty_Count_Fty";
|
||||
DbQuery queryFacility = new DbQuery(CoreDatabase.DbmsType);
|
||||
queryFacility.Tables.Add(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaFacility), aliasFacility);
|
||||
queryFacility.Columns.Add("Count(*)");
|
||||
queryFacility.Filters.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_ProvinceId, aliasFacility) + "=" + SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Id, aliasUsgaProvince));
|
||||
// Join to Course.
|
||||
String aliasCourse = "aPrvFty_Count_Crs";
|
||||
DbQueryJoin joinCourse = new DbQueryJoin(DbJoinType.Inner);
|
||||
joinCourse.Table = new StringPair(SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaCourse), aliasCourse);
|
||||
joinCourse.Filters.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_FacilityId, aliasCourse) + "=" + SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_Id, aliasFacility));
|
||||
joinCourse.Filters.Add(SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Status, aliasCourse) + "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'");
|
||||
queryFacility.Joins.Add(joinCourse);
|
||||
// Construct sub-query.
|
||||
query.Columns.Add("(" + queryFacility.BuildQuery() + ")", colProvince_Course_Active_Count);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Marker population %.
|
||||
if (columns.HasId(SaxGolfUsgaProvince.Column.MarkerPercent))
|
||||
{
|
||||
// Sub query to count facilities & privinces with markers, and work out the percent with markers.
|
||||
String alias_Facility = "prv";
|
||||
String alias_Course = "crs";
|
||||
String alias_Marker = "fty";
|
||||
String table_Facility = $"{SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaFacility)} {alias_Facility}";
|
||||
String table_Course = $"{SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaCourse)} {alias_Course}";
|
||||
String table_Marker = $"{SaxDbDfn_Reference.GetTableNameQual(SaxDbDfn_Reference.TableIdx.UsgaMarker)} {alias_Marker}";
|
||||
String col_Province_Id = SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaProvince_Id, aliasUsgaProvince);
|
||||
String col_Facility_Id = SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_Id, alias_Facility);
|
||||
String col_Facility_ProvinceId = SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaFacility_ProvinceId, alias_Facility);
|
||||
String col_Course_Id = SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_Id, alias_Course);
|
||||
String col_Course_FacilityId = SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaCourse_FacilityId, alias_Course);
|
||||
String col_Marker_CourseId = SaxDbDfn_Reference.GetColumnNameQual(SaxDbDfn_Reference.ColumnIdx.UsgaMarker_CourseId, alias_Marker);
|
||||
String name_CourseCount = "CourseCount";
|
||||
String name_CoursesWithMarkers = "CoursesWithMarkers";
|
||||
List<String> subQuery = new List<String>();
|
||||
subQuery.Add($"Select Convert (decimal(9,2), Case When {name_CourseCount} > 0 Then 100.0 * (1.0 * {name_CoursesWithMarkers} / {name_CourseCount}) Else 0 End)");
|
||||
subQuery.Add($"From");
|
||||
subQuery.Add($"(");
|
||||
subQuery.Add($"Select");
|
||||
subQuery.Add($"{name_CourseCount} = (select Count(*) From {table_Course} Where {col_Course_FacilityId} In (Select {col_Facility_Id} From {table_Facility} Where {col_Facility_ProvinceId}={col_Province_Id})),");
|
||||
subQuery.Add($"{name_CoursesWithMarkers} = (select Count(*) From {table_Course} Where {col_Course_FacilityId} In (Select {col_Facility_Id} From {table_Facility} Where {col_Facility_ProvinceId}={col_Province_Id}) And {col_Course_Id} in (Select {col_Marker_CourseId} from {table_Marker}))");
|
||||
subQuery.Add($") dat");
|
||||
query.Columns.Add($"({subQuery.Concat(" ")})", colProvince_Markers_Percent);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetUsgaProvinceQueryFilter(prm));
|
||||
|
||||
if (prm.IdsIncluded.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetUsgaProvinceSortColumns(prm))
|
||||
query.OrderBy.Add(sortColumn);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
//return new DbResultSet_DataTableReader(db, query.BuildQuery(prm.ResultsPaging));
|
||||
return DbResultSet_DataReader.ExecuteQuery(ReferenceDatabase, query.BuildQuery(prm.ResultsPaging));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
using Saxonite.Net.Standard.Base.App;
|
||||
using Saxonite.Net.Standard.Base.Mgr.Reference;
|
||||
|
||||
namespace Saxonite.Net.Standard.Dbas.Mgr.Reference
|
||||
{
|
||||
//=======================================================================
|
||||
public partial class SaxReferenceGolfMgr_Dbas : SaxReferenceGolfMgr
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SaxReferenceGolfMgr_Dbas(SaxSessionContext sessionContext, SaxInternals internals) :
|
||||
base(sessionContext, internals)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,739 @@
|
||||
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;
|
||||
using Saxonite.Net.Standard.Dbas.Internal.Core;
|
||||
|
||||
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($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
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 item.
|
||||
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;
|
||||
|
||||
// Organisations are logically deleted by changing the status.
|
||||
organisation.Status = SaStatus.Deleted;
|
||||
return UpdateOrganisation(organisation, dbUpdateInfo);
|
||||
|
||||
/*
|
||||
* Physical deletion.
|
||||
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=" + organisation.Id.ToString());
|
||||
// Delete item.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.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._OrganisationType = OrganisationTypeCodes.GetCodeForType(organisation.OrganisationType);
|
||||
dbOrganisation._OrganisationCategory = OrganisationCategoryCodes.GetCodeForType(organisation.OrganisationCategory);
|
||||
dbOrganisation._SportIdPrimary = SysId.ToInt(organisation.SportIdPrimary);
|
||||
dbOrganisation._RegionIdPrimary = SysId.ToInt(organisation.RegionIdPrimary);
|
||||
dbOrganisation._About = StringUtil.EmptyOnNull(organisation.About);
|
||||
dbOrganisation._Facilities = StringUtil.EmptyOnNull(organisation.Facilities);
|
||||
dbOrganisation._ContactData = StringUtil.EmptyOnNull(organisation.ContactData);
|
||||
dbOrganisation._Notes = StringUtil.EmptyOnNull(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.OrganisationType = (Sax.OrganisationType)OrganisationTypeCodes.GetTypeForCode(dbOrganisation._OrganisationType);
|
||||
organisation.OrganisationCategory = (Sax.OrganisationCategory)OrganisationCategoryCodes.GetTypeForCode(dbOrganisation._OrganisationCategory);
|
||||
organisation.SportIdPrimary = new SysId(dbOrganisation._SportIdPrimary ?? 0);
|
||||
organisation.RegionIdPrimary = new SysId(dbOrganisation._RegionIdPrimary ?? 0);
|
||||
organisation.About = dbOrganisation._About;
|
||||
organisation.Facilities = dbOrganisation._Facilities;
|
||||
organisation.ContactData = dbOrganisation._ContactData;
|
||||
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 aliasOrganisation_Sport = "Org_Spt";
|
||||
private static readonly String prefixOrganisation_Sport = "Org_Spt_";
|
||||
private static readonly String aliasOrganisation_Region = "Org_Rgn";
|
||||
private static readonly String prefixOrganisation_Region = "Org_Rgn_";
|
||||
private static readonly String colOrganisation_User_Count = "Org_Usr_Count";
|
||||
private static readonly String colOrganisation_Member_Count = "Org_Mbr_Count";
|
||||
private static readonly String colOrganisation_LogoImage_Count = "Org_LogoImg_Count";
|
||||
private void SetOrganisationColDfn
|
||||
(ColumnDfn col, String caption, int width, SaxDbDfn_Core.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SaxDbDfn_Core.GetTableForColumn(dbCol) == SaxDbDfn_Core.TableIdx.Organisation)
|
||||
alias = aliasOrganisation;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn_Core.GetColumnName(dbCol, false), SaxDbDfn_Core.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn_Core.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SaxDbDfn_Core.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_Core.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_Core.ColumnIdx.Organisation_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxOrganisation.Column.Name:
|
||||
SetOrganisationColDfn(columnDfn, "Name", 180, SaxDbDfn_Core.ColumnIdx.Organisation_Name);
|
||||
break;
|
||||
case SaxOrganisation.Column.OrganisationType:
|
||||
SetOrganisationColDfn(columnDfn, "Type", 80, SaxDbDfn_Core.ColumnIdx.Organisation_OrganisationType, ColumnAlignment.Center, DataValue.DataType.String);
|
||||
break;
|
||||
case SaxOrganisation.Column.OrganisationType_Desc:
|
||||
SetOrganisationColDfn(columnDfn, "Type", 80, SaxDbDfn_Core.ColumnIdx.Organisation_OrganisationType, ColumnAlignment.Center, DataValue.DataType.String);
|
||||
break;
|
||||
case SaxOrganisation.Column.OrganisationCategory:
|
||||
SetOrganisationColDfn(columnDfn, "Category", 80, SaxDbDfn_Core.ColumnIdx.Organisation_OrganisationCategory, ColumnAlignment.Center, DataValue.DataType.String);
|
||||
break;
|
||||
case SaxOrganisation.Column.OrganisationCategory_Desc:
|
||||
SetOrganisationColDfn(columnDfn, "Category", 80, SaxDbDfn_Core.ColumnIdx.Organisation_OrganisationCategory, ColumnAlignment.Center, DataValue.DataType.String);
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Sport.
|
||||
case SaxOrganisation.Column.SportId:
|
||||
SetOrganisationColDfn(columnDfn, "Sport Id", 80, SaxDbDfn_Core.ColumnIdx.Sport_Id, ColumnAlignment.Right, DataValue.DataType.Long, aliasOrganisation_Sport, prefixOrganisation_Sport);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxOrganisation.Column.Sport_Name:
|
||||
SetOrganisationColDfn(columnDfn, "Sport", 120, SaxDbDfn_Core.ColumnIdx.Organisation_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasOrganisation_Sport, prefixOrganisation_Sport);
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Region.
|
||||
case SaxOrganisation.Column.RegionId:
|
||||
SetOrganisationColDfn(columnDfn, "Region Id", 80, SaxDbDfn_Core.ColumnIdx.Region_Id, ColumnAlignment.Right, DataValue.DataType.Long, aliasOrganisation_Region, prefixOrganisation_Region);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxOrganisation.Column.Region_Name:
|
||||
SetOrganisationColDfn(columnDfn, "Region", 120, SaxDbDfn_Core.ColumnIdx.Organisation_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasOrganisation_Region, prefixOrganisation_Region);
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Derived properties.
|
||||
case SaxOrganisation.Column.User_Count:
|
||||
SetOrganisationColDfn(columnDfn, "Users", 80, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.DataName = colOrganisation_User_Count;
|
||||
break;
|
||||
case SaxOrganisation.Column.Member_Count:
|
||||
SetOrganisationColDfn(columnDfn, "Members", 80, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.DataName = colOrganisation_Member_Count;
|
||||
break;
|
||||
case SaxOrganisation.Column.LogoImage_Count:
|
||||
SetOrganisationColDfn(columnDfn, "Logos", 80, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.DataName = colOrganisation_LogoImage_Count;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Common properties.
|
||||
case SaxOrganisation.Column.Notes:
|
||||
SetOrganisationColDfn(columnDfn, "Notes", 240, SaxDbDfn_Core.ColumnIdx.Organisation_Notes);
|
||||
break;
|
||||
case SaxOrganisation.Column.Flags:
|
||||
SetOrganisationColDfn(columnDfn, "Flags", 60, SaxDbDfn_Core.ColumnIdx.Organisation_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxOrganisation.Column.Status:
|
||||
SetOrganisationColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.Organisation_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxOrganisation.Column.Status_Desc:
|
||||
SetOrganisationColDfn(columnDfn, "Status", 90, SaxDbDfn_Core.ColumnIdx.Organisation_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxOrganisation.Column.Status_Ind:
|
||||
SetOrganisationColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.Organisation_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SaxOrganisation.Column.CreateOn_Date:
|
||||
SetOrganisationColDfn(columnDfn, "Created", 80, SaxDbDfn_Core.ColumnIdx.Organisation_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxOrganisation.Column.UpdateOn_Date:
|
||||
SetOrganisationColDfn(columnDfn, "Updated", 80, SaxDbDfn_Core.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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_Id, aliasOrganisation) + " IN (" + idsIncluded + ")");
|
||||
String idsExcluded = prm.IdsExcluded.Concat(",");
|
||||
if (!idsExcluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_Id, aliasOrganisation) + " NOT IN (" + idsExcluded + ")");
|
||||
|
||||
// Name.
|
||||
if (!StringUtil.IsEmpty(prm.NameFull))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_Name, aliasOrganisation) + "='" + DbQuery.FormatForCondition(prm.NameFull) + "'");
|
||||
if (!StringUtil.IsEmpty(prm.NamePartial))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_Name, aliasOrganisation) + " Like '%" + DbQuery.FormatForLike(prm.NamePartial, true) + "%'");
|
||||
|
||||
// Organisation Type.
|
||||
if (prm.OrganisationType > 0)
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_OrganisationType, aliasOrganisation) + "='" + OrganisationTypeCodes.GetCodeForType(prm.OrganisationType) + "'");
|
||||
|
||||
// Organisation Category.
|
||||
if (prm.OrganisationCategory > 0)
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_OrganisationCategory, aliasOrganisation) + "='" + OrganisationCategoryCodes.GetCodeForType(prm.OrganisationCategory) + "'");
|
||||
if (!prm.OrganisationCategoriesExcluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_OrganisationCategory, aliasOrganisation) + " Not In (" + prm.OrganisationCategoriesExcluded.Select(cat => "'" + OrganisationCategoryCodes.GetCodeForType(cat) + "'").Concat(",") + ")");
|
||||
|
||||
// Organisation filter.
|
||||
if (!StringUtil.IsEmpty(prm.OrganisationFilter))
|
||||
{
|
||||
// Split filter into words.
|
||||
List<String> searchFilter = new List<String>();
|
||||
List<String> filterWords = prm.OrganisationFilter.Split((char[])null, StringSplitOptions.RemoveEmptyEntries).ToList();
|
||||
filterWords.RemoveDuplicatesCI();
|
||||
filterWords.RemoveBlanks();
|
||||
foreach (String filterWord in filterWords)
|
||||
{
|
||||
List<String> organisationFilter = new List<String>();
|
||||
organisationFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_Name, aliasOrganisation) + " Like '%" + DbQuery.FormatForLike(filterWord, true) + "%'");
|
||||
searchFilter.Add(organisationFilter.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
filter.Add(searchFilter.Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
// Sport Ids.
|
||||
String sportIdsIncluded = prm.SportIdsIncluded.Concat(",");
|
||||
if (!sportIdsIncluded.IsEmpty())
|
||||
{
|
||||
// Sport can be matched directly or as the parent of the sport.
|
||||
List<String> sportFilter = new List<string>();
|
||||
String aliasSport = prm.Alias_Sport_Primary;
|
||||
if (StringUtil.IsEmpty(aliasSport))
|
||||
{
|
||||
// Sport table is not linked in query.
|
||||
aliasSport = "aSpt";
|
||||
DbQuery sportQuery = new DbQuery(CoreDatabase.DbmsType);
|
||||
sportQuery.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Sport), aliasSport);
|
||||
sportQuery.Columns.Add("1");
|
||||
sportQuery.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_SportIdParent, aliasSport) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_SportIdPrimary, aliasOrganisation));
|
||||
sportQuery.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_SportIdParent, aliasSport) + " IN (" + sportIdsIncluded + ")");
|
||||
sportFilter.Add("Exists(" + sportQuery.BuildQuery() + ")");
|
||||
}
|
||||
else
|
||||
{
|
||||
// Sport table is linked in the main query.
|
||||
sportFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_SportIdParent, aliasSport) + " IN (" + sportIdsIncluded + ")");
|
||||
}
|
||||
sportFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_SportIdPrimary, aliasOrganisation) + " IN (" + sportIdsIncluded + ")");
|
||||
filter.Add(sportFilter.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
|
||||
// Region Ids.
|
||||
String regionIdsIncluded = prm.RegionIdsIncluded.Concat(",");
|
||||
if (!regionIdsIncluded.IsEmpty())
|
||||
{
|
||||
// Region can be matched directly or as the parent of the region.
|
||||
List<String> regionFilter = new List<string>();
|
||||
String aliasRegion = prm.Alias_Region_Primary;
|
||||
if (StringUtil.IsEmpty(aliasRegion))
|
||||
{
|
||||
// Region table is not linked in query.
|
||||
aliasRegion = "aRgn";
|
||||
DbQuery regionQuery = new DbQuery(CoreDatabase.DbmsType);
|
||||
regionQuery.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Region), aliasRegion);
|
||||
regionQuery.Columns.Add("1");
|
||||
regionQuery.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_RegionIdParent, aliasRegion) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_RegionIdPrimary, aliasOrganisation));
|
||||
regionQuery.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_RegionIdParent, aliasRegion) + " IN (" + regionIdsIncluded + ")");
|
||||
regionFilter.Add("Exists(" + regionQuery.BuildQuery() + ")");
|
||||
}
|
||||
else
|
||||
{
|
||||
// Region table is linked in the main query.
|
||||
regionFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_RegionIdParent, aliasRegion) + " IN (" + regionIdsIncluded + ")");
|
||||
}
|
||||
regionFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_RegionIdPrimary, aliasOrganisation) + " IN (" + regionIdsIncluded + ")");
|
||||
filter.Add(regionFilter.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
|
||||
// Notes.
|
||||
if (!StringUtil.IsEmpty(prm.NotesPartial))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_Notes, aliasOrganisation) + " LIKE '%" + DbQuery.FormatForLike(prm.NotesPartial) + "%'");
|
||||
|
||||
// Status.
|
||||
if (prm.StatusCat != SaxOrganisation.StatusCat.Any)
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_Status, aliasOrganisation) + GetOrganisationStatusCatFilterCondition(prm.StatusCat));
|
||||
|
||||
if (filter.Count < 1) filter.Add("1=1");
|
||||
return filter;
|
||||
}
|
||||
internal static String GetOrganisationStatusCatFilterCondition(SaxOrganisation.StatusCat statusCat)
|
||||
{
|
||||
if (statusCat == SaxOrganisation.StatusCat.AwaitingOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Awaiting) + "'";
|
||||
if (statusCat == SaxOrganisation.StatusCat.ActiveOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'";
|
||||
if (statusCat == SaxOrganisation.StatusCat.InactiveOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Inactive) + "'";
|
||||
if (statusCat == SaxOrganisation.StatusCat.NotDeleted)
|
||||
return "!='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
if (statusCat == SaxOrganisation.StatusCat.DeletedOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
return "";
|
||||
}
|
||||
// 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_Core.GetTableForColumn((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn_Core.TableIdx.Organisation)
|
||||
{
|
||||
sortCol = SaxDbDfn_Core.GetColumnNameQual((SaxDbDfn_Core.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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_Id, aliasOrganisation) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item count.
|
||||
private long GetOrganisationCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return CoreDatabase.GetRowCount(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.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)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<SaxOrganisation> userAccounts = new List<SaxOrganisation>();
|
||||
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.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)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
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_Core.GetTableName(SaxDbDfn_Core.TableIdx.Organisation), aliasOrganisation);
|
||||
|
||||
// Add columns as defined in query list.
|
||||
if (columns.HasId(SaxOrganisation.Column.Id))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_Id, aliasOrganisation));
|
||||
if (columns.HasId(SaxOrganisation.Column.Name))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_Name, aliasOrganisation));
|
||||
if (columns.HasId(SaxOrganisation.Column.OrganisationType) || columns.HasId(SaxOrganisation.Column.OrganisationType_Desc))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_OrganisationType, aliasOrganisation));
|
||||
if (columns.HasId(SaxOrganisation.Column.OrganisationCategory) || columns.HasId(SaxOrganisation.Column.OrganisationCategory_Desc))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_OrganisationCategory, aliasOrganisation));
|
||||
// Sport.
|
||||
bool hasSportCols = columns.HasId(SaxOrganisation.Column.Sport_Name);
|
||||
if (columns.HasId(SaxOrganisation.Column.SportId) || hasSportCols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_SportIdPrimary, aliasOrganisation));
|
||||
// Region.
|
||||
bool hasRegionCols = columns.HasId(SaxOrganisation.Column.Region_Name);
|
||||
if (columns.HasId(SaxOrganisation.Column.RegionId) || hasRegionCols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_RegionIdPrimary, aliasOrganisation));
|
||||
// Common properties.
|
||||
if (columns.HasId(SaxOrganisation.Column.Notes))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_Notes, aliasOrganisation));
|
||||
if (columns.HasId(SaxOrganisation.Column.Flags))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_Status, aliasOrganisation));
|
||||
if (columns.HasId(SaxOrganisation.Column.CreateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_CreateOn, aliasOrganisation));
|
||||
if (columns.HasId(SaxOrganisation.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_UpdateOn, aliasOrganisation));
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Sport.
|
||||
if (hasSportCols || prm.SportIdsIncluded.HasValidIds())
|
||||
{
|
||||
prm.Alias_Sport_Primary = aliasOrganisation_Sport;
|
||||
DbQueryJoin joinSport = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinSport.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Sport), aliasOrganisation_Sport);
|
||||
joinSport.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_Id, aliasOrganisation_Sport) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_SportIdPrimary, aliasOrganisation));
|
||||
query.Joins.Add(joinSport);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.Sport_Name);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasOrganisation_Sport), prefixOrganisation_Sport + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Region.
|
||||
if (hasRegionCols || prm.RegionIdsIncluded.HasValidIds())
|
||||
{
|
||||
prm.Alias_Region_Primary = aliasOrganisation_Region;
|
||||
DbQueryJoin joinRegion = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinRegion.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Region), aliasOrganisation_Region);
|
||||
joinRegion.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_Id, aliasOrganisation_Region) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_RegionIdPrimary, aliasOrganisation));
|
||||
query.Joins.Add(joinRegion);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.Region_Name);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasOrganisation_Region), prefixOrganisation_Region + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// User count.
|
||||
if (columns.HasId(SaxOrganisation.Column.User_Count))
|
||||
{
|
||||
String aliasUserCount = "aUsrOrg_Count";
|
||||
DbQuery queryUserCount = new DbQuery(CoreDatabase.DbmsType);
|
||||
queryUserCount.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserOrganisation), aliasUserCount);
|
||||
queryUserCount.Columns.Add("Count(*)");
|
||||
queryUserCount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_OrganisationId, aliasUserCount) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_Id, aliasOrganisation));
|
||||
queryUserCount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_Status, aliasUserCount) + "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'");
|
||||
// Join to User Account.
|
||||
String aliasUserAccount = "aUsrOrg_UsrAcc";
|
||||
DbQueryJoin joinUserAccount = new DbQueryJoin(DbJoinType.Inner);
|
||||
joinUserAccount.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserAccount), aliasUserAccount);
|
||||
joinUserAccount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserAccount) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_UserAccountId, aliasUserCount));
|
||||
joinUserAccount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Status, aliasUserAccount) + "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'");
|
||||
queryUserCount.Joins.Add(joinUserAccount);
|
||||
// Construct sub-query.
|
||||
query.Columns.Add("(" + queryUserCount.BuildQuery() + ")", colOrganisation_User_Count);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Member count.
|
||||
if (columns.HasId(SaxOrganisation.Column.Member_Count))
|
||||
{
|
||||
String aliasMemberCount = "aUsrOrg_Count";
|
||||
DbQuery queryMemberCount = new DbQuery(CoreDatabase.DbmsType);
|
||||
queryMemberCount.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserOrganisation), aliasMemberCount);
|
||||
queryMemberCount.Columns.Add("Count(*)");
|
||||
queryMemberCount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_OrganisationId, aliasMemberCount) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_Id, aliasOrganisation));
|
||||
queryMemberCount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_OrganisationRoleCount, aliasMemberCount) + ">0");
|
||||
queryMemberCount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_Status, aliasMemberCount) + "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'");
|
||||
// Join to User Account.
|
||||
String aliasUserAccount = "aUsrOrg_UsrAcc";
|
||||
DbQueryJoin joinUserAccount = new DbQueryJoin(DbJoinType.Inner);
|
||||
joinUserAccount.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserAccount), aliasUserAccount);
|
||||
joinUserAccount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserAccount) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_UserAccountId, aliasMemberCount));
|
||||
joinUserAccount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Status, aliasUserAccount) + "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'");
|
||||
queryMemberCount.Joins.Add(joinUserAccount);
|
||||
// Construct sub-query.
|
||||
query.Columns.Add("(" + queryMemberCount.BuildQuery() + ")", colOrganisation_Member_Count);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Logo Image count.
|
||||
if (columns.HasId(SaxOrganisation.Column.LogoImage_Count))
|
||||
{
|
||||
String aliasLogoCount = "aImg_Logo";
|
||||
DbQuery queryLogoCount = new DbQuery(CoreDatabase.DbmsType);
|
||||
queryLogoCount.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ItemImage), aliasLogoCount);
|
||||
queryLogoCount.Columns.Add("Count(*)");
|
||||
queryLogoCount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_ItemType, aliasLogoCount) + "=" + (int)Sax.DataItemType.Organisation);
|
||||
queryLogoCount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_ItemId, aliasLogoCount) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_Id, aliasOrganisation));
|
||||
queryLogoCount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_ImageType, aliasLogoCount) + "=" + (int)Sax.ImageType.OrganisationLogo);
|
||||
queryLogoCount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_Status, aliasLogoCount) + "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'");
|
||||
// Construct sub-query.
|
||||
query.Columns.Add("(" + queryLogoCount.BuildQuery() + ")", colOrganisation_LogoImage_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,909 @@
|
||||
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;
|
||||
using Saxonite.Net.Standard.Dbas.Internal.Core;
|
||||
|
||||
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($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
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 item.
|
||||
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;
|
||||
|
||||
// User Accounts are logically deleted by changing the status.
|
||||
userAccount.Status = SaStatus.Deleted;
|
||||
return UpdateUserAccount(userAccount, dbUpdateInfo);
|
||||
|
||||
/*
|
||||
* Physical deletion.
|
||||
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=" + userAccount.Id.ToString());
|
||||
// Delete item.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.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._About = userAccount.About;
|
||||
dbUserAccount._PhoneMain = StringUtil.EmptyOnNull(userAccount.PhoneMain);
|
||||
dbUserAccount._PhoneMobile = StringUtil.EmptyOnNull(userAccount.PhoneMobile);
|
||||
dbUserAccount._Gender = (byte)userAccount.Gender;
|
||||
dbUserAccount._DateOfBirthDay = userAccount.DateOfBirthDay;
|
||||
dbUserAccount._DateOfBirthMonth = userAccount.DateOfBirthMonth;
|
||||
dbUserAccount._DateOfBirthYear = userAccount.DateOfBirthYear;
|
||||
dbUserAccount._RegionIdCountry = SysId.ToInt(userAccount.RegionIdCountry);
|
||||
dbUserAccount._RegionIdProvince = SysId.ToInt(userAccount.RegionIdProvince);
|
||||
// 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.About = dbUserAccount._About;
|
||||
userAccount.PhoneMain = dbUserAccount._PhoneMain;
|
||||
userAccount.PhoneMobile = dbUserAccount._PhoneMobile;
|
||||
userAccount.Gender = (Sax.Gender)dbUserAccount._Gender;
|
||||
userAccount.DateOfBirthDay = dbUserAccount._DateOfBirthDay;
|
||||
userAccount.DateOfBirthMonth = dbUserAccount._DateOfBirthMonth;
|
||||
userAccount.DateOfBirthYear = dbUserAccount._DateOfBirthYear ?? 0;
|
||||
userAccount.RegionIdCountry = new SysId(dbUserAccount._RegionIdCountry ?? 0);
|
||||
userAccount.RegionIdProvince = new SysId(dbUserAccount._RegionIdProvince ?? 0);
|
||||
// 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 aliasUserAccount_Region_Country = "UsrAct_Ctr";
|
||||
private static readonly String prefixUserAccount_Region_Country = aliasUserAccount_Region_Country + "_";
|
||||
private static readonly String aliasUserAccount_Region_Province = "UsrAct_Prv";
|
||||
private static readonly String prefixUserAccount_Region_Province = aliasUserAccount_Region_Province + "_";
|
||||
private static readonly String aliasUserAccount_UserRole_SysAdmin = "UsrAct_UsrRol_SysAdm";
|
||||
private static readonly String prefixUserAccount_UserRole_SysAdmin = aliasUserAccount_UserRole_SysAdmin + "_";
|
||||
private static readonly String aliasUserAccount_UserSport = "UsrAct_UsrSpt";
|
||||
//private static readonly String prefixUserAccount_UserSport = aliasUserAccount_UserSport + "_";
|
||||
private static readonly String aliasUserAccount_UserRole = "UsrAct_UsrRol";
|
||||
//private static readonly String prefixUserAccount_UserRole = aliasUserAccount_UserRole + "_";
|
||||
private static readonly String colUserAccount_UserSportCount = "UsrAct_SportCount";
|
||||
private static readonly String colUserAccount_UserSportCount_Active = "UsrAct_SportCount_Act";
|
||||
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_Core.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SaxDbDfn_Core.GetTableForColumn(dbCol) == SaxDbDfn_Core.TableIdx.UserAccount)
|
||||
alias = aliasUserAccount;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn_Core.GetColumnName(dbCol, false), SaxDbDfn_Core.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn_Core.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SaxDbDfn_Core.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_Core.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_Core.ColumnIdx.UserAccount_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserAccount.Column.EmailAddress:
|
||||
SetUserAccountColDfn(columnDfn, "Email", 120, SaxDbDfn_Core.ColumnIdx.UserAccount_EmailAddress);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserAccount.Column.Title:
|
||||
SetUserAccountColDfn(columnDfn, "Title", 80, SaxDbDfn_Core.ColumnIdx.UserAccount_Title);
|
||||
break;
|
||||
case SaxUserAccount.Column.FirstName:
|
||||
SetUserAccountColDfn(columnDfn, "FirstName", 100, SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName);
|
||||
break;
|
||||
case SaxUserAccount.Column.Initials:
|
||||
SetUserAccountColDfn(columnDfn, "Initials", 60, SaxDbDfn_Core.ColumnIdx.UserAccount_Initials);
|
||||
break;
|
||||
case SaxUserAccount.Column.LastName:
|
||||
SetUserAccountColDfn(columnDfn, "LastName", 100, SaxDbDfn_Core.ColumnIdx.UserAccount_LastName);
|
||||
break;
|
||||
case SaxUserAccount.Column.PhoneMain:
|
||||
SetUserAccountColDfn(columnDfn, "PhoneMain", 100, SaxDbDfn_Core.ColumnIdx.UserAccount_PhoneMain);
|
||||
break;
|
||||
case SaxUserAccount.Column.PhoneMobile:
|
||||
SetUserAccountColDfn(columnDfn, "PhoneMobile", 100, SaxDbDfn_Core.ColumnIdx.UserAccount_PhoneMobile);
|
||||
break;
|
||||
case SaxUserAccount.Column.DateOfBirthDay:
|
||||
SetUserAccountColDfn(columnDfn, "DOB day", 80, SaxDbDfn_Core.ColumnIdx.UserAccount_DateOfBirthDay, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
break;
|
||||
case SaxUserAccount.Column.DateOfBirthMonth:
|
||||
SetUserAccountColDfn(columnDfn, "DOB month", 80, SaxDbDfn_Core.ColumnIdx.UserAccount_DateOfBirthMonth, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
break;
|
||||
case SaxUserAccount.Column.DateOfBirthYear:
|
||||
SetUserAccountColDfn(columnDfn, "DOB year", 80, SaxDbDfn_Core.ColumnIdx.UserAccount_DateOfBirthYear, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
break;
|
||||
case SaxUserAccount.Column.DateOfBirth:
|
||||
SetUserAccountColDfn(columnDfn, "DOB", 80, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
break;
|
||||
|
||||
//-------------------------------------------------------
|
||||
// Regions.
|
||||
case SaxUserAccount.Column.RegionIdCountry:
|
||||
SetUserAccountColDfn(columnDfn, "Country #", 80, SaxDbDfn_Core.ColumnIdx.UserAccount_RegionIdCountry, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxUserAccount.Column.RegionCountry_Name:
|
||||
SetUserAccountColDfn(columnDfn, "Country", 120, SaxDbDfn_Core.ColumnIdx.Region_Name, ColumnAlignment.Center, DataValue.DataType.String, aliasUserAccount_Region_Country, prefixUserAccount_Region_Country);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserAccount.Column.RegionIdProvince:
|
||||
SetUserAccountColDfn(columnDfn, "Province #", 80, SaxDbDfn_Core.ColumnIdx.UserAccount_RegionIdProvince, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxUserAccount.Column.RegionProvince_Name:
|
||||
SetUserAccountColDfn(columnDfn, "Province", 120, SaxDbDfn_Core.ColumnIdx.Region_Name, ColumnAlignment.Center, DataValue.DataType.String, aliasUserAccount_Region_Province, prefixUserAccount_Region_Province);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-------------------------------------------------------
|
||||
// Security.
|
||||
case SaxUserAccount.Column.LastLoginOn:
|
||||
SetUserAccountColDfn(columnDfn, "Last login", 100, SaxDbDfn_Core.ColumnIdx.UserAccount_LastLoginAt, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserAccount.Column.LastLoginAt:
|
||||
SetUserAccountColDfn(columnDfn, "Last login", 120, SaxDbDfn_Core.ColumnIdx.UserAccount_LastLoginAt, ColumnAlignment.Center, DataValue.DataType.DateTime);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserAccount.Column.LastInvalidLoginOn:
|
||||
SetUserAccountColDfn(columnDfn, "Last invalid login", 100, SaxDbDfn_Core.ColumnIdx.UserAccount_LastInvalidLoginAt, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserAccount.Column.LastInvalidLoginAt:
|
||||
SetUserAccountColDfn(columnDfn, "Last invalid login", 100, SaxDbDfn_Core.ColumnIdx.UserAccount_LastInvalidLoginAt, ColumnAlignment.Center, DataValue.DataType.DateTime);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserAccount.Column.InvalidLoginCount:
|
||||
SetUserAccountColDfn(columnDfn, "Invalid logins", 80, SaxDbDfn_Core.ColumnIdx.UserAccount_InvalidLoginCount, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Derived properties.
|
||||
// User Sports.
|
||||
case SaxUserAccount.Column.UserSportCount:
|
||||
SetUserAccountColDfn(columnDfn, "Sports", 80, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.DataName = colUserAccount_UserSportCount;
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserAccount.Column.UserSportCount_Active:
|
||||
SetUserAccountColDfn(columnDfn, "Sports (active)", 80, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.DataName = colUserAccount_UserSportCount_Active;
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
// User roles.
|
||||
case SaxUserAccount.Column.UserRoleCount:
|
||||
SetUserAccountColDfn(columnDfn, "Roles", 80, SaxDbDfn_Core.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_Core.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Bool);
|
||||
columnDfn.DataName = colUserAccount_SystemAdminRole;
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserAccount.Column.LastAdminLoginOn:
|
||||
SetUserAccountColDfn(columnDfn, "Last Admin login", 100, SaxDbDfn_Core.ColumnIdx.UserRole_LastLoginAt, ColumnAlignment.Center, DataValue.DataType.Date, aliasUserAccount_UserRole_SysAdmin, prefixUserAccount_UserRole_SysAdmin);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserAccount.Column.LastAdminLoginAt:
|
||||
SetUserAccountColDfn(columnDfn, "Last Admin login", 120, SaxDbDfn_Core.ColumnIdx.UserRole_LastLoginAt, ColumnAlignment.Center, DataValue.DataType.DateTime, aliasUserAccount_UserRole_SysAdmin, prefixUserAccount_UserRole_SysAdmin);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserAccount.Column.LastInvalidAdminLoginOn:
|
||||
SetUserAccountColDfn(columnDfn, "Last invalid Admin login", 100, SaxDbDfn_Core.ColumnIdx.UserRole_LastInvalidLoginAt, ColumnAlignment.Center, DataValue.DataType.Date, aliasUserAccount_UserRole_SysAdmin, prefixUserAccount_UserRole_SysAdmin);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserAccount.Column.LastInvalidAdminLoginAt:
|
||||
SetUserAccountColDfn(columnDfn, "Last invalid Admin login", 100, SaxDbDfn_Core.ColumnIdx.UserRole_LastInvalidLoginAt, ColumnAlignment.Center, DataValue.DataType.DateTime, aliasUserAccount_UserRole_SysAdmin, prefixUserAccount_UserRole_SysAdmin);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserAccount.Column.InvalidAdminLoginCount:
|
||||
SetUserAccountColDfn(columnDfn, "Invalid Admin logins", 80, SaxDbDfn_Core.ColumnIdx.UserRole_InvalidLoginCount, ColumnAlignment.Center, DataValue.DataType.Long, aliasUserAccount_UserRole_SysAdmin, prefixUserAccount_UserRole_SysAdmin);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Common properties.
|
||||
case SaxUserAccount.Column.Notes:
|
||||
SetUserAccountColDfn(columnDfn, "Notes", 240, SaxDbDfn_Core.ColumnIdx.UserAccount_Notes);
|
||||
break;
|
||||
case SaxUserAccount.Column.Flags:
|
||||
SetUserAccountColDfn(columnDfn, "Flags", 60, SaxDbDfn_Core.ColumnIdx.UserAccount_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxUserAccount.Column.Status:
|
||||
SetUserAccountColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.UserAccount_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxUserAccount.Column.Status_Desc:
|
||||
SetUserAccountColDfn(columnDfn, "Status", 90, SaxDbDfn_Core.ColumnIdx.UserAccount_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxUserAccount.Column.Status_Ind:
|
||||
SetUserAccountColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.UserAccount_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SaxUserAccount.Column.CreateOn_Date:
|
||||
SetUserAccountColDfn(columnDfn, "Created", 80, SaxDbDfn_Core.ColumnIdx.UserAccount_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserAccount.Column.UpdateOn_Date:
|
||||
SetUserAccountColDfn(columnDfn, "Updated", 80, SaxDbDfn_Core.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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserAccount) + " IN (" + includedIds + ")");
|
||||
String excludedIds = prm.IdsExcluded.Concat(",");
|
||||
if (!excludedIds.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserAccount) + " NOT IN (" + excludedIds + ")");
|
||||
|
||||
// Email address.
|
||||
if (!StringUtil.IsEmpty(prm.EmailAddress))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_EmailAddress, aliasUserAccount) + " = '" + DbQuery.FormatForCondition(prm.EmailAddress) + "'");
|
||||
|
||||
// Name.
|
||||
if (!StringUtil.IsEmpty(prm.NamePartial))
|
||||
{
|
||||
// Split filter into words.
|
||||
List<String> filterWords = prm.NamePartial.Split((char[])null, StringSplitOptions.RemoveEmptyEntries).ToList();
|
||||
filterWords.RemoveDuplicatesCI();
|
||||
filterWords.RemoveBlanks();
|
||||
foreach (String filterWord in filterWords)
|
||||
{
|
||||
List<String> userFilter = new List<string>();
|
||||
userFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Title, aliasUserAccount) + "Like'%" + DbQuery.FormatForLike(filterWord) + "%'");
|
||||
userFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName, aliasUserAccount) + "Like'%" + DbQuery.FormatForLike(filterWord) + "%'");
|
||||
userFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_LastName, aliasUserAccount) + "Like'%" + DbQuery.FormatForLike(filterWord) + "%'");
|
||||
filter.Add(userFilter.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
}
|
||||
|
||||
// Sport Ids.
|
||||
String sportIdsIncluded = prm.SportIdsIncluded.Concat(",");
|
||||
if (!sportIdsIncluded.IsEmpty())
|
||||
{
|
||||
if (prm.Alias_UserSport.IsEmpty())
|
||||
{
|
||||
// User Sport table is not linked in query.
|
||||
DbQuery userSportQuery = new DbQuery(CoreDatabase.DbmsType);
|
||||
userSportQuery.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserSport), aliasUserAccount_UserSport);
|
||||
userSportQuery.Columns.Add("1");
|
||||
userSportQuery.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_UserAccountId, aliasUserAccount_UserSport) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserAccount));
|
||||
userSportQuery.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_SportId, aliasUserAccount_UserSport) + " IN (" + sportIdsIncluded + ")");
|
||||
filter.Add("Exists(" + userSportQuery.BuildQuery() + ")");
|
||||
}
|
||||
else
|
||||
// User Sport table is already linked in the query.
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_SportId, prm.Alias_UserSport) + " IN (" + sportIdsIncluded + ")");
|
||||
}
|
||||
|
||||
// Region Ids.
|
||||
String regionIdsIncluded = prm.RegionIdsIncluded.Concat(",");
|
||||
if (!regionIdsIncluded.IsEmpty())
|
||||
{
|
||||
List<String> regionFilter = new List<string>();
|
||||
regionFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_RegionIdCountry, aliasUserAccount) + " IN (" + regionIdsIncluded + ")");
|
||||
regionFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_RegionIdProvince, aliasUserAccount) + " IN (" + regionIdsIncluded + ")");
|
||||
filter.Add(regionFilter.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
|
||||
// User filter.
|
||||
if (!StringUtil.IsEmpty(prm.UserFilter))
|
||||
filter.AddRange(GetUserAccountFilters(prm.UserFilter, aliasUserAccount));
|
||||
|
||||
// User filter - partial.
|
||||
if (!StringUtil.IsEmpty(prm.UserFilterPartial))
|
||||
filter.AddRange(GetPartialUserAccountFilters(prm.UserFilterPartial, aliasUserAccount));
|
||||
|
||||
// Active roles.
|
||||
List<String> roleCodes = new List<string>();
|
||||
foreach (Sax.UserRole userRole in prm.ActiveRoles)
|
||||
roleCodes.Add(UserRoleCodes.GetCodeForType(userRole));
|
||||
if (roleCodes.Exists(item => !item.Trim().IsEmpty()))
|
||||
{
|
||||
if (prm.Alias_UserRole.IsEmpty())
|
||||
{
|
||||
// User Role table is not linked in the query.
|
||||
DbQuery roleQuery = new DbQuery(CoreDatabase.DbmsType);
|
||||
roleQuery.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserRole), aliasUserAccount_UserRole);
|
||||
roleQuery.Columns.Add("1");
|
||||
roleQuery.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_UserAccountId, aliasUserAccount_UserRole) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserAccount));
|
||||
roleQuery.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_UserRoleCode, aliasUserAccount_UserRole) + " IN (" + DbQuery.FormatForIn(roleCodes) + ")");
|
||||
filter.Add("Exists(" + roleQuery.BuildQuery() + ")");
|
||||
}
|
||||
else
|
||||
{
|
||||
// User Role table is already linked in the query.
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_UserAccountId, prm.Alias_UserRole) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserAccount));
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_UserRoleCode, prm.Alias_UserRole) + " IN (" + DbQuery.FormatForIn(roleCodes) + ")");
|
||||
}
|
||||
}
|
||||
|
||||
// Notes.
|
||||
if (!StringUtil.IsEmpty(prm.NotesPartial))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Notes, aliasUserAccount) + " LIKE '%" + DbQuery.FormatForLike(prm.NotesPartial) + "%'");
|
||||
|
||||
// Status.
|
||||
if (prm.StatusCat != SaxUserAccount.StatusCat.Any)
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Status, aliasUserAccount) + GetUserAccountStatusCatFilterCondition(prm.StatusCat));
|
||||
|
||||
if (filter.Count < 1) filter.Add("1=1");
|
||||
return filter;
|
||||
}
|
||||
internal static List<String> GetUserAccountFilters(String userFilter, String aliasUserAccount)
|
||||
{
|
||||
List<String> filter = new List<string>();
|
||||
if (!StringUtil.IsEmpty(userFilter))
|
||||
{
|
||||
// Split filter into words.
|
||||
List<String> filterWords = userFilter.Split((char[])null, StringSplitOptions.RemoveEmptyEntries).ToList();
|
||||
filterWords.RemoveDuplicatesCI();
|
||||
filterWords.RemoveBlanks();
|
||||
foreach (String filterWord in filterWords)
|
||||
{
|
||||
List<String> userAccountFilter = new List<string>();
|
||||
// Exact match for each word to avoid Online user search allowing partial lookup.
|
||||
userAccountFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_EmailAddress, aliasUserAccount) + "='" + DbQuery.FormatForCondition(filterWord) + "'");
|
||||
userAccountFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Title, aliasUserAccount) + "='" + DbQuery.FormatForCondition(filterWord) + "'");
|
||||
userAccountFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName, aliasUserAccount) + "='" + DbQuery.FormatForCondition(filterWord) + "'");
|
||||
userAccountFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_LastName, aliasUserAccount) + "='" + DbQuery.FormatForCondition(filterWord) + "'");
|
||||
filter.Add(userAccountFilter.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
}
|
||||
return filter;
|
||||
}
|
||||
internal static List<String> GetPartialUserAccountFilters(String userFilterPartial, String aliasUserAccount)
|
||||
{
|
||||
List<String> filter = new List<string>();
|
||||
if (!StringUtil.IsEmpty(userFilterPartial))
|
||||
{
|
||||
// Split filter into words.
|
||||
List<String> filterWords = userFilterPartial.Split((char[])null, StringSplitOptions.RemoveEmptyEntries).ToList();
|
||||
filterWords.RemoveDuplicatesCI();
|
||||
filterWords.RemoveBlanks();
|
||||
foreach (String filterWord in filterWords)
|
||||
{
|
||||
List<String> userAccountFilter = new List<string>();
|
||||
userAccountFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_EmailAddress, aliasUserAccount) + " Like '%" + DbQuery.FormatForLike(filterWord) + "%'");
|
||||
userAccountFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Title, aliasUserAccount) + " Like '%" + DbQuery.FormatForLike(filterWord) + "%'");
|
||||
userAccountFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName, aliasUserAccount) + " Like '%" + DbQuery.FormatForLike(filterWord) + "%'");
|
||||
userAccountFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_LastName, aliasUserAccount) + " Like '%" + DbQuery.FormatForLike(filterWord) + "%'");
|
||||
filter.Add(userAccountFilter.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
}
|
||||
return filter;
|
||||
}
|
||||
internal static String GetUserAccountStatusCatFilterCondition(SaxUserAccount.StatusCat statusCat)
|
||||
{
|
||||
if (statusCat == SaxUserAccount.StatusCat.AwaitingOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Awaiting) + "'";
|
||||
if (statusCat == SaxUserAccount.StatusCat.ActiveOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'";
|
||||
if (statusCat == SaxUserAccount.StatusCat.AwaitingOrActive)
|
||||
return " In ('" + SacsSystem.GetStatusCode(SaStatus.Awaiting) + "','" + SacsSystem.GetStatusCode(SaStatus.Active) + "')";
|
||||
if (statusCat == SaxUserAccount.StatusCat.InactiveOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Inactive) + "'";
|
||||
if (statusCat == SaxUserAccount.StatusCat.NotDeleted)
|
||||
return "!='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
if (statusCat == SaxUserAccount.StatusCat.DeletedOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
return "";
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// 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_Core.GetTableForColumn((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn_Core.TableIdx.UserAccount)
|
||||
{
|
||||
sortCol = SaxDbDfn_Core.GetColumnNameQual((SaxDbDfn_Core.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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserAccount) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item count.
|
||||
private long GetUserAccountCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return CoreDatabase.GetRowCount(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.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)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<SaxUserAccount> userAccounts = new List<SaxUserAccount>();
|
||||
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.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)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
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_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserAccount), aliasUserAccount);
|
||||
|
||||
// Add columns as defined in query list.
|
||||
if (columns.HasId(SaxUserAccount.Column.Id))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserAccount));
|
||||
if (columns.HasId(SaxUserAccount.Column.EmailAddress))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_EmailAddress, aliasUserAccount));
|
||||
if (columns.HasId(SaxUserAccount.Column.Title))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Title, aliasUserAccount));
|
||||
if (columns.HasId(SaxUserAccount.Column.FirstName))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName, aliasUserAccount));
|
||||
if (columns.HasId(SaxUserAccount.Column.Initials))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Initials, aliasUserAccount));
|
||||
if (columns.HasId(SaxUserAccount.Column.LastName))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_LastName, aliasUserAccount));
|
||||
if (columns.HasId(SaxUserAccount.Column.PhoneMain))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_PhoneMain, aliasUserAccount));
|
||||
if (columns.HasId(SaxUserAccount.Column.PhoneMobile))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_PhoneMobile, aliasUserAccount));
|
||||
if (columns.HasId(SaxUserAccount.Column.DateOfBirthDay) || columns.HasId(SaxUserAccount.Column.DateOfBirth))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_DateOfBirthDay, aliasUserAccount));
|
||||
if (columns.HasId(SaxUserAccount.Column.DateOfBirthMonth) || columns.HasId(SaxUserAccount.Column.DateOfBirth))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_DateOfBirthMonth, aliasUserAccount));
|
||||
if (columns.HasId(SaxUserAccount.Column.DateOfBirthYear) || columns.HasId(SaxUserAccount.Column.DateOfBirth))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_DateOfBirthYear, aliasUserAccount));
|
||||
// Regions.
|
||||
bool hasCountryRegionCols = columns.HasId(SaxUserAccount.Column.RegionCountry_Name);
|
||||
if (columns.HasId(SaxUserAccount.Column.RegionIdCountry) || hasCountryRegionCols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_RegionIdCountry, aliasUserAccount));
|
||||
bool hasProvinceRegionCols = columns.HasId(SaxUserAccount.Column.RegionProvince_Name);
|
||||
if (columns.HasId(SaxUserAccount.Column.RegionIdProvince) || hasProvinceRegionCols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_RegionIdProvince, aliasUserAccount));
|
||||
// Login.
|
||||
if (columns.HasId(SaxUserAccount.Column.LastLoginOn) || columns.HasId(SaxUserAccount.Column.LastLoginAt))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_LastLoginAt, aliasUserAccount));
|
||||
if (columns.HasId(SaxUserAccount.Column.LastInvalidLoginOn) || columns.HasId(SaxUserAccount.Column.LastInvalidLoginAt))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_LastInvalidLoginAt, aliasUserAccount));
|
||||
if (columns.HasId(SaxUserAccount.Column.InvalidLoginCount))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_InvalidLoginCount, aliasUserAccount));
|
||||
// Common properties.
|
||||
if (columns.HasId(SaxUserAccount.Column.Notes))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Notes, aliasUserAccount));
|
||||
if (columns.HasId(SaxUserAccount.Column.Flags))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Status, aliasUserAccount));
|
||||
if (columns.HasId(SaxUserAccount.Column.CreateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_CreateOn, aliasUserAccount));
|
||||
if (columns.HasId(SaxUserAccount.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_UpdateOn, aliasUserAccount));
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Country Region.
|
||||
if (hasCountryRegionCols)
|
||||
{
|
||||
DbQueryJoin joinRegionCountry = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinRegionCountry.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Region), aliasUserAccount_Region_Country);
|
||||
joinRegionCountry.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_Id, aliasUserAccount_Region_Country) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_RegionIdCountry, aliasUserAccount));
|
||||
query.Joins.Add(joinRegionCountry);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.Region_Name);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasUserAccount_Region_Country), prefixUserAccount_Region_Country + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Province Region.
|
||||
if (hasProvinceRegionCols)
|
||||
{
|
||||
DbQueryJoin joinRegionProvince = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinRegionProvince.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Region), aliasUserAccount_Region_Province);
|
||||
joinRegionProvince.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_Id, aliasUserAccount_Region_Province) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_RegionIdProvince, aliasUserAccount));
|
||||
query.Joins.Add(joinRegionProvince);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.Region_Name);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasUserAccount_Region_Province), prefixUserAccount_Region_Province + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// System Admin User Role.
|
||||
if (columns.Exists(item => SaxDbDfn_Core.GetTableForColumn((SaxDbDfn_Core.ColumnIdx)item.DbColumn) == SaxDbDfn_Core.TableIdx.UserRole))
|
||||
{
|
||||
DbQueryJoin joinSysAdmin = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinSysAdmin.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserRole), aliasUserAccount_UserRole_SysAdmin);
|
||||
joinSysAdmin.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_UserAccountId, aliasUserAccount_UserRole_SysAdmin) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserAccount));
|
||||
joinSysAdmin.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_UserRoleCode, aliasUserAccount_UserRole_SysAdmin) + "='" + UserRoleCodes.GetCodeForType(Sax.UserRole.SystemAdmin) + "'");
|
||||
query.Joins.Add(joinSysAdmin);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserRole_LastLoginAt);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserRole_LastInvalidLoginAt);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserRole_InvalidLoginCount);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasUserAccount_UserRole_SysAdmin), prefixUserAccount_UserRole_SysAdmin + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// User Sport count.
|
||||
if (columns.HasId(SaxUserAccount.Column.UserSportCount) || columns.HasId(SaxUserAccount.Column.UserSportCount_Active))
|
||||
{
|
||||
String aliasUserSport = "aUsrSpt";
|
||||
DbQuery queryUserSport = new DbQuery(CoreDatabase.DbmsType);
|
||||
queryUserSport.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserSport), aliasUserSport);
|
||||
queryUserSport.Columns.Add("Count(*)");
|
||||
queryUserSport.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_UserAccountId, aliasUserSport) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserAccount));
|
||||
queryUserSport.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_Status, aliasUserSport) + "!='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'");
|
||||
query.Columns.Add("(" + queryUserSport.BuildQuery() + ")", colUserAccount_UserSportCount);
|
||||
// Active user sports.
|
||||
queryUserSport.Filters.Clear();
|
||||
queryUserSport.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_UserAccountId, aliasUserSport) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserAccount));
|
||||
queryUserSport.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_Status, aliasUserSport) + "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'");
|
||||
query.Columns.Add("(" + queryUserSport.BuildQuery() + ")", colUserAccount_UserSportCount_Active);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// User Role count.
|
||||
if (columns.HasId(SaxUserAccount.Column.UserRoleCount))
|
||||
{
|
||||
String aliasUserRole = "aUsrRol";
|
||||
DbQuery queryUserRole = new DbQuery(CoreDatabase.DbmsType);
|
||||
queryUserRole.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserRole), aliasUserRole);
|
||||
queryUserRole.Columns.Add("Count(*)");
|
||||
queryUserRole.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_UserAccountId, aliasUserRole) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserAccount));
|
||||
queryUserRole.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.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_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserRole), aliasUserRole);
|
||||
queryUserRole.Columns.Add("Count(*)");
|
||||
queryUserRole.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_UserAccountId, aliasUserRole) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserAccount));
|
||||
queryUserRole.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_UserRoleCode, aliasUserRole) + "='" + UserRoleCodes.GetCodeForType(Sax.UserRole.SystemAdmin) + "'");
|
||||
queryUserRole.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.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,481 @@
|
||||
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;
|
||||
using Saxonite.Net.Standard.Dbas.Internal.Core;
|
||||
|
||||
namespace Saxonite.Net.Standard.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
partial class SaxAccountMgr_Dbas
|
||||
{
|
||||
//*******************************************************************
|
||||
// Account Mgr - User Config
|
||||
//*******************************************************************
|
||||
// Utilities.
|
||||
private List<StringPair> GetLogProperties(SaxUserConfig userConfig)
|
||||
{
|
||||
return new List<StringPair>()
|
||||
{
|
||||
new StringPair("Id",SysId.ToString(userConfig.Id)),
|
||||
new StringPair("UserAccountId",SysId.ToString(userConfig.UserAccountId)),
|
||||
new StringPair("ConfigType",userConfig.ConfigType.ToString()),
|
||||
};
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create item.
|
||||
public override SaxUserConfig CreateUserConfig(SysId userAccountId, Sax.UserConfigType configType)
|
||||
{
|
||||
ClearErrorState();
|
||||
return new SaxUserConfig_Dbas(CoreDatabase, null, userAccountId, configType, 0);
|
||||
}
|
||||
private SaxUserConfig_Dbas CreateUserConfig(UserConfig_Db dbUserConfig)
|
||||
{
|
||||
ClearErrorState();
|
||||
SaxUserConfig_Dbas userConfig = new SaxUserConfig_Dbas(CoreDatabase, new SysId(dbUserConfig._Id), new SysId(dbUserConfig._UserAccountId), (Sax.UserConfigType)dbUserConfig._ConfigType, 0);
|
||||
PopulateFrom(dbUserConfig, userConfig);
|
||||
return userConfig;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get item.
|
||||
public override SaxUserConfig GetUserConfig(SaxUserConfig.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetUserConfig(GetUserConfigQueryFilter(prm).Concat(" And ", "(", ")"));
|
||||
}
|
||||
private SaxUserConfig GetUserConfig(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetUserConfigCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple items found");
|
||||
return null;
|
||||
}
|
||||
SaxUserConfig userConfig = null;
|
||||
// Query data.
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
UserConfig_Db dbUserConfig = new UserConfig_Db(CoreDbInfo);
|
||||
dbUserConfig.PopulateFrom(dbCommand, aliasUserConfig, filter);
|
||||
userConfig = CreateUserConfig(dbUserConfig);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return userConfig;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate item.
|
||||
public override bool IsValidUserConfigData(SaxUserConfig.Data data, SaxUserConfig.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidUserConfigData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert item.
|
||||
public override bool InsertUserConfig(SaxUserConfig userConfig, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertUserConfig";
|
||||
ClearErrorState();
|
||||
if (!IsValidUserConfig(userConfig)) return false;
|
||||
if (SysId.IsValid(userConfig.Id)) return SetErrorState(ErrorMessage.ValidItemId);
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
UserConfig_Db dbUserConfig = new UserConfig_Db(CoreDbInfo);
|
||||
PopulateTo(dbUserConfig, userConfig, dbUpdateInfo);
|
||||
if (UserConfig_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
dbUserConfig._Id = CoreDatabase.GetNextIdFromTable("UserConfig");
|
||||
}
|
||||
dbUserConfig.ExecuteInsertCommand(dbCommand);
|
||||
//userConfig.Id = new SysId(dbUserConfig._Id);
|
||||
userConfig.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(userConfig).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update item.
|
||||
public override bool UpdateUserConfig(SaxUserConfig userConfig, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdateUserConfig";
|
||||
ClearErrorState();
|
||||
if (!IsValidUserConfig(userConfig)) return false;
|
||||
if (!SysId.IsValid(userConfig.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!userConfig.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(userConfig).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
UserConfig_Db dbUserConfig = new UserConfig_Db(CoreDbInfo);
|
||||
dbUserConfig.PopulateFrom(dbCommand, aliasUserConfig, "Id=" + SysId.ToString(userConfig.Id));
|
||||
// Update properties.
|
||||
PopulateTo(dbUserConfig, userConfig, dbUpdateInfo);
|
||||
dbUserConfig.ExecuteUpdateCommand(dbCommand);
|
||||
userConfig.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(userConfig).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete item.
|
||||
public override bool UserConfigCanBeDeleted(SaxUserConfig userConfig)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.UserConfigCanBeDeleted(userConfig)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteUserConfig(SaxUserConfig userConfig, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeleteUserConfig";
|
||||
ClearErrorState();
|
||||
if (!UserConfigCanBeDeleted(userConfig)) return false;
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
UserConfig_Db dbUserConfig = new UserConfig_Db(CoreDbInfo);
|
||||
dbUserConfig.PopulateFrom(dbCommand, aliasUserConfig, "Id=" + SysId.ToString(userConfig.Id));
|
||||
// Delete item.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserConfig) + " WHERE Id=" + SysId.ToString(userConfig.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
userConfig.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(userConfig).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(UserConfig_Db dbUserConfig, SaxUserConfig userConfig, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbUserConfig._UserAccountId = SysId.ToInt(userConfig.UserAccountId);
|
||||
dbUserConfig._ConfigType = (short)userConfig.ConfigType;
|
||||
dbUserConfig._ConfigData = userConfig.ConfigData;
|
||||
// Common.
|
||||
//dbUserConfig._Flags = (short)userConfig.Flags;
|
||||
if (!DateUtil.IsValid(dbUserConfig._CreateOn))
|
||||
{
|
||||
dbUserConfig._CreateOn = DateTime.Now;
|
||||
}
|
||||
dbUserConfig._UpdateOn = DateTime.Now;
|
||||
}
|
||||
private void PopulateFrom(UserConfig_Db dbUserConfig, SaxUserConfig userConfig)
|
||||
{
|
||||
//userConfig.UserAccountId = new SysId(dbUserConfig._UserAccountId);
|
||||
//userConfig.ConfigType = (Sax.UserConfigType)dbUserConfig._ConfigType;
|
||||
userConfig.ConfigData = dbUserConfig._ConfigData;
|
||||
// Common.
|
||||
userConfig.SetCreateStamp(dbUserConfig._CreateOn, new SysId(), "");
|
||||
userConfig.SetUpdateStamp(dbUserConfig._UpdateOn, new SysId(), "");
|
||||
userConfig.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item column definitions.
|
||||
private static readonly String aliasUserConfig = "UsrCfg";
|
||||
private static readonly String aliasUserConfig_UserAccount = "UsrCfg_Usr";
|
||||
private static readonly String prefixUserConfig_UserAccount = aliasUserConfig_UserAccount + "_";
|
||||
private void SetUserConfigColDfn
|
||||
(ColumnDfn col, String caption, int width, SaxDbDfn_Core.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SaxDbDfn_Core.GetTableForColumn(dbCol) == SaxDbDfn_Core.TableIdx.UserConfig)
|
||||
alias = aliasUserConfig;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn_Core.GetColumnName(dbCol, false), SaxDbDfn_Core.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn_Core.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SaxDbDfn_Core.GetColTextLen(dbCol);
|
||||
}
|
||||
public override ColumnDfn GetUserConfigColumnDfn(SaxUserConfig.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
//-----------------------------------------------------------
|
||||
case SaxUserConfig.Column.Pos:
|
||||
SetUserConfigColDfn(columnDfn, "Pos", 60, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
case SaxUserConfig.Column.UserAccountId:
|
||||
SetUserConfigColDfn(columnDfn, "User Id", 80, SaxDbDfn_Core.ColumnIdx.UserConfig_UserAccountId, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-------------------------------------------------------
|
||||
// User.
|
||||
case SaxUserConfig.Column.User_EmailAddress:
|
||||
SetUserConfigColDfn(columnDfn, "Email address", 160, SaxDbDfn_Core.ColumnIdx.UserAccount_EmailAddress, ColumnAlignment.Left, DataValue.DataType.String, aliasUserConfig_UserAccount, prefixUserConfig_UserAccount);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserConfig.Column.User_DisplayName:
|
||||
SetUserConfigColDfn(columnDfn, "User", 160, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Left, DataValue.DataType.String);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserConfig.Column.User_Title:
|
||||
SetUserConfigColDfn(columnDfn, "Title", 80, SaxDbDfn_Core.ColumnIdx.UserAccount_Title, ColumnAlignment.Left, DataValue.DataType.String, aliasUserConfig_UserAccount, prefixUserConfig_UserAccount);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserConfig.Column.User_FirstName:
|
||||
SetUserConfigColDfn(columnDfn, "First name", 120, SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName, ColumnAlignment.Left, DataValue.DataType.String, aliasUserConfig_UserAccount, prefixUserConfig_UserAccount);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserConfig.Column.User_LastName:
|
||||
SetUserConfigColDfn(columnDfn, "Last name", 120, SaxDbDfn_Core.ColumnIdx.UserAccount_LastName, ColumnAlignment.Left, DataValue.DataType.String, aliasUserConfig_UserAccount, prefixUserConfig_UserAccount);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Configuration.
|
||||
case SaxUserConfig.Column.ConfigType:
|
||||
SetUserConfigColDfn(columnDfn, "Type", 60, SaxDbDfn_Core.ColumnIdx.UserConfig_ConfigType, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Derived properties.
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Common properties.
|
||||
/*
|
||||
case SaxUserConfig.Column.Flags:
|
||||
SetUserConfigColDfn(columnDfn, "Flags", 60, SaxDbDfn_Core.ColumnIdx.UserConfig_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
*/
|
||||
case SaxUserConfig.Column.CreateOn_Date:
|
||||
SetUserConfigColDfn(columnDfn, "Created", 80, SaxDbDfn_Core.ColumnIdx.UserConfig_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserConfig.Column.UpdateOn_Date:
|
||||
SetUserConfigColDfn(columnDfn, "Updated", 80, SaxDbDfn_Core.ColumnIdx.UserConfig_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> GetUserConfigQueryFilter(SaxUserConfig.Params prm)
|
||||
{
|
||||
List<String> filter = new List<String>();
|
||||
|
||||
// User accounts.
|
||||
String userAccountIdsIncluded = prm.UserAccountIdsIncluded.Concat(",");
|
||||
if (!userAccountIdsIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserConfig_UserAccountId, aliasUserConfig) + " IN (" + userAccountIdsIncluded + ")");
|
||||
|
||||
// Config type.
|
||||
if (prm.ConfigType > 0)
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserConfig_ConfigType, aliasUserConfig) + "=" + ((short)prm.ConfigType).ToString());
|
||||
|
||||
if (filter.Count < 1) filter.Add("1=1");
|
||||
return filter;
|
||||
}
|
||||
// Item sort columns.
|
||||
public List<String> GetUserConfigSortColumns(SaxUserConfig.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
List<String> sortColumnNames = new List<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for UserConfig columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SaxDbDfn_Core.GetTableForColumn((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn_Core.TableIdx.UserConfig)
|
||||
{
|
||||
sortCol = SaxDbDfn_Core.GetColumnNameQual((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn, aliasUserConfig);
|
||||
}
|
||||
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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserConfig_UserAccountId, aliasUserConfig) + " ASC");
|
||||
sortColumnNames.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserConfig_ConfigType, aliasUserConfig) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item count.
|
||||
private long GetUserConfigCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return CoreDatabase.GetRowCount(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserConfig) + " As " + aliasUserConfig, filter);
|
||||
}
|
||||
public override long GetUserConfigCount(SaxUserConfig.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetUserConfigCount(GetUserConfigQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item list.
|
||||
public override List<SaxUserConfig> GetUserConfigList(SaxUserConfig.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<SaxUserConfig> userConfigs = new List<SaxUserConfig>();
|
||||
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserConfig), aliasUserConfig);
|
||||
UserConfig_Db dbUserConfig = new UserConfig_Db(CoreDbInfo);
|
||||
qry.Columns.AddRange(dbUserConfig.ExistingColumnNames);
|
||||
qry.Filters.AddRange(GetUserConfigQueryFilter(prm));
|
||||
qry.OrderBy.AddRange(GetUserConfigSortColumns(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())
|
||||
{
|
||||
dbUserConfig = new UserConfig_Db(CoreDbInfo);
|
||||
dbUserConfig.PopulateFrom(dbDataReader);
|
||||
userConfigs.Add(CreateUserConfig(dbUserConfig));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return userConfigs;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item query execution.
|
||||
public override DbResultSet ExecuteUserConfigQuery(List<ColumnDfn> columns, SaxUserConfig.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(CoreDatabase.DbmsType);
|
||||
query.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserConfig), aliasUserConfig);
|
||||
|
||||
// Add columns as defined in query list.
|
||||
bool hasUserAccountCols = (columns.HasId(SaxUserConfig.Column.User_EmailAddress) || columns.HasId(SaxUserConfig.Column.User_DisplayName) || columns.HasId(SaxUserConfig.Column.User_Title) || columns.HasId(SaxUserConfig.Column.User_FirstName) || columns.HasId(SaxUserConfig.Column.User_LastName));
|
||||
if (columns.HasId(SaxUserConfig.Column.UserAccountId) || hasUserAccountCols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserConfig_UserAccountId, aliasUserConfig));
|
||||
if (columns.HasId(SaxUserConfig.Column.ConfigType))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserConfig_ConfigType, aliasUserConfig));
|
||||
// Common properties.
|
||||
//if (columns.HasId(SaxUserConfig.Column.Flags))
|
||||
// query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserConfig_Flags, aliasUserConfig));
|
||||
if (columns.HasId(SaxUserConfig.Column.CreateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserConfig_CreateOn, aliasUserConfig));
|
||||
if (columns.HasId(SaxUserConfig.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserConfig_UpdateOn, aliasUserConfig));
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// User Account.
|
||||
if (hasUserAccountCols)
|
||||
{
|
||||
DbQueryJoin joinUserAccount = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinUserAccount.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserAccount), aliasUserConfig_UserAccount);
|
||||
joinUserAccount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserConfig_UserAccount) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserConfig_UserAccountId, aliasUserConfig));
|
||||
query.Joins.Add(joinUserAccount);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_EmailAddress);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_Title);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_LastName);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasUserConfig_UserAccount), prefixUserConfig_UserAccount + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetUserConfigQueryFilter(prm));
|
||||
|
||||
// Sort is applied if the results are likely to be more than a single row.
|
||||
if (prm.UserAccountIdsIncluded.Count != 1 || prm.ConfigType <= 0)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetUserConfigSortColumns(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,633 @@
|
||||
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;
|
||||
using static Saxonite.Net.Standard.Base.App.Sax;
|
||||
using System.ComponentModel;
|
||||
using Saxonite.Net.Standard.Dbas.Internal.Core;
|
||||
|
||||
namespace Saxonite.Net.Standard.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
partial class SaxAccountMgr_Dbas
|
||||
{
|
||||
//*******************************************************************
|
||||
// Account Mgr - User Eligibility
|
||||
//*******************************************************************
|
||||
// Utilities.
|
||||
private List<StringPair> GetLogProperties(SaxUserEligibility userEligibility)
|
||||
{
|
||||
return new List<StringPair>()
|
||||
{
|
||||
new StringPair("Id",SysId.ToString(userEligibility.Id)),
|
||||
new StringPair("UserAccountId",SysId.ToString(userEligibility.UserAccountId)),
|
||||
new StringPair("RegionId",SysId.ToString(userEligibility.RegionId)),
|
||||
new StringPair("Eligibility",userEligibility.EligibilityType.ToString()),
|
||||
new StringPair("Status",userEligibility.StatusCode)
|
||||
};
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create item.
|
||||
public override SaxUserEligibility CreateUserEligibility(SysId userAccountId, SysId regionId, Sax.EligibilityType userEligibility)
|
||||
{
|
||||
ClearErrorState();
|
||||
return new SaxUserEligibility_Dbas(CoreDatabase, null, userAccountId, regionId, userEligibility, 0);
|
||||
}
|
||||
private SaxUserEligibility_Dbas CreateUserEligibility(UserEligibility_Db dbUserEligibility)
|
||||
{
|
||||
ClearErrorState();
|
||||
SaxUserEligibility_Dbas userEligibility = new SaxUserEligibility_Dbas(CoreDatabase, new SysId(dbUserEligibility._Id), new SysId(dbUserEligibility._UserAccountId), new SysId(dbUserEligibility._RegionId ?? 0), (Sax.EligibilityType)dbUserEligibility._EligibilityType, (ushort)dbUserEligibility._Flags);
|
||||
PopulateFrom(dbUserEligibility, userEligibility);
|
||||
return userEligibility;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get item.
|
||||
public override SaxUserEligibility GetUserEligibility(SaxUserEligibility.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetUserEligibility(GetUserEligibilityQueryFilter(prm).Concat(" And ", "(", ")"));
|
||||
}
|
||||
private SaxUserEligibility GetUserEligibility(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetUserEligibilityCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple items found");
|
||||
return null;
|
||||
}
|
||||
SaxUserEligibility userEligibility = null;
|
||||
// Query data.
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
UserEligibility_Db dbUserEligibility = new UserEligibility_Db(CoreDbInfo);
|
||||
dbUserEligibility.PopulateFrom(dbCommand, aliasUserEligibility, filter);
|
||||
userEligibility = CreateUserEligibility(dbUserEligibility);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return userEligibility;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate item.
|
||||
public override bool IsValidUserEligibilityData(SaxUserEligibility.Data data, SaxUserEligibility.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidUserEligibilityData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert item.
|
||||
public override bool InsertUserEligibility(SaxUserEligibility userEligibility, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertUserEligibility";
|
||||
ClearErrorState();
|
||||
if (!IsValidUserEligibility(userEligibility)) return false;
|
||||
if (SysId.IsValid(userEligibility.Id)) return SetErrorState(ErrorMessage.ValidItemId);
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
UserEligibility_Db dbUserEligibility = new UserEligibility_Db(CoreDbInfo);
|
||||
PopulateTo(dbUserEligibility, userEligibility, dbUpdateInfo);
|
||||
if (UserEligibility_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
dbUserEligibility._Id = CoreDatabase.GetNextIdFromTable("UserEligibility");
|
||||
}
|
||||
dbUserEligibility.ExecuteInsertCommand(dbCommand);
|
||||
userEligibility.Id = new SysId(dbUserEligibility._Id);
|
||||
userEligibility.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(userEligibility).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update item.
|
||||
public override bool UpdateUserEligibility(SaxUserEligibility userEligibility, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdateUserEligibility";
|
||||
ClearErrorState();
|
||||
if (!IsValidUserEligibility(userEligibility)) return false;
|
||||
if (!SysId.IsValid(userEligibility.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!userEligibility.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(userEligibility).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
UserEligibility_Db dbUserEligibility = new UserEligibility_Db(CoreDbInfo);
|
||||
dbUserEligibility.PopulateFrom(dbCommand, aliasUserEligibility, "Id=" + SysId.ToString(userEligibility.Id));
|
||||
// ToDo SaxUpdateLogItemMonitor_UserEligibility updateLogMonitor = new SaxUpdateLogItemMonitor_UserEligibility(SessionContext, CreateUserEligibility(dbUserEligibility), dbUpdateInfo);
|
||||
// Update item.
|
||||
PopulateTo(dbUserEligibility, userEligibility, dbUpdateInfo);
|
||||
dbUserEligibility.ExecuteUpdateCommand(dbCommand);
|
||||
userEligibility.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(userEligibility).Concat(": ").Concat("", "\n\t"));
|
||||
// Record updates.
|
||||
// ToDo updateLogMonitor.RecordUpdatedValues(userEligibility);
|
||||
// ToDo updateLogMonitor.LogUpdates();
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete item.
|
||||
public override bool UserEligibilityCanBeDeleted(SaxUserEligibility userEligibility)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.UserEligibilityCanBeDeleted(userEligibility)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteUserEligibility(SaxUserEligibility userEligibility, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeleteUserEligibility";
|
||||
ClearErrorState();
|
||||
if (!UserEligibilityCanBeDeleted(userEligibility)) return false;
|
||||
|
||||
// User Eligibilitys are logically deleted by changing the status.
|
||||
userEligibility.Status = SaStatus.Deleted;
|
||||
return UpdateUserEligibility(userEligibility, dbUpdateInfo);
|
||||
|
||||
/*
|
||||
* Physical deletion.
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
UserEligibility_Db dbUserEligibility = new UserEligibility_Db(CoreDbInfo);
|
||||
dbUserEligibility.PopulateFrom(dbCommand, aliasUserEligibility, "Id=" + userEligibility.Id.ToString());
|
||||
// Delete item.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserEligibility) + " WHERE Id=" + SysId.ToString(userEligibility.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
userEligibility.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(userEligibility).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
*/
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(UserEligibility_Db dbUserEligibility, SaxUserEligibility userEligibility, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbUserEligibility._Id = SysId.ToLong(userEligibility.Id);
|
||||
dbUserEligibility._UserAccountId = SysId.ToInt(userEligibility.UserAccountId);
|
||||
dbUserEligibility._RegionId = SysId.ToInt(userEligibility.RegionId);
|
||||
dbUserEligibility._EligibilityType = (short)userEligibility.EligibilityType;
|
||||
dbUserEligibility._Info = userEligibility.Info;
|
||||
dbUserEligibility._ExpiresOn = userEligibility.ExpiresOn;
|
||||
// Common.
|
||||
dbUserEligibility._Notes = userEligibility.Notes;
|
||||
dbUserEligibility._Status = SacsSystem.GetStatusCode(userEligibility.Status);
|
||||
dbUserEligibility._Flags = (short)userEligibility.Flags;
|
||||
if (!SysId.IsValid(userEligibility.Id))
|
||||
{
|
||||
dbUserEligibility._CreateOn = DateTime.Now;
|
||||
dbUserEligibility._CreateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbUserEligibility._CreateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
dbUserEligibility._UpdateOn = DateTime.Now;
|
||||
dbUserEligibility._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbUserEligibility._UpdateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
private void PopulateFrom(UserEligibility_Db dbUserEligibility, SaxUserEligibility userEligibility)
|
||||
{
|
||||
//userEligibility.Id = new SysId(dbUserEligibility._Id);
|
||||
//userEligibility.UserAccountId = new SysId(dbUserEligibility._UserAccountId);
|
||||
//userEligibility.RegionId = new SysId(dbUserEligibility._RegionId);
|
||||
//userEligibility.EligibilityType = (Sax.EligibilityType)dbUserEligibility._EligibilityType;
|
||||
userEligibility.Info = dbUserEligibility._Info;
|
||||
userEligibility.ExpiresOn = dbUserEligibility._ExpiresOn;
|
||||
// Common.
|
||||
userEligibility.Notes = dbUserEligibility._Notes;
|
||||
userEligibility.Status = SacsSystem.GetStatusForCode(dbUserEligibility._Status);
|
||||
userEligibility.SetCreateStamp(dbUserEligibility._CreateOn, new SysId(dbUserEligibility._CreateBy), dbUserEligibility._CreateHost);
|
||||
userEligibility.SetUpdateStamp(dbUserEligibility._UpdateOn, new SysId(dbUserEligibility._UpdateBy), dbUserEligibility._UpdateHost);
|
||||
userEligibility.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item column definitions.
|
||||
private static readonly String aliasUserEligibility = "UsrRol";
|
||||
private static readonly String aliasUserEligibility_UserAccount = "UsrElg_Usr";
|
||||
private static readonly String prefixUserEligibility_UserAccount = aliasUserEligibility_UserAccount + "_";
|
||||
private static readonly String aliasUserEligibility_Region = "UsrElg_Usr";
|
||||
private static readonly String prefixUserEligibility_Region = aliasUserEligibility_Region + "_";
|
||||
private void SetUserEligibilityColDfn
|
||||
(ColumnDfn col, String caption, int width, SaxDbDfn_Core.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SaxDbDfn_Core.GetTableForColumn(dbCol) == SaxDbDfn_Core.TableIdx.UserEligibility)
|
||||
alias = aliasUserEligibility;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn_Core.GetColumnName(dbCol, false), SaxDbDfn_Core.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn_Core.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SaxDbDfn_Core.GetColTextLen(dbCol);
|
||||
}
|
||||
public override ColumnDfn GetUserEligibilityColumnDfn(SaxUserEligibility.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
//-----------------------------------------------------------
|
||||
case SaxUserEligibility.Column.Pos:
|
||||
SetUserEligibilityColDfn(columnDfn, "Pos", 60, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
case SaxUserEligibility.Column.Id:
|
||||
SetUserEligibilityColDfn(columnDfn, "Id", 80, SaxDbDfn_Core.ColumnIdx.UserEligibility_Id, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-------------------------------------------------------
|
||||
// User.
|
||||
case SaxUserEligibility.Column.UserAccountId:
|
||||
SetUserEligibilityColDfn(columnDfn, "User Id", 80, SaxDbDfn_Core.ColumnIdx.UserEligibility_UserAccountId, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserEligibility.Column.User_EmailAddress:
|
||||
SetUserEligibilityColDfn(columnDfn, "Email address", 160, SaxDbDfn_Core.ColumnIdx.UserAccount_EmailAddress, ColumnAlignment.Left, DataValue.DataType.String, aliasUserEligibility_UserAccount, prefixUserEligibility_UserAccount);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserEligibility.Column.User_DisplayName:
|
||||
SetUserEligibilityColDfn(columnDfn, "User", 160, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Left, DataValue.DataType.String);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserEligibility.Column.User_Title:
|
||||
SetUserEligibilityColDfn(columnDfn, "Title", 80, SaxDbDfn_Core.ColumnIdx.UserAccount_Title, ColumnAlignment.Left, DataValue.DataType.String, aliasUserEligibility_UserAccount, prefixUserEligibility_UserAccount);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserEligibility.Column.User_FirstName:
|
||||
SetUserEligibilityColDfn(columnDfn, "First name", 120, SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName, ColumnAlignment.Left, DataValue.DataType.String, aliasUserEligibility_UserAccount, prefixUserEligibility_UserAccount);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserEligibility.Column.User_LastName:
|
||||
SetUserEligibilityColDfn(columnDfn, "Last name", 120, SaxDbDfn_Core.ColumnIdx.UserAccount_LastName, ColumnAlignment.Left, DataValue.DataType.String, aliasUserEligibility_UserAccount, prefixUserEligibility_UserAccount);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Region.
|
||||
case SaxUserEligibility.Column.RegionId:
|
||||
SetUserEligibilityColDfn(columnDfn, "Region Id", 80, SaxDbDfn_Core.ColumnIdx.UserEligibility_RegionId, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserEligibility.Column.Region_Type:
|
||||
SetUserEligibilityColDfn(columnDfn, "Region Type", 80, SaxDbDfn_Core.ColumnIdx.Region_RegionType, ColumnAlignment.Center, DataValue.DataType.Long, aliasUserEligibility_Region, prefixUserEligibility_Region);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserEligibility.Column.Region_Type_Desc:
|
||||
SetUserEligibilityColDfn(columnDfn, "Region Type", 100, SaxDbDfn_Core.ColumnIdx.Region_RegionType, ColumnAlignment.Center, DataValue.DataType.String, aliasUserEligibility_Region, prefixUserEligibility_Region);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserEligibility.Column.Region_CountryIso2Code:
|
||||
SetUserEligibilityColDfn(columnDfn, "Country code", 80, SaxDbDfn_Core.ColumnIdx.Region_CountryIso2Code, ColumnAlignment.Center, DataValue.DataType.String, aliasUserEligibility_Region, prefixUserEligibility_Region);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserEligibility.Column.Region_Name:
|
||||
SetUserEligibilityColDfn(columnDfn, "Region", 80, SaxDbDfn_Core.ColumnIdx.Region_Name, ColumnAlignment.Center, DataValue.DataType.String, aliasUserEligibility_Region, prefixUserEligibility_Region);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserEligibility.Column.Region_ParentId:
|
||||
SetUserEligibilityColDfn(columnDfn, "Parent Region Id", 90, SaxDbDfn_Core.ColumnIdx.Region_RegionIdParent, ColumnAlignment.Center, DataValue.DataType.Long, aliasUserEligibility_Region, prefixUserEligibility_Region);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Eligibility.
|
||||
case SaxUserEligibility.Column.EligibilityType:
|
||||
SetUserEligibilityColDfn(columnDfn, "Eligibility", 80, SaxDbDfn_Core.ColumnIdx.UserEligibility_EligibilityType, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserEligibility.Column.EligibilityType_Desc:
|
||||
SetUserEligibilityColDfn(columnDfn, "Eligibility", 120, SaxDbDfn_Core.ColumnIdx.UserEligibility_EligibilityType, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserEligibility.Column.Info:
|
||||
SetUserEligibilityColDfn(columnDfn, "Info", 120, SaxDbDfn_Core.ColumnIdx.UserEligibility_Info);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserEligibility.Column.ExpiresOn:
|
||||
SetUserEligibilityColDfn(columnDfn, "Expires", 100, SaxDbDfn_Core.ColumnIdx.UserEligibility_ExpiresOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Common properties.
|
||||
case SaxUserEligibility.Column.Notes:
|
||||
SetUserEligibilityColDfn(columnDfn, "Notes", 240, SaxDbDfn_Core.ColumnIdx.UserEligibility_Notes);
|
||||
break;
|
||||
case SaxUserEligibility.Column.Flags:
|
||||
SetUserEligibilityColDfn(columnDfn, "Flags", 60, SaxDbDfn_Core.ColumnIdx.UserEligibility_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxUserEligibility.Column.Status:
|
||||
SetUserEligibilityColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.UserEligibility_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxUserEligibility.Column.Status_Desc:
|
||||
SetUserEligibilityColDfn(columnDfn, "Status", 90, SaxDbDfn_Core.ColumnIdx.UserEligibility_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxUserEligibility.Column.Status_Ind:
|
||||
SetUserEligibilityColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.UserEligibility_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SaxUserEligibility.Column.CreateOn_Date:
|
||||
SetUserEligibilityColDfn(columnDfn, "Created", 80, SaxDbDfn_Core.ColumnIdx.UserEligibility_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserEligibility.Column.UpdateOn_Date:
|
||||
SetUserEligibilityColDfn(columnDfn, "Updated", 80, SaxDbDfn_Core.ColumnIdx.UserEligibility_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> GetUserEligibilityQueryFilter(SaxUserEligibility.Params prm)
|
||||
{
|
||||
List<String> filter = new List<String>();
|
||||
|
||||
// Item Ids.
|
||||
String idsIncluded = prm.IdsIncluded.Concat(",");
|
||||
if (!idsIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserEligibility_Id, aliasUserEligibility) + " IN (" + idsIncluded + ")");
|
||||
String idsExcluded = prm.IdsExcluded.Concat(",");
|
||||
if (!idsExcluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserEligibility_Id, aliasUserEligibility) + " NOT IN (" + idsExcluded + ")");
|
||||
|
||||
// User accounts.
|
||||
String userAccountIdsIncluded = prm.UserAccountIdsIncluded.Concat(",");
|
||||
if (!userAccountIdsIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserEligibility_UserAccountId, aliasUserEligibility) + " IN (" + userAccountIdsIncluded + ")");
|
||||
|
||||
// Regions.
|
||||
String regionIdsIncluded = prm.RegionIdsIncluded.Concat(",");
|
||||
if (!regionIdsIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserEligibility_RegionId, aliasUserEligibility) + " IN (" + regionIdsIncluded + ")");
|
||||
|
||||
// Eligibility.
|
||||
String eligibilityTypes = prm.EligibilityTypesIncluded.Select(item => ((int)item).ToString()).ToList().Concat(",", "", "", true, true);
|
||||
if (!eligibilityTypes.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserEligibility_EligibilityType, aliasUserEligibility) + " IN (" + eligibilityTypes + ")");
|
||||
|
||||
// Valid on.
|
||||
if (DateUtil.IsValid(prm.ValidOn))
|
||||
{
|
||||
String colName_ExpiresOn = SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserEligibility_ExpiresOn, aliasUserEligibility);
|
||||
filter.Add(colName_ExpiresOn + " Is Null Or " + colName_ExpiresOn + " >= " + DbQuery.FormatDateForCondition(prm.ValidOn) + ")");
|
||||
}
|
||||
|
||||
// Notes.
|
||||
if (!StringUtil.IsEmpty(prm.NotesPartial))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserEligibility_Notes, aliasUserEligibility) + " LIKE '%" + DbQuery.FormatForLike(prm.NotesPartial) + "%'");
|
||||
|
||||
// Status.
|
||||
if (prm.StatusCat != SaxUserEligibility.StatusCat.Any)
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserEligibility_Status, aliasUserEligibility) + GetUserEligibilityStatusCatFilterCondition(prm.StatusCat));
|
||||
|
||||
if (filter.Count < 1) filter.Add("1=1");
|
||||
return filter;
|
||||
}
|
||||
internal static String GetUserEligibilityStatusCatFilterCondition(SaxUserEligibility.StatusCat statusCat)
|
||||
{
|
||||
if (statusCat == SaxUserEligibility.StatusCat.ActiveOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'";
|
||||
if (statusCat == SaxUserEligibility.StatusCat.InactiveOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Inactive) + "'";
|
||||
if (statusCat == SaxUserEligibility.StatusCat.NotDeleted)
|
||||
return "!='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
if (statusCat == SaxUserEligibility.StatusCat.DeletedOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
return "";
|
||||
}
|
||||
// Item sort columns.
|
||||
public List<String> GetUserEligibilitySortColumns(SaxUserEligibility.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
List<String> sortColumnNames = new List<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for UserEligibility columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SaxDbDfn_Core.GetTableForColumn((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn_Core.TableIdx.UserEligibility)
|
||||
{
|
||||
sortCol = SaxDbDfn_Core.GetColumnNameQual((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn, aliasUserEligibility);
|
||||
}
|
||||
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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserEligibility_Id, aliasUserEligibility) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item count.
|
||||
private long GetUserEligibilityCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return CoreDatabase.GetRowCount(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserEligibility) + " As " + aliasUserEligibility, filter);
|
||||
}
|
||||
public override long GetUserEligibilityCount(SaxUserEligibility.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetUserEligibilityCount(GetUserEligibilityQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item list.
|
||||
public override List<SaxUserEligibility> GetUserEligibilityList(SaxUserEligibility.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<SaxUserEligibility> userEligibilitys = new List<SaxUserEligibility>();
|
||||
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserEligibility), aliasUserEligibility);
|
||||
UserEligibility_Db dbUserEligibility = new UserEligibility_Db(CoreDbInfo);
|
||||
qry.Columns.AddRange(dbUserEligibility.ExistingColumnNames);
|
||||
qry.Filters.AddRange(GetUserEligibilityQueryFilter(prm));
|
||||
qry.OrderBy.AddRange(GetUserEligibilitySortColumns(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())
|
||||
{
|
||||
dbUserEligibility = new UserEligibility_Db(CoreDbInfo);
|
||||
dbUserEligibility.PopulateFrom(dbDataReader);
|
||||
userEligibilitys.Add(CreateUserEligibility(dbUserEligibility));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return userEligibilitys;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item query execution.
|
||||
public override DbResultSet ExecuteUserEligibilityQuery(List<ColumnDfn> columns, SaxUserEligibility.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(CoreDatabase.DbmsType);
|
||||
query.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserEligibility), aliasUserEligibility);
|
||||
|
||||
// Add columns as defined in query list.
|
||||
if (columns.HasId(SaxUserEligibility.Column.Id))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserEligibility_Id, aliasUserEligibility));
|
||||
bool hasUserAccountCols = (columns.HasId(SaxUserEligibility.Column.User_EmailAddress) || columns.HasId(SaxUserEligibility.Column.User_DisplayName) || columns.HasId(SaxUserEligibility.Column.User_Title) || columns.HasId(SaxUserEligibility.Column.User_FirstName) || columns.HasId(SaxUserEligibility.Column.User_LastName));
|
||||
if (columns.HasId(SaxUserEligibility.Column.UserAccountId) || hasUserAccountCols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserEligibility_UserAccountId, aliasUserEligibility));
|
||||
bool hasRegionCols = (columns.HasId(SaxUserEligibility.Column.Region_Type) || columns.HasId(SaxUserEligibility.Column.Region_Type_Desc) || columns.HasId(SaxUserEligibility.Column.Region_CountryIso2Code) || columns.HasId(SaxUserEligibility.Column.Region_Name) || columns.HasId(SaxUserEligibility.Column.Region_ParentId));
|
||||
if (columns.HasId(SaxUserEligibility.Column.RegionId) || hasRegionCols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserEligibility_RegionId, aliasUserEligibility));
|
||||
if (columns.HasId(SaxUserEligibility.Column.EligibilityType) || columns.HasId(SaxUserEligibility.Column.EligibilityType_Desc))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserEligibility_EligibilityType, aliasUserEligibility));
|
||||
if (columns.HasId(SaxUserEligibility.Column.Info))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserEligibility_Info, aliasUserEligibility));
|
||||
if (columns.HasId(SaxUserEligibility.Column.ExpiresOn))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserEligibility_ExpiresOn, aliasUserEligibility));
|
||||
// Common properties.
|
||||
if (columns.HasId(SaxUserEligibility.Column.Notes))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserEligibility_Notes, aliasUserEligibility));
|
||||
if (columns.HasId(SaxUserEligibility.Column.Flags))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserEligibility_Flags, aliasUserEligibility));
|
||||
if (columns.HasId(SaxUserEligibility.Column.Status) || columns.HasId(SaxUserEligibility.Column.Status_Desc) || columns.HasId(SaxUserEligibility.Column.Status_Ind))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserEligibility_Status, aliasUserEligibility));
|
||||
if (columns.HasId(SaxUserEligibility.Column.CreateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserEligibility_CreateOn, aliasUserEligibility));
|
||||
if (columns.HasId(SaxUserEligibility.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserEligibility_UpdateOn, aliasUserEligibility));
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// User Account.
|
||||
if (hasUserAccountCols)
|
||||
{
|
||||
DbQueryJoin joinUserAccount = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinUserAccount.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserAccount), aliasUserEligibility_UserAccount);
|
||||
joinUserAccount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserEligibility_UserAccount) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserEligibility_UserAccountId, aliasUserEligibility));
|
||||
query.Joins.Add(joinUserAccount);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_EmailAddress);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_Title);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_LastName);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasUserEligibility_UserAccount), prefixUserEligibility_UserAccount + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Region.
|
||||
if (hasRegionCols)
|
||||
{
|
||||
DbQueryJoin joinRegion = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinRegion.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Region), aliasUserEligibility_Region);
|
||||
joinRegion.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_Id, aliasUserEligibility_Region) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserEligibility_RegionId, aliasUserEligibility));
|
||||
query.Joins.Add(joinRegion);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.Region_RegionType);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.Region_CountryIso2Code);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.Region_Name);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.Region_RegionIdParent);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasUserEligibility_Region), prefixUserEligibility_Region + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetUserEligibilityQueryFilter(prm));
|
||||
|
||||
if (prm.IdsIncluded.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetUserEligibilitySortColumns(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,563 @@
|
||||
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;
|
||||
using Saxonite.Net.Standard.Dbas.Internal.Core;
|
||||
|
||||
namespace Saxonite.Net.Standard.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
partial class SaxAccountMgr_Dbas
|
||||
{
|
||||
//*******************************************************************
|
||||
// Account Mgr - User Role
|
||||
//*******************************************************************
|
||||
// Utilities.
|
||||
private List<StringPair> GetLogProperties(SaxUserOnline userOnline)
|
||||
{
|
||||
return new List<StringPair>()
|
||||
{
|
||||
new StringPair("UserAccountId",SysId.ToString(userOnline.UserAccountId)),
|
||||
new StringPair("OnlineAt",DateUtil.Format(userOnline.OnlineAt, "d-MMM-yyyy HH:mm:ss")),
|
||||
};
|
||||
}
|
||||
|
||||
public override bool CommitUsersOnline(IEnumerable<SaxUserOnline.DataProperties> usersOnline)
|
||||
{
|
||||
String fn = GetType().Name + ".CommitUsersOnline";
|
||||
try
|
||||
{
|
||||
// Merge query - insert missing User Online records and update existing.
|
||||
List<String> query = new List<String>()
|
||||
{
|
||||
"Merge",
|
||||
" Into " + SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserOnline) + " As UsrOnl",
|
||||
// Virtual table defining Activity Item Ids currently listed.
|
||||
" Using",
|
||||
" (",
|
||||
" Select UserAccountId, OnlineAt From (Select 0 UserAccountId, null OnlineAt" + usersOnline.Select(item => " Union Select " + item.UserAccountId.ToString() + ", " + DbQuery.FormatDateTimeForCondition(item.OnlineAt)).ToList().Concat("", " ") + ") Dat Where Dat.UserAccountId>0 And Dat.OnlineAt Is Not Null",
|
||||
" ) As DatOnl",
|
||||
" On UsrOnl.UserAccountId=DatOnl.UserAccountId",
|
||||
// Matched - Update the User Online to store latest Online data.
|
||||
" When Matched Then",
|
||||
" Update Set OnlineAt=DatOnl.OnlineAt",
|
||||
// Not Matched By Target - Insert the User Online with latest data.
|
||||
" When Not Matched Then",
|
||||
" Insert",
|
||||
" (UserAccountId, OnlineAt)",
|
||||
" Values (DatOnl.UserAccountId, DatOnl.OnlineAt)",
|
||||
";"
|
||||
};
|
||||
String sql = query.Concat("\n");
|
||||
//SaLogger.Debug(fn + " Query:\n" + sql);
|
||||
ISacsDatabase db = CoreDatabase;
|
||||
int rows = db.ExecuteNonQuery(sql);
|
||||
if (db.HasErrorState())
|
||||
SaLogger.Error(fn + " Database error: " + db.ErrorStateMessage);
|
||||
SaLogger.Debug(fn + " UserOnline rows modified: " + rows);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SaLogger.Warn(fn + " " + ExceptionUtil.GetLogMessage(exc, 0));
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create item.
|
||||
public override SaxUserOnline CreateUserOnline(SysId userAccountId)
|
||||
{
|
||||
ClearErrorState();
|
||||
return new SaxUserOnline_Dbas(CoreDatabase, userAccountId);
|
||||
}
|
||||
private SaxUserOnline_Dbas CreateUserOnline(UserOnline_Db dbUserOnline)
|
||||
{
|
||||
ClearErrorState();
|
||||
SaxUserOnline_Dbas userOnline = new SaxUserOnline_Dbas(CoreDatabase, new SysId(dbUserOnline._UserAccountId));
|
||||
PopulateFrom(dbUserOnline, userOnline);
|
||||
return userOnline;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get item.
|
||||
public override SaxUserOnline GetUserOnline(SaxUserOnline.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetUserOnline(GetUserOnlineQueryFilter(prm).Concat(" And ", "(", ")"));
|
||||
}
|
||||
private SaxUserOnline GetUserOnline(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetUserOnlineCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple items found");
|
||||
return null;
|
||||
}
|
||||
SaxUserOnline userOnline = null;
|
||||
// Query data.
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
UserOnline_Db dbUserOnline = new UserOnline_Db(CoreDbInfo);
|
||||
dbUserOnline.PopulateFrom(dbCommand, aliasUserOnline, filter);
|
||||
userOnline = CreateUserOnline(dbUserOnline);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return userOnline;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate item.
|
||||
public override bool IsValidUserOnlineData(SaxUserOnline.Data data, SaxUserOnline.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidUserOnlineData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert item.
|
||||
public override bool InsertUserOnline(SaxUserOnline userOnline, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertUserOnline";
|
||||
ClearErrorState();
|
||||
if (!IsValidUserOnline(userOnline)) return false;
|
||||
if (SysId.IsValid(userOnline.Id)) return SetErrorState(ErrorMessage.ValidItemId);
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
UserOnline_Db dbUserOnline = new UserOnline_Db(CoreDbInfo);
|
||||
PopulateTo(dbUserOnline, userOnline, dbUpdateInfo);
|
||||
if (UserOnline_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// User Online has no Id.
|
||||
}
|
||||
dbUserOnline.ExecuteInsertCommand(dbCommand);
|
||||
userOnline.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(userOnline).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update item.
|
||||
public override bool UpdateUserOnline(SaxUserOnline userOnline, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdateUserOnline";
|
||||
ClearErrorState();
|
||||
if (!IsValidUserOnline(userOnline)) return false;
|
||||
if (!SysId.IsValid(userOnline.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!userOnline.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(userOnline).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
UserOnline_Db dbUserOnline = new UserOnline_Db(CoreDbInfo);
|
||||
dbUserOnline.PopulateFrom(dbCommand, aliasUserOnline, "UserAccountId=" + SysId.ToString(userOnline.UserAccountId));
|
||||
// ToDo SaxUpdateLogItemMonitor_UserOnline updateLogMonitor = new SaxUpdateLogItemMonitor_UserOnline(SessionContext, CreateUserOnline(dbUserOnline), dbUpdateInfo);
|
||||
// Update item.
|
||||
PopulateTo(dbUserOnline, userOnline, dbUpdateInfo);
|
||||
dbUserOnline.ExecuteUpdateCommand(dbCommand);
|
||||
userOnline.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(userOnline).Concat(": ").Concat("", "\n\t"));
|
||||
// Record updates.
|
||||
// ToDo updateLogMonitor.RecordUpdatedValues(userOnline);
|
||||
// ToDo updateLogMonitor.LogUpdates();
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete item.
|
||||
public override bool UserOnlineCanBeDeleted(SaxUserOnline userOnline)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.UserOnlineCanBeDeleted(userOnline)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteUserOnline(SaxUserOnline userOnline, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeleteUserOnline";
|
||||
ClearErrorState();
|
||||
if (!UserOnlineCanBeDeleted(userOnline)) return false;
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
UserOnline_Db dbUserOnline = new UserOnline_Db(CoreDbInfo);
|
||||
dbUserOnline.PopulateFrom(dbCommand, aliasUserOnline, "Id=" + userOnline.Id.ToString());
|
||||
// Delete item.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserOnline) + " WHERE UserAccountId=" + SysId.ToString(userOnline.UserAccountId) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
userOnline.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(userOnline).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(UserOnline_Db dbUserOnline, SaxUserOnline userOnline, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbUserOnline._UserAccountId = SysId.ToInt(userOnline.UserAccountId);
|
||||
dbUserOnline._OnlineAt = userOnline.OnlineAt;
|
||||
}
|
||||
private void PopulateFrom(UserOnline_Db dbUserOnline, SaxUserOnline userOnline)
|
||||
{
|
||||
//userOnline.UserAccountId = new SysId(dbUserOnline._UserAccountId);
|
||||
userOnline.OnlineAt = dbUserOnline._OnlineAt;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item column definitions.
|
||||
private static readonly String aliasUserOnline = "UsrRol";
|
||||
private static readonly String aliasUserOnline_UserAccount = "UsrRol_Usr";
|
||||
private static readonly String prefixUserOnline_UserAccount = "UsrRol_Usr_";
|
||||
private static readonly String aliasUserOnline_UserSport = "UsrOnl_UsrSpt";
|
||||
private void SetUserOnlineColDfn
|
||||
(ColumnDfn col, String caption, int width, SaxDbDfn_Core.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SaxDbDfn_Core.GetTableForColumn(dbCol) == SaxDbDfn_Core.TableIdx.UserOnline)
|
||||
alias = aliasUserOnline;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn_Core.GetColumnName(dbCol, false), SaxDbDfn_Core.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn_Core.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SaxDbDfn_Core.GetColTextLen(dbCol);
|
||||
}
|
||||
public override ColumnDfn GetUserOnlineColumnDfn(SaxUserOnline.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
//-----------------------------------------------------------
|
||||
case SaxUserOnline.Column.Pos:
|
||||
SetUserOnlineColDfn(columnDfn, "Pos", 60, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
case SaxUserOnline.Column.UserAccountId:
|
||||
SetUserOnlineColDfn(columnDfn, "User Id", 80, SaxDbDfn_Core.ColumnIdx.UserOnline_UserAccountId, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserOnline.Column.OnlineOn:
|
||||
SetUserOnlineColDfn(columnDfn, "Online", 80, SaxDbDfn_Core.ColumnIdx.UserOnline_OnlineAt, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserOnline.Column.OnlineAt:
|
||||
SetUserOnlineColDfn(columnDfn, "Online", 100, SaxDbDfn_Core.ColumnIdx.UserOnline_OnlineAt, ColumnAlignment.Center, DataValue.DataType.DateTime);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-------------------------------------------------------
|
||||
// User properties.
|
||||
case SaxUserOnline.Column.EmailAddress:
|
||||
SetUserOnlineColDfn(columnDfn, "Email", 160, SaxDbDfn_Core.ColumnIdx.UserAccount_EmailAddress, ColumnAlignment.Left, DataValue.DataType.String, aliasUserOnline_UserAccount, prefixUserOnline_UserAccount);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserOnline.Column.DisplayName:
|
||||
SetUserOnlineColDfn(columnDfn, "User", 160, SaxDbDfn_Core.ColumnIdx.UserAccount_LastName, ColumnAlignment.Left, DataValue.DataType.String, aliasUserOnline_UserAccount, prefixUserOnline_UserAccount);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserOnline.Column.Title:
|
||||
SetUserOnlineColDfn(columnDfn, "Title", 70, SaxDbDfn_Core.ColumnIdx.UserAccount_Title, ColumnAlignment.Left, DataValue.DataType.String, aliasUserOnline_UserAccount, prefixUserOnline_UserAccount);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserOnline.Column.FirstName:
|
||||
SetUserOnlineColDfn(columnDfn, "First name", 120, SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName, ColumnAlignment.Left, DataValue.DataType.String, aliasUserOnline_UserAccount, prefixUserOnline_UserAccount);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserOnline.Column.LastName:
|
||||
SetUserOnlineColDfn(columnDfn, "Last name", 120, SaxDbDfn_Core.ColumnIdx.UserAccount_LastName, ColumnAlignment.Left, DataValue.DataType.String, aliasUserOnline_UserAccount, prefixUserOnline_UserAccount);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserOnline.Column.LastLoginOn:
|
||||
SetUserOnlineColDfn(columnDfn, "Last login on", 80, SaxDbDfn_Core.ColumnIdx.UserAccount_LastLoginAt, ColumnAlignment.Center, DataValue.DataType.Date, aliasUserOnline_UserAccount, prefixUserOnline_UserAccount);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserOnline.Column.LastLoginAt:
|
||||
SetUserOnlineColDfn(columnDfn, "Last login", 100, SaxDbDfn_Core.ColumnIdx.UserAccount_LastLoginAt, ColumnAlignment.Center, DataValue.DataType.DateTime, aliasUserOnline_UserAccount, prefixUserOnline_UserAccount);
|
||||
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> GetUserOnlineQueryFilter(SaxUserOnline.Params prm)
|
||||
{
|
||||
List<String> filter = new List<String>();
|
||||
|
||||
// User accounts.
|
||||
String userAccountIdsIncluded = prm.UserAccountIdsIncluded.Concat(",");
|
||||
if (!userAccountIdsIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOnline_UserAccountId, aliasUserOnline) + " IN (" + userAccountIdsIncluded + ")");
|
||||
|
||||
// Online On.
|
||||
if (DateUtil.IsValid(prm.OnlineOnFrom))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOnline_OnlineAt, aliasUserOnline) + ">=" + DbQuery.FormatDateForCondition(prm.OnlineOnFrom));
|
||||
if (DateUtil.IsValid(prm.OnlineOnTo))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOnline_OnlineAt, aliasUserOnline) + "<" + DbQuery.FormatDateForCondition(DateUtil.IncrementDate(prm.OnlineOnTo, 1)));
|
||||
|
||||
// User Account filters.
|
||||
String aliasUserOnline_UserAccount = StringUtil.OnEmpty(prm.Alias_UserAccount, SaxAccountMgr_Dbas.aliasUserOnline_UserAccount);
|
||||
List<String> userAccountFilters = new List<string>();
|
||||
// User filter - partial.
|
||||
userAccountFilters.AddRange(GetUserAccountFilters(prm.UserFilter, aliasUserOnline_UserAccount));
|
||||
userAccountFilters.AddRange(GetPartialUserAccountFilters(prm.UserFilterPartial, aliasUserOnline_UserAccount));
|
||||
// Sport Ids.
|
||||
String aliasUserOnline_UserSport = StringUtil.OnEmpty(prm.Alias_UserSport, SaxAccountMgr_Dbas.aliasUserOnline_UserSport);
|
||||
String sportIdsIncluded = prm.SportIdsIncluded.Concat(",");
|
||||
if (!sportIdsIncluded.IsEmpty())
|
||||
{
|
||||
List<String> userSportFilters = new List<string>();
|
||||
userSportFilters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_SportId, aliasUserOnline_UserSport) + " IN (" + sportIdsIncluded + ")");
|
||||
if (!userSportFilters.IsEmpty())
|
||||
{
|
||||
if (prm.Alias_UserSport.IsEmpty())
|
||||
{
|
||||
// User Sport table is not linked in query.
|
||||
DbQuery userSportQuery = new DbQuery(CoreDatabase.DbmsType);
|
||||
userSportQuery.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserSport), aliasUserOnline_UserSport);
|
||||
userSportQuery.Columns.Add("1");
|
||||
userSportQuery.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_UserAccountId, aliasUserOnline_UserSport) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserOnline_UserAccount));
|
||||
userSportQuery.Filters.AddRange(userSportFilters);
|
||||
filter.Add("Exists(" + userSportQuery.BuildQuery() + ")");
|
||||
}
|
||||
else
|
||||
// User Sport table is already linked in the query.
|
||||
filter.AddRange(userSportFilters);
|
||||
}
|
||||
}
|
||||
// Region Ids.
|
||||
String regionIdsIncluded = prm.RegionIdsIncluded.Concat(",");
|
||||
if (!regionIdsIncluded.IsEmpty())
|
||||
{
|
||||
List<String> userRegionFilters = new List<string>();
|
||||
userRegionFilters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_RegionIdCountry, aliasUserOnline_UserAccount) + " IN (" + regionIdsIncluded + ")");
|
||||
userRegionFilters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_RegionIdProvince, aliasUserOnline_UserAccount) + " IN (" + regionIdsIncluded + ")");
|
||||
userAccountFilters.Add(userRegionFilters.Concat(" OR ", "", ""));
|
||||
}
|
||||
// User Account filter.
|
||||
if (!userAccountFilters.IsEmpty())
|
||||
{
|
||||
if (prm.Alias_UserAccount.IsEmpty())
|
||||
{
|
||||
// User Account table is not linked in query.
|
||||
DbQuery userAccountQuery = new DbQuery(CoreDatabase.DbmsType);
|
||||
userAccountQuery.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserAccount), aliasUserOnline_UserAccount);
|
||||
userAccountQuery.Columns.Add("1");
|
||||
userAccountQuery.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserOnline_UserAccount) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOnline_UserAccountId, aliasUserOnline));
|
||||
userAccountQuery.Filters.AddRange(userAccountFilters);
|
||||
filter.Add("Exists(" + userAccountQuery.BuildQuery() + ")");
|
||||
}
|
||||
else
|
||||
// User Account table is already linked in the query.
|
||||
filter.AddRange(userAccountFilters);
|
||||
}
|
||||
|
||||
if (filter.Count < 1) filter.Add("1=1");
|
||||
return filter;
|
||||
}
|
||||
// Item sort columns.
|
||||
public List<String> GetUserOnlineSortColumns(SaxUserOnline.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
List<String> sortColumnNames = new List<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for UserOnline columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SaxDbDfn_Core.GetTableForColumn((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn_Core.TableIdx.UserOnline)
|
||||
{
|
||||
sortCol = SaxDbDfn_Core.GetColumnNameQual((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn, aliasUserOnline);
|
||||
}
|
||||
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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOnline_OnlineAt, aliasUserOnline) + " DESC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item count.
|
||||
private long GetUserOnlineCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return CoreDatabase.GetRowCount(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserOnline) + " As " + aliasUserOnline, filter);
|
||||
}
|
||||
public override long GetUserOnlineCount(SaxUserOnline.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetUserOnlineCount(GetUserOnlineQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item list.
|
||||
public override List<SaxUserOnline> GetUserOnlineList(SaxUserOnline.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<SaxUserOnline> userOnlines = new List<SaxUserOnline>();
|
||||
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserOnline), aliasUserOnline);
|
||||
UserOnline_Db dbUserOnline = new UserOnline_Db(CoreDbInfo);
|
||||
qry.Columns.AddRange(dbUserOnline.ExistingColumnNames);
|
||||
qry.Filters.AddRange(GetUserOnlineQueryFilter(prm));
|
||||
qry.OrderBy.AddRange(GetUserOnlineSortColumns(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())
|
||||
{
|
||||
dbUserOnline = new UserOnline_Db(CoreDbInfo);
|
||||
dbUserOnline.PopulateFrom(dbDataReader);
|
||||
userOnlines.Add(CreateUserOnline(dbUserOnline));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return userOnlines;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item query execution.
|
||||
public override DbResultSet ExecuteUserOnlineQuery(List<ColumnDfn> columns, SaxUserOnline.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(CoreDatabase.DbmsType);
|
||||
query.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserOnline), aliasUserOnline);
|
||||
|
||||
// Add columns as defined in query list.
|
||||
if (columns.HasId(SaxUserOnline.Column.UserAccountId))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOnline_UserAccountId, aliasUserOnline));
|
||||
if (columns.HasId(SaxUserOnline.Column.OnlineOn) || columns.HasId(SaxUserOnline.Column.OnlineAt))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOnline_OnlineAt, aliasUserOnline));
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// User Account.
|
||||
bool hasUserAccountCols = columns.HasId(SaxUserOnline.Column.EmailAddress) || columns.HasId(SaxUserOnline.Column.DisplayName) || columns.HasId(SaxUserOnline.Column.Title) || columns.HasId(SaxUserOnline.Column.FirstName) || columns.HasId(SaxUserOnline.Column.LastName) || columns.HasId(SaxUserOnline.Column.LastLoginOn) || columns.HasId(SaxUserOnline.Column.LastLoginAt);
|
||||
if (hasUserAccountCols)
|
||||
{
|
||||
prm.Alias_UserAccount = aliasUserOnline_UserAccount;
|
||||
DbQueryJoin joinUserAccount = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinUserAccount.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserAccount), aliasUserOnline_UserAccount);
|
||||
joinUserAccount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserOnline_UserAccount) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOnline_UserAccountId, aliasUserOnline));
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
if (columns.HasId(SaxUserOnline.Column.EmailAddress))
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_EmailAddress);
|
||||
if (columns.HasId(SaxUserOnline.Column.DisplayName) || columns.HasId(SaxUserOnline.Column.Title))
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_Title);
|
||||
if (columns.HasId(SaxUserOnline.Column.DisplayName) || columns.HasId(SaxUserOnline.Column.FirstName))
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName);
|
||||
if (columns.HasId(SaxUserOnline.Column.DisplayName) || columns.HasId(SaxUserOnline.Column.LastName))
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_LastName);
|
||||
if (columns.HasId(SaxUserOnline.Column.LastLoginOn) || columns.HasId(SaxUserOnline.Column.LastLoginAt))
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_LastLoginAt);
|
||||
if (cols.Count > 0)
|
||||
{
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasUserOnline_UserAccount), prefixUserOnline_UserAccount + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
query.Joins.Add(joinUserAccount);
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetUserOnlineQueryFilter(prm));
|
||||
|
||||
if (prm.UserAccountIdsIncluded.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetUserOnlineSortColumns(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,843 @@
|
||||
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;
|
||||
using Saxonite.Net.Standard.Dbas.Internal.Core;
|
||||
|
||||
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.GetOrganisationRoles().ToList().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($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
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 item.
|
||||
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;
|
||||
|
||||
// User Organisations are logically deleted by changing the status.
|
||||
userOrganisation.Status = SaStatus.Deleted;
|
||||
return UpdateUserOrganisation(userOrganisation, dbUpdateInfo);
|
||||
|
||||
/*
|
||||
* Physical deletion.
|
||||
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=" + userOrganisation.Id.ToString());
|
||||
// Delete item.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.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.OrganisationRoleCount;
|
||||
dbUserOrganisation._AdminComment = userOrganisation.AdminComment;
|
||||
// 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);
|
||||
userOrganisation.AdminComment = dbUserOrganisation._AdminComment;
|
||||
// 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 = "UsrOrg";
|
||||
private static readonly String aliasUserOrganisation_UserAccount = "UsrOrg_Usr";
|
||||
private static readonly String prefixUserOrganisation_UserAccount = "UsrOrg_Usr_";
|
||||
private static readonly String aliasUserOrganisation_Organisation = "UsrOrg_Org";
|
||||
private static readonly String prefixUserOrganisation_Organisation = "UsrOrg_Org_";
|
||||
private static readonly String aliasUserOrganisation_Organisation_Region = "UsrOrg_Org_Rgn";
|
||||
private static readonly String prefixUserOrganisation_Organisation_Region = "UsrOrg_Org_Rgn_";
|
||||
private static readonly String aliasUserOrganisation_Organisation_Sport = "UsrOrg_Org_Spt";
|
||||
private static readonly String prefixUserOrganisation_Organisation_Sport = "UsrOrg_Org_Spt_";
|
||||
private static readonly String dataName_UserOrganisation_Organisation_Member_Count = "UsrOrg_Org_Mbr_Count";
|
||||
private static readonly String dataName_UserOrganisation_Organisation_Opportunity_Count = "UsrOrg_Org_Opp_Count";
|
||||
private static readonly String dataName_UserOrganisation_Organisation_LogoImage_Count = "UsrOrg_Org_Logo_Count";
|
||||
private void SetUserOrganisationColDfn
|
||||
(ColumnDfn col, String caption, int width, SaxDbDfn_Core.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SaxDbDfn_Core.GetTableForColumn(dbCol) == SaxDbDfn_Core.TableIdx.UserOrganisation)
|
||||
alias = aliasUserOrganisation;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn_Core.GetColumnName(dbCol, false), SaxDbDfn_Core.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn_Core.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SaxDbDfn_Core.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_Core.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_Core.ColumnIdx.UserOrganisation_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserOrganisation.Column.UserAccountId:
|
||||
SetUserOrganisationColDfn(columnDfn, "User Id", 80, SaxDbDfn_Core.ColumnIdx.UserOrganisation_UserAccountId, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserOrganisation.Column.OrganisationId:
|
||||
SetUserOrganisationColDfn(columnDfn, "Organisation Id", 80, SaxDbDfn_Core.ColumnIdx.UserOrganisation_OrganisationId, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-------------------------------------------------------
|
||||
// Organisation roles.
|
||||
case SaxUserOrganisation.Column.OrganisationRoleCount:
|
||||
SetUserOrganisationColDfn(columnDfn, "Role count", 80, SaxDbDfn_Core.ColumnIdx.UserOrganisation_OrganisationRoleCount, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserOrganisation.Column.OrganisationRoleCodes:
|
||||
SetUserOrganisationColDfn(columnDfn, "Roles", 100, SaxDbDfn_Core.ColumnIdx.UserOrganisation_OrganisationRoleCodes, ColumnAlignment.Left);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserOrganisation.Column.OrganisationRoleDescs:
|
||||
SetUserOrganisationColDfn(columnDfn, "Roles", 100, SaxDbDfn_Core.ColumnIdx.UserOrganisation_OrganisationRoleCodes, ColumnAlignment.Left);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-------------------------------------------------------
|
||||
// User.
|
||||
case SaxUserOrganisation.Column.User_EmailAddress:
|
||||
SetUserOrganisationColDfn(columnDfn, "Email address", 160, SaxDbDfn_Core.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_Core.ColumnIdx.Unknown, ColumnAlignment.Left, DataValue.DataType.String);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserOrganisation.Column.User_Title:
|
||||
SetUserOrganisationColDfn(columnDfn, "Title", 80, SaxDbDfn_Core.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_Core.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_Core.ColumnIdx.UserAccount_LastName, ColumnAlignment.Left, DataValue.DataType.String, aliasUserOrganisation_UserAccount, prefixUserOrganisation_UserAccount);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserOrganisation.Column.User_Status:
|
||||
SetUserOrganisationColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.UserAccount_Status, ColumnAlignment.Center, DataValue.DataType.String, aliasUserOrganisation_UserAccount, prefixUserOrganisation_UserAccount);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserOrganisation.Column.User_Status_Desc:
|
||||
SetUserOrganisationColDfn(columnDfn, "Status", 90, SaxDbDfn_Core.ColumnIdx.UserAccount_Status, ColumnAlignment.Center, DataValue.DataType.String, aliasUserOrganisation_UserAccount, prefixUserOrganisation_UserAccount);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-------------------------------------------------------
|
||||
// Organisation.
|
||||
case SaxUserOrganisation.Column.Organisation_Name:
|
||||
SetUserOrganisationColDfn(columnDfn, "Organisation", 160, SaxDbDfn_Core.ColumnIdx.Organisation_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasUserOrganisation_Organisation, prefixUserOrganisation_Organisation);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserOrganisation.Column.Organisation_Category:
|
||||
SetUserOrganisationColDfn(columnDfn, "Category", 60, SaxDbDfn_Core.ColumnIdx.Organisation_OrganisationCategory, ColumnAlignment.Center, DataValue.DataType.Long, aliasUserOrganisation_Organisation, prefixUserOrganisation_Organisation);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserOrganisation.Column.Organisation_Type:
|
||||
SetUserOrganisationColDfn(columnDfn, "Type", 60, SaxDbDfn_Core.ColumnIdx.Organisation_OrganisationType, ColumnAlignment.Center, DataValue.DataType.Long, aliasUserOrganisation_Organisation, prefixUserOrganisation_Organisation);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserOrganisation.Column.Organisation_RegionId:
|
||||
SetUserOrganisationColDfn(columnDfn, "Organisation region Id", 80, SaxDbDfn_Core.ColumnIdx.Organisation_RegionIdPrimary, ColumnAlignment.Right, DataValue.DataType.Long, aliasUserOrganisation_Organisation, prefixUserOrganisation_Organisation);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserOrganisation.Column.Organisation_Region_Name:
|
||||
SetUserOrganisationColDfn(columnDfn, "Organisation region", 160, SaxDbDfn_Core.ColumnIdx.Region_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasUserOrganisation_Organisation_Region, prefixUserOrganisation_Organisation_Region);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserOrganisation.Column.Organisation_SportId:
|
||||
SetUserOrganisationColDfn(columnDfn, "Organisation sport Id", 80, SaxDbDfn_Core.ColumnIdx.Organisation_SportIdPrimary, ColumnAlignment.Right, DataValue.DataType.Long, aliasUserOrganisation_Organisation, prefixUserOrganisation_Organisation);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserOrganisation.Column.Organisation_Sport_Name:
|
||||
SetUserOrganisationColDfn(columnDfn, "Organisation sport", 160, SaxDbDfn_Core.ColumnIdx.Sport_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasUserOrganisation_Organisation_Sport, prefixUserOrganisation_Organisation_Sport);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
// Derived properties.
|
||||
case SaxUserOrganisation.Column.Organisation_Member_Count:
|
||||
SetUserOrganisationColDfn(columnDfn, "Members", 76, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.DataName = dataName_UserOrganisation_Organisation_Member_Count;
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserOrganisation.Column.Organisation_Opportunity_Count:
|
||||
SetUserOrganisationColDfn(columnDfn, "Opportunities", 76, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.DataName = dataName_UserOrganisation_Organisation_Opportunity_Count;
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserOrganisation.Column.Organisation_LogoImage_Count:
|
||||
SetOrganisationColDfn(columnDfn, "Logos", 76, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.DataName = dataName_UserOrganisation_Organisation_LogoImage_Count;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Properties.
|
||||
case SaxUserOrganisation.Column.AdminComment:
|
||||
SetUserOrganisationColDfn(columnDfn, "Comment", 240, SaxDbDfn_Core.ColumnIdx.UserOrganisation_AdminComment);
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Derived properties.
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Common properties.
|
||||
case SaxUserOrganisation.Column.Notes:
|
||||
SetUserOrganisationColDfn(columnDfn, "Notes", 240, SaxDbDfn_Core.ColumnIdx.UserOrganisation_Notes);
|
||||
break;
|
||||
case SaxUserOrganisation.Column.Flags:
|
||||
SetUserOrganisationColDfn(columnDfn, "Flags", 60, SaxDbDfn_Core.ColumnIdx.UserOrganisation_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxUserOrganisation.Column.Status:
|
||||
SetUserOrganisationColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.UserOrganisation_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxUserOrganisation.Column.Status_Desc:
|
||||
SetUserOrganisationColDfn(columnDfn, "Status", 90, SaxDbDfn_Core.ColumnIdx.UserOrganisation_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxUserOrganisation.Column.Status_Ind:
|
||||
SetUserOrganisationColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.UserOrganisation_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SaxUserOrganisation.Column.CreateOn_Date:
|
||||
SetUserOrganisationColDfn(columnDfn, "Created", 80, SaxDbDfn_Core.ColumnIdx.UserOrganisation_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserOrganisation.Column.UpdateOn_Date:
|
||||
SetUserOrganisationColDfn(columnDfn, "Updated", 80, SaxDbDfn_Core.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>();
|
||||
String aliasUserOrganisation = StringUtil.OnEmpty(prm.Alias_UserOrganisation, SaxAccountMgr_Dbas.aliasUserOrganisation);
|
||||
|
||||
// Item Ids.
|
||||
String colUserOrganisation_Id = SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_Id, aliasUserOrganisation);
|
||||
if (prm.IdsIncluded.HasValidIds())
|
||||
filter.Add($"{colUserOrganisation_Id} IN ({prm.IdsIncluded.Concat(",")})");
|
||||
if (prm.IdsExcluded.HasValidIds())
|
||||
filter.Add($"{colUserOrganisation_Id} NOT IN ({prm.IdsExcluded.Concat(",")})");
|
||||
|
||||
// User accounts.
|
||||
if (prm.UserAccountIdsIncluded.HasValidIds())
|
||||
filter.Add($"{SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_UserAccountId, aliasUserOrganisation)} IN ({prm.UserAccountIdsIncluded.Concat(",")})");
|
||||
|
||||
// User Account filters.
|
||||
if (StringUtil.IsEmpty(prm.Alias_UserAccount))
|
||||
{
|
||||
// User Account table isn't linked - use sub-query.
|
||||
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserAccount), aliasUserOrganisation_UserAccount);
|
||||
qry.Columns.Add("1");
|
||||
// Construct required filters.
|
||||
if (prm.UserAccountStatusCat != SaxUserAccount.StatusCat.Any)
|
||||
qry.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Status, aliasUserOrganisation_UserAccount) + GetUserAccountStatusCatFilterCondition(prm.UserAccountStatusCat));
|
||||
if (!StringUtil.IsEmpty(prm.UserFilter))
|
||||
qry.Filters.AddRange(SaxAccountMgr_Dbas.GetUserAccountFilters(prm.UserFilter, aliasUserOrganisation_UserAccount));
|
||||
if (!StringUtil.IsEmpty(prm.UserFilterPartial))
|
||||
qry.Filters.AddRange(SaxAccountMgr_Dbas.GetPartialUserAccountFilters(prm.UserFilterPartial, aliasUserOrganisation_UserAccount));
|
||||
if (!qry.Filters.IsEmpty())
|
||||
{
|
||||
// At least one User Account filter has been applied. Include Id filter and construct main query filter.
|
||||
qry.Filters.Add($"{SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserOrganisation_UserAccount)}={SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_UserAccountId, aliasUserOrganisation)}");
|
||||
filter.Add($"Exists ({qry.BuildQuery()})");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// User Account table is linked - filter directly.
|
||||
if (prm.UserAccountStatusCat != SaxUserAccount.StatusCat.Any)
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Status, prm.Alias_UserAccount) + GetUserAccountStatusCatFilterCondition(prm.UserAccountStatusCat));
|
||||
if (!StringUtil.IsEmpty(prm.UserFilter))
|
||||
filter.AddRange(SaxAccountMgr_Dbas.GetUserAccountFilters(prm.UserFilter, prm.Alias_UserAccount));
|
||||
if (!StringUtil.IsEmpty(prm.UserFilterPartial))
|
||||
filter.AddRange(SaxAccountMgr_Dbas.GetPartialUserAccountFilters(prm.UserFilterPartial, prm.Alias_UserAccount));
|
||||
}
|
||||
|
||||
// Organisations.
|
||||
String organisationIdsIncluded = prm.OrganisationIdsIncluded.Concat(",");
|
||||
if (!organisationIdsIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_OrganisationId, aliasUserOrganisation) + " IN (" + organisationIdsIncluded + ")");
|
||||
|
||||
// Scheduled events.
|
||||
if (prm.OrganisationHasScheduledEvents)
|
||||
{
|
||||
// Sub-query on Organisation Events.
|
||||
String aliasOrganisationEvent = "UsrOrg_OrgEvt";
|
||||
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.OrganisationEvent), aliasOrganisationEvent);
|
||||
qry.Columns.Add("1");
|
||||
qry.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_OrganisationId, aliasOrganisationEvent) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_OrganisationId, aliasUserOrganisation));
|
||||
qry.Filters.Add($"{SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_EventAt, aliasOrganisationEvent)}>=DateAdd(day,-7,GetDate())");
|
||||
qry.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Status, aliasOrganisationEvent) + GetOrganisationStatusCatFilterCondition(prm.OrganisationStatusCat));
|
||||
filter.Add($"Exists ({qry.BuildQuery()})");
|
||||
}
|
||||
|
||||
// Organisation status.
|
||||
if (prm.OrganisationStatusCat != SaxOrganisation.StatusCat.Any)
|
||||
{
|
||||
if (StringUtil.IsEmpty(prm.Alias_Organisation))
|
||||
{
|
||||
// User Account table isn't linked.
|
||||
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Organisation), aliasUserOrganisation_Organisation);
|
||||
qry.Columns.Add("1");
|
||||
qry.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_Id, aliasUserOrganisation_Organisation) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_OrganisationId, aliasUserOrganisation));
|
||||
qry.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_Status, aliasUserOrganisation_Organisation) + GetOrganisationStatusCatFilterCondition(prm.OrganisationStatusCat));
|
||||
filter.Add($"Exists ({qry.BuildQuery()})");
|
||||
}
|
||||
else
|
||||
// User Account table is linked - filter directly.
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_Status, prm.Alias_Organisation) + GetOrganisationStatusCatFilterCondition(prm.OrganisationStatusCat));
|
||||
}
|
||||
|
||||
// Organisation roles.
|
||||
if (prm.OrganisationMembersOnly)
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_OrganisationRoleCount, aliasUserOrganisation) + ">0");
|
||||
if (!prm.OrganisationRoles.IsEmpty())
|
||||
{
|
||||
foreach (Sax.OrganisationRole organisationRole in prm.OrganisationRoles)
|
||||
{
|
||||
String organisationRoleCode = OrganisationRoleCodes.GetCodeForType(organisationRole).TrimAll();
|
||||
if (!StringUtil.IsEmpty(organisationRoleCode))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_OrganisationRoleCodes, aliasUserOrganisation) + " LIKE '%" + DbQuery.FormatForLike(organisationRoleCode) + "%'");
|
||||
}
|
||||
}
|
||||
if (!prm.OrganisationRolesAny.IsEmpty())
|
||||
{
|
||||
List<String> roleFilter = new List<string>();
|
||||
foreach (Sax.OrganisationRole organisationRole in prm.OrganisationRolesAny)
|
||||
{
|
||||
String organisationRoleCode = OrganisationRoleCodes.GetCodeForType(organisationRole).TrimAll();
|
||||
if (!StringUtil.IsEmpty(organisationRoleCode))
|
||||
roleFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_OrganisationRoleCodes, aliasUserOrganisation) + " LIKE '%" + DbQuery.FormatForLike(organisationRoleCode) + "%'");
|
||||
}
|
||||
if (!roleFilter.IsEmpty())
|
||||
filter.Add(roleFilter.Concat(" OR "));
|
||||
}
|
||||
|
||||
// Notes.
|
||||
if (!StringUtil.IsEmpty(prm.NotesPartial))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_Notes, aliasUserOrganisation) + " LIKE '%" + DbQuery.FormatForLike(prm.NotesPartial) + "%'");
|
||||
|
||||
// Status.
|
||||
if (prm.StatusCat != SaxUserOrganisation.StatusCat.Any)
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_Status, aliasUserOrganisation) + GetUserOrganisationStatusCatFilterCondition(prm.StatusCat));
|
||||
|
||||
if (filter.Count < 1) filter.Add("1=1");
|
||||
return filter;
|
||||
}
|
||||
internal static String GetUserOrganisationStatusCatFilterCondition(SaxUserOrganisation.StatusCat statusCat)
|
||||
{
|
||||
if (statusCat == SaxUserOrganisation.StatusCat.ActiveOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'";
|
||||
if (statusCat == SaxUserOrganisation.StatusCat.NotDeleted)
|
||||
return "!='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
if (statusCat == SaxUserOrganisation.StatusCat.DeletedOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
return "";
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// 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_Core.GetTableForColumn((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn_Core.TableIdx.UserOrganisation)
|
||||
{
|
||||
sortCol = SaxDbDfn_Core.GetColumnNameQual((SaxDbDfn_Core.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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_Id, aliasUserOrganisation) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item count.
|
||||
private long GetUserOrganisationCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return CoreDatabase.GetRowCount(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.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)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<SaxUserOrganisation> userOrganisations = new List<SaxUserOrganisation>();
|
||||
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.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)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
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_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserOrganisation), aliasUserOrganisation);
|
||||
prm.Alias_UserOrganisation = aliasUserOrganisation;
|
||||
|
||||
// Add columns as defined in query list.
|
||||
if (columns.HasId(SaxUserOrganisation.Column.Id))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.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) || columns.HasId(SaxUserOrganisation.Column.User_Status) || columns.HasId(SaxUserOrganisation.Column.User_Status_Desc));
|
||||
if (columns.HasId(SaxUserOrganisation.Column.UserAccountId) || hasUserAccountCols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_UserAccountId, aliasUserOrganisation));
|
||||
bool hasOrganisationCols = (columns.HasId(SaxUserOrganisation.Column.Organisation_Name) || columns.HasId(SaxUserOrganisation.Column.Organisation_RegionId) || columns.HasId(SaxUserOrganisation.Column.Organisation_SportId));
|
||||
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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_OrganisationId, aliasUserOrganisation));
|
||||
if (columns.HasId(SaxUserOrganisation.Column.OrganisationRoleCodes) || columns.HasId(SaxUserOrganisation.Column.OrganisationRoleDescs))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_OrganisationRoleCodes, aliasUserOrganisation));
|
||||
if (columns.HasId(SaxUserOrganisation.Column.OrganisationRoleCount))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_OrganisationRoleCount, aliasUserOrganisation));
|
||||
if (columns.HasId(SaxUserOrganisation.Column.AdminComment))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_AdminComment, aliasUserOrganisation));
|
||||
// Common properties.
|
||||
if (columns.HasId(SaxUserOrganisation.Column.Notes))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_Notes, aliasUserOrganisation));
|
||||
if (columns.HasId(SaxUserOrganisation.Column.Flags))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_Status, aliasUserOrganisation));
|
||||
if (columns.HasId(SaxUserOrganisation.Column.CreateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_CreateOn, aliasUserOrganisation));
|
||||
if (columns.HasId(SaxUserOrganisation.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_UpdateOn, aliasUserOrganisation));
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// User Account.
|
||||
if (hasUserAccountCols)
|
||||
{
|
||||
// Inform the parameters that the User Account table is linked.
|
||||
prm.Alias_UserAccount = aliasUserOrganisation_UserAccount;
|
||||
// User Account join.
|
||||
DbQueryJoin joinUserAccount = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinUserAccount.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserAccount), aliasUserOrganisation_UserAccount);
|
||||
joinUserAccount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserOrganisation_UserAccount) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_UserAccountId, aliasUserOrganisation));
|
||||
query.Joins.Add(joinUserAccount);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
if (columns.HasId(SaxUserOrganisation.Column.User_EmailAddress))
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_EmailAddress);
|
||||
if (columns.HasId(SaxUserOrganisation.Column.User_Title) || columns.HasId(SaxUserOrganisation.Column.User_DisplayName))
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_Title);
|
||||
if (columns.HasId(SaxUserOrganisation.Column.User_FirstName) || columns.HasId(SaxUserOrganisation.Column.User_DisplayName))
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName);
|
||||
if (columns.HasId(SaxUserOrganisation.Column.User_LastName) || columns.HasId(SaxUserOrganisation.Column.User_DisplayName))
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_LastName);
|
||||
if (columns.HasId(SaxUserOrganisation.Column.User_Status) || columns.HasId(SaxUserOrganisation.Column.User_Status_Desc))
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_Status);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasUserOrganisation_UserAccount), prefixUserOrganisation_UserAccount + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Organisation.
|
||||
if (hasOrganisationCols || hasOrganisationRegionCols || hasOrganisationSportCols)
|
||||
{
|
||||
// Inform the parameters that the Organisation table is linked.
|
||||
prm.Alias_Organisation = aliasUserOrganisation_Organisation;
|
||||
// Organisation join.
|
||||
DbQueryJoin joinOrganisation = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinOrganisation.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Organisation), aliasUserOrganisation_Organisation);
|
||||
joinOrganisation.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_Id, aliasUserOrganisation_Organisation) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_OrganisationId, aliasUserOrganisation));
|
||||
query.Joins.Add(joinOrganisation);
|
||||
List<SaxDbDfn_Core.ColumnIdx> OrganisationCols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
OrganisationCols.Add(SaxDbDfn_Core.ColumnIdx.Organisation_Name);
|
||||
OrganisationCols.Add(SaxDbDfn_Core.ColumnIdx.Organisation_OrganisationCategory);
|
||||
OrganisationCols.Add(SaxDbDfn_Core.ColumnIdx.Organisation_OrganisationType);
|
||||
OrganisationCols.Add(SaxDbDfn_Core.ColumnIdx.Organisation_RegionIdPrimary);
|
||||
OrganisationCols.Add(SaxDbDfn_Core.ColumnIdx.Organisation_SportIdPrimary);
|
||||
foreach (var col in OrganisationCols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasUserOrganisation_Organisation), prefixUserOrganisation_Organisation + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
|
||||
if (hasOrganisationRegionCols)
|
||||
{
|
||||
DbQueryJoin joinOrganisationRegion = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinOrganisationRegion.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Region), aliasUserOrganisation_Organisation_Region);
|
||||
joinOrganisationRegion.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_Id, aliasUserOrganisation_Organisation_Region) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_RegionIdPrimary, aliasUserOrganisation_Organisation));
|
||||
query.Joins.Add(joinOrganisationRegion);
|
||||
List<SaxDbDfn_Core.ColumnIdx> regionCols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
regionCols.Add(SaxDbDfn_Core.ColumnIdx.Region_Name);
|
||||
foreach (var col in regionCols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasUserOrganisation_Organisation_Region), prefixUserOrganisation_Organisation_Region + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
if (hasOrganisationSportCols)
|
||||
{
|
||||
DbQueryJoin joinOrganisationSport = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinOrganisationSport.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Sport), aliasUserOrganisation_Organisation_Sport);
|
||||
joinOrganisationSport.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_Id, aliasUserOrganisation_Organisation_Sport) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_SportIdPrimary, aliasUserOrganisation_Organisation));
|
||||
query.Joins.Add(joinOrganisationSport);
|
||||
List<SaxDbDfn_Core.ColumnIdx> regionCols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
regionCols.Add(SaxDbDfn_Core.ColumnIdx.Sport_Name);
|
||||
foreach (var col in regionCols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasUserOrganisation_Organisation_Sport), prefixUserOrganisation_Organisation_Sport + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Organisation Member count.
|
||||
if (columns.HasId(SaxUserOrganisation.Column.Organisation_Member_Count))
|
||||
{
|
||||
// Count 'Member' entries on User Organisation for the Organisation.
|
||||
String aliasOrgMbr = "OrgMbr";
|
||||
DbQuery qryOrgMbr = new DbQuery(CoreDatabase.DbmsType);
|
||||
qryOrgMbr.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserOrganisation), aliasOrgMbr);
|
||||
qryOrgMbr.Columns.Add("Count(*)");
|
||||
qryOrgMbr.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_OrganisationId, aliasOrgMbr) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_OrganisationId, aliasUserOrganisation));
|
||||
qryOrgMbr.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_OrganisationRoleCount, aliasOrgMbr) + ">0");
|
||||
qryOrgMbr.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_Status, aliasOrgMbr) + "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'");
|
||||
// Join to User Account.
|
||||
String aliasUserAccount = "aUsrOrg_UsrAcc";
|
||||
DbQueryJoin joinUserAccount = new DbQueryJoin(DbJoinType.Inner);
|
||||
joinUserAccount.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserAccount), aliasUserAccount);
|
||||
joinUserAccount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserAccount) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_UserAccountId, aliasOrgMbr));
|
||||
joinUserAccount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Status, aliasUserAccount) + "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'");
|
||||
qryOrgMbr.Joins.Add(joinUserAccount);
|
||||
// Construct sub-query.
|
||||
query.Columns.Add("(" + qryOrgMbr.BuildQuery() + ")", dataName_UserOrganisation_Organisation_Member_Count);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Organisation Opportunity count.
|
||||
if (columns.HasId(SaxUserOrganisation.Column.Organisation_Opportunity_Count))
|
||||
{
|
||||
// Count Organisation Opportunities.
|
||||
String aliasOrgOpp = "OrgOpp";
|
||||
DbQuery qryOrgOpp = new DbQuery(CoreDatabase.DbmsType);
|
||||
qryOrgOpp.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.OrganisationOpportunity), aliasOrgOpp);
|
||||
qryOrgOpp.Columns.Add("Count(*)");
|
||||
qryOrgOpp.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_OrganisationId, aliasOrgOpp) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_OrganisationId, aliasUserOrganisation));
|
||||
// ToDo Should be limited by expiry etc.
|
||||
query.Columns.Add("(" + qryOrgOpp.BuildQuery() + ")", dataName_UserOrganisation_Organisation_Opportunity_Count);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Organisation Logo Image count.
|
||||
if (columns.HasId(SaxUserOrganisation.Column.Organisation_LogoImage_Count))
|
||||
{
|
||||
String aliasLogoCount = "Img_Org_Logo";
|
||||
DbQuery queryLogoCount = new DbQuery(CoreDatabase.DbmsType);
|
||||
queryLogoCount.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ItemImage), aliasLogoCount);
|
||||
queryLogoCount.Columns.Add("Count(*)");
|
||||
queryLogoCount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_ItemType, aliasLogoCount) + "=" + (int)Sax.DataItemType.Organisation);
|
||||
queryLogoCount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_ItemId, aliasLogoCount) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_OrganisationId, aliasUserOrganisation));
|
||||
queryLogoCount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_ImageType, aliasLogoCount) + "=" + (int)Sax.ImageType.OrganisationLogo);
|
||||
queryLogoCount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_Status, aliasLogoCount) + "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'");
|
||||
// Construct sub-query.
|
||||
query.Columns.Add("(" + queryLogoCount.BuildQuery() + ")", dataName_UserOrganisation_Organisation_LogoImage_Count);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// 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,586 @@
|
||||
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;
|
||||
using Saxonite.Net.Standard.Dbas.Internal.Core;
|
||||
|
||||
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)UserRoleCodes.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($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
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 item.
|
||||
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;
|
||||
|
||||
// User Roles are logically deleted by changing the status.
|
||||
userRole.Status = SaStatus.Deleted;
|
||||
return UpdateUserRole(userRole, dbUpdateInfo);
|
||||
|
||||
/*
|
||||
* Physical deletion.
|
||||
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=" + userRole.Id.ToString());
|
||||
// Delete item.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.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.ToLong(userRole.Id);
|
||||
dbUserRole._UserAccountId = SysId.ToInt(userRole.UserAccountId);
|
||||
dbUserRole._UserRoleCode = UserRoleCodes.GetCodeForType(userRole.UserRole);
|
||||
// Login.
|
||||
dbUserRole._LastLoginAt = userRole.LastLoginAt;
|
||||
dbUserRole._LastInvalidLoginAt = userRole.LastInvalidLoginAt;
|
||||
dbUserRole._InvalidLoginCount = userRole.InvalidLoginCount;
|
||||
// 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);
|
||||
// Login.
|
||||
userRole.LastLoginAt = dbUserRole._LastLoginAt;
|
||||
userRole.LastInvalidLoginAt = dbUserRole._LastInvalidLoginAt;
|
||||
userRole.InvalidLoginCount = dbUserRole._InvalidLoginCount;
|
||||
// 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_Core.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SaxDbDfn_Core.GetTableForColumn(dbCol) == SaxDbDfn_Core.TableIdx.UserRole)
|
||||
alias = aliasUserRole;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn_Core.GetColumnName(dbCol, false), SaxDbDfn_Core.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn_Core.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SaxDbDfn_Core.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_Core.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_Core.ColumnIdx.UserRole_UserAccountId, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserRole.Column.Id:
|
||||
SetUserRoleColDfn(columnDfn, "Id", 80, SaxDbDfn_Core.ColumnIdx.UserRole_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserRole.Column.UserRole:
|
||||
SetUserRoleColDfn(columnDfn, "Role", 120, SaxDbDfn_Core.ColumnIdx.UserRole_UserRoleCode, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-------------------------------------------------------
|
||||
// Login.
|
||||
case SaxUserRole.Column.LastLoginOn:
|
||||
SetUserRoleColDfn(columnDfn, "Last login", 100, SaxDbDfn_Core.ColumnIdx.UserRole_LastLoginAt, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserRole.Column.LastLoginAt:
|
||||
SetUserRoleColDfn(columnDfn, "Last login", 120, SaxDbDfn_Core.ColumnIdx.UserRole_LastLoginAt, ColumnAlignment.Center, DataValue.DataType.DateTime);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserRole.Column.LastInvalidLoginOn:
|
||||
SetUserRoleColDfn(columnDfn, "Last invalid login", 100, SaxDbDfn_Core.ColumnIdx.UserRole_LastInvalidLoginAt, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserRole.Column.LastInvalidLoginAt:
|
||||
SetUserRoleColDfn(columnDfn, "Last invalid login", 100, SaxDbDfn_Core.ColumnIdx.UserRole_LastInvalidLoginAt, ColumnAlignment.Center, DataValue.DataType.DateTime);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserRole.Column.InvalidLoginCount:
|
||||
SetUserRoleColDfn(columnDfn, "Invalid logins", 80, SaxDbDfn_Core.ColumnIdx.UserRole_InvalidLoginCount, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-------------------------------------------------------
|
||||
// User.
|
||||
case SaxUserRole.Column.User_EmailAddress:
|
||||
SetUserRoleColDfn(columnDfn, "Email address", 160, SaxDbDfn_Core.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_Core.ColumnIdx.Unknown, ColumnAlignment.Left, DataValue.DataType.String);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserRole.Column.User_Title:
|
||||
SetUserRoleColDfn(columnDfn, "Title", 80, SaxDbDfn_Core.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_Core.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_Core.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_Core.ColumnIdx.UserRole_Notes);
|
||||
break;
|
||||
case SaxUserRole.Column.Flags:
|
||||
SetUserRoleColDfn(columnDfn, "Flags", 60, SaxDbDfn_Core.ColumnIdx.UserRole_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxUserRole.Column.Status:
|
||||
SetUserRoleColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.UserRole_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxUserRole.Column.Status_Desc:
|
||||
SetUserRoleColDfn(columnDfn, "Status", 90, SaxDbDfn_Core.ColumnIdx.UserRole_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxUserRole.Column.Status_Ind:
|
||||
SetUserRoleColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.UserRole_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SaxUserRole.Column.CreateOn_Date:
|
||||
SetUserRoleColDfn(columnDfn, "Created", 80, SaxDbDfn_Core.ColumnIdx.UserRole_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserRole.Column.UpdateOn_Date:
|
||||
SetUserRoleColDfn(columnDfn, "Updated", 80, SaxDbDfn_Core.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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_Id, aliasUserRole) + " IN (" + idsIncluded + ")");
|
||||
String idsExcluded = prm.IdsExcluded.Concat(",");
|
||||
if (!idsExcluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_Id, aliasUserRole) + " NOT IN (" + idsExcluded + ")");
|
||||
|
||||
// User accounts.
|
||||
String userAccountIdsIncluded = prm.UserAccountIdsIncluded.Concat(",");
|
||||
if (!userAccountIdsIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_UserAccountId, aliasUserRole) + " IN (" + userAccountIdsIncluded + ")");
|
||||
|
||||
// User roles.
|
||||
List<TypeCodeDesc> userRoles = UserRoleCodes;
|
||||
String userRoleCodes = prm.UserRolesIncluded.Select(item => UserRoleCodes.GetCodeForType(item)).ToList().Concat(",", "'", "'", true, true);
|
||||
if (!userRoleCodes.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_UserRoleCode, aliasUserRole) + " IN (" + userRoleCodes + ")");
|
||||
|
||||
// Notes.
|
||||
if (!StringUtil.IsEmpty(prm.NotesPartial))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_Notes, aliasUserRole) + " LIKE '%" + DbQuery.FormatForLike(prm.NotesPartial) + "%'");
|
||||
|
||||
// Status.
|
||||
if (prm.StatusCat != SaxUserRole.StatusCat.Any)
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_Status, aliasUserRole) + GetUserRoleStatusCatFilterCondition(prm.StatusCat));
|
||||
|
||||
if (filter.Count < 1) filter.Add("1=1");
|
||||
return filter;
|
||||
}
|
||||
internal static String GetUserRoleStatusCatFilterCondition(SaxUserRole.StatusCat statusCat)
|
||||
{
|
||||
if (statusCat == SaxUserRole.StatusCat.ActiveOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'";
|
||||
if (statusCat == SaxUserRole.StatusCat.InactiveOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Inactive) + "'";
|
||||
if (statusCat == SaxUserRole.StatusCat.NotDeleted)
|
||||
return "!='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
if (statusCat == SaxUserRole.StatusCat.DeletedOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
return "";
|
||||
}
|
||||
// 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_Core.GetTableForColumn((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn_Core.TableIdx.UserRole)
|
||||
{
|
||||
sortCol = SaxDbDfn_Core.GetColumnNameQual((SaxDbDfn_Core.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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_Id, aliasUserRole) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item count.
|
||||
private long GetUserRoleCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return CoreDatabase.GetRowCount(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.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)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<SaxUserRole> userRoles = new List<SaxUserRole>();
|
||||
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.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)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
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_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserRole), aliasUserRole);
|
||||
|
||||
// Add columns as defined in query list.
|
||||
if (columns.HasId(SaxUserRole.Column.Id))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_UserAccountId, aliasUserRole));
|
||||
if (columns.HasId(SaxUserRole.Column.UserRole) || columns.HasId(SaxUserRole.Column.UserRole_Desc))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_UserRoleCode, aliasUserRole));
|
||||
// Login.
|
||||
if (columns.HasId(SaxUserRole.Column.LastLoginOn) || columns.HasId(SaxUserRole.Column.LastLoginAt))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_LastLoginAt, aliasUserRole));
|
||||
if (columns.HasId(SaxUserRole.Column.LastInvalidLoginOn) || columns.HasId(SaxUserRole.Column.LastInvalidLoginAt))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_LastInvalidLoginAt, aliasUserRole));
|
||||
if (columns.HasId(SaxUserRole.Column.InvalidLoginCount))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_InvalidLoginCount, aliasUserRole));
|
||||
// Common properties.
|
||||
if (columns.HasId(SaxUserRole.Column.Notes))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_Notes, aliasUserRole));
|
||||
if (columns.HasId(SaxUserRole.Column.Flags))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_Status, aliasUserRole));
|
||||
if (columns.HasId(SaxUserRole.Column.CreateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_CreateOn, aliasUserRole));
|
||||
if (columns.HasId(SaxUserRole.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_UpdateOn, aliasUserRole));
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// User Account.
|
||||
if (hasUserAccountCols)
|
||||
{
|
||||
DbQueryJoin joinUserAccount = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinUserAccount.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserAccount), aliasUserRole_UserAccount);
|
||||
joinUserAccount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserRole_UserAccount) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserRole_UserAccountId, aliasUserRole));
|
||||
query.Joins.Add(joinUserAccount);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_EmailAddress);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_Title);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_LastName);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasUserRole_UserAccount), prefixUserRole_UserAccount + SaxDbDfn_Core.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,470 @@
|
||||
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;
|
||||
using Saxonite.Net.Standard.Dbas.Internal.Core;
|
||||
|
||||
namespace Saxonite.Net.Standard.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
partial class SaxAccountMgr_Dbas
|
||||
{
|
||||
//*******************************************************************
|
||||
// Account Mgr - User Session
|
||||
//*******************************************************************
|
||||
// Utilities.
|
||||
private List<StringPair> GetLogProperties(SaxUserSession userSession)
|
||||
{
|
||||
return new List<StringPair>()
|
||||
{
|
||||
new StringPair("UserAccountId",SysId.ToString(userSession.UserAccountId)),
|
||||
};
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create item.
|
||||
public override SaxUserSession CreateUserSession(SysId userAccountId)
|
||||
{
|
||||
ClearErrorState();
|
||||
return new SaxUserSession_Dbas(CoreDatabase, userAccountId, 0);
|
||||
}
|
||||
private SaxUserSession_Dbas CreateUserSession(UserSession_Db dbUserSession)
|
||||
{
|
||||
ClearErrorState();
|
||||
SaxUserSession_Dbas userSession = new SaxUserSession_Dbas(CoreDatabase, new SysId(dbUserSession._UserAccountId), (ushort)dbUserSession._Flags);
|
||||
PopulateFrom(dbUserSession, userSession);
|
||||
return userSession;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get item.
|
||||
public override SaxUserSession GetUserSession(SaxUserSession.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetUserSession(GetUserSessionQueryFilter(prm).Concat(" And ", "(", ")"));
|
||||
}
|
||||
private SaxUserSession GetUserSession(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetUserSessionCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple items found");
|
||||
return null;
|
||||
}
|
||||
SaxUserSession userSession = null;
|
||||
// Query data.
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
UserSession_Db dbUserSession = new UserSession_Db(CoreDbInfo);
|
||||
dbUserSession.PopulateFrom(dbCommand, aliasUserSession, filter);
|
||||
userSession = CreateUserSession(dbUserSession);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return userSession;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate item.
|
||||
public override bool IsValidUserSessionData(SaxUserSession.Data data, SaxUserSession.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidUserSessionData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert item.
|
||||
public override bool InsertUserSession(SaxUserSession userSession, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertUserSession";
|
||||
ClearErrorState();
|
||||
if (!IsValidUserSession(userSession)) return false;
|
||||
if (SysId.IsValid(userSession.Id)) return SetErrorState(ErrorMessage.ValidItemId);
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
UserSession_Db dbUserSession = new UserSession_Db(CoreDbInfo);
|
||||
PopulateTo(dbUserSession, userSession, dbUpdateInfo);
|
||||
if (UserSession_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
//dbUserSession._Id = CoreDatabase.GetNextIdFromTable("UserSession");
|
||||
}
|
||||
dbUserSession.ExecuteInsertCommand(dbCommand);
|
||||
//userSession.Id = new SysId(dbUserSession._Id);
|
||||
userSession.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(userSession).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update item.
|
||||
public override bool UpdateUserSession(SaxUserSession userSession, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdateUserSession";
|
||||
ClearErrorState();
|
||||
if (!IsValidUserSession(userSession)) return false;
|
||||
if (!SysId.IsValid(userSession.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!userSession.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(userSession).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
UserSession_Db dbUserSession = new UserSession_Db(CoreDbInfo);
|
||||
dbUserSession.PopulateFrom(dbCommand, aliasUserSession, "UserAccountId=" + SysId.ToString(userSession.UserAccountId));
|
||||
// Update properties.
|
||||
PopulateTo(dbUserSession, userSession, dbUpdateInfo);
|
||||
dbUserSession.ExecuteUpdateCommand(dbCommand);
|
||||
userSession.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(userSession).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete item.
|
||||
public override bool UserSessionCanBeDeleted(SaxUserSession userSession)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.UserSessionCanBeDeleted(userSession)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteUserSession(SaxUserSession userSession, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeleteUserSession";
|
||||
ClearErrorState();
|
||||
if (!UserSessionCanBeDeleted(userSession)) return false;
|
||||
|
||||
// User Sessions are logically deleted by changing the status.
|
||||
userSession.Status = SaStatus.Deleted;
|
||||
return UpdateUserSession(userSession, dbUpdateInfo);
|
||||
|
||||
/*
|
||||
* Physical deletion.
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
UserSession_Db dbUserSession = new UserSession_Db(CoreDbInfo);
|
||||
dbUserSession.PopulateFrom(dbCommand, aliasUserSession, "UserAccountId=" + SysId.ToString(userSession.UserAccountId));
|
||||
// Delete item.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserSession) + " WHERE UserAccountId=" + SysId.ToString(userSession.UserAccountId) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
userSession.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(userSession).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
*/
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(UserSession_Db dbUserSession, SaxUserSession userSession, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbUserSession._UserAccountId = SysId.ToInt(userSession.UserAccountId);
|
||||
dbUserSession._ActivityIndexIds= SysIdCollection.Concat(userSession.ActivityIndexIds, SaxUserSession.ActivityIndexDelim);
|
||||
dbUserSession._UserSessionData = userSession.UserSessionData;
|
||||
// Common.
|
||||
dbUserSession._Flags = (short)userSession.Flags;
|
||||
if (!DateUtil.IsValid(dbUserSession._CreateOn))
|
||||
{
|
||||
dbUserSession._CreateOn = DateTime.Now;
|
||||
}
|
||||
dbUserSession._UpdateOn = DateTime.Now;
|
||||
}
|
||||
private void PopulateFrom(UserSession_Db dbUserSession, SaxUserSession userSession)
|
||||
{
|
||||
//userSession.UserAccountId = new SysId(dbUserSession._UserAccountId);
|
||||
userSession.ActivityIndexIds = StringListUtil.Split(dbUserSession._ActivityIndexIds, SaxUserSession.ActivityIndexDelim).Select(item => SysId.ToSysId(item)).ToList();
|
||||
userSession.UserSessionData = dbUserSession._UserSessionData;
|
||||
// Common.
|
||||
userSession.SetCreateStamp(dbUserSession._CreateOn, new SysId(), "");
|
||||
userSession.SetUpdateStamp(dbUserSession._UpdateOn, new SysId(), "");
|
||||
userSession.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item column definitions.
|
||||
private static readonly String aliasUserSession = "UsrSes";
|
||||
private static readonly String aliasUserSession_UserAccount = "UsrSes_Usr";
|
||||
private static readonly String prefixUserSession_UserAccount = "UsrSes_Usr_";
|
||||
private void SetUserSessionColDfn
|
||||
(ColumnDfn col, String caption, int width, SaxDbDfn_Core.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SaxDbDfn_Core.GetTableForColumn(dbCol) == SaxDbDfn_Core.TableIdx.UserSession)
|
||||
alias = aliasUserSession;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn_Core.GetColumnName(dbCol, false), SaxDbDfn_Core.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn_Core.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SaxDbDfn_Core.GetColTextLen(dbCol);
|
||||
}
|
||||
public override ColumnDfn GetUserSessionColumnDfn(SaxUserSession.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
//-----------------------------------------------------------
|
||||
case SaxUserSession.Column.Pos:
|
||||
SetUserSessionColDfn(columnDfn, "Pos", 60, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
case SaxUserSession.Column.UserAccountId:
|
||||
SetUserSessionColDfn(columnDfn, "User Id", 80, SaxDbDfn_Core.ColumnIdx.UserSession_UserAccountId, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-------------------------------------------------------
|
||||
// User.
|
||||
case SaxUserSession.Column.User_EmailAddress:
|
||||
SetUserSessionColDfn(columnDfn, "Email address", 160, SaxDbDfn_Core.ColumnIdx.UserAccount_EmailAddress, ColumnAlignment.Left, DataValue.DataType.String, aliasUserSession_UserAccount, prefixUserSession_UserAccount);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserSession.Column.User_DisplayName:
|
||||
SetUserSessionColDfn(columnDfn, "User", 160, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Left, DataValue.DataType.String);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserSession.Column.User_Title:
|
||||
SetUserSessionColDfn(columnDfn, "Title", 80, SaxDbDfn_Core.ColumnIdx.UserAccount_Title, ColumnAlignment.Left, DataValue.DataType.String, aliasUserSession_UserAccount, prefixUserSession_UserAccount);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserSession.Column.User_FirstName:
|
||||
SetUserSessionColDfn(columnDfn, "First name", 120, SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName, ColumnAlignment.Left, DataValue.DataType.String, aliasUserSession_UserAccount, prefixUserSession_UserAccount);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserSession.Column.User_LastName:
|
||||
SetUserSessionColDfn(columnDfn, "Last name", 120, SaxDbDfn_Core.ColumnIdx.UserAccount_LastName, ColumnAlignment.Left, DataValue.DataType.String, aliasUserSession_UserAccount, prefixUserSession_UserAccount);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Derived properties.
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Common properties.
|
||||
case SaxUserSession.Column.Flags:
|
||||
SetUserSessionColDfn(columnDfn, "Flags", 60, SaxDbDfn_Core.ColumnIdx.UserSession_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxUserSession.Column.CreateOn_Date:
|
||||
SetUserSessionColDfn(columnDfn, "Created", 80, SaxDbDfn_Core.ColumnIdx.UserSession_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserSession.Column.UpdateOn_Date:
|
||||
SetUserSessionColDfn(columnDfn, "Updated", 80, SaxDbDfn_Core.ColumnIdx.UserSession_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> GetUserSessionQueryFilter(SaxUserSession.Params prm)
|
||||
{
|
||||
List<String> filter = new List<String>();
|
||||
|
||||
// User accounts.
|
||||
String userAccountIdsIncluded = prm.UserAccountIdsIncluded.Concat(",");
|
||||
if (!userAccountIdsIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSession_UserAccountId, aliasUserSession) + " IN (" + userAccountIdsIncluded + ")");
|
||||
|
||||
if (filter.Count < 1) filter.Add("1=1");
|
||||
return filter;
|
||||
}
|
||||
// Item sort columns.
|
||||
public List<String> GetUserSessionSortColumns(SaxUserSession.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
List<String> sortColumnNames = new List<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for UserSession columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SaxDbDfn_Core.GetTableForColumn((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn_Core.TableIdx.UserSession)
|
||||
{
|
||||
sortCol = SaxDbDfn_Core.GetColumnNameQual((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn, aliasUserSession);
|
||||
}
|
||||
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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSession_UserAccountId, aliasUserSession) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item count.
|
||||
private long GetUserSessionCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return CoreDatabase.GetRowCount(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserSession) + " As " + aliasUserSession, filter);
|
||||
}
|
||||
public override long GetUserSessionCount(SaxUserSession.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetUserSessionCount(GetUserSessionQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item list.
|
||||
public override List<SaxUserSession> GetUserSessionList(SaxUserSession.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<SaxUserSession> userSessions = new List<SaxUserSession>();
|
||||
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserSession), aliasUserSession);
|
||||
UserSession_Db dbUserSession = new UserSession_Db(CoreDbInfo);
|
||||
qry.Columns.AddRange(dbUserSession.ExistingColumnNames);
|
||||
qry.Filters.AddRange(GetUserSessionQueryFilter(prm));
|
||||
qry.OrderBy.AddRange(GetUserSessionSortColumns(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())
|
||||
{
|
||||
dbUserSession = new UserSession_Db(CoreDbInfo);
|
||||
dbUserSession.PopulateFrom(dbDataReader);
|
||||
userSessions.Add(CreateUserSession(dbUserSession));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return userSessions;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item query execution.
|
||||
public override DbResultSet ExecuteUserSessionQuery(List<ColumnDfn> columns, SaxUserSession.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(CoreDatabase.DbmsType);
|
||||
query.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserSession), aliasUserSession);
|
||||
|
||||
// Add columns as defined in query list.
|
||||
bool hasUserAccountCols = (columns.HasId(SaxUserSession.Column.User_EmailAddress) || columns.HasId(SaxUserSession.Column.User_DisplayName) || columns.HasId(SaxUserSession.Column.User_Title) || columns.HasId(SaxUserSession.Column.User_FirstName) || columns.HasId(SaxUserSession.Column.User_LastName));
|
||||
if (columns.HasId(SaxUserSession.Column.UserAccountId) || hasUserAccountCols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSession_UserAccountId, aliasUserSession));
|
||||
// Common properties.
|
||||
if (columns.HasId(SaxUserSession.Column.Flags))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSession_Flags, aliasUserSession));
|
||||
if (columns.HasId(SaxUserSession.Column.CreateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSession_CreateOn, aliasUserSession));
|
||||
if (columns.HasId(SaxUserSession.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSession_UpdateOn, aliasUserSession));
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// User Account.
|
||||
if (hasUserAccountCols)
|
||||
{
|
||||
DbQueryJoin joinUserAccount = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinUserAccount.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserAccount), aliasUserSession_UserAccount);
|
||||
joinUserAccount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserSession_UserAccount) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSession_UserAccountId, aliasUserSession));
|
||||
query.Joins.Add(joinUserAccount);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_EmailAddress);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_Title);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_LastName);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasUserSession_UserAccount), prefixUserSession_UserAccount + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetUserSessionQueryFilter(prm));
|
||||
|
||||
if (prm.UserAccountIdsIncluded.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetUserSessionSortColumns(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,622 @@
|
||||
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;
|
||||
using Saxonite.Net.Standard.Dbas.Internal.Core;
|
||||
|
||||
namespace Saxonite.Net.Standard.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
partial class SaxAccountMgr_Dbas
|
||||
{
|
||||
//*******************************************************************
|
||||
// Account Mgr - User Sport
|
||||
//*******************************************************************
|
||||
// Utilities.
|
||||
private List<StringPair> GetLogProperties(SaxUserSport userSport)
|
||||
{
|
||||
return new List<StringPair>()
|
||||
{
|
||||
new StringPair("Id",SysId.ToString(userSport.Id)),
|
||||
new StringPair("UserAccountId",SysId.ToString(userSport.UserAccountId)),
|
||||
new StringPair("SportId",SysId.ToString(userSport.SportId)),
|
||||
new StringPair("Status",userSport.StatusCode)
|
||||
};
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create item.
|
||||
public override SaxUserSport CreateUserSport(SysId userAccountId, SysId sportId)
|
||||
{
|
||||
ClearErrorState();
|
||||
return new SaxUserSport_Dbas(CoreDatabase, null, userAccountId, sportId, 0);
|
||||
}
|
||||
private SaxUserSport_Dbas CreateUserSport(UserSport_Db dbUserSport)
|
||||
{
|
||||
ClearErrorState();
|
||||
SaxUserSport_Dbas userSport = new SaxUserSport_Dbas(CoreDatabase, new SysId(dbUserSport._Id), new SysId(dbUserSport._UserAccountId), new SysId(dbUserSport._SportId), (ushort)dbUserSport._Flags);
|
||||
PopulateFrom(dbUserSport, userSport);
|
||||
return userSport;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get item.
|
||||
public override SaxUserSport GetUserSport(SaxUserSport.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetUserSport(GetUserSportQueryFilter(prm).Concat(" And ", "(", ")"));
|
||||
}
|
||||
private SaxUserSport GetUserSport(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetUserSportCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple items found");
|
||||
return null;
|
||||
}
|
||||
SaxUserSport userSport = null;
|
||||
// Query data.
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
UserSport_Db dbUserSport = new UserSport_Db(CoreDbInfo);
|
||||
dbUserSport.PopulateFrom(dbCommand, aliasUserSport, filter);
|
||||
userSport = CreateUserSport(dbUserSport);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return userSport;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate item.
|
||||
public override bool IsValidUserSportData(SaxUserSport.Data data, SaxUserSport.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidUserSportData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert item.
|
||||
public override bool InsertUserSport(SaxUserSport userSport, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertUserSport";
|
||||
ClearErrorState();
|
||||
if (!IsValidUserSport(userSport)) return false;
|
||||
if (SysId.IsValid(userSport.Id)) return SetErrorState(ErrorMessage.ValidItemId);
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
UserSport_Db dbUserSport = new UserSport_Db(CoreDbInfo);
|
||||
PopulateTo(dbUserSport, userSport, dbUpdateInfo);
|
||||
if (UserSport_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
dbUserSport._Id = CoreDatabase.GetNextIdFromTable("UserSport");
|
||||
}
|
||||
dbUserSport.ExecuteInsertCommand(dbCommand);
|
||||
userSport.Id = new SysId(dbUserSport._Id);
|
||||
userSport.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(userSport).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update item.
|
||||
public override bool UpdateUserSport(SaxUserSport userSport, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdateUserSport";
|
||||
ClearErrorState();
|
||||
if (!IsValidUserSport(userSport)) return false;
|
||||
if (!SysId.IsValid(userSport.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!userSport.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(userSport).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
UserSport_Db dbUserSport = new UserSport_Db(CoreDbInfo);
|
||||
dbUserSport.PopulateFrom(dbCommand, aliasUserSport, "Id=" + SysId.ToString(userSport.Id));
|
||||
// ToDo SaxUpdateLogItemMonitor_UserSport updateLogMonitor = new SaxUpdateLogItemMonitor_UserSport(SessionContext, CreateUserSport(dbUserSport), dbUpdateInfo);
|
||||
// Update item.
|
||||
PopulateTo(dbUserSport, userSport, dbUpdateInfo);
|
||||
dbUserSport.ExecuteUpdateCommand(dbCommand);
|
||||
userSport.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(userSport).Concat(": ").Concat("", "\n\t"));
|
||||
// Record updates.
|
||||
// ToDo updateLogMonitor.RecordUpdatedValues(userSport);
|
||||
// ToDo updateLogMonitor.LogUpdates();
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete item.
|
||||
public override bool UserSportCanBeDeleted(SaxUserSport userSport)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.UserSportCanBeDeleted(userSport)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteUserSport(SaxUserSport userSport, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeleteUserSport";
|
||||
ClearErrorState();
|
||||
if (!UserSportCanBeDeleted(userSport)) return false;
|
||||
|
||||
// User Sports are logically deleted by changing the status.
|
||||
userSport.Status = SaStatus.Deleted;
|
||||
return UpdateUserSport(userSport, dbUpdateInfo);
|
||||
|
||||
/*
|
||||
* Physical deletion.
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
UserSport_Db dbUserSport = new UserSport_Db(CoreDbInfo);
|
||||
dbUserSport.PopulateFrom(dbCommand, aliasUserSport, "Id=" + userSport.Id.ToString());
|
||||
// Delete item.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserSport) + " WHERE Id=" + SysId.ToString(userSport.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
userSport.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(userSport).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
*/
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(UserSport_Db dbUserSport, SaxUserSport userSport, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbUserSport._Id = SysId.ToLong(userSport.Id);
|
||||
dbUserSport._UserAccountId = SysId.ToInt(userSport.UserAccountId);
|
||||
dbUserSport._SportId = SysId.ToInt(userSport.SportId);
|
||||
dbUserSport._About = userSport.About;
|
||||
dbUserSport._ContactsData = userSport.ContactsData;
|
||||
dbUserSport._Participating = (short)userSport.Participating;
|
||||
dbUserSport._Preparing = (short)userSport.Preparing;
|
||||
dbUserSport._Officiating = (short)userSport.Officiating;
|
||||
dbUserSport._UserSportData = userSport.UserSportData;
|
||||
// Common.
|
||||
dbUserSport._Notes = userSport.Notes;
|
||||
dbUserSport._Status = SacsSystem.GetStatusCode(userSport.Status);
|
||||
dbUserSport._Flags = (short)userSport.Flags;
|
||||
if (!SysId.IsValid(userSport.Id))
|
||||
{
|
||||
dbUserSport._CreateOn = DateTime.Now;
|
||||
dbUserSport._CreateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbUserSport._CreateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
dbUserSport._UpdateOn = DateTime.Now;
|
||||
dbUserSport._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbUserSport._UpdateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
private void PopulateFrom(UserSport_Db dbUserSport, SaxUserSport userSport)
|
||||
{
|
||||
//userSport.Id = new SysId(dbUserSport._Id);
|
||||
//userSport.UserAccountId = new SysId(dbUserSport._UserAccountId);
|
||||
//userSport.SportId = new SysId(dbUserSport._SportId);
|
||||
userSport.About = dbUserSport._About;
|
||||
userSport.ContactsData = dbUserSport._ContactsData;
|
||||
userSport.Participating = (Sax.SportParticipating)(dbUserSport._Participating ?? 0);
|
||||
userSport.Preparing = (Sax.SportPreparing)(dbUserSport._Preparing ?? 0);
|
||||
userSport.Officiating = (Sax.SportOfficiating)(dbUserSport._Officiating ?? 0);
|
||||
userSport.UserSportData = dbUserSport._UserSportData;
|
||||
// Common.
|
||||
userSport.Notes = dbUserSport._Notes;
|
||||
userSport.Status = SacsSystem.GetStatusForCode(dbUserSport._Status);
|
||||
userSport.SetCreateStamp(dbUserSport._CreateOn, new SysId(dbUserSport._CreateBy), dbUserSport._CreateHost);
|
||||
userSport.SetUpdateStamp(dbUserSport._UpdateOn, new SysId(dbUserSport._UpdateBy), dbUserSport._UpdateHost);
|
||||
userSport.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item column definitions.
|
||||
private static readonly String aliasUserSport = "UsrSpt";
|
||||
private static readonly String aliasUserSport_UserAccount = "UsrSpt_Usr";
|
||||
private static readonly String prefixUserSport_UserAccount = "UsrSpt_Usr_";
|
||||
private static readonly String aliasUserSport_Sport = "UsrSpt_Spt";
|
||||
private static readonly String prefixUserSport_Sport = "UsrSpt_Spt_";
|
||||
private void SetUserSportColDfn
|
||||
(ColumnDfn col, String caption, int width, SaxDbDfn_Core.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SaxDbDfn_Core.GetTableForColumn(dbCol) == SaxDbDfn_Core.TableIdx.UserSport)
|
||||
alias = aliasUserSport;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn_Core.GetColumnName(dbCol, false), SaxDbDfn_Core.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn_Core.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SaxDbDfn_Core.GetColTextLen(dbCol);
|
||||
}
|
||||
public override ColumnDfn GetUserSportColumnDfn(SaxUserSport.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
//-----------------------------------------------------------
|
||||
case SaxUserSport.Column.Pos:
|
||||
SetUserSportColDfn(columnDfn, "Pos", 60, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
case SaxUserSport.Column.Id:
|
||||
SetUserSportColDfn(columnDfn, "Id", 80, SaxDbDfn_Core.ColumnIdx.UserSport_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-------------------------------------------------------
|
||||
// User.
|
||||
case SaxUserSport.Column.UserAccountId:
|
||||
SetUserSportColDfn(columnDfn, "User Id", 80, SaxDbDfn_Core.ColumnIdx.UserSport_UserAccountId, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserSport.Column.User_EmailAddress:
|
||||
SetUserSportColDfn(columnDfn, "Email address", 160, SaxDbDfn_Core.ColumnIdx.UserAccount_EmailAddress, ColumnAlignment.Left, DataValue.DataType.String, aliasUserSport_UserAccount, prefixUserSport_UserAccount);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserSport.Column.User_DisplayName:
|
||||
SetUserSportColDfn(columnDfn, "User", 160, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Left, DataValue.DataType.String);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserSport.Column.User_Title:
|
||||
SetUserSportColDfn(columnDfn, "Title", 80, SaxDbDfn_Core.ColumnIdx.UserAccount_Title, ColumnAlignment.Left, DataValue.DataType.String, aliasUserSport_UserAccount, prefixUserSport_UserAccount);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserSport.Column.User_FirstName:
|
||||
SetUserSportColDfn(columnDfn, "First name", 120, SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName, ColumnAlignment.Left, DataValue.DataType.String, aliasUserSport_UserAccount, prefixUserSport_UserAccount);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserSport.Column.User_LastName:
|
||||
SetUserSportColDfn(columnDfn, "Last name", 120, SaxDbDfn_Core.ColumnIdx.UserAccount_LastName, ColumnAlignment.Left, DataValue.DataType.String, aliasUserSport_UserAccount, prefixUserSport_UserAccount);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-------------------------------------------------------
|
||||
// Sport.
|
||||
case SaxUserSport.Column.SportId:
|
||||
SetUserSportColDfn(columnDfn, "Sport Id", 80, SaxDbDfn_Core.ColumnIdx.UserSport_SportId, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserSport.Column.Sport_Name:
|
||||
SetUserSportColDfn(columnDfn, "Email address", 160, SaxDbDfn_Core.ColumnIdx.Sport_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasUserSport_Sport, prefixUserSport_Sport);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
// Participating.
|
||||
case SaxUserSport.Column.SportParticipating:
|
||||
SetUserSportColDfn(columnDfn, "Participating", 80, SaxDbDfn_Core.ColumnIdx.UserSport_Participating, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxUserSport.Column.SportParticipating_Code:
|
||||
SetUserSportColDfn(columnDfn, "Participating", 80, SaxDbDfn_Core.ColumnIdx.UserSport_Participating, ColumnAlignment.Center, DataValue.DataType.String);
|
||||
break;
|
||||
case SaxUserSport.Column.SportParticipating_Desc:
|
||||
SetUserSportColDfn(columnDfn, "Participating", 120, SaxDbDfn_Core.ColumnIdx.UserSport_Participating, ColumnAlignment.Center, DataValue.DataType.String);
|
||||
break;
|
||||
|
||||
// Preparing.
|
||||
case SaxUserSport.Column.SportPreparing:
|
||||
SetUserSportColDfn(columnDfn, "Preparing", 80, SaxDbDfn_Core.ColumnIdx.UserSport_Preparing, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxUserSport.Column.SportPreparing_Code:
|
||||
SetUserSportColDfn(columnDfn, "Preparing", 80, SaxDbDfn_Core.ColumnIdx.UserSport_Preparing, ColumnAlignment.Center, DataValue.DataType.String);
|
||||
break;
|
||||
case SaxUserSport.Column.SportPreparing_Desc:
|
||||
SetUserSportColDfn(columnDfn, "Preparing", 120, SaxDbDfn_Core.ColumnIdx.UserSport_Preparing, ColumnAlignment.Center, DataValue.DataType.String);
|
||||
break;
|
||||
|
||||
// Officiating.
|
||||
case SaxUserSport.Column.SportOfficiating:
|
||||
SetUserSportColDfn(columnDfn, "Officiating", 80, SaxDbDfn_Core.ColumnIdx.UserSport_Officiating, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxUserSport.Column.SportOfficiating_Code:
|
||||
SetUserSportColDfn(columnDfn, "Officiating", 80, SaxDbDfn_Core.ColumnIdx.UserSport_Officiating, ColumnAlignment.Center, DataValue.DataType.String);
|
||||
break;
|
||||
case SaxUserSport.Column.SportOfficiating_Desc:
|
||||
SetUserSportColDfn(columnDfn, "Officiating", 120, SaxDbDfn_Core.ColumnIdx.UserSport_Officiating, ColumnAlignment.Center, DataValue.DataType.String);
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Derived properties.
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Common properties.
|
||||
case SaxUserSport.Column.Notes:
|
||||
SetUserSportColDfn(columnDfn, "Notes", 240, SaxDbDfn_Core.ColumnIdx.UserSport_Notes);
|
||||
break;
|
||||
case SaxUserSport.Column.Flags:
|
||||
SetUserSportColDfn(columnDfn, "Flags", 60, SaxDbDfn_Core.ColumnIdx.UserSport_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxUserSport.Column.Status:
|
||||
SetUserSportColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.UserSport_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxUserSport.Column.Status_Desc:
|
||||
SetUserSportColDfn(columnDfn, "Status", 90, SaxDbDfn_Core.ColumnIdx.UserSport_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxUserSport.Column.Status_Ind:
|
||||
SetUserSportColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.UserSport_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SaxUserSport.Column.CreateOn_Date:
|
||||
SetUserSportColDfn(columnDfn, "Created", 80, SaxDbDfn_Core.ColumnIdx.UserSport_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserSport.Column.UpdateOn_Date:
|
||||
SetUserSportColDfn(columnDfn, "Updated", 80, SaxDbDfn_Core.ColumnIdx.UserSport_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> GetUserSportQueryFilter(SaxUserSport.Params prm)
|
||||
{
|
||||
List<String> filter = new List<String>();
|
||||
|
||||
// Ids.
|
||||
String idsIncluded = prm.IdsIncluded.Concat(",");
|
||||
if (!idsIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_Id, aliasUserSport) + " IN (" + idsIncluded + ")");
|
||||
String idsExcluded = prm.IdsExcluded.Concat(",");
|
||||
if (!idsExcluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_Id, aliasUserSport) + " NOT IN (" + idsExcluded + ")");
|
||||
|
||||
// User accounts.
|
||||
String userAccountIdsIncluded = prm.UserAccountIdsIncluded.Concat(",");
|
||||
if (!userAccountIdsIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_UserAccountId, aliasUserSport) + " IN (" + userAccountIdsIncluded + ")");
|
||||
|
||||
// Sports.
|
||||
String sportIdsIncluded = prm.SportIdsIncluded.Concat(",");
|
||||
if (!sportIdsIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_SportId, aliasUserSport) + " IN (" + sportIdsIncluded + ")");
|
||||
|
||||
// Notes.
|
||||
if (!StringUtil.IsEmpty(prm.NotesPartial))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_Notes, aliasUserSport) + " LIKE '%" + DbQuery.FormatForLike(prm.NotesPartial) + "%'");
|
||||
|
||||
// Status.
|
||||
if (prm.StatusCat != SaxUserSport.StatusCat.Any)
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_Status, aliasUserSport) + GetUserSportStatusCatFilterCondition(prm.StatusCat));
|
||||
|
||||
if (filter.Count < 1) filter.Add("1=1");
|
||||
return filter;
|
||||
}
|
||||
internal static String GetUserSportStatusCatFilterCondition(SaxUserSport.StatusCat statusCat)
|
||||
{
|
||||
if (statusCat == SaxUserSport.StatusCat.ActiveOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'";
|
||||
if (statusCat == SaxUserSport.StatusCat.InactiveOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Inactive) + "'";
|
||||
if (statusCat == SaxUserSport.StatusCat.NotDeleted)
|
||||
return "!='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
if (statusCat == SaxUserSport.StatusCat.DeletedOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
return "";
|
||||
}
|
||||
// Item sort columns.
|
||||
public List<String> GetUserSportSortColumns(SaxUserSport.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
List<String> sortColumnNames = new List<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for UserSport columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SaxDbDfn_Core.GetTableForColumn((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn_Core.TableIdx.UserSport)
|
||||
{
|
||||
sortCol = SaxDbDfn_Core.GetColumnNameQual((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn, aliasUserSport);
|
||||
}
|
||||
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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_Id, aliasUserSport) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item count.
|
||||
private long GetUserSportCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return CoreDatabase.GetRowCount(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserSport) + " As " + aliasUserSport, filter);
|
||||
}
|
||||
public override long GetUserSportCount(SaxUserSport.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetUserSportCount(GetUserSportQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item list.
|
||||
public override List<SaxUserSport> GetUserSportList(SaxUserSport.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<SaxUserSport> userSports = new List<SaxUserSport>();
|
||||
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserSport), aliasUserSport);
|
||||
UserSport_Db dbUserSport = new UserSport_Db(CoreDbInfo);
|
||||
qry.Columns.AddRange(dbUserSport.ExistingColumnNames);
|
||||
qry.Filters.AddRange(GetUserSportQueryFilter(prm));
|
||||
qry.OrderBy.AddRange(GetUserSportSortColumns(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())
|
||||
{
|
||||
dbUserSport = new UserSport_Db(CoreDbInfo);
|
||||
dbUserSport.PopulateFrom(dbDataReader);
|
||||
userSports.Add(CreateUserSport(dbUserSport));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return userSports;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item query execution.
|
||||
public override DbResultSet ExecuteUserSportQuery(List<ColumnDfn> columns, SaxUserSport.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(CoreDatabase.DbmsType);
|
||||
query.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserSport), aliasUserSport);
|
||||
|
||||
// Add columns as defined in query list.
|
||||
if (columns.HasId(SaxUserSport.Column.Id))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_Id, aliasUserSport));
|
||||
bool hasUserAccountCols = (columns.HasId(SaxUserSport.Column.User_EmailAddress) || columns.HasId(SaxUserSport.Column.User_DisplayName) || columns.HasId(SaxUserSport.Column.User_Title) || columns.HasId(SaxUserSport.Column.User_FirstName) || columns.HasId(SaxUserSport.Column.User_LastName));
|
||||
if (columns.HasId(SaxUserSport.Column.UserAccountId) || hasUserAccountCols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_UserAccountId, aliasUserSport));
|
||||
bool hasSportCols = (columns.HasId(SaxUserSport.Column.Sport_Name));
|
||||
if (columns.HasId(SaxUserSport.Column.SportId) || hasSportCols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_SportId, aliasUserSport));
|
||||
if (columns.HasId(SaxUserSport.Column.SportParticipating) || columns.HasId(SaxUserSport.Column.SportParticipating_Code) || columns.HasId(SaxUserSport.Column.SportParticipating_Desc))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_Participating, aliasUserSport));
|
||||
if (columns.HasId(SaxUserSport.Column.SportPreparing) || columns.HasId(SaxUserSport.Column.SportPreparing_Code) || columns.HasId(SaxUserSport.Column.SportPreparing_Desc))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_Preparing, aliasUserSport));
|
||||
if (columns.HasId(SaxUserSport.Column.SportOfficiating) || columns.HasId(SaxUserSport.Column.SportOfficiating_Code) || columns.HasId(SaxUserSport.Column.SportOfficiating_Desc))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_Officiating, aliasUserSport));
|
||||
// Common properties.
|
||||
if (columns.HasId(SaxUserSport.Column.Notes))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_Notes, aliasUserSport));
|
||||
if (columns.HasId(SaxUserSport.Column.Flags))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_Flags, aliasUserSport));
|
||||
if (columns.HasId(SaxUserSport.Column.Status) || columns.HasId(SaxUserSport.Column.Status_Desc) || columns.HasId(SaxUserSport.Column.Status_Ind))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_Status, aliasUserSport));
|
||||
if (columns.HasId(SaxUserSport.Column.CreateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_CreateOn, aliasUserSport));
|
||||
if (columns.HasId(SaxUserSport.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_UpdateOn, aliasUserSport));
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// User Account.
|
||||
if (hasUserAccountCols)
|
||||
{
|
||||
DbQueryJoin joinUserAccount = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinUserAccount.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserAccount), aliasUserSport_UserAccount);
|
||||
joinUserAccount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserSport_UserAccount) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_UserAccountId, aliasUserSport));
|
||||
query.Joins.Add(joinUserAccount);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_EmailAddress);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_Title);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_LastName);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasUserSport_UserAccount), prefixUserSport_UserAccount + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Sport.
|
||||
if (hasSportCols)
|
||||
{
|
||||
DbQueryJoin joinSport = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinSport.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Sport), aliasUserSport_Sport);
|
||||
joinSport.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_Id, aliasUserSport_Sport) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_SportId, aliasUserSport));
|
||||
query.Joins.Add(joinSport);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.Sport_Name);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasUserSport_Sport), prefixUserSport_Sport + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetUserSportQueryFilter(prm));
|
||||
|
||||
if (prm.IdsIncluded.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetUserSportSortColumns(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,680 @@
|
||||
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;
|
||||
using Saxonite.Net.Standard.Dbas.Internal.Core;
|
||||
|
||||
namespace Saxonite.Net.Standard.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
partial class SaxAccountMgr_Dbas
|
||||
{
|
||||
//*******************************************************************
|
||||
// Account Mgr - User Sport Experience
|
||||
//*******************************************************************
|
||||
// Utilities.
|
||||
private List<StringPair> GetLogProperties(SaxUserSportExperience userSportExperience)
|
||||
{
|
||||
return new List<StringPair>()
|
||||
{
|
||||
new StringPair("Id",SysId.ToString(userSportExperience.Id)),
|
||||
new StringPair("UserSportId",SysId.ToString(userSportExperience.UserSportId)),
|
||||
new StringPair("PeriodFrom",DateUtil.Format(userSportExperience.PeriodFrom, "d-MMM-yyyy")),
|
||||
new StringPair("PeriodTo",DateUtil.Format(userSportExperience.PeriodTo, "d-MMM-yyyy")),
|
||||
new StringPair("Status",userSportExperience.StatusCode)
|
||||
};
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create item.
|
||||
public override SaxUserSportExperience CreateUserSportExperience(SysId userSportId)
|
||||
{
|
||||
ClearErrorState();
|
||||
return new SaxUserSportExperience_Dbas(CoreDatabase, null, userSportId, 0);
|
||||
}
|
||||
private SaxUserSportExperience_Dbas CreateUserSportExperience(UserSportExperience_Db dbUserSportExperience)
|
||||
{
|
||||
ClearErrorState();
|
||||
SaxUserSportExperience_Dbas userSportExperience = new SaxUserSportExperience_Dbas(CoreDatabase, new SysId(dbUserSportExperience._Id), new SysId(dbUserSportExperience._UserSportId), (ushort)dbUserSportExperience._Flags);
|
||||
PopulateFrom(dbUserSportExperience, userSportExperience);
|
||||
return userSportExperience;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get item.
|
||||
public override SaxUserSportExperience GetUserSportExperience(SaxUserSportExperience.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetUserSportExperience(GetUserSportExperienceQueryFilter(prm).Concat(" And ", "(", ")"));
|
||||
}
|
||||
private SaxUserSportExperience GetUserSportExperience(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetUserSportExperienceCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple items found");
|
||||
return null;
|
||||
}
|
||||
SaxUserSportExperience userSportExperience = null;
|
||||
// Query data.
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
UserSportExperience_Db dbUserSportExperience = new UserSportExperience_Db(CoreDbInfo);
|
||||
dbUserSportExperience.PopulateFrom(dbCommand, aliasUserSportExperience, filter);
|
||||
userSportExperience = CreateUserSportExperience(dbUserSportExperience);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return userSportExperience;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate item.
|
||||
public override bool IsValidUserSportExperienceData(SaxUserSportExperience.Data data, SaxUserSportExperience.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidUserSportExperienceData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert item.
|
||||
public override bool InsertUserSportExperience(SaxUserSportExperience userSportExperience, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertUserSportExperience";
|
||||
ClearErrorState();
|
||||
if (!IsValidUserSportExperience(userSportExperience)) return false;
|
||||
if (SysId.IsValid(userSportExperience.Id)) return SetErrorState(ErrorMessage.ValidItemId);
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
UserSportExperience_Db dbUserSportExperience = new UserSportExperience_Db(CoreDbInfo);
|
||||
PopulateTo(dbUserSportExperience, userSportExperience, dbUpdateInfo);
|
||||
if (UserSportExperience_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
dbUserSportExperience._Id = CoreDatabase.GetNextIdFromTable("UserSportExperience");
|
||||
}
|
||||
dbUserSportExperience.ExecuteInsertCommand(dbCommand);
|
||||
userSportExperience.Id = new SysId(dbUserSportExperience._Id);
|
||||
userSportExperience.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(userSportExperience).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update item.
|
||||
public override bool UpdateUserSportExperience(SaxUserSportExperience userSportExperience, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdateUserSportExperience";
|
||||
ClearErrorState();
|
||||
if (!IsValidUserSportExperience(userSportExperience)) return false;
|
||||
if (!SysId.IsValid(userSportExperience.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!userSportExperience.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(userSportExperience).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
UserSportExperience_Db dbUserSportExperience = new UserSportExperience_Db(CoreDbInfo);
|
||||
dbUserSportExperience.PopulateFrom(dbCommand, aliasUserSportExperience, "Id=" + SysId.ToString(userSportExperience.Id));
|
||||
// ToDo SaxUpdateLogItemMonitor_UserSportExperience updateLogMonitor = new SaxUpdateLogItemMonitor_UserSportExperience(SessionContext, CreateUserSportExperience(dbUserSportExperience), dbUpdateInfo);
|
||||
// Update item.
|
||||
PopulateTo(dbUserSportExperience, userSportExperience, dbUpdateInfo);
|
||||
dbUserSportExperience.ExecuteUpdateCommand(dbCommand);
|
||||
userSportExperience.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(userSportExperience).Concat(": ").Concat("", "\n\t"));
|
||||
// Record updates.
|
||||
// ToDo updateLogMonitor.RecordUpdatedValues(userSportExperience);
|
||||
// ToDo updateLogMonitor.LogUpdates();
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete item.
|
||||
public override bool UserSportExperienceCanBeDeleted(SaxUserSportExperience userSportExperience)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.UserSportExperienceCanBeDeleted(userSportExperience)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteUserSportExperience(SaxUserSportExperience userSportExperience, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeleteUserSportExperience";
|
||||
ClearErrorState();
|
||||
if (!UserSportExperienceCanBeDeleted(userSportExperience)) return false;
|
||||
|
||||
// User Sports are logically deleted by changing the status.
|
||||
userSportExperience.Status = SaStatus.Deleted;
|
||||
return UpdateUserSportExperience(userSportExperience, dbUpdateInfo);
|
||||
|
||||
/*
|
||||
* Physical deletion.
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
UserSportExperience_Db dbUserSportExperience = new UserSportExperience_Db(CoreDbInfo);
|
||||
dbUserSportExperience.PopulateFrom(dbCommand, aliasUserSportExperience, "Id=" + userSportExperience.Id.ToString());
|
||||
// Delete item.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserSportExperience) + " WHERE Id=" + SysId.ToString(userSportExperience.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
userSportExperience.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(userSportExperience).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
*/
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(UserSportExperience_Db dbUserSportExperience, SaxUserSportExperience userSportExperience, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbUserSportExperience._Id = SysId.ToLong(userSportExperience.Id);
|
||||
dbUserSportExperience._UserSportId = SysId.ToLong(userSportExperience.UserSportId);
|
||||
dbUserSportExperience._PeriodFrom = userSportExperience.PeriodFrom;
|
||||
dbUserSportExperience._PeriodTo = userSportExperience.PeriodTo;
|
||||
dbUserSportExperience._OrganisationId = SysId.ToInt(userSportExperience.OrganisationId);
|
||||
dbUserSportExperience._OrganisationName = StringUtil.EmptyOnNull(userSportExperience.OrganisationName);
|
||||
dbUserSportExperience._Summary = StringUtil.EmptyOnNull(userSportExperience.Summary);
|
||||
dbUserSportExperience._Team = StringUtil.EmptyOnNull(userSportExperience.Team);
|
||||
dbUserSportExperience._League = StringUtil.EmptyOnNull(userSportExperience.League);
|
||||
dbUserSportExperience._Speciality = StringUtil.EmptyOnNull(userSportExperience.Speciality);
|
||||
dbUserSportExperience._SpecialitiesOther = userSportExperience.GetSpecialitiesOther().ToList().Concat(SaxUserSportExperience.SpecialitiesOtherDelim);
|
||||
dbUserSportExperience._Awards = StringUtil.EmptyOnNull(userSportExperience.Awards);
|
||||
dbUserSportExperience._RegionIdNation = SysId.ToInt(userSportExperience.RegionIdNation);
|
||||
dbUserSportExperience._RegionIdProvince = SysId.ToInt(userSportExperience.RegionIdProvince);
|
||||
dbUserSportExperience._UserSportExperienceData = StringUtil.EmptyOnNull(userSportExperience.UserSportExperienceData);
|
||||
// Common.
|
||||
dbUserSportExperience._Notes = userSportExperience.Notes;
|
||||
dbUserSportExperience._Status = SacsSystem.GetStatusCode(userSportExperience.Status);
|
||||
dbUserSportExperience._Flags = (short)userSportExperience.Flags;
|
||||
if (!SysId.IsValid(userSportExperience.Id))
|
||||
{
|
||||
dbUserSportExperience._CreateOn = DateTime.Now;
|
||||
dbUserSportExperience._CreateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbUserSportExperience._CreateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
dbUserSportExperience._UpdateOn = DateTime.Now;
|
||||
dbUserSportExperience._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbUserSportExperience._UpdateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
private void PopulateFrom(UserSportExperience_Db dbUserSportExperience, SaxUserSportExperience userSportExperience)
|
||||
{
|
||||
//userSportExperience.Id = new SysId(dbUserSportExperience._Id);
|
||||
//userSportExperience.UserSportId = new SysId(dbUserSportExperience._UserSportId);
|
||||
userSportExperience.PeriodFrom = dbUserSportExperience._PeriodFrom;
|
||||
userSportExperience.PeriodTo = dbUserSportExperience._PeriodTo;
|
||||
userSportExperience.OrganisationId = new SysId(dbUserSportExperience._OrganisationId);
|
||||
userSportExperience.OrganisationName = dbUserSportExperience._OrganisationName;
|
||||
userSportExperience.Summary = dbUserSportExperience._Summary;
|
||||
userSportExperience.Team = dbUserSportExperience._Team;
|
||||
userSportExperience.League = dbUserSportExperience._League;
|
||||
userSportExperience.Speciality = dbUserSportExperience._Speciality;
|
||||
userSportExperience.SpecialitiesOther = StringListUtil.Split(dbUserSportExperience._SpecialitiesOther, SaxUserSportExperience.SpecialitiesOtherDelim);
|
||||
userSportExperience.Awards = dbUserSportExperience._Awards;
|
||||
userSportExperience.RegionIdNation = new SysId(dbUserSportExperience._RegionIdNation);
|
||||
userSportExperience.UserSportExperienceData = dbUserSportExperience._UserSportExperienceData;
|
||||
// Common.
|
||||
userSportExperience.Notes = dbUserSportExperience._Notes;
|
||||
userSportExperience.Status = SacsSystem.GetStatusForCode(dbUserSportExperience._Status);
|
||||
userSportExperience.SetCreateStamp(dbUserSportExperience._CreateOn, new SysId(dbUserSportExperience._CreateBy), dbUserSportExperience._CreateHost);
|
||||
userSportExperience.SetUpdateStamp(dbUserSportExperience._UpdateOn, new SysId(dbUserSportExperience._UpdateBy), dbUserSportExperience._UpdateHost);
|
||||
userSportExperience.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item column definitions.
|
||||
private static readonly String aliasUserSportExperience = "SptExp";
|
||||
private static readonly String aliasUserSportExperience_UserSport = "SptExp_UsrSpt";
|
||||
private static readonly String prefixUserSportExperience_UserSport = "SptExp_UsrSpt_";
|
||||
private static readonly String aliasUserSportExperience_Organisation = "SptExp_Org";
|
||||
private static readonly String prefixUserSportExperience_Organisation = "SptExp_Org_";
|
||||
private static readonly String aliasUserSportExperience_Region_Nation = "SptExp_Rgn_Nat";
|
||||
private static readonly String prefixUserSportExperience_Region_Nation = "SptExp_Rgn_Nat_";
|
||||
private static readonly String aliasUserSportExperience_Region_Province = "SptExp_Rgn_Pro";
|
||||
private static readonly String prefixUserSportExperience_Region_Province = "SptExp_Rgn_Pro_";
|
||||
private void SetUserSportExperienceColDfn
|
||||
(ColumnDfn col, String caption, int width, SaxDbDfn_Core.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SaxDbDfn_Core.GetTableForColumn(dbCol) == SaxDbDfn_Core.TableIdx.UserSportExperience)
|
||||
alias = aliasUserSportExperience;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn_Core.GetColumnName(dbCol, false), SaxDbDfn_Core.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn_Core.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SaxDbDfn_Core.GetColTextLen(dbCol);
|
||||
}
|
||||
public override ColumnDfn GetUserSportExperienceColumnDfn(SaxUserSportExperience.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
//-----------------------------------------------------------
|
||||
case SaxUserSportExperience.Column.Pos:
|
||||
SetUserSportExperienceColDfn(columnDfn, "Pos", 60, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
case SaxUserSportExperience.Column.Id:
|
||||
SetUserSportExperienceColDfn(columnDfn, "Id", 80, SaxDbDfn_Core.ColumnIdx.UserSportExperience_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-------------------------------------------------------
|
||||
// User Sport.
|
||||
case SaxUserSportExperience.Column.UserSportId:
|
||||
SetUserSportExperienceColDfn(columnDfn, "User Sport Id", 80, SaxDbDfn_Core.ColumnIdx.UserSportExperience_UserSportId, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-------------------------------------------------------
|
||||
// Sport.
|
||||
case SaxUserSportExperience.Column.Sport_Id:
|
||||
SetUserSportExperienceColDfn(columnDfn, "Sport Id", 80, SaxDbDfn_Core.ColumnIdx.UserSport_SportId, ColumnAlignment.Right, DataValue.DataType.Long, aliasUserSportExperience_UserSport, prefixUserSportExperience_UserSport);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-------------------------------------------------------
|
||||
// Period.
|
||||
case SaxUserSportExperience.Column.PeriodFrom:
|
||||
SetUserSportExperienceColDfn(columnDfn, "From", 90, SaxDbDfn_Core.ColumnIdx.UserSportExperience_PeriodFrom, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
break;
|
||||
case SaxUserSportExperience.Column.PeriodTo:
|
||||
SetUserSportExperienceColDfn(columnDfn, "To", 90, SaxDbDfn_Core.ColumnIdx.UserSportExperience_PeriodTo, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
break;
|
||||
|
||||
//-------------------------------------------------------
|
||||
// Organisation.
|
||||
case SaxUserSportExperience.Column.OrganisationId:
|
||||
SetUserSportExperienceColDfn(columnDfn, "Organisation Id", 80, SaxDbDfn_Core.ColumnIdx.UserSportExperience_OrganisationId, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxUserSportExperience.Column.OrganisationName:
|
||||
SetUserSportExperienceColDfn(columnDfn, "Organisation Name", 160, SaxDbDfn_Core.ColumnIdx.UserSportExperience_OrganisationName);
|
||||
break;
|
||||
case SaxUserSportExperience.Column.Organisation_Name:
|
||||
SetUserSportExperienceColDfn(columnDfn, "Organisation", 160, SaxDbDfn_Core.ColumnIdx.Organisation_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasUserSportExperience_Organisation, prefixUserSportExperience_Organisation);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-------------------------------------------------------
|
||||
// Summary.
|
||||
case SaxUserSportExperience.Column.Summary:
|
||||
SetUserSportExperienceColDfn(columnDfn, "Summary", 240, SaxDbDfn_Core.ColumnIdx.UserSportExperience_Summary);
|
||||
break;
|
||||
|
||||
// Team.
|
||||
case SaxUserSportExperience.Column.Team:
|
||||
SetUserSportExperienceColDfn(columnDfn, "Team", 120, SaxDbDfn_Core.ColumnIdx.UserSportExperience_Team);
|
||||
break;
|
||||
|
||||
// League.
|
||||
case SaxUserSportExperience.Column.League:
|
||||
SetUserSportExperienceColDfn(columnDfn, "League", 120, SaxDbDfn_Core.ColumnIdx.UserSportExperience_League);
|
||||
break;
|
||||
|
||||
// Speciality.
|
||||
case SaxUserSportExperience.Column.Speciality:
|
||||
SetUserSportExperienceColDfn(columnDfn, "Speciality", 120, SaxDbDfn_Core.ColumnIdx.UserSportExperience_Speciality);
|
||||
break;
|
||||
|
||||
//-------------------------------------------------------
|
||||
// Regions.
|
||||
case SaxUserSportExperience.Column.RegionIdNation:
|
||||
SetUserSportExperienceColDfn(columnDfn, "Region Id - Nation", 80, SaxDbDfn_Core.ColumnIdx.UserSportExperience_RegionIdNation, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxUserSportExperience.Column.Region_Nation_Name:
|
||||
SetUserSportExperienceColDfn(columnDfn, "Nation", 140, SaxDbDfn_Core.ColumnIdx.Region_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasUserSportExperience_Region_Nation, prefixUserSportExperience_Region_Nation);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserSportExperience.Column.RegionIdProvince:
|
||||
SetUserSportExperienceColDfn(columnDfn, "Region Id - Province", 80, SaxDbDfn_Core.ColumnIdx.UserSportExperience_RegionIdProvince, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxUserSportExperience.Column.Region_Province_Name:
|
||||
SetUserSportExperienceColDfn(columnDfn, "Province", 140, SaxDbDfn_Core.ColumnIdx.Region_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasUserSportExperience_Region_Province, prefixUserSportExperience_Region_Province);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Derived properties.
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Common properties.
|
||||
case SaxUserSportExperience.Column.Notes:
|
||||
SetUserSportExperienceColDfn(columnDfn, "Notes", 240, SaxDbDfn_Core.ColumnIdx.UserSportExperience_Notes);
|
||||
break;
|
||||
case SaxUserSportExperience.Column.Flags:
|
||||
SetUserSportExperienceColDfn(columnDfn, "Flags", 60, SaxDbDfn_Core.ColumnIdx.UserSportExperience_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxUserSportExperience.Column.Status:
|
||||
SetUserSportExperienceColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.UserSportExperience_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxUserSportExperience.Column.Status_Desc:
|
||||
SetUserSportExperienceColDfn(columnDfn, "Status", 90, SaxDbDfn_Core.ColumnIdx.UserSportExperience_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxUserSportExperience.Column.Status_Ind:
|
||||
SetUserSportExperienceColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.UserSportExperience_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SaxUserSportExperience.Column.CreateOn_Date:
|
||||
SetUserSportExperienceColDfn(columnDfn, "Created", 80, SaxDbDfn_Core.ColumnIdx.UserSportExperience_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserSportExperience.Column.UpdateOn_Date:
|
||||
SetUserSportExperienceColDfn(columnDfn, "Updated", 80, SaxDbDfn_Core.ColumnIdx.UserSportExperience_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> GetUserSportExperienceQueryFilter(SaxUserSportExperience.Params prm)
|
||||
{
|
||||
List<String> filter = new List<String>();
|
||||
|
||||
// Ids.
|
||||
String idsIncluded = prm.IdsIncluded.Concat(",");
|
||||
if (!idsIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_Id, aliasUserSportExperience) + " IN (" + idsIncluded + ")");
|
||||
String idsExcluded = prm.IdsExcluded.Concat(",");
|
||||
if (!idsExcluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_Id, aliasUserSportExperience) + " NOT IN (" + idsExcluded + ")");
|
||||
|
||||
// User sports.
|
||||
String userSportIdsIncluded = prm.UserSportIdsIncluded.Concat(",");
|
||||
if (!userSportIdsIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_UserSportId, aliasUserSportExperience) + " IN (" + userSportIdsIncluded + ")");
|
||||
|
||||
// Organisations.
|
||||
String organisationIdsIncluded = prm.OrganisationIdsIncluded.Concat(",");
|
||||
if (!organisationIdsIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_OrganisationId, aliasUserSportExperience) + " IN (" + organisationIdsIncluded + ")");
|
||||
|
||||
// Notes.
|
||||
if (!StringUtil.IsEmpty(prm.NotesPartial))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_Notes, aliasUserSportExperience) + " LIKE '%" + DbQuery.FormatForLike(prm.NotesPartial) + "%'");
|
||||
|
||||
// Status.
|
||||
if (prm.StatusCat != SaxUserSportExperience.StatusCat.Any)
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_Status, aliasUserSportExperience) + GetUserSportExperienceStatusCatFilterCondition(prm.StatusCat));
|
||||
|
||||
if (filter.Count < 1) filter.Add("1=1");
|
||||
return filter;
|
||||
}
|
||||
internal static String GetUserSportExperienceStatusCatFilterCondition(SaxUserSportExperience.StatusCat statusCat)
|
||||
{
|
||||
if (statusCat == SaxUserSportExperience.StatusCat.ActiveOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'";
|
||||
if (statusCat == SaxUserSportExperience.StatusCat.InactiveOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Inactive) + "'";
|
||||
if (statusCat == SaxUserSportExperience.StatusCat.NotDeleted)
|
||||
return "!='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
if (statusCat == SaxUserSportExperience.StatusCat.DeletedOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
return "";
|
||||
}
|
||||
// Item sort columns.
|
||||
public List<String> GetUserSportExperienceSortColumns(SaxUserSportExperience.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
List<String> sortColumnNames = new List<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for UserSportExperience columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SaxDbDfn_Core.GetTableForColumn((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn_Core.TableIdx.UserSportExperience)
|
||||
{
|
||||
sortCol = SaxDbDfn_Core.GetColumnNameQual((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn, aliasUserSportExperience);
|
||||
}
|
||||
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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_Id, aliasUserSportExperience) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item count.
|
||||
private long GetUserSportExperienceCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return CoreDatabase.GetRowCount(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserSportExperience) + " As " + aliasUserSportExperience, filter);
|
||||
}
|
||||
public override long GetUserSportExperienceCount(SaxUserSportExperience.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetUserSportExperienceCount(GetUserSportExperienceQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item list.
|
||||
public override List<SaxUserSportExperience> GetUserSportExperienceList(SaxUserSportExperience.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<SaxUserSportExperience> userSportExperiences = new List<SaxUserSportExperience>();
|
||||
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserSportExperience), aliasUserSportExperience);
|
||||
UserSportExperience_Db dbUserSportExperience = new UserSportExperience_Db(CoreDbInfo);
|
||||
qry.Columns.AddRange(dbUserSportExperience.ExistingColumnNames);
|
||||
qry.Filters.AddRange(GetUserSportExperienceQueryFilter(prm));
|
||||
qry.OrderBy.AddRange(GetUserSportExperienceSortColumns(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())
|
||||
{
|
||||
dbUserSportExperience = new UserSportExperience_Db(CoreDbInfo);
|
||||
dbUserSportExperience.PopulateFrom(dbDataReader);
|
||||
userSportExperiences.Add(CreateUserSportExperience(dbUserSportExperience));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return userSportExperiences;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item query execution.
|
||||
public override DbResultSet ExecuteUserSportExperienceQuery(List<ColumnDfn> columns, SaxUserSportExperience.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(CoreDatabase.DbmsType);
|
||||
query.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserSportExperience), aliasUserSportExperience);
|
||||
|
||||
// Add columns as defined in query list.
|
||||
if (columns.HasId(SaxUserSportExperience.Column.Id))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_Id, aliasUserSportExperience));
|
||||
bool hasUserSportCols = (columns.HasId(SaxUserSportExperience.Column.Sport_Id));
|
||||
if (columns.HasId(SaxUserSportExperience.Column.UserSportId))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_UserSportId, aliasUserSportExperience));
|
||||
if (columns.HasId(SaxUserSportExperience.Column.PeriodFrom))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_PeriodFrom, aliasUserSportExperience));
|
||||
if (columns.HasId(SaxUserSportExperience.Column.PeriodTo))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_PeriodTo, aliasUserSportExperience));
|
||||
bool hasOrganisationCols = (columns.HasId(SaxUserSportExperience.Column.Organisation_Name));
|
||||
if (columns.HasId(SaxUserSportExperience.Column.OrganisationId) || hasOrganisationCols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_OrganisationId, aliasUserSportExperience));
|
||||
if (columns.HasId(SaxUserSportExperience.Column.OrganisationName) || columns.HasId(SaxUserSportExperience.Column.Organisation_Name))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_OrganisationName, aliasUserSportExperience));
|
||||
if (columns.HasId(SaxUserSportExperience.Column.Summary))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_Summary, aliasUserSportExperience));
|
||||
if (columns.HasId(SaxUserSportExperience.Column.Team))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_Team, aliasUserSportExperience));
|
||||
if (columns.HasId(SaxUserSportExperience.Column.League))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_League, aliasUserSportExperience));
|
||||
if (columns.HasId(SaxUserSportExperience.Column.Speciality))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_Speciality, aliasUserSportExperience));
|
||||
bool hasRegionNationCols = (columns.HasId(SaxUserSportExperience.Column.Region_Nation_Name));
|
||||
if (columns.HasId(SaxUserSportExperience.Column.RegionIdNation) || hasRegionNationCols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_RegionIdNation, aliasUserSportExperience));
|
||||
bool hasRegionProvinceCols = (columns.HasId(SaxUserSportExperience.Column.Region_Province_Name));
|
||||
if (columns.HasId(SaxUserSportExperience.Column.RegionIdProvince) || hasRegionProvinceCols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_RegionIdProvince, aliasUserSportExperience));
|
||||
// Common properties.
|
||||
if (columns.HasId(SaxUserSportExperience.Column.Notes))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_Notes, aliasUserSportExperience));
|
||||
if (columns.HasId(SaxUserSportExperience.Column.Flags))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_Flags, aliasUserSportExperience));
|
||||
if (columns.HasId(SaxUserSportExperience.Column.Status) || columns.HasId(SaxUserSportExperience.Column.Status_Desc) || columns.HasId(SaxUserSportExperience.Column.Status_Ind))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_Status, aliasUserSportExperience));
|
||||
if (columns.HasId(SaxUserSportExperience.Column.CreateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_CreateOn, aliasUserSportExperience));
|
||||
if (columns.HasId(SaxUserSportExperience.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_UpdateOn, aliasUserSportExperience));
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// User Sport.
|
||||
if (hasUserSportCols)
|
||||
{
|
||||
DbQueryJoin joinUserSport = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinUserSport.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserSport), aliasUserSportExperience_UserSport);
|
||||
joinUserSport.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_Id, aliasUserSportExperience_UserSport) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_UserSportId, aliasUserSportExperience));
|
||||
query.Joins.Add(joinUserSport);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserSport_SportId);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasUserSportExperience_UserSport), prefixUserSportExperience_UserSport + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Organisation.
|
||||
if (hasOrganisationCols)
|
||||
{
|
||||
DbQueryJoin joinOrganisation = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinOrganisation.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Organisation), aliasUserSportExperience_Organisation);
|
||||
joinOrganisation.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_Id, aliasUserSportExperience_Organisation) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_OrganisationId, aliasUserSportExperience));
|
||||
query.Joins.Add(joinOrganisation);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.Organisation_Name);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasUserSportExperience_Organisation), prefixUserSportExperience_Organisation + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Region - Nation.
|
||||
if (hasRegionNationCols)
|
||||
{
|
||||
DbQueryJoin joinRegionNation = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinRegionNation.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Region), aliasUserSportExperience_Region_Nation);
|
||||
joinRegionNation.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_Id, aliasUserSportExperience_Region_Nation) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_OrganisationId, aliasUserSportExperience));
|
||||
query.Joins.Add(joinRegionNation);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.Region_Name);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasUserSportExperience_Region_Nation), prefixUserSportExperience_Region_Nation + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Region - Province.
|
||||
if (hasRegionProvinceCols)
|
||||
{
|
||||
DbQueryJoin joinRegionProvince = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinRegionProvince.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Region), aliasUserSportExperience_Region_Province);
|
||||
joinRegionProvince.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_Id, aliasUserSportExperience_Region_Province) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSportExperience_OrganisationId, aliasUserSportExperience));
|
||||
query.Joins.Add(joinRegionProvince);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.Region_Name);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasUserSportExperience_Region_Province), prefixUserSportExperience_Region_Province + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetUserSportExperienceQueryFilter(prm));
|
||||
|
||||
if (prm.IdsIncluded.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetUserSportExperienceSortColumns(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,30 @@
|
||||
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, SaxInternals internals) :
|
||||
base (sessionContext, internals)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,485 @@
|
||||
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;
|
||||
using Saxonite.Net.Standard.Dbas.Internal.Core;
|
||||
|
||||
namespace Saxonite.Net.Standard.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
partial class SaxActivityMgr_Dbas
|
||||
{
|
||||
//*******************************************************************
|
||||
// Activity Mgr - ActivityFeedback
|
||||
//*******************************************************************
|
||||
// Utilities.
|
||||
private List<StringPair> GetLogProperties(SaxActivityFeedback activityFeedback)
|
||||
{
|
||||
return new List<StringPair>()
|
||||
{
|
||||
new StringPair("ItemId",ItemId.ToString(activityFeedback.ItemId)),
|
||||
new StringPair("ViewCount",activityFeedback.ViewCount.ToString()),
|
||||
};
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create item.
|
||||
public override SaxActivityFeedback CreateActivityFeedback(ItemId itemId)
|
||||
{
|
||||
ClearErrorState();
|
||||
return new SaxActivityFeedback_Dbas(CoreDatabase, itemId);
|
||||
}
|
||||
private SaxActivityFeedback_Dbas CreateActivityFeedback(ActivityFeedback_Db dbActivityFeedback)
|
||||
{
|
||||
ClearErrorState();
|
||||
ItemId itemId = new ItemId(dbActivityFeedback._ItemType, new SysId(dbActivityFeedback._ItemId));
|
||||
SaxActivityFeedback_Dbas activityFeedback = new SaxActivityFeedback_Dbas(CoreDatabase, itemId);
|
||||
PopulateFrom(dbActivityFeedback, activityFeedback);
|
||||
return activityFeedback;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get item.
|
||||
public override SaxActivityFeedback GetActivityFeedback(SaxActivityFeedback.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetActivityFeedback(GetActivityFeedbackQueryFilter(prm).Concat(" And ", "(", ")"));
|
||||
}
|
||||
private SaxActivityFeedback GetActivityFeedback(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetActivityFeedbackCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple items found");
|
||||
return null;
|
||||
}
|
||||
SaxActivityFeedback activityFeedback = null;
|
||||
// Query data.
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
ActivityFeedback_Db dbActivityFeedback = new ActivityFeedback_Db(CoreDbInfo);
|
||||
dbActivityFeedback.PopulateFrom(dbCommand, aliasActivityFeedback, filter);
|
||||
activityFeedback = CreateActivityFeedback(dbActivityFeedback);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return activityFeedback;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate item.
|
||||
public override bool IsValidActivityFeedbackData(SaxActivityFeedback.Data data, SaxActivityFeedback.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidActivityFeedbackData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert item.
|
||||
public override bool InsertActivityFeedback(SaxActivityFeedback activityFeedback, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertActivityFeedback";
|
||||
ClearErrorState();
|
||||
if (!IsValidActivityFeedback(activityFeedback)) return false;
|
||||
//if (SysId.IsValid(activityFeedback.Id)) return SetErrorState(ErrorMessage.ValidItemId);
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
ActivityFeedback_Db dbActivityFeedback = new ActivityFeedback_Db(CoreDbInfo);
|
||||
PopulateTo(dbActivityFeedback, activityFeedback, dbUpdateInfo);
|
||||
if (ActivityFeedback_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
// ToDo dbActivityFeedback._Id = CoreDatabase.GetNextIdFromTable("ActivityFeedback");
|
||||
}
|
||||
dbActivityFeedback.ExecuteInsertCommand(dbCommand);
|
||||
//activityFeedback.Id = new SysId(dbActivityFeedback._Id);
|
||||
activityFeedback.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(activityFeedback).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update item.
|
||||
public override bool UpdateActivityFeedback(SaxActivityFeedback activityFeedback, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdateActivityFeedback";
|
||||
ClearErrorState();
|
||||
if (!IsValidActivityFeedback(activityFeedback)) return false;
|
||||
//if (!SysId.IsValid(activityFeedback.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!activityFeedback.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(activityFeedback).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
ActivityFeedback_Db dbActivityFeedback = new ActivityFeedback_Db(CoreDbInfo);
|
||||
dbActivityFeedback.PopulateFrom(dbCommand, aliasActivityFeedback, GetActivityFeedbackQueryFilter(activityFeedback, aliasActivityFeedback).Concat(" AND ", "(", ")"));
|
||||
// ToDo SaxUpdateLogItemMonitor_ActivityFeedback updateLogMonitor = new SaxUpdateLogItemMonitor_ActivityFeedback(SessionContext, CreateActivityFeedback(dbActivityFeedback), dbUpdateInfo);
|
||||
// Update item.
|
||||
PopulateTo(dbActivityFeedback, activityFeedback, dbUpdateInfo);
|
||||
dbActivityFeedback.ExecuteUpdateCommand(dbCommand);
|
||||
activityFeedback.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(activityFeedback).Concat(": ").Concat("", "\n\t"));
|
||||
// Record updates.
|
||||
// ToDo updateLogMonitor.RecordUpdatedValues(activityFeedback);
|
||||
// ToDo updateLogMonitor.LogUpdates();
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete item.
|
||||
public override bool ActivityFeedbackCanBeDeleted(SaxActivityFeedback activityFeedback)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.ActivityFeedbackCanBeDeleted(activityFeedback)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteActivityFeedback(SaxActivityFeedback activityFeedback, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeleteActivityFeedback";
|
||||
ClearErrorState();
|
||||
if (!ActivityFeedbackCanBeDeleted(activityFeedback)) return false;
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
ActivityFeedback_Db dbActivityFeedback = new ActivityFeedback_Db(CoreDbInfo);
|
||||
String filter = GetActivityFeedbackQueryFilter(activityFeedback, aliasActivityFeedback).Concat(" AND ", "(", ")");
|
||||
dbActivityFeedback.PopulateFrom(dbCommand, aliasActivityFeedback, filter);
|
||||
// Delete item.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE " + aliasActivityFeedback + " FROM " + SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ActivityFeedback) + " As " + aliasActivityFeedback + " WHERE " + filter + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
activityFeedback.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(activityFeedback).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(ActivityFeedback_Db dbActivityFeedback, SaxActivityFeedback activityFeedback, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbActivityFeedback._ItemType = activityFeedback.ItemId.Type;
|
||||
dbActivityFeedback._ItemId = SysId.ToInt(activityFeedback.ItemId.Id);
|
||||
dbActivityFeedback._ViewCount = activityFeedback.ViewCount;
|
||||
dbActivityFeedback._FeedbackCount = activityFeedback.FeedbackCount;
|
||||
dbActivityFeedback._FeedbackTotal = activityFeedback.FeedbackTotal;
|
||||
dbActivityFeedback._FeedbackAverage = activityFeedback.FeedbackAverage;
|
||||
if (!DateUtil.IsValid(dbActivityFeedback._CreateOn))
|
||||
{
|
||||
dbActivityFeedback._CreateOn = DateTime.Now;
|
||||
}
|
||||
dbActivityFeedback._UpdateOn = DateTime.Now;
|
||||
}
|
||||
private void PopulateFrom(ActivityFeedback_Db dbActivityFeedback, SaxActivityFeedback activityFeedback)
|
||||
{
|
||||
//activityFeedback.ItemId = new ItemId(dbActivityFeedback._ItemType, new SysId(dbActivityFeedback._ItemId);
|
||||
activityFeedback.ViewCount = dbActivityFeedback._ViewCount;
|
||||
activityFeedback.FeedbackCount = dbActivityFeedback._FeedbackCount;
|
||||
activityFeedback.FeedbackTotal = dbActivityFeedback._FeedbackTotal;
|
||||
activityFeedback.FeedbackAverage = dbActivityFeedback._FeedbackAverage;
|
||||
activityFeedback.SetCreateStamp(dbActivityFeedback._CreateOn, null, null);
|
||||
activityFeedback.SetUpdateStamp(dbActivityFeedback._UpdateOn, null, null);
|
||||
activityFeedback.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item column definitions.
|
||||
public static String aliasActivityFeedback { get; } = "ActFbk";
|
||||
private void SetActivityFeedbackColDfn
|
||||
(ColumnDfn col, String caption, int width, SaxDbDfn_Core.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SaxDbDfn_Core.GetTableForColumn(dbCol) == SaxDbDfn_Core.TableIdx.ActivityFeedback)
|
||||
alias = aliasActivityFeedback;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn_Core.GetColumnName(dbCol, false), SaxDbDfn_Core.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn_Core.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SaxDbDfn_Core.GetColTextLen(dbCol);
|
||||
}
|
||||
public override ColumnDfn GetActivityFeedbackColumnDfn(SaxActivityFeedback.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
//-----------------------------------------------------------
|
||||
case SaxActivityFeedback.Column.Pos:
|
||||
SetActivityFeedbackColDfn(columnDfn, "Pos", 60, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Item.
|
||||
case SaxActivityFeedback.Column.ItemType:
|
||||
SetActivityFeedbackColDfn(columnDfn, "Item type", 80, SaxDbDfn_Core.ColumnIdx.ActivityFeedback_ItemType, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxActivityFeedback.Column.ItemType_Code:
|
||||
SetActivityFeedbackColDfn(columnDfn, "Item type", 80, SaxDbDfn_Core.ColumnIdx.ActivityFeedback_ItemType, ColumnAlignment.Center, DataValue.DataType.String);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxActivityFeedback.Column.ItemType_Desc:
|
||||
SetActivityFeedbackColDfn(columnDfn, "Item type", 100, SaxDbDfn_Core.ColumnIdx.ActivityFeedback_ItemType, ColumnAlignment.Center, DataValue.DataType.String);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxActivityFeedback.Column.ItemId:
|
||||
SetActivityFeedbackColDfn(columnDfn, "Item #", 80, SaxDbDfn_Core.ColumnIdx.ActivityFeedback_ItemId, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Feedback.
|
||||
case SaxActivityFeedback.Column.ViewCount:
|
||||
SetActivityFeedbackColDfn(columnDfn, "Views", 80, SaxDbDfn_Core.ColumnIdx.ActivityFeedback_ViewCount, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxActivityFeedback.Column.FeedbackCount:
|
||||
SetActivityFeedbackColDfn(columnDfn, "Feedbacks", 80, SaxDbDfn_Core.ColumnIdx.ActivityFeedback_FeedbackCount, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxActivityFeedback.Column.FeedbackTotal:
|
||||
SetActivityFeedbackColDfn(columnDfn, "Feedbacks", 80, SaxDbDfn_Core.ColumnIdx.ActivityFeedback_FeedbackTotal, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxActivityFeedback.Column.FeedbackAverage:
|
||||
SetActivityFeedbackColDfn(columnDfn, "Feedbacks", 80, SaxDbDfn_Core.ColumnIdx.ActivityFeedback_FeedbackAverage, ColumnAlignment.Center, DataValue.DataType.Double);
|
||||
columnDfn.NumDecimals = 2;
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Common properties.
|
||||
case SaxActivityFeedback.Column.CreateOn_Date:
|
||||
SetActivityFeedbackColDfn(columnDfn, "Created", 80, SaxDbDfn_Core.ColumnIdx.ActivityFeedback_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxActivityFeedback.Column.UpdateOn_Date:
|
||||
SetActivityFeedbackColDfn(columnDfn, "Updated", 80, SaxDbDfn_Core.ColumnIdx.ActivityFeedback_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 List<string> GetActivityFeedbackQueryFilter(SaxActivityFeedback activityFeedback, String aliasActivityFeedback)
|
||||
{
|
||||
// NB Only the Ids need to be queried. Effective date is a property of the Ids.
|
||||
List<String> filter = new List<String>();
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_ItemType, aliasActivityFeedback) + "=" + activityFeedback.ItemId.Type);
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_ItemId, aliasActivityFeedback) + "=" + SysId.ToInt(activityFeedback.ItemId.Id));
|
||||
return filter;
|
||||
}
|
||||
public override List<string> GetActivityFeedbackQueryFilter(SaxActivityFeedback.Params prm)
|
||||
{
|
||||
List<String> filter = new List<String>();
|
||||
String aliasActivityFeedback = SaxActivityMgr_Dbas.aliasActivityFeedback;
|
||||
|
||||
// Item Ids.
|
||||
if (!prm.ItemIdsIncluded.IsEmpty())
|
||||
{
|
||||
List<String> itemIdFilters = new List<string>();
|
||||
foreach (ItemId itemId in prm.ItemIdsIncluded)
|
||||
{
|
||||
if (!ItemId.IsValid(itemId)) continue;
|
||||
String itemIdFilter =
|
||||
SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_ItemType, aliasActivityFeedback) + "=" + itemId.Type +
|
||||
" AND " + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_ItemId, aliasActivityFeedback) + "=" + SysId.ToInt(itemId.Id);
|
||||
itemIdFilters.Add(itemIdFilter);
|
||||
}
|
||||
if (!itemIdFilters.IsEmpty())
|
||||
filter.Add(itemIdFilters.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
|
||||
if (filter.Count < 1) filter.Add("1=1");
|
||||
return filter;
|
||||
}
|
||||
// Item sort columns.
|
||||
public List<String> GetActivityFeedbackSortColumns(SaxActivityFeedback.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
List<String> sortColumnNames = new List<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for ActivityFeedback columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SaxDbDfn_Core.GetTableForColumn((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn_Core.TableIdx.ActivityFeedback)
|
||||
{
|
||||
sortCol = SaxDbDfn_Core.GetColumnNameQual((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn, aliasActivityFeedback);
|
||||
}
|
||||
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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_ItemType, aliasActivityFeedback) + " ASC");
|
||||
sortColumnNames.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_ItemId, aliasActivityFeedback) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item count.
|
||||
private long GetActivityFeedbackCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return CoreDatabase.GetRowCount(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ActivityFeedback) + " As " + aliasActivityFeedback, filter);
|
||||
}
|
||||
public override long GetActivityFeedbackCount(SaxActivityFeedback.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetActivityFeedbackCount(GetActivityFeedbackQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item list.
|
||||
public override List<SaxActivityFeedback> GetActivityFeedbackList(SaxActivityFeedback.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<SaxActivityFeedback> userActivitys = new List<SaxActivityFeedback>();
|
||||
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ActivityFeedback), aliasActivityFeedback);
|
||||
ActivityFeedback_Db dbActivityFeedback = new ActivityFeedback_Db(CoreDbInfo);
|
||||
qry.Columns.AddRange(dbActivityFeedback.ExistingColumnNames);
|
||||
qry.Filters.AddRange(GetActivityFeedbackQueryFilter(prm));
|
||||
qry.OrderBy.AddRange(GetActivityFeedbackSortColumns(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())
|
||||
{
|
||||
dbActivityFeedback = new ActivityFeedback_Db(CoreDbInfo);
|
||||
dbActivityFeedback.PopulateFrom(dbDataReader);
|
||||
userActivitys.Add(CreateActivityFeedback(dbActivityFeedback));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return userActivitys;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item query execution.
|
||||
public override DbResultSet ExecuteActivityFeedbackQuery(List<ColumnDfn> columns, SaxActivityFeedback.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(CoreDatabase.DbmsType);
|
||||
query.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ActivityFeedback), aliasActivityFeedback);
|
||||
|
||||
// Add columns as defined in query list.
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_ItemType, aliasActivityFeedback));
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_ItemId, aliasActivityFeedback));
|
||||
if (columns.HasId(SaxActivityFeedback.Column.ViewCount))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_ViewCount, aliasActivityFeedback));
|
||||
if (columns.HasId(SaxActivityFeedback.Column.FeedbackCount))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_FeedbackCount, aliasActivityFeedback));
|
||||
if (columns.HasId(SaxActivityFeedback.Column.FeedbackTotal))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_FeedbackTotal, aliasActivityFeedback));
|
||||
if (columns.HasId(SaxActivityFeedback.Column.FeedbackAverage))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_FeedbackAverage, aliasActivityFeedback));
|
||||
// Common properties.
|
||||
if (columns.HasId(SaxActivityFeedback.Column.CreateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_CreateOn, aliasActivityFeedback));
|
||||
if (columns.HasId(SaxActivityFeedback.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_UpdateOn, aliasActivityFeedback));
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetActivityFeedbackQueryFilter(prm));
|
||||
|
||||
if (prm.ItemIdsIncluded.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetActivityFeedbackSortColumns(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,744 @@
|
||||
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;
|
||||
using Saxonite.Net.Standard.Dbas.Internal.Core;
|
||||
|
||||
namespace Saxonite.Net.Standard.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
partial class SaxActivityMgr_Dbas
|
||||
{
|
||||
//*******************************************************************
|
||||
// Activity Mgr - ActivityIndex
|
||||
//*******************************************************************
|
||||
// Utilities.
|
||||
private List<StringPair> GetLogProperties(SaxActivityIndex activityIndex)
|
||||
{
|
||||
return new List<StringPair>()
|
||||
{
|
||||
new StringPair("ItemId",ItemId.ToString(activityIndex.ItemId)),
|
||||
new StringPair("Sport",SysId.ToString(activityIndex.SportId)),
|
||||
new StringPair("Region",SysId.ToString(activityIndex.RegionId)),
|
||||
new StringPair("Effective",DateUtil.Format(activityIndex.EffectiveOn, "d-MMM-yyyy")),
|
||||
};
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create item.
|
||||
public override SaxActivityIndex CreateActivityIndex(ItemId itemId, SysId sportId, SysId regionId)
|
||||
{
|
||||
ClearErrorState();
|
||||
return new SaxActivityIndex_Dbas(CoreDatabase, itemId, sportId, regionId, 0);
|
||||
}
|
||||
private SaxActivityIndex_Dbas CreateActivityIndex(ActivityIndex_Db dbActivityIndex)
|
||||
{
|
||||
ClearErrorState();
|
||||
ItemId itemId = new ItemId(dbActivityIndex._ItemType, new SysId(dbActivityIndex._ItemId));
|
||||
SaxActivityIndex_Dbas activityIndex = new SaxActivityIndex_Dbas(CoreDatabase, itemId, new SysId(dbActivityIndex._SportId), new SysId(dbActivityIndex._RegionId), (UInt16)dbActivityIndex._Flags);
|
||||
PopulateFrom(dbActivityIndex, activityIndex);
|
||||
return activityIndex;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get item.
|
||||
public override SaxActivityIndex GetActivityIndex(SaxActivityIndex.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetActivityIndex(GetActivityIndexQueryFilter(prm).Concat(" And ", "(", ")"));
|
||||
}
|
||||
private SaxActivityIndex GetActivityIndex(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetActivityIndexCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple items found");
|
||||
return null;
|
||||
}
|
||||
SaxActivityIndex activityIndex = null;
|
||||
// Query data.
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
ActivityIndex_Db dbActivityIndex = new ActivityIndex_Db(CoreDbInfo);
|
||||
dbActivityIndex.PopulateFrom(dbCommand, aliasActivityIndex, filter);
|
||||
activityIndex = CreateActivityIndex(dbActivityIndex);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return activityIndex;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate item.
|
||||
public override bool IsValidActivityIndexData(SaxActivityIndex.Data data, SaxActivityIndex.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidActivityIndexData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert item.
|
||||
public override bool InsertActivityIndex(SaxActivityIndex activityIndex, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertActivityIndex";
|
||||
ClearErrorState();
|
||||
if (!IsValidActivityIndex(activityIndex)) return false;
|
||||
//if (SysId.IsValid(activityIndex.Id)) return SetErrorState(ErrorMessage.ValidItemId);
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
ActivityIndex_Db dbActivityIndex = new ActivityIndex_Db(CoreDbInfo);
|
||||
PopulateTo(dbActivityIndex, activityIndex, dbUpdateInfo);
|
||||
if (ActivityIndex_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
// ToDo dbActivityIndex._Id = CoreDatabase.GetNextIdFromTable("ActivityIndex");
|
||||
}
|
||||
dbActivityIndex.ExecuteInsertCommand(dbCommand);
|
||||
//activityIndex.Id = new SysId(dbActivityIndex._Id);
|
||||
activityIndex.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(activityIndex).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update item.
|
||||
public override bool UpdateActivityIndex(SaxActivityIndex activityIndex, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdateActivityIndex";
|
||||
ClearErrorState();
|
||||
if (!IsValidActivityIndex(activityIndex)) return false;
|
||||
//if (!SysId.IsValid(activityIndex.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!activityIndex.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(activityIndex).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
ActivityIndex_Db dbActivityIndex = new ActivityIndex_Db(CoreDbInfo);
|
||||
dbActivityIndex.PopulateFrom(dbCommand, aliasActivityIndex, GetActivityIndexQueryFilter(activityIndex, aliasActivityIndex).Concat(" AND ", "(", ")"));
|
||||
// ToDo SaxUpdateLogItemMonitor_ActivityIndex updateLogMonitor = new SaxUpdateLogItemMonitor_ActivityIndex(SessionContext, CreateActivityIndex(dbActivityIndex), dbUpdateInfo);
|
||||
// Update item.
|
||||
PopulateTo(dbActivityIndex, activityIndex, dbUpdateInfo);
|
||||
dbActivityIndex.ExecuteUpdateCommand(dbCommand);
|
||||
activityIndex.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(activityIndex).Concat(": ").Concat("", "\n\t"));
|
||||
// Record updates.
|
||||
// ToDo updateLogMonitor.RecordUpdatedValues(activityIndex);
|
||||
// ToDo updateLogMonitor.LogUpdates();
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete item.
|
||||
public override bool ActivityIndexCanBeDeleted(SaxActivityIndex activityIndex)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.ActivityIndexCanBeDeleted(activityIndex)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteActivityIndex(SaxActivityIndex activityIndex, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeleteActivityIndex";
|
||||
ClearErrorState();
|
||||
if (!ActivityIndexCanBeDeleted(activityIndex)) return false;
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
ActivityIndex_Db dbActivityIndex = new ActivityIndex_Db(CoreDbInfo);
|
||||
String filter = GetActivityIndexQueryFilter(activityIndex, aliasActivityIndex).Concat(" AND ", "(", ")");
|
||||
dbActivityIndex.PopulateFrom(dbCommand, aliasActivityIndex, filter);
|
||||
// Delete item.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE " + aliasActivityIndex + " FROM " + SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ActivityIndex) + " As " + aliasActivityIndex + " WHERE " + filter + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
activityIndex.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(activityIndex).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(ActivityIndex_Db dbActivityIndex, SaxActivityIndex activityIndex, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbActivityIndex._ItemType = activityIndex.ItemId.Type;
|
||||
dbActivityIndex._ItemId = SysId.ToInt(activityIndex.ItemId.Id);
|
||||
dbActivityIndex._SportId = SysId.ToInt(activityIndex.SportId);
|
||||
dbActivityIndex._RegionId = SysId.ToInt(activityIndex.RegionId);
|
||||
dbActivityIndex._UserAccountIdOwner = SysId.ToInt(activityIndex.UserAccountIdOwner);
|
||||
dbActivityIndex._OrganisationIdOwner = SysId.ToInt(activityIndex.OrganisationIdOwner);
|
||||
dbActivityIndex._EffectiveOn = activityIndex.EffectiveOn;
|
||||
dbActivityIndex._ExpiresOn = activityIndex.ExpiresOn;
|
||||
dbActivityIndex._Notes = activityIndex.Notes;
|
||||
dbActivityIndex._Status = SacsSystem.GetStatusCode(activityIndex.Status);
|
||||
dbActivityIndex._Flags = (short)activityIndex.Flags;
|
||||
if (!DateUtil.IsValid(dbActivityIndex._CreateOn))
|
||||
{
|
||||
dbActivityIndex._CreateOn = DateTime.Now;
|
||||
dbActivityIndex._CreateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbActivityIndex._CreateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
dbActivityIndex._UpdateOn = DateTime.Now;
|
||||
dbActivityIndex._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbActivityIndex._UpdateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
private void PopulateFrom(ActivityIndex_Db dbActivityIndex, SaxActivityIndex activityIndex)
|
||||
{
|
||||
//activityIndex.ItemId = new ItemId(dbActivityIndex._ItemType, new SysId(dbActivityIndex._ItemId);
|
||||
//activityIndex.SportId = new SysId(dbActivityIndex._SportId);
|
||||
//activityIndex.RegionId = new SysId(dbActivityIndex._RegionId);
|
||||
activityIndex.UserAccountIdOwner = new SysId(dbActivityIndex._UserAccountIdOwner ?? 0);
|
||||
activityIndex.OrganisationIdOwner = new SysId(dbActivityIndex._OrganisationIdOwner ?? 0);
|
||||
activityIndex.EffectiveOn = dbActivityIndex._EffectiveOn;
|
||||
activityIndex.ExpiresOn = dbActivityIndex._ExpiresOn;
|
||||
activityIndex.Notes = dbActivityIndex._Notes;
|
||||
activityIndex.Status = SacsSystem.GetStatusForCode(dbActivityIndex._Status);
|
||||
activityIndex.SetCreateStamp(dbActivityIndex._CreateOn, new SysId(dbActivityIndex._CreateBy), dbActivityIndex._CreateHost);
|
||||
activityIndex.SetUpdateStamp(dbActivityIndex._UpdateOn, new SysId(dbActivityIndex._UpdateBy), dbActivityIndex._UpdateHost);
|
||||
activityIndex.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item column definitions.
|
||||
public static readonly String aliasActivityIndex = "ActIdx";
|
||||
public static readonly String aliasActivityIndex_Organisation = "ActIdx_Org";
|
||||
private static readonly String prefixActivityIndex_Organisation = aliasActivityIndex_Organisation + "_";
|
||||
private static readonly String colActivityIndex_OrganisationOwner_LogoCount = "ActIdx_OrgOwn_LogoCount";
|
||||
public static readonly String aliasActivityIndex_UserActivity = "ActIdx_UsrAct";
|
||||
private static readonly String prefixActivityIndex_UserActivity = aliasActivityIndex_UserActivity + "_";
|
||||
public static readonly String aliasActivityIndex_Article = "ActIdx_Art";
|
||||
private static readonly String prefixActivityIndex_Article = aliasActivityIndex_Article + "_";
|
||||
public static readonly String aliasActivityIndex_Opportunity = "ActIdx_OrgOpp";
|
||||
private static readonly String prefixActivityIndex_Opportunity = aliasActivityIndex_Opportunity + "_";
|
||||
public static readonly String aliasActivityIndex_Region = "ActIdx_Rgn";
|
||||
private static readonly String prefixActivityIndex_Region = aliasActivityIndex_Region + "_";
|
||||
public static readonly String aliasActivityIndex_Sport = "ActIdx_Spt";
|
||||
private static readonly String prefixActivityIndex_Sport = aliasActivityIndex_Sport + "_";
|
||||
private void SetActivityIndexColDfn
|
||||
(ColumnDfn col, String caption, int width, SaxDbDfn_Core.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SaxDbDfn_Core.GetTableForColumn(dbCol) == SaxDbDfn_Core.TableIdx.ActivityIndex)
|
||||
alias = aliasActivityIndex;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn_Core.GetColumnName(dbCol, false), SaxDbDfn_Core.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn_Core.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SaxDbDfn_Core.GetColTextLen(dbCol);
|
||||
}
|
||||
public override ColumnDfn GetActivityIndexColumnDfn(SaxActivityIndex.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
//-----------------------------------------------------------
|
||||
case SaxActivityIndex.Column.Pos:
|
||||
SetActivityIndexColDfn(columnDfn, "Pos", 60, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Item.
|
||||
case SaxActivityIndex.Column.ItemType:
|
||||
SetActivityIndexColDfn(columnDfn, "Item type", 80, SaxDbDfn_Core.ColumnIdx.ActivityIndex_ItemType, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxActivityIndex.Column.ItemType_Code:
|
||||
SetActivityIndexColDfn(columnDfn, "Item type", 80, SaxDbDfn_Core.ColumnIdx.ActivityIndex_ItemType, ColumnAlignment.Center, DataValue.DataType.String);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxActivityIndex.Column.ItemType_Desc:
|
||||
SetActivityIndexColDfn(columnDfn, "Item type", 100, SaxDbDfn_Core.ColumnIdx.ActivityIndex_ItemType, ColumnAlignment.Center, DataValue.DataType.String);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxActivityIndex.Column.ItemId:
|
||||
SetActivityIndexColDfn(columnDfn, "Item #", 80, SaxDbDfn_Core.ColumnIdx.ActivityIndex_ItemId, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Organisation Owner.
|
||||
case SaxActivityIndex.Column.OrganisationIdOwner:
|
||||
SetActivityIndexColDfn(columnDfn, "Organisation #", 80, SaxDbDfn_Core.ColumnIdx.ActivityIndex_OrganisationIdOwner, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxActivityIndex.Column.OrganisationOwner_Name:
|
||||
SetActivityIndexColDfn(columnDfn, "Organisation", 120, SaxDbDfn_Core.ColumnIdx.Organisation_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasActivityIndex_Organisation, prefixActivityIndex_Organisation);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxActivityIndex.Column.OrganisationOwner_LogoCount:
|
||||
SetActivityIndexColDfn(columnDfn, "Organisation Logos", 100, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.DataName = colActivityIndex_OrganisationOwner_LogoCount;
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// User Activity.
|
||||
case SaxActivityIndex.Column.UserActivity_UserAccountId:
|
||||
SetActivityIndexColDfn(columnDfn, "User #", 80, SaxDbDfn_Core.ColumnIdx.UserActivity_UserAccountId, ColumnAlignment.Center, DataValue.DataType.Long, aliasActivityIndex_UserActivity, prefixActivityIndex_UserActivity);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxActivityIndex.Column.UserActivity_ListedAtLast:
|
||||
SetActivityIndexColDfn(columnDfn, "Last Listed", 90, SaxDbDfn_Core.ColumnIdx.UserActivity_ListedAtLast, ColumnAlignment.Center, DataValue.DataType.DateTime, aliasActivityIndex_UserActivity, prefixActivityIndex_UserActivity);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxActivityIndex.Column.UserActivity_ViewedAtLast:
|
||||
SetActivityIndexColDfn(columnDfn, "Last Viewed", 90, SaxDbDfn_Core.ColumnIdx.UserActivity_ViewedAtLast, ColumnAlignment.Center, DataValue.DataType.DateTime, aliasActivityIndex_UserActivity, prefixActivityIndex_UserActivity);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxActivityIndex.Column.UserActivity_Reaction:
|
||||
SetActivityIndexColDfn(columnDfn, "Reaction", 60, SaxDbDfn_Core.ColumnIdx.UserActivity_Reaction, ColumnAlignment.Center, DataValue.DataType.Long, aliasActivityIndex_UserActivity, prefixActivityIndex_UserActivity);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxActivityIndex.Column.UserActivity_ReactedAtLast:
|
||||
SetActivityIndexColDfn(columnDfn, "Last Reacted", 90, SaxDbDfn_Core.ColumnIdx.UserActivity_ReactedAtLast, ColumnAlignment.Center, DataValue.DataType.DateTime, aliasActivityIndex_UserActivity, prefixActivityIndex_UserActivity);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Article.
|
||||
case SaxActivityIndex.Column.Article_Headline:
|
||||
SetActivityIndexColDfn(columnDfn, "Headline", 160, SaxDbDfn_Core.ColumnIdx.Article_Headline, ColumnAlignment.Left, DataValue.DataType.String, aliasActivityIndex_Article, prefixActivityIndex_Article);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxActivityIndex.Column.Article_Summary:
|
||||
SetActivityIndexColDfn(columnDfn, "Summary", 240, SaxDbDfn_Core.ColumnIdx.Article_Summary, ColumnAlignment.Left, DataValue.DataType.String, aliasActivityIndex_Article, prefixActivityIndex_Article);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Opportunity.
|
||||
case SaxActivityIndex.Column.Opportunity_Position:
|
||||
SetActivityIndexColDfn(columnDfn, "Position", 160, SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Position, ColumnAlignment.Left, DataValue.DataType.String, aliasActivityIndex_Opportunity, prefixActivityIndex_Opportunity);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxActivityIndex.Column.Opportunity_Outline:
|
||||
SetActivityIndexColDfn(columnDfn, "Outliner", 240, SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Outline, ColumnAlignment.Left, DataValue.DataType.String, aliasActivityIndex_Opportunity, prefixActivityIndex_Opportunity);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Sport.
|
||||
case SaxActivityIndex.Column.SportId:
|
||||
SetActivityIndexColDfn(columnDfn, "Sport Id", 80, SaxDbDfn_Core.ColumnIdx.ActivityIndex_SportId, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxActivityIndex.Column.Sport_Name:
|
||||
SetActivityIndexColDfn(columnDfn, "Sport", 100, SaxDbDfn_Core.ColumnIdx.Sport_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasActivityIndex_Sport, prefixActivityIndex_Sport);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Region.
|
||||
case SaxActivityIndex.Column.RegionId:
|
||||
SetActivityIndexColDfn(columnDfn, "Region Id", 80, SaxDbDfn_Core.ColumnIdx.ActivityIndex_RegionId, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxActivityIndex.Column.Region_Name:
|
||||
SetActivityIndexColDfn(columnDfn, "Region", 100, SaxDbDfn_Core.ColumnIdx.Region_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasActivityIndex_Region, prefixActivityIndex_Region);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Properties.
|
||||
case SaxActivityIndex.Column.EffectiveOn:
|
||||
SetActivityIndexColDfn(columnDfn, "Effective", 90, SaxDbDfn_Core.ColumnIdx.ActivityIndex_EffectiveOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.DateFormat = "d-MMM-yyyy";
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Derived properties.
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Common properties.
|
||||
case SaxActivityIndex.Column.Notes:
|
||||
SetActivityIndexColDfn(columnDfn, "Notes", 240, SaxDbDfn_Core.ColumnIdx.ActivityIndex_Notes);
|
||||
break;
|
||||
case SaxActivityIndex.Column.Flags:
|
||||
SetActivityIndexColDfn(columnDfn, "Flags", 60, SaxDbDfn_Core.ColumnIdx.ActivityIndex_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxActivityIndex.Column.Status:
|
||||
SetActivityIndexColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.ActivityIndex_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxActivityIndex.Column.Status_Desc:
|
||||
SetActivityIndexColDfn(columnDfn, "Status", 90, SaxDbDfn_Core.ColumnIdx.ActivityIndex_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxActivityIndex.Column.Status_Ind:
|
||||
SetActivityIndexColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.ActivityIndex_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SaxActivityIndex.Column.CreateOn_Date:
|
||||
SetActivityIndexColDfn(columnDfn, "Created", 80, SaxDbDfn_Core.ColumnIdx.ActivityIndex_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxActivityIndex.Column.UpdateOn_Date:
|
||||
SetActivityIndexColDfn(columnDfn, "Updated", 80, SaxDbDfn_Core.ColumnIdx.ActivityIndex_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 List<string> GetActivityIndexQueryFilter(SaxActivityIndex activityIndex, String aliasActivityIndex)
|
||||
{
|
||||
// NB Only the Ids need to be queried. Effective date is a property of the Ids.
|
||||
List<String> filter = new List<String>();
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_ItemType, aliasActivityIndex) + "=" + activityIndex.ItemId.Type);
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_ItemId, aliasActivityIndex) + "=" + SysId.ToInt(activityIndex.ItemId.Id));
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_SportId, aliasActivityIndex) + " IN (" + activityIndex.SportId + ")");
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_RegionId, aliasActivityIndex) + " IN (" + activityIndex.RegionId + ")");
|
||||
return filter;
|
||||
}
|
||||
public override List<string> GetActivityIndexQueryFilter(SaxActivityIndex.Params prm)
|
||||
{
|
||||
List<String> filter = new List<String>();
|
||||
String aliasActivityIndex = StringUtil.OnEmpty(prm.Alias_ActivityIndex, SaxActivityMgr_Dbas.aliasActivityIndex);
|
||||
|
||||
// Item Ids.
|
||||
if (!prm.ItemIdsIncluded.IsEmpty())
|
||||
{
|
||||
List<String> itemIdFilters = new List<string>();
|
||||
foreach (ItemId itemId in prm.ItemIdsIncluded)
|
||||
{
|
||||
if (!ItemId.IsValid(itemId)) continue;
|
||||
String itemIdFilter =
|
||||
SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_ItemType, aliasActivityIndex) + "=" + itemId.Type +
|
||||
" AND " + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_ItemId, aliasActivityIndex) + "=" + SysId.ToInt(itemId.Id);
|
||||
itemIdFilters.Add(itemIdFilter);
|
||||
}
|
||||
if (!itemIdFilters.IsEmpty())
|
||||
filter.Add(itemIdFilters.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
|
||||
// Activities are applicable if match on eo fthe sport/region combinations or match one of the owners (user or organisation).
|
||||
List<String> applicableFilter = new List<string>();
|
||||
|
||||
// Sport and Region Id combinations.
|
||||
foreach (SaxActivityIndex.SportRegionIds sportRegionIds in prm.SportRegionIdsIncluded)
|
||||
applicableFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_SportId, aliasActivityIndex) + "=" + sportRegionIds.SportId.ToString() + " AND " + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_RegionId, aliasActivityIndex) + "=" + sportRegionIds.RegionId.ToString());
|
||||
|
||||
// Owner - User Account and/or Organisation.
|
||||
if (prm.UserAccountIdsOwnerIncluded.Exists(item => SysId.IsValid(item)))
|
||||
applicableFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_UserAccountIdOwner, aliasActivityIndex) + " IN (" + prm.UserAccountIdsOwnerIncluded.Concat(",") + ")");
|
||||
if (prm.OrganisationIdsOwnerIncluded.Exists(item => SysId.IsValid(item)))
|
||||
applicableFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_OrganisationIdOwner, aliasActivityIndex) + " IN (" + prm.OrganisationIdsOwnerIncluded.Concat(",") + ")");
|
||||
|
||||
// Any one of the applicable filters can be matched.
|
||||
if (!applicableFilter.IsEmpty())
|
||||
filter.Add(applicableFilter.Concat(" OR ", "(", ")"));
|
||||
|
||||
// Effective period.
|
||||
if (DateUtil.IsValid(prm.EffectiveFrom))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_EffectiveOn, aliasActivityIndex) + ">=" + DbQuery.FormatDateForCondition(prm.EffectiveFrom.Date));
|
||||
if (DateUtil.IsValid(prm.EffectiveTo))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_EffectiveOn, aliasActivityIndex) + "<" + DbQuery.FormatDateForCondition(DateUtil.IncrementDate(prm.EffectiveTo.Date, 1)));
|
||||
|
||||
// Expiry.
|
||||
if (DateUtil.IsValid(prm.NotExpiredOn))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_ExpiresOn, aliasActivityIndex) + " Is Null Or " + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_ExpiresOn, aliasActivityIndex) + ">" + DbQuery.FormatDateForCondition(prm.NotExpiredOn.Date));
|
||||
|
||||
if (filter.Count < 1) filter.Add("1=1");
|
||||
return filter;
|
||||
}
|
||||
// Item sort columns.
|
||||
public List<String> GetActivityIndexSortColumns(SaxActivityIndex.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
List<String> sortColumnNames = new List<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for ActivityIndex columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SaxDbDfn_Core.GetTableForColumn((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn_Core.TableIdx.ActivityIndex)
|
||||
{
|
||||
sortCol = SaxDbDfn_Core.GetColumnNameQual((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn, aliasActivityIndex);
|
||||
}
|
||||
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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_ItemType, aliasActivityIndex) + " ASC");
|
||||
sortColumnNames.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_ItemId, aliasActivityIndex) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item count.
|
||||
private long GetActivityIndexCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return CoreDatabase.GetRowCount(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ActivityIndex) + " As " + aliasActivityIndex, filter);
|
||||
}
|
||||
public override long GetActivityIndexCount(SaxActivityIndex.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetActivityIndexCount(GetActivityIndexQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item list.
|
||||
public override List<SaxActivityIndex> GetActivityIndexList(SaxActivityIndex.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<SaxActivityIndex> userActivitys = new List<SaxActivityIndex>();
|
||||
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ActivityIndex), aliasActivityIndex);
|
||||
ActivityIndex_Db dbActivityIndex = new ActivityIndex_Db(CoreDbInfo);
|
||||
qry.Columns.AddRange(dbActivityIndex.ExistingColumnNames);
|
||||
qry.Filters.AddRange(GetActivityIndexQueryFilter(prm));
|
||||
qry.OrderBy.AddRange(GetActivityIndexSortColumns(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())
|
||||
{
|
||||
dbActivityIndex = new ActivityIndex_Db(CoreDbInfo);
|
||||
dbActivityIndex.PopulateFrom(dbDataReader);
|
||||
userActivitys.Add(CreateActivityIndex(dbActivityIndex));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return userActivitys;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item query execution.
|
||||
public override DbResultSet ExecuteActivityIndexQuery(List<ColumnDfn> columns, SaxActivityIndex.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(CoreDatabase.DbmsType);
|
||||
query.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ActivityIndex), aliasActivityIndex);
|
||||
|
||||
// Add columns as defined in query list.
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_ItemType, aliasActivityIndex));
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_ItemId, aliasActivityIndex));
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_SportId, aliasActivityIndex));
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_RegionId, aliasActivityIndex));
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_EffectiveOn, aliasActivityIndex));
|
||||
if (columns.HasId(SaxActivityIndex.Column.OrganisationIdOwner))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_OrganisationIdOwner, aliasActivityIndex));
|
||||
// Common properties.
|
||||
if (columns.HasId(SaxActivityIndex.Column.Notes))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_Notes, aliasActivityIndex));
|
||||
if (columns.HasId(SaxActivityIndex.Column.Flags))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_Flags, aliasActivityIndex));
|
||||
if (columns.HasId(SaxActivityIndex.Column.Status) || columns.HasId(SaxActivityIndex.Column.Status_Desc) || columns.HasId(SaxActivityIndex.Column.Status_Ind))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_Status, aliasActivityIndex));
|
||||
if (columns.HasId(SaxActivityIndex.Column.CreateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_CreateOn, aliasActivityIndex));
|
||||
if (columns.HasId(SaxActivityIndex.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_UpdateOn, aliasActivityIndex));
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Organisation Owner.
|
||||
if (columns.HasId(SaxActivityIndex.Column.OrganisationOwner_Name))
|
||||
{
|
||||
DbQueryJoin joinOrgOwner = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinOrgOwner.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Organisation), aliasActivityIndex_Organisation);
|
||||
joinOrgOwner.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_Id, aliasActivityIndex_Organisation) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_OrganisationIdOwner, aliasActivityIndex));
|
||||
query.Joins.Add(joinOrgOwner);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.Organisation_Name);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasActivityIndex_Organisation), prefixActivityIndex_Organisation + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Organisation Owner Logo Image Count.
|
||||
if (columns.HasId(SaxActivityIndex.Column.OrganisationOwner_LogoCount))
|
||||
{
|
||||
String aliasLogoCount = "aImg_Logo";
|
||||
DbQuery queryLogoCount = new DbQuery(CoreDatabase.DbmsType);
|
||||
queryLogoCount.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ItemImage), aliasLogoCount);
|
||||
queryLogoCount.Columns.Add("Count(*)");
|
||||
queryLogoCount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_ItemType, aliasLogoCount) + "=" + (int)Sax.DataItemType.Organisation);
|
||||
queryLogoCount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_ItemId, aliasLogoCount) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_OrganisationIdOwner, aliasActivityIndex));
|
||||
queryLogoCount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_ImageType, aliasLogoCount) + "=" + (int)Sax.ImageType.OrganisationLogo);
|
||||
queryLogoCount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_Status, aliasLogoCount) + "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'");
|
||||
// Construct sub-query.
|
||||
query.Columns.Add("(" + queryLogoCount.BuildQuery() + ")", colActivityIndex_OrganisationOwner_LogoCount);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// User Activity.
|
||||
if (columns.HasId(SaxActivityIndex.Column.UserActivity_UserAccountId) || columns.HasId(SaxActivityIndex.Column.UserActivity_ListedAtLast) || columns.HasId(SaxActivityIndex.Column.UserActivity_ViewedAtLast) || columns.HasId(SaxActivityIndex.Column.UserActivity_Reaction) || columns.HasId(SaxActivityIndex.Column.UserActivity_ReactedAtLast))
|
||||
{
|
||||
DbQueryJoin joinUserActivity = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinUserActivity.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserActivity), aliasActivityIndex_UserActivity);
|
||||
joinUserActivity.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserActivity_UserActivityData, aliasActivityIndex_UserActivity) + "=" + prm.UserAccountId.ToString());
|
||||
joinUserActivity.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserActivity_ItemType, aliasActivityIndex_UserActivity) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_ItemType, aliasActivityIndex));
|
||||
joinUserActivity.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserActivity_ItemId, aliasActivityIndex_UserActivity) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_ItemId, aliasActivityIndex));
|
||||
query.Joins.Add(joinUserActivity);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserActivity_UserAccountId);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserActivity_ListedAtLast);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserActivity_ViewedAtLast);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserActivity_Reaction);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserActivity_ReactedAtLast);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasActivityIndex_UserActivity), prefixActivityIndex_UserActivity + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Article.
|
||||
if (columns.HasId(SaxActivityIndex.Column.Article_Headline) || columns.HasId(SaxActivityIndex.Column.Article_Summary))
|
||||
{
|
||||
DbQueryJoin joinArticle = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinArticle.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Article), aliasActivityIndex_Article);
|
||||
joinArticle.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_ItemType, aliasActivityIndex) + "=" + ((int)Sax.DataItemType.Article).ToString());
|
||||
joinArticle.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_Id, aliasActivityIndex_Article) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_ItemId, aliasActivityIndex));
|
||||
query.Joins.Add(joinArticle);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.Article_Headline);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.Article_Summary);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasActivityIndex_Article), prefixActivityIndex_Article + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Opportunity.
|
||||
if (columns.HasId(SaxActivityIndex.Column.Opportunity_Position) || columns.HasId(SaxActivityIndex.Column.Opportunity_Outline))
|
||||
{
|
||||
DbQueryJoin joinOpportunity = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinOpportunity.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.OrganisationOpportunity), aliasActivityIndex_Opportunity);
|
||||
joinOpportunity.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_ItemType, aliasActivityIndex) + "=" + ((int)Sax.DataItemType.OrganisationOpportunity).ToString());
|
||||
joinOpportunity.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Id, aliasActivityIndex_Opportunity) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_ItemId, aliasActivityIndex));
|
||||
query.Joins.Add(joinOpportunity);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Position);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Outline);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasActivityIndex_Opportunity), prefixActivityIndex_Opportunity + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Sport.
|
||||
if (columns.HasId(SaxActivityIndex.Column.Sport_Name))
|
||||
{
|
||||
DbQueryJoin joinSport = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinSport.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Sport), aliasActivityIndex_Sport);
|
||||
joinSport.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_Id, aliasActivityIndex_Sport) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_SportId, aliasActivityIndex));
|
||||
query.Joins.Add(joinSport);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.Sport_Name);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasActivityIndex_Sport), prefixActivityIndex_Sport + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Region.
|
||||
if (columns.HasId(SaxActivityIndex.Column.Region_Name))
|
||||
{
|
||||
DbQueryJoin joinRegion = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinRegion.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Region), aliasActivityIndex_Region);
|
||||
joinRegion.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_Id, aliasActivityIndex_Region) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityIndex_RegionId, aliasActivityIndex));
|
||||
query.Joins.Add(joinRegion);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.Region_Name);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasActivityIndex_Region), prefixActivityIndex_Region + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetActivityIndexQueryFilter(prm));
|
||||
|
||||
if (prm.ItemIdsIncluded.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetActivityIndexSortColumns(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,766 @@
|
||||
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;
|
||||
using Saxonite.Net.Standard.Dbas.Internal.Core;
|
||||
|
||||
namespace Saxonite.Net.Standard.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
partial class SaxActivityMgr_Dbas
|
||||
{
|
||||
//*******************************************************************
|
||||
// Activity Mgr - Article
|
||||
//*******************************************************************
|
||||
// Utilities.
|
||||
private List<StringPair> GetLogProperties(SaxArticle article)
|
||||
{
|
||||
return new List<StringPair>()
|
||||
{
|
||||
new StringPair("Id", SysId.ToString(article.Id)),
|
||||
new StringPair("UserAccountIdAuthor", SysId.ToString(article.UserAccountIdAuthor)),
|
||||
new StringPair("OrganisationId", SysId.ToString(article.OrganisationId)),
|
||||
new StringPair("Headline", StringUtil.Left(article.Headline,32)),
|
||||
new StringPair("Status", article.StatusCode)
|
||||
};
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create item.
|
||||
public override SaxArticle CreateArticle(SysId userAccountIdAuthor, SysId organisationId)
|
||||
{
|
||||
ClearErrorState();
|
||||
return new SaxArticle_Dbas(CoreDatabase, null, userAccountIdAuthor, organisationId, 0);
|
||||
}
|
||||
private SaxArticle_Dbas CreateArticle(Article_Db dbArticle)
|
||||
{
|
||||
ClearErrorState();
|
||||
SaxArticle_Dbas article = new SaxArticle_Dbas(CoreDatabase, new SysId(dbArticle._Id), new SysId(dbArticle._UserAccountIdAuthor), new SysId(dbArticle._OrganisationId), (UInt16)dbArticle._Flags);
|
||||
PopulateFrom(dbArticle, article);
|
||||
return article;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get item.
|
||||
public override SaxArticle GetArticle(SaxArticle.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetArticle(GetArticleQueryFilter(prm).Concat(" And ", "(", ")"));
|
||||
}
|
||||
private SaxArticle GetArticle(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetArticleCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple items found");
|
||||
return null;
|
||||
}
|
||||
SaxArticle article = null;
|
||||
// Query data.
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
Article_Db dbArticle = new Article_Db(CoreDbInfo);
|
||||
dbArticle.PopulateFrom(dbCommand, aliasArticle, filter);
|
||||
article = CreateArticle(dbArticle);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return article;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate item.
|
||||
public override bool IsValidArticleData(SaxArticle.Data data, SaxArticle.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidArticleData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert item.
|
||||
public override bool InsertArticle(SaxArticle article, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertArticle";
|
||||
ClearErrorState();
|
||||
if (!IsValidArticle(article)) return false;
|
||||
if (SysId.IsValid(article.Id)) return SetErrorState(ErrorMessage.ValidItemId);
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
Article_Db dbArticle = new Article_Db(CoreDbInfo);
|
||||
PopulateTo(dbArticle, article, dbUpdateInfo);
|
||||
if (Article_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
// ToDo dbArticle._Id = CoreDatabase.GetNextIdFromTable("Article");
|
||||
}
|
||||
dbArticle.ExecuteInsertCommand(dbCommand);
|
||||
article.Id = new SysId(dbArticle._Id);
|
||||
article.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(article).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update item.
|
||||
public override bool UpdateArticle(SaxArticle article, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdateArticle";
|
||||
ClearErrorState();
|
||||
if (!IsValidArticle(article)) return false;
|
||||
if (!SysId.IsValid(article.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!article.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(article).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
Article_Db dbArticle = new Article_Db(CoreDbInfo);
|
||||
dbArticle.PopulateFrom(dbCommand, aliasArticle, "Id=" + SysId.ToString(article.Id));
|
||||
// ToDo SaxUpdateLogItemMonitor_Article updateLogMonitor = new SaxUpdateLogItemMonitor_Article(SessionContext, CreateArticle(dbArticle), dbUpdateInfo);
|
||||
// Update item.
|
||||
PopulateTo(dbArticle, article, dbUpdateInfo);
|
||||
dbArticle.ExecuteUpdateCommand(dbCommand);
|
||||
article.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(article).Concat(": ").Concat("", "\n\t"));
|
||||
// Record updates.
|
||||
// ToDo updateLogMonitor.RecordUpdatedValues(article);
|
||||
// ToDo updateLogMonitor.LogUpdates();
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete item.
|
||||
public override bool ArticleCanBeDeleted(SaxArticle article)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.ArticleCanBeDeleted(article)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteArticle(SaxArticle article, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeleteArticle";
|
||||
ClearErrorState();
|
||||
if (!ArticleCanBeDeleted(article)) return false;
|
||||
|
||||
// Articles are logically deleted by changing the status.
|
||||
article.Status = SaStatus.Deleted;
|
||||
return UpdateArticle(article, dbUpdateInfo);
|
||||
|
||||
/*
|
||||
* Physical deletion.
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
Article_Db dbArticle = new Article_Db(CoreDbInfo);
|
||||
dbArticle.PopulateFrom(dbCommand, aliasArticle, "Id=" + article.Id.ToString());
|
||||
// Delete item.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Article) + " WHERE Id=" + SysId.ToString(article.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
article.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(article).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
*/
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(Article_Db dbArticle, SaxArticle article, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbArticle._Id = SysId.ToInt(article.Id);
|
||||
dbArticle._UserAccountIdAuthor = SysId.ToInt(article.UserAccountIdAuthor);
|
||||
dbArticle._OrganisationId = SysId.ToInt(article.OrganisationId);
|
||||
dbArticle._SportIdPrimary = SysId.ToInt(article.SportIdPrimary);
|
||||
dbArticle._RegionIdPrimary = SysId.ToInt(article.RegionIdPrimary);
|
||||
dbArticle._Headline = article.Headline;
|
||||
dbArticle._Summary = article.Summary;
|
||||
dbArticle._ItemImageIdThumbnail = SysId.ToInt(article.ItemImageIdThumbnail);
|
||||
dbArticle._BodyData = article.BodyData;
|
||||
dbArticle._PublishedAt = article.PublishedAt;
|
||||
dbArticle._Notes = article.Notes;
|
||||
dbArticle._Status = SacsSystem.GetStatusCode(article.Status);
|
||||
dbArticle._Flags = (short)article.Flags;
|
||||
if (!SysId.IsValid(article.Id))
|
||||
{
|
||||
dbArticle._CreateOn = DateTime.Now;
|
||||
dbArticle._CreateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbArticle._CreateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
dbArticle._UpdateOn = DateTime.Now;
|
||||
dbArticle._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbArticle._UpdateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
private void PopulateFrom(Article_Db dbArticle, SaxArticle article)
|
||||
{
|
||||
//article.Id = new SysId(dbArticle._Id);
|
||||
//article.UserAccountIdAuthor = new SysId(dbArticle._UserAccountIdAuthor);
|
||||
//article.OrganisationId = new SysId(dbArticle._OrganisationId);
|
||||
article.SportIdPrimary = new SysId(dbArticle._SportIdPrimary);
|
||||
article.RegionIdPrimary = new SysId(dbArticle._RegionIdPrimary);
|
||||
article.Headline = dbArticle._Headline;
|
||||
article.Summary = dbArticle._Summary;
|
||||
article.ItemImageIdThumbnail = new SysId(dbArticle._ItemImageIdThumbnail ?? 0);
|
||||
article.BodyData = dbArticle._BodyData;
|
||||
article.PublishedAt = dbArticle._PublishedAt;
|
||||
article.Notes = dbArticle._Notes;
|
||||
article.Status = SacsSystem.GetStatusForCode(dbArticle._Status);
|
||||
article.SetCreateStamp(dbArticle._CreateOn, new SysId(dbArticle._CreateBy), dbArticle._CreateHost);
|
||||
article.SetUpdateStamp(dbArticle._UpdateOn, new SysId(dbArticle._UpdateBy), dbArticle._UpdateHost);
|
||||
article.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item column definitions.
|
||||
private static readonly String aliasArticle = "Art";
|
||||
private static readonly String aliasArticle_Author = "Art_Auth";
|
||||
private static readonly String prefixArticle_Author = aliasArticle_Author + "_";
|
||||
private static readonly String aliasArticle_Organisation = "Art_Org";
|
||||
private static readonly String prefixArticle_Organisation = aliasArticle_Organisation + "_";
|
||||
private static readonly String colArticle_OrganisationOwner_LogoCount = "Art_Org_LogoCount";
|
||||
private static readonly String aliasArticle_Sport = "Art_Spt";
|
||||
private static readonly String prefixArticle_Sport = aliasArticle_Sport + "_";
|
||||
private static readonly String aliasArticle_Region = "Art_Rgn";
|
||||
private static readonly String prefixArticle_Region = aliasArticle_Region + "_";
|
||||
private static readonly String aliasArticle_Feedback = "Art_Fbk";
|
||||
private static readonly String prefixArticle_Feedback = aliasArticle_Feedback + "_";
|
||||
private void SetArticleColDfn
|
||||
(ColumnDfn col, String caption, int width, SaxDbDfn_Core.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SaxDbDfn_Core.GetTableForColumn(dbCol) == SaxDbDfn_Core.TableIdx.Article)
|
||||
alias = aliasArticle;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn_Core.GetColumnName(dbCol, false), SaxDbDfn_Core.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn_Core.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SaxDbDfn_Core.GetColTextLen(dbCol);
|
||||
}
|
||||
public override ColumnDfn GetArticleColumnDfn(SaxArticle.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
//-----------------------------------------------------------
|
||||
case SaxArticle.Column.Pos:
|
||||
SetArticleColDfn(columnDfn, "Pos", 60, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
case SaxArticle.Column.Id:
|
||||
SetArticleColDfn(columnDfn, "Id", 80, SaxDbDfn_Core.ColumnIdx.Article_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Organisation.
|
||||
case SaxArticle.Column.OrganisationId:
|
||||
SetArticleColDfn(columnDfn, "Organisation Id", 80, SaxDbDfn_Core.ColumnIdx.Article_OrganisationId, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxArticle.Column.Organisation_Name:
|
||||
SetArticleColDfn(columnDfn, "Organisation", 120, SaxDbDfn_Core.ColumnIdx.Organisation_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasArticle_Organisation, prefixArticle_Organisation);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxArticle.Column.Organisation_LogoCount:
|
||||
SetActivityIndexColDfn(columnDfn, "Organisation Logos", 100, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.DataName = colArticle_OrganisationOwner_LogoCount;
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Author.
|
||||
case SaxArticle.Column.UserAccountIdAuthor:
|
||||
SetArticleColDfn(columnDfn, "Author Id", 80, SaxDbDfn_Core.ColumnIdx.Article_UserAccountIdAuthor, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxArticle.Column.Author_DisplayName:
|
||||
SetArticleColDfn(columnDfn, "Author", 120, SaxDbDfn_Core.ColumnIdx.Unknown);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxArticle.Column.Author_Title:
|
||||
SetArticleColDfn(columnDfn, "Author title", 80, SaxDbDfn_Core.ColumnIdx.UserAccount_Title, ColumnAlignment.Left, DataValue.DataType.String, aliasArticle_Author, prefixArticle_Author);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxArticle.Column.Author_FirstName:
|
||||
SetArticleColDfn(columnDfn, "Author first name", 100, SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName, ColumnAlignment.Left, DataValue.DataType.String, aliasArticle_Author, prefixArticle_Author);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxArticle.Column.Author_LastName:
|
||||
SetArticleColDfn(columnDfn, "Author last name", 100, SaxDbDfn_Core.ColumnIdx.UserAccount_LastName, ColumnAlignment.Left, DataValue.DataType.String, aliasArticle_Author, prefixArticle_Author);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Sport.
|
||||
case SaxArticle.Column.SportIdPrimary:
|
||||
SetArticleColDfn(columnDfn, "Sport Id", 80, SaxDbDfn_Core.ColumnIdx.Article_SportIdPrimary, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxArticle.Column.Sport_Name:
|
||||
SetArticleColDfn(columnDfn, "Sport", 100, SaxDbDfn_Core.ColumnIdx.Sport_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasArticle_Sport, prefixArticle_Sport);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Region.
|
||||
case SaxArticle.Column.RegionIdPrimary:
|
||||
SetArticleColDfn(columnDfn, "Region Id", 80, SaxDbDfn_Core.ColumnIdx.Article_RegionIdPrimary, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxArticle.Column.Region_Name:
|
||||
SetArticleColDfn(columnDfn, "Region", 100, SaxDbDfn_Core.ColumnIdx.Region_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasArticle_Region, prefixArticle_Region);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Article.
|
||||
case SaxArticle.Column.Headline:
|
||||
SetArticleColDfn(columnDfn, "Headline", 200, SaxDbDfn_Core.ColumnIdx.Article_Headline);
|
||||
break;
|
||||
case SaxArticle.Column.Summary:
|
||||
SetArticleColDfn(columnDfn, "Summary", 200, SaxDbDfn_Core.ColumnIdx.Article_Summary);
|
||||
break;
|
||||
case SaxArticle.Column.ItemImageIdThumbnail:
|
||||
SetArticleColDfn(columnDfn, "Thumbnail", 80, SaxDbDfn_Core.ColumnIdx.Article_ItemImageIdThumbnail, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxArticle.Column.PublishedAt_Date:
|
||||
SetArticleColDfn(columnDfn, "Published", 80, SaxDbDfn_Core.ColumnIdx.Article_PublishedAt, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxArticle.Column.PublishedAt_DateTime:
|
||||
SetArticleColDfn(columnDfn, "Published", 100, SaxDbDfn_Core.ColumnIdx.Article_PublishedAt, ColumnAlignment.Center, DataValue.DataType.DateTime);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Feedback.
|
||||
case SaxArticle.Column.Feedback_ViewCount:
|
||||
SetArticleColDfn(columnDfn, "Views", 80, SaxDbDfn_Core.ColumnIdx.ActivityFeedback_ViewCount, ColumnAlignment.Center, DataValue.DataType.Long, aliasActivityFeedback, prefixArticle_Feedback);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxArticle.Column.Feedback_FeedbackCount:
|
||||
SetArticleColDfn(columnDfn, "Feedbacks", 80, SaxDbDfn_Core.ColumnIdx.ActivityFeedback_FeedbackCount, ColumnAlignment.Center, DataValue.DataType.Long, aliasActivityFeedback, prefixArticle_Feedback);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxArticle.Column.Feedback_FeedbackTotal:
|
||||
SetArticleColDfn(columnDfn, "Feedback total", 80, SaxDbDfn_Core.ColumnIdx.ActivityFeedback_FeedbackTotal, ColumnAlignment.Center, DataValue.DataType.Long, aliasActivityFeedback, prefixArticle_Feedback);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxArticle.Column.Feedback_FeedbackAverage:
|
||||
SetArticleColDfn(columnDfn, "Feedback", 80, SaxDbDfn_Core.ColumnIdx.ActivityFeedback_FeedbackAverage, ColumnAlignment.Center, DataValue.DataType.Double, aliasActivityFeedback, prefixArticle_Feedback);
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.NumDecimals = 2;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Derived properties.
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Common properties.
|
||||
case SaxArticle.Column.Notes:
|
||||
SetArticleColDfn(columnDfn, "Notes", 240, SaxDbDfn_Core.ColumnIdx.Article_Notes);
|
||||
break;
|
||||
case SaxArticle.Column.Flags:
|
||||
SetArticleColDfn(columnDfn, "Flags", 60, SaxDbDfn_Core.ColumnIdx.Article_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxArticle.Column.Status:
|
||||
SetArticleColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.Article_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxArticle.Column.Status_Desc:
|
||||
SetArticleColDfn(columnDfn, "Status", 90, SaxDbDfn_Core.ColumnIdx.Article_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxArticle.Column.Status_Ind:
|
||||
SetArticleColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.Article_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SaxArticle.Column.CreateOn_Date:
|
||||
SetArticleColDfn(columnDfn, "Created", 80, SaxDbDfn_Core.ColumnIdx.Article_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxArticle.Column.UpdateOn_Date:
|
||||
SetArticleColDfn(columnDfn, "Updated", 80, SaxDbDfn_Core.ColumnIdx.Article_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> GetArticleQueryFilter(SaxArticle.Params prm)
|
||||
{
|
||||
List<String> filter = new List<String>();
|
||||
|
||||
// Item Ids.
|
||||
String idsIncluded = prm.IdsIncluded.Concat(",");
|
||||
if (!idsIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_Id, aliasArticle) + " IN (" + idsIncluded + ")");
|
||||
String idsExcluded = prm.IdsExcluded.Concat(",");
|
||||
if (!idsExcluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_Id, aliasArticle) + " NOT IN (" + idsExcluded + ")");
|
||||
|
||||
// Author User Account.
|
||||
String userAccountIdsIncluded = prm.UserAccountIdsAuthorIncluded.Concat(",");
|
||||
if (!userAccountIdsIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_UserAccountIdAuthor, aliasArticle) + " IN (" + userAccountIdsIncluded + ")");
|
||||
|
||||
// Organisations.
|
||||
String organisationIdsIncluded = prm.OrganisationIdsIncluded.Concat(",");
|
||||
if (!organisationIdsIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_OrganisationId, aliasArticle) + " IN (" + organisationIdsIncluded + ")");
|
||||
else if (prm.ExcludeOrganisationArticles)
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_OrganisationId, aliasArticle) + "=0 Or " + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_OrganisationId, aliasArticle) + " Is Null");
|
||||
|
||||
// Sport Ids.
|
||||
String sportIdsIncluded = prm.SportIdsIncluded.Concat(",");
|
||||
if (!sportIdsIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_SportIdPrimary, aliasArticle) + " IN (" + sportIdsIncluded + ")");
|
||||
|
||||
// Region Ids.
|
||||
String regionIdsIncluded = prm.RegionIdsIncluded.Concat(",");
|
||||
if (!regionIdsIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_RegionIdPrimary, aliasArticle) + " IN (" + regionIdsIncluded + ")");
|
||||
|
||||
// Headline.
|
||||
if (!StringUtil.IsEmpty(prm.HeadlinePartial))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_Headline, aliasArticle) + " Like '%" + DbQuery.FormatForLike(prm.HeadlinePartial, true) + "%'");
|
||||
|
||||
// Summary.
|
||||
if (!StringUtil.IsEmpty(prm.SummaryPartial))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_Summary, aliasArticle) + " 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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_Headline, aliasArticle) + " Like '%" + DbQuery.FormatForLike(filterWord, true) + "%'");
|
||||
articleFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_Summary, aliasArticle) + " Like '%" + DbQuery.FormatForLike(filterWord, true) + "%'");
|
||||
filter.Add(articleFilter.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
}
|
||||
|
||||
// Notes.
|
||||
if (!StringUtil.IsEmpty(prm.NotesPartial))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_Notes, aliasArticle) + " LIKE '%" + DbQuery.FormatForLike(prm.NotesPartial) + "%'");
|
||||
|
||||
// Status.
|
||||
if (prm.StatusCat != SaxArticle.StatusCat.Any)
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_Status, aliasArticle) + GetArticleStatusCatFilterCondition(prm.StatusCat));
|
||||
|
||||
if (filter.Count < 1) filter.Add("1=1");
|
||||
return filter;
|
||||
}
|
||||
internal static String GetArticleStatusCatFilterCondition(SaxArticle.StatusCat statusCat)
|
||||
{
|
||||
if (statusCat == SaxArticle.StatusCat.ActiveOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'";
|
||||
if (statusCat == SaxArticle.StatusCat.InactiveOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Inactive) + "'";
|
||||
if (statusCat == SaxArticle.StatusCat.NotDeleted)
|
||||
return "!='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
if (statusCat == SaxArticle.StatusCat.DeletedOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
return "";
|
||||
}
|
||||
// Item sort columns.
|
||||
public List<String> GetArticleSortColumns(SaxArticle.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
List<String> sortColumnNames = new List<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for Article columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SaxDbDfn_Core.GetTableForColumn((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn_Core.TableIdx.Article)
|
||||
{
|
||||
sortCol = SaxDbDfn_Core.GetColumnNameQual((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn, aliasArticle);
|
||||
}
|
||||
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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_Id, aliasArticle) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item count.
|
||||
private long GetArticleCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return CoreDatabase.GetRowCount(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Article) + " As " + aliasArticle, filter);
|
||||
}
|
||||
public override long GetArticleCount(SaxArticle.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetArticleCount(GetArticleQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item list.
|
||||
public override List<SaxArticle> GetArticleList(SaxArticle.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<SaxArticle> userActivitys = new List<SaxArticle>();
|
||||
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Article), aliasArticle);
|
||||
Article_Db dbArticle = new Article_Db(CoreDbInfo);
|
||||
qry.Columns.AddRange(dbArticle.ExistingColumnNames);
|
||||
qry.Filters.AddRange(GetArticleQueryFilter(prm));
|
||||
qry.OrderBy.AddRange(GetArticleSortColumns(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())
|
||||
{
|
||||
dbArticle = new Article_Db(CoreDbInfo);
|
||||
dbArticle.PopulateFrom(dbDataReader);
|
||||
userActivitys.Add(CreateArticle(dbArticle));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return userActivitys;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item query execution.
|
||||
public override DbResultSet ExecuteArticleQuery(List<ColumnDfn> columns, SaxArticle.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(CoreDatabase.DbmsType);
|
||||
query.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Article), aliasArticle);
|
||||
|
||||
// Add columns as defined in query list.
|
||||
if (columns.HasId(SaxArticle.Column.Id))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_Id, aliasArticle));
|
||||
bool hasUserAccountCols = (columns.HasId(SaxArticle.Column.Author_DisplayName) || columns.HasId(SaxArticle.Column.Author_Title) || columns.HasId(SaxArticle.Column.Author_FirstName) || columns.HasId(SaxArticle.Column.Author_LastName));
|
||||
if (columns.HasId(SaxArticle.Column.UserAccountIdAuthor) || hasUserAccountCols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_UserAccountIdAuthor, aliasArticle));
|
||||
bool hasOrganisationCols = (columns.HasId(SaxArticle.Column.Organisation_Name));
|
||||
if (columns.HasId(SaxArticle.Column.OrganisationId) || hasOrganisationCols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_OrganisationId, aliasArticle));
|
||||
bool hasSportCols = (columns.HasId(SaxArticle.Column.Sport_Name));
|
||||
if (columns.HasId(SaxArticle.Column.SportIdPrimary) || hasSportCols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_SportIdPrimary, aliasArticle));
|
||||
bool hasRegionCols = (columns.HasId(SaxArticle.Column.Region_Name));
|
||||
if (columns.HasId(SaxArticle.Column.RegionIdPrimary) || hasRegionCols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_RegionIdPrimary, aliasArticle));
|
||||
if (columns.HasId(SaxArticle.Column.Headline))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_Headline, aliasArticle));
|
||||
if (columns.HasId(SaxArticle.Column.Summary))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_Summary, aliasArticle));
|
||||
if (columns.HasId(SaxArticle.Column.ItemImageIdThumbnail))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_ItemImageIdThumbnail, aliasArticle));
|
||||
if (columns.HasId(SaxArticle.Column.PublishedAt_Date) || columns.HasId(SaxArticle.Column.PublishedAt_DateTime))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_PublishedAt, aliasArticle));
|
||||
// Common properties.
|
||||
if (columns.HasId(SaxArticle.Column.Notes))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_Notes, aliasArticle));
|
||||
if (columns.HasId(SaxArticle.Column.Flags))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_Flags, aliasArticle));
|
||||
if (columns.HasId(SaxArticle.Column.Status) || columns.HasId(SaxArticle.Column.Status_Desc) || columns.HasId(SaxArticle.Column.Status_Ind))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_Status, aliasArticle));
|
||||
if (columns.HasId(SaxArticle.Column.CreateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_CreateOn, aliasArticle));
|
||||
if (columns.HasId(SaxArticle.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_UpdateOn, aliasArticle));
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// User Account.
|
||||
if (hasUserAccountCols)
|
||||
{
|
||||
DbQueryJoin joinUserAccount = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinUserAccount.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserAccount), aliasArticle_Author);
|
||||
joinUserAccount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasArticle_Author) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_UserAccountIdAuthor, aliasArticle));
|
||||
query.Joins.Add(joinUserAccount);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_Title);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_LastName);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasArticle_Author), prefixArticle_Author + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Organisation.
|
||||
if (hasOrganisationCols)
|
||||
{
|
||||
DbQueryJoin joinOrganisation = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinOrganisation.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Organisation), aliasArticle_Organisation);
|
||||
joinOrganisation.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_Id, aliasArticle_Organisation) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_OrganisationId, aliasArticle));
|
||||
query.Joins.Add(joinOrganisation);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.Organisation_Name);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasArticle_Organisation), prefixArticle_Organisation + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Organisation Logo Image Count.
|
||||
if (columns.HasId(SaxArticle.Column.Organisation_LogoCount))
|
||||
{
|
||||
String aliasLogoCount = "aImg_Logo";
|
||||
DbQuery queryLogoCount = new DbQuery(CoreDatabase.DbmsType);
|
||||
queryLogoCount.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ItemImage), aliasLogoCount);
|
||||
queryLogoCount.Columns.Add("Count(*)");
|
||||
queryLogoCount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_ItemType, aliasLogoCount) + "=" + (int)Sax.DataItemType.Organisation);
|
||||
queryLogoCount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_ItemId, aliasLogoCount) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_OrganisationId, aliasArticle));
|
||||
queryLogoCount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_ImageType, aliasLogoCount) + "=" + (int)Sax.ImageType.OrganisationLogo);
|
||||
queryLogoCount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_Status, aliasLogoCount) + "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'");
|
||||
// Construct sub-query.
|
||||
query.Columns.Add("(" + queryLogoCount.BuildQuery() + ")", colArticle_OrganisationOwner_LogoCount);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Primary Sport.
|
||||
if (hasSportCols)
|
||||
{
|
||||
DbQueryJoin joinSport = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinSport.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Sport), aliasArticle_Sport);
|
||||
joinSport.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_Id, aliasArticle_Sport) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_SportIdPrimary, aliasArticle));
|
||||
query.Joins.Add(joinSport);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.Sport_Name);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasArticle_Sport), prefixArticle_Sport + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Primary Region.
|
||||
if (hasRegionCols)
|
||||
{
|
||||
DbQueryJoin joinRegion = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinRegion.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Region), aliasArticle_Region);
|
||||
joinRegion.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_Id, aliasArticle_Region) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_RegionIdPrimary, aliasArticle));
|
||||
query.Joins.Add(joinRegion);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.Region_Name);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasArticle_Region), prefixArticle_Region + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Feedback.
|
||||
if (columns.HasId(SaxArticle.Column.Feedback_ViewCount) || columns.HasId(SaxArticle.Column.Feedback_FeedbackCount) || columns.HasId(SaxArticle.Column.Feedback_FeedbackTotal) || columns.HasId(SaxArticle.Column.Feedback_FeedbackAverage))
|
||||
{
|
||||
DbQueryJoin joinFeedback = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinFeedback.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ActivityFeedback), aliasArticle_Feedback);
|
||||
joinFeedback.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_ItemType, aliasArticle_Feedback) + "=" + ((int)Sax.DataItemType.Article).ToString());
|
||||
joinFeedback.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_ItemId, aliasArticle_Feedback) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Article_Id, aliasArticle));
|
||||
query.Joins.Add(joinFeedback);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_ViewCount);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_FeedbackCount);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_FeedbackTotal);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.ActivityFeedback_FeedbackAverage);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasArticle_Feedback), prefixArticle_Feedback + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetArticleQueryFilter(prm));
|
||||
|
||||
if (prm.IdsIncluded.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetArticleSortColumns(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,745 @@
|
||||
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;
|
||||
using Saxonite.Net.Standard.Dbas.Internal.Core;
|
||||
|
||||
namespace Saxonite.Net.Standard.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
partial class SaxActivityMgr_Dbas
|
||||
{
|
||||
//*******************************************************************
|
||||
// Activity Mgr - Organisation Event
|
||||
//*******************************************************************
|
||||
// Utilities.
|
||||
private List<StringPair> GetLogProperties(SaxOrganisationEvent organisationEvent)
|
||||
{
|
||||
return new List<StringPair>()
|
||||
{
|
||||
new StringPair("Id", SysId.ToString(organisationEvent.Id)),
|
||||
new StringPair("OrganisationId", SysId.ToString(organisationEvent.OrganisationId)),
|
||||
new StringPair("Event at", DateUtil.Format(organisationEvent.EventAt, "d-MMM-yyyy HH:mm")),
|
||||
new StringPair("Event type", EventTypeCodes.GetDescForType(organisationEvent.EventType)),
|
||||
new StringPair("Status", organisationEvent.StatusCode)
|
||||
};
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create item.
|
||||
public override SaxOrganisationEvent CreateOrganisationEvent(SysId userAccountIdJournalist)
|
||||
{
|
||||
ClearErrorState();
|
||||
return new SaxOrganisationEvent_Dbas(CoreDatabase, null, userAccountIdJournalist, 0);
|
||||
}
|
||||
private SaxOrganisationEvent_Dbas CreateOrganisationEvent(OrganisationEvent_Db dbOrganisationEvent)
|
||||
{
|
||||
ClearErrorState();
|
||||
SaxOrganisationEvent_Dbas organisationEvent = new SaxOrganisationEvent_Dbas(CoreDatabase, new SysId(dbOrganisationEvent._Id), new SysId(dbOrganisationEvent._OrganisationId), (UInt16)dbOrganisationEvent._Flags);
|
||||
PopulateFrom(dbOrganisationEvent, organisationEvent);
|
||||
return organisationEvent;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get item.
|
||||
public override SaxOrganisationEvent GetOrganisationEvent(SaxOrganisationEvent.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetOrganisationEvent(GetOrganisationEventQueryFilter(prm).Concat(" And ", "(", ")"));
|
||||
}
|
||||
private SaxOrganisationEvent GetOrganisationEvent(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetOrganisationEventCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple items found");
|
||||
return null;
|
||||
}
|
||||
SaxOrganisationEvent organisationEvent = null;
|
||||
// Query data.
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
OrganisationEvent_Db dbOrganisationEvent = new OrganisationEvent_Db(CoreDbInfo);
|
||||
dbOrganisationEvent.PopulateFrom(dbCommand, aliasOrganisationEvent, filter);
|
||||
organisationEvent = CreateOrganisationEvent(dbOrganisationEvent);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return organisationEvent;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate item.
|
||||
public override bool IsValidOrganisationEventData(SaxOrganisationEvent.Data data, SaxOrganisationEvent.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidOrganisationEventData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert item.
|
||||
public override bool InsertOrganisationEvent(SaxOrganisationEvent organisationEvent, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertOrganisationEvent";
|
||||
ClearErrorState();
|
||||
if (!IsValidOrganisationEvent(organisationEvent)) return false;
|
||||
if (SysId.IsValid(organisationEvent.Id)) return SetErrorState(ErrorMessage.ValidItemId);
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
OrganisationEvent_Db dbOrganisationEvent = new OrganisationEvent_Db(CoreDbInfo);
|
||||
PopulateTo(dbOrganisationEvent, organisationEvent, dbUpdateInfo);
|
||||
if (OrganisationEvent_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
// ToDo dbOrganisationEvent._Id = CoreDatabase.GetNextIdFromTable("OrganisationEvent");
|
||||
}
|
||||
dbOrganisationEvent.ExecuteInsertCommand(dbCommand);
|
||||
organisationEvent.Id = new SysId(dbOrganisationEvent._Id);
|
||||
organisationEvent.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(organisationEvent).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update item.
|
||||
public override bool UpdateOrganisationEvent(SaxOrganisationEvent organisationEvent, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdateOrganisationEvent";
|
||||
ClearErrorState();
|
||||
if (!IsValidOrganisationEvent(organisationEvent)) return false;
|
||||
if (!SysId.IsValid(organisationEvent.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!organisationEvent.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(organisationEvent).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
OrganisationEvent_Db dbOrganisationEvent = new OrganisationEvent_Db(CoreDbInfo);
|
||||
dbOrganisationEvent.PopulateFrom(dbCommand, aliasOrganisationEvent, "Id=" + SysId.ToString(organisationEvent.Id));
|
||||
// ToDo SaxUpdateLogItemMonitor_OrganisationEvent updateLogMonitor = new SaxUpdateLogItemMonitor_OrganisationEvent(SessionContext, CreateOrganisationEvent(dbOrganisationEvent), dbUpdateInfo);
|
||||
// Update item.
|
||||
PopulateTo(dbOrganisationEvent, organisationEvent, dbUpdateInfo);
|
||||
dbOrganisationEvent.ExecuteUpdateCommand(dbCommand);
|
||||
organisationEvent.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(organisationEvent).Concat(": ").Concat("", "\n\t"));
|
||||
// Record updates.
|
||||
// ToDo updateLogMonitor.RecordUpdatedValues(organisationEvent);
|
||||
// ToDo updateLogMonitor.LogUpdates();
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete item.
|
||||
public override bool OrganisationEventCanBeDeleted(SaxOrganisationEvent organisationEvent)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.OrganisationEventCanBeDeleted(organisationEvent)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteOrganisationEvent(SaxOrganisationEvent organisationEvent, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeleteOrganisationEvent";
|
||||
ClearErrorState();
|
||||
if (!OrganisationEventCanBeDeleted(organisationEvent)) return false;
|
||||
|
||||
// Organisation Events are logically deleted by changing the status.
|
||||
organisationEvent.Status = SaStatus.Deleted;
|
||||
return UpdateOrganisationEvent(organisationEvent, dbUpdateInfo);
|
||||
|
||||
/*
|
||||
* Physical deletion.
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
OrganisationEvent_Db dbOrganisationEvent = new OrganisationEvent_Db(CoreDbInfo);
|
||||
dbOrganisationEvent.PopulateFrom(dbCommand, aliasOrganisationEvent, "Id=" + organisationEvent.Id.ToString());
|
||||
// Delete item.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.OrganisationEvent) + " WHERE Id=" + SysId.ToString(organisationEvent.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
organisationEvent.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(organisationEvent).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
*/
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(OrganisationEvent_Db dbOrganisationEvent, SaxOrganisationEvent organisationEvent, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbOrganisationEvent._Id = SysId.ToInt(organisationEvent.Id);
|
||||
dbOrganisationEvent._OrganisationId = SysId.ToInt(organisationEvent.OrganisationId);
|
||||
dbOrganisationEvent._SportIdPrimary = SysId.ToInt(organisationEvent.SportIdPrimary);
|
||||
dbOrganisationEvent._RegionIdCountry = SysId.ToInt(organisationEvent.RegionIdCountry);
|
||||
dbOrganisationEvent._EventAt = organisationEvent.EventAt;
|
||||
dbOrganisationEvent._EventTo = organisationEvent.EventTo;
|
||||
dbOrganisationEvent._EventTypeCode = EventTypeCodes.GetCodeForType(organisationEvent.EventType);
|
||||
dbOrganisationEvent._Summary = organisationEvent.Summary;
|
||||
dbOrganisationEvent._Details = organisationEvent.Details;
|
||||
dbOrganisationEvent._EventData = organisationEvent.EventData;
|
||||
dbOrganisationEvent._PublishedAt = organisationEvent.PublishedAt;
|
||||
dbOrganisationEvent._ExpiresAt = organisationEvent.ExpiresAt;
|
||||
dbOrganisationEvent._Notes = organisationEvent.Notes;
|
||||
dbOrganisationEvent._Status = SacsSystem.GetStatusCode(organisationEvent.Status);
|
||||
dbOrganisationEvent._Flags = (short)organisationEvent.Flags;
|
||||
if (!SysId.IsValid(organisationEvent.Id))
|
||||
{
|
||||
dbOrganisationEvent._CreateOn = DateTime.Now;
|
||||
dbOrganisationEvent._CreateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbOrganisationEvent._CreateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
dbOrganisationEvent._UpdateOn = DateTime.Now;
|
||||
dbOrganisationEvent._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbOrganisationEvent._UpdateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
private void PopulateFrom(OrganisationEvent_Db dbOrganisationEvent, SaxOrganisationEvent organisationEvent)
|
||||
{
|
||||
//organisationEvent.Id = new SysId(dbOrganisationEvent._Id);
|
||||
//organisationEvent.OrganisationId = new SysId(dbOrganisationEvent._OrganisationId);
|
||||
organisationEvent.SportIdPrimary = new SysId(dbOrganisationEvent._SportIdPrimary);
|
||||
organisationEvent.RegionIdCountry = new SysId(dbOrganisationEvent._RegionIdCountry);
|
||||
organisationEvent.EventAt = dbOrganisationEvent._EventAt;
|
||||
organisationEvent.EventTo = dbOrganisationEvent._EventTo;
|
||||
organisationEvent.EventType = (Sax.EventType)EventTypeCodes.GetTypeForCode(dbOrganisationEvent._EventTypeCode);
|
||||
organisationEvent.Summary = dbOrganisationEvent._Summary;
|
||||
organisationEvent.Details = dbOrganisationEvent._Details;
|
||||
organisationEvent.EventData = dbOrganisationEvent._EventData;
|
||||
organisationEvent.PublishedAt = dbOrganisationEvent._PublishedAt;
|
||||
organisationEvent.ExpiresAt = dbOrganisationEvent._ExpiresAt;
|
||||
organisationEvent.Notes = dbOrganisationEvent._Notes;
|
||||
organisationEvent.Status = SacsSystem.GetStatusForCode(dbOrganisationEvent._Status);
|
||||
organisationEvent.SetCreateStamp(dbOrganisationEvent._CreateOn, new SysId(dbOrganisationEvent._CreateBy), dbOrganisationEvent._CreateHost);
|
||||
organisationEvent.SetUpdateStamp(dbOrganisationEvent._UpdateOn, new SysId(dbOrganisationEvent._UpdateBy), dbOrganisationEvent._UpdateHost);
|
||||
organisationEvent.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item column definitions.
|
||||
private static readonly String aliasOrganisationEvent = "OrgEvt";
|
||||
private static readonly String aliasOrganisationEvent_Organisation = "OrgEvt_Org";
|
||||
private static readonly String prefixOrganisationEvent_Organisation = aliasOrganisationEvent_Organisation + "_";
|
||||
private static readonly String colOrganisationEvent_OrganisationOwner_LogoCount = "OrgEvt_Org_LogoCount";
|
||||
private static readonly String aliasOrganisationEvent_Organisation_UserOrganisation = "OrgEvt_Org_UsrOrg";
|
||||
private static readonly String aliasOrganisationEvent_Sport = "OrgEvt_Spt";
|
||||
private static readonly String prefixOrganisationEvent_Sport = aliasOrganisationEvent_Sport + "_";
|
||||
private static readonly String aliasOrganisationEvent_Region = "OrgEvt_Rgn";
|
||||
private static readonly String prefixOrganisationEvent_Region = aliasOrganisationEvent_Region + "_";
|
||||
private void SetOrganisationEventColDfn
|
||||
(ColumnDfn col, String caption, int width, SaxDbDfn_Core.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SaxDbDfn_Core.GetTableForColumn(dbCol) == SaxDbDfn_Core.TableIdx.OrganisationEvent)
|
||||
alias = aliasOrganisationEvent;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn_Core.GetColumnName(dbCol, false), SaxDbDfn_Core.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn_Core.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SaxDbDfn_Core.GetColTextLen(dbCol);
|
||||
}
|
||||
public override ColumnDfn GetOrganisationEventColumnDfn(SaxOrganisationEvent.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
//-----------------------------------------------------------
|
||||
case SaxOrganisationEvent.Column.Pos:
|
||||
SetOrganisationEventColDfn(columnDfn, "Pos", 60, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
case SaxOrganisationEvent.Column.Id:
|
||||
SetOrganisationEventColDfn(columnDfn, "Id", 80, SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Organisation.
|
||||
case SaxOrganisationEvent.Column.OrganisationId:
|
||||
SetOrganisationEventColDfn(columnDfn, "Organisation Id", 80, SaxDbDfn_Core.ColumnIdx.OrganisationEvent_OrganisationId, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxOrganisationEvent.Column.Organisation_Name:
|
||||
SetOrganisationEventColDfn(columnDfn, "Organisation", 160, SaxDbDfn_Core.ColumnIdx.Organisation_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasOrganisationEvent_Organisation, prefixOrganisationEvent_Organisation);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxOrganisationEvent.Column.Organisation_LogoCount:
|
||||
SetActivityIndexColDfn(columnDfn, "Organisation Logos", 100, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.DataName = colOrganisationEvent_OrganisationOwner_LogoCount;
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Sport.
|
||||
case SaxOrganisationEvent.Column.SportIdPrimary:
|
||||
SetOrganisationEventColDfn(columnDfn, "Sport Id", 80, SaxDbDfn_Core.ColumnIdx.OrganisationEvent_SportIdPrimary, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxOrganisationEvent.Column.Sport_Name:
|
||||
SetOrganisationEventColDfn(columnDfn, "Sport", 100, SaxDbDfn_Core.ColumnIdx.Sport_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasOrganisationEvent_Sport, prefixOrganisationEvent_Sport);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Region.
|
||||
case SaxOrganisationEvent.Column.RegionIdCountry:
|
||||
SetOrganisationEventColDfn(columnDfn, "Region Id", 80, SaxDbDfn_Core.ColumnIdx.OrganisationEvent_RegionIdCountry, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxOrganisationEvent.Column.Region_Name:
|
||||
SetOrganisationEventColDfn(columnDfn, "Region", 100, SaxDbDfn_Core.ColumnIdx.Region_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasOrganisationEvent_Region, prefixOrganisationEvent_Region);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Event.
|
||||
case SaxOrganisationEvent.Column.EventAt_Date:
|
||||
SetOrganisationEventColDfn(columnDfn, "Event", 80, SaxDbDfn_Core.ColumnIdx.OrganisationEvent_EventAt, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxOrganisationEvent.Column.EventAt_DateTime:
|
||||
SetOrganisationEventColDfn(columnDfn, "Event", 100, SaxDbDfn_Core.ColumnIdx.OrganisationEvent_EventAt, ColumnAlignment.Center, DataValue.DataType.DateTime);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxOrganisationEvent.Column.EventTo_Date:
|
||||
SetOrganisationEventColDfn(columnDfn, "Event to", 80, SaxDbDfn_Core.ColumnIdx.OrganisationEvent_EventTo, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxOrganisationEvent.Column.EventTo_DateTime:
|
||||
SetOrganisationEventColDfn(columnDfn, "Event to", 100, SaxDbDfn_Core.ColumnIdx.OrganisationEvent_EventTo, ColumnAlignment.Center, DataValue.DataType.DateTime);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxOrganisationEvent.Column.EventTypeCode:
|
||||
SetOrganisationEventColDfn(columnDfn, "Type", 90, SaxDbDfn_Core.ColumnIdx.OrganisationEvent_EventTypeCode, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxOrganisationEvent.Column.EventType_Desc:
|
||||
SetOrganisationEventColDfn(columnDfn, "Type", 120, SaxDbDfn_Core.ColumnIdx.OrganisationEvent_EventTypeCode, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxOrganisationEvent.Column.Summary:
|
||||
SetOrganisationEventColDfn(columnDfn, "Summary", 200, SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Summary);
|
||||
break;
|
||||
case SaxOrganisationEvent.Column.Details:
|
||||
SetOrganisationEventColDfn(columnDfn, "Details", 200, SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Details);
|
||||
break;
|
||||
case SaxOrganisationEvent.Column.PublishedAt_Date:
|
||||
SetOrganisationEventColDfn(columnDfn, "Published", 80, SaxDbDfn_Core.ColumnIdx.OrganisationEvent_PublishedAt, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxOrganisationEvent.Column.PublishedAt_DateTime:
|
||||
SetOrganisationEventColDfn(columnDfn, "Published", 100, SaxDbDfn_Core.ColumnIdx.OrganisationEvent_PublishedAt, ColumnAlignment.Center, DataValue.DataType.DateTime);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxOrganisationEvent.Column.ExpiresAt_Date:
|
||||
SetOrganisationEventColDfn(columnDfn, "Expires", 80, SaxDbDfn_Core.ColumnIdx.OrganisationEvent_ExpiresAt, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxOrganisationEvent.Column.ExpiresAt_DateTime:
|
||||
SetOrganisationEventColDfn(columnDfn, "Expires", 100, SaxDbDfn_Core.ColumnIdx.OrganisationEvent_ExpiresAt, ColumnAlignment.Center, DataValue.DataType.DateTime);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Derived properties.
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Common properties.
|
||||
case SaxOrganisationEvent.Column.Notes:
|
||||
SetOrganisationEventColDfn(columnDfn, "Notes", 240, SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Notes);
|
||||
break;
|
||||
case SaxOrganisationEvent.Column.Flags:
|
||||
SetOrganisationEventColDfn(columnDfn, "Flags", 60, SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxOrganisationEvent.Column.Status:
|
||||
SetOrganisationEventColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxOrganisationEvent.Column.Status_Desc:
|
||||
SetOrganisationEventColDfn(columnDfn, "Status", 90, SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxOrganisationEvent.Column.Status_Ind:
|
||||
SetOrganisationEventColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SaxOrganisationEvent.Column.CreateOn_Date:
|
||||
SetOrganisationEventColDfn(columnDfn, "Created", 80, SaxDbDfn_Core.ColumnIdx.OrganisationEvent_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxOrganisationEvent.Column.UpdateOn_Date:
|
||||
SetOrganisationEventColDfn(columnDfn, "Updated", 80, SaxDbDfn_Core.ColumnIdx.OrganisationEvent_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> GetOrganisationEventQueryFilter(SaxOrganisationEvent.Params prm)
|
||||
{
|
||||
List<String> filter = new List<String>();
|
||||
|
||||
// Item Ids.
|
||||
String colId = SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Id, aliasOrganisationEvent);
|
||||
if (prm.IdsIncluded.HasValidIds())
|
||||
filter.Add($"{colId} IN ({prm.IdsIncluded.Concat(",")})");
|
||||
if (prm.IdsExcluded.HasValidIds())
|
||||
filter.Add($"{colId} NOT IN ({prm.IdsExcluded.Concat(",")})");
|
||||
|
||||
// User Account Ids.
|
||||
String userAccountIdsIncluded = prm.UserAccountIdsIncluded.Concat(",");
|
||||
if (!userAccountIdsIncluded.IsEmpty())
|
||||
{
|
||||
// User Organisation.
|
||||
if (!StringUtil.IsEmpty(prm.Alias_UserOrganisation))
|
||||
{
|
||||
// Filter directly on the joined User Organisation table.
|
||||
filter.Add($"{SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_UserAccountId, prm.Alias_UserOrganisation)} IN ({userAccountIdsIncluded})");
|
||||
}
|
||||
else
|
||||
{
|
||||
// User Organisation query.
|
||||
String alias_UserOrganisation = aliasOrganisationEvent_Organisation_UserOrganisation;
|
||||
DbQuery queryUserOrganisation = new DbQuery(CoreDatabase.DbmsType);
|
||||
queryUserOrganisation.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserOrganisation), alias_UserOrganisation);
|
||||
queryUserOrganisation.Filters.Add($"{SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_UserAccountId, alias_UserOrganisation)} IN ({userAccountIdsIncluded})");
|
||||
|
||||
// Filter Organisation directly against the Organisation Event.
|
||||
queryUserOrganisation.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_OrganisationId, alias_UserOrganisation));
|
||||
filter.Add($"{SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_OrganisationId, aliasOrganisationEvent)} IN ({queryUserOrganisation.BuildQuery()})");
|
||||
}
|
||||
}
|
||||
|
||||
// Organisation Ids.
|
||||
String organisationIdsIncluded = prm.OrganisationIdsIncluded.Concat(",");
|
||||
if (!organisationIdsIncluded.IsEmpty())
|
||||
filter.Add($"{SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_OrganisationId, aliasOrganisationEvent)} IN ({organisationIdsIncluded})");
|
||||
|
||||
// Sport Ids.
|
||||
String sportIdsIncluded = prm.SportIdsIncluded.Concat(",");
|
||||
if (!sportIdsIncluded.IsEmpty())
|
||||
filter.Add($"{SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_SportIdPrimary, aliasOrganisationEvent)} IN ({sportIdsIncluded})");
|
||||
|
||||
// Region Ids.
|
||||
String regionIdsIncluded = prm.RegionIdsIncluded.Concat(",");
|
||||
if (!regionIdsIncluded.IsEmpty())
|
||||
filter.Add($"{SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_RegionIdCountry, aliasOrganisationEvent)} IN ({regionIdsIncluded})");
|
||||
|
||||
// Summary.
|
||||
if (!StringUtil.IsEmpty(prm.SummaryPartial))
|
||||
filter.Add($"{SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Summary, aliasOrganisationEvent)} Like '%{DbQuery.FormatForLike(prm.SummaryPartial, true)}%'");
|
||||
|
||||
// Event date.
|
||||
if (DateUtil.IsValid(prm.EventFrom))
|
||||
{
|
||||
String dateValue = DbQuery.FormatDateForCondition(prm.EventFrom, true);
|
||||
String colEventAt = SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_EventAt, aliasOrganisationEvent);
|
||||
String colEventTo= SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_EventTo, aliasOrganisationEvent);
|
||||
List<String> eventDateFilter = new List<String>();
|
||||
eventDateFilter.Add($"{colEventAt}>={dateValue}");
|
||||
eventDateFilter.Add($"{colEventAt}<{dateValue} And {colEventTo} Is Not Null And {colEventTo}>={dateValue}");
|
||||
filter.Add(eventDateFilter.Concat(" Or ","(",")"));
|
||||
}
|
||||
|
||||
// Event filter.
|
||||
if (!StringUtil.IsEmpty(prm.EventFilter))
|
||||
{
|
||||
// Split filter into words.
|
||||
List<String> filterWords = prm.EventFilter.Split((char[])null).ToList();
|
||||
filterWords.RemoveDuplicatesCI();
|
||||
filterWords.RemoveBlanks();
|
||||
foreach (String filterWord in filterWords)
|
||||
{
|
||||
List<String> articleFilter = new List<String>();
|
||||
articleFilter.Add($"{SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Summary, aliasOrganisationEvent)} Like '%{DbQuery.FormatForLike(filterWord, true)}%'");
|
||||
articleFilter.Add($"{SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Details, aliasOrganisationEvent)} Like '%{DbQuery.FormatForLike(filterWord, true)}%'");
|
||||
filter.Add(articleFilter.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
}
|
||||
|
||||
// Notes.
|
||||
if (!StringUtil.IsEmpty(prm.NotesPartial))
|
||||
filter.Add($"{SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Notes, aliasOrganisationEvent)} LIKE '%{DbQuery.FormatForLike(prm.NotesPartial)}%'");
|
||||
|
||||
// Status.
|
||||
if (prm.StatusCat != SaxOrganisationEvent.StatusCat.Any)
|
||||
filter.Add($"{SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Status, aliasOrganisationEvent)}{GetOrganisationEventStatusCatFilterCondition(prm.StatusCat)}");
|
||||
|
||||
if (filter.Count < 1) filter.Add("1=1");
|
||||
return filter;
|
||||
}
|
||||
internal static String GetOrganisationEventStatusCatFilterCondition(SaxOrganisationEvent.StatusCat statusCat)
|
||||
{
|
||||
if (statusCat == SaxOrganisationEvent.StatusCat.ActiveOnly)
|
||||
return $"='{SacsSystem.GetStatusCode(SaStatus.Active)}'";
|
||||
if (statusCat == SaxOrganisationEvent.StatusCat.InactiveOnly)
|
||||
return $"='{SacsSystem.GetStatusCode(SaStatus.Inactive)}'";
|
||||
if (statusCat == SaxOrganisationEvent.StatusCat.NotDeleted)
|
||||
return $"!='{SacsSystem.GetStatusCode(SaStatus.Deleted)}'";
|
||||
if (statusCat == SaxOrganisationEvent.StatusCat.DeletedOnly)
|
||||
return $"='{SacsSystem.GetStatusCode(SaStatus.Deleted)}'";
|
||||
return "";
|
||||
}
|
||||
// Item sort columns.
|
||||
public List<String> GetOrganisationEventSortColumns(SaxOrganisationEvent.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
List<String> sortColumnNames = new List<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for OrganisationEvent columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SaxDbDfn_Core.GetTableForColumn((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn_Core.TableIdx.OrganisationEvent)
|
||||
{
|
||||
sortCol = SaxDbDfn_Core.GetColumnNameQual((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn, aliasOrganisationEvent);
|
||||
}
|
||||
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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Id, aliasOrganisationEvent) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item count.
|
||||
private long GetOrganisationEventCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return CoreDatabase.GetRowCount(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.OrganisationEvent) + " As " + aliasOrganisationEvent, filter);
|
||||
}
|
||||
public override long GetOrganisationEventCount(SaxOrganisationEvent.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetOrganisationEventCount(GetOrganisationEventQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item list.
|
||||
public override List<SaxOrganisationEvent> GetOrganisationEventList(SaxOrganisationEvent.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<SaxOrganisationEvent> userActivitys = new List<SaxOrganisationEvent>();
|
||||
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.OrganisationEvent), aliasOrganisationEvent);
|
||||
OrganisationEvent_Db dbOrganisationEvent = new OrganisationEvent_Db(CoreDbInfo);
|
||||
qry.Columns.AddRange(dbOrganisationEvent.ExistingColumnNames);
|
||||
qry.Filters.AddRange(GetOrganisationEventQueryFilter(prm));
|
||||
qry.OrderBy.AddRange(GetOrganisationEventSortColumns(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())
|
||||
{
|
||||
dbOrganisationEvent = new OrganisationEvent_Db(CoreDbInfo);
|
||||
dbOrganisationEvent.PopulateFrom(dbDataReader);
|
||||
userActivitys.Add(CreateOrganisationEvent(dbOrganisationEvent));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return userActivitys;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item query execution.
|
||||
public override DbResultSet ExecuteOrganisationEventQuery(List<ColumnDfn> columns, SaxOrganisationEvent.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(CoreDatabase.DbmsType);
|
||||
query.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.OrganisationEvent), aliasOrganisationEvent);
|
||||
|
||||
// Add columns as defined in query list.
|
||||
if (columns.HasId(SaxOrganisationEvent.Column.Id))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Id, aliasOrganisationEvent));
|
||||
bool hasOrganisationCols = (columns.HasId(SaxOrganisationEvent.Column.Organisation_Name));
|
||||
if (columns.HasId(SaxOrganisationEvent.Column.OrganisationId) || hasOrganisationCols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_OrganisationId, aliasOrganisationEvent));
|
||||
bool hasSportCols = (columns.HasId(SaxOrganisationEvent.Column.Sport_Name));
|
||||
if (columns.HasId(SaxOrganisationEvent.Column.SportIdPrimary) || hasSportCols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_SportIdPrimary, aliasOrganisationEvent));
|
||||
bool hasRegionCols = (columns.HasId(SaxOrganisationEvent.Column.Region_Name));
|
||||
if (columns.HasId(SaxOrganisationEvent.Column.RegionIdCountry) || hasRegionCols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_RegionIdCountry, aliasOrganisationEvent));
|
||||
if (columns.HasId(SaxOrganisationEvent.Column.EventAt_Date) || columns.HasId(SaxOrganisationEvent.Column.EventAt_DateTime))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_EventAt, aliasOrganisationEvent));
|
||||
if (columns.HasId(SaxOrganisationEvent.Column.EventTo_Date) || columns.HasId(SaxOrganisationEvent.Column.EventTo_DateTime))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_EventTo, aliasOrganisationEvent));
|
||||
if (columns.HasId(SaxOrganisationEvent.Column.EventTypeCode) || columns.HasId(SaxOrganisationEvent.Column.EventType_Desc))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_EventTypeCode, aliasOrganisationEvent));
|
||||
if (columns.HasId(SaxOrganisationEvent.Column.Summary))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Summary, aliasOrganisationEvent));
|
||||
if (columns.HasId(SaxOrganisationEvent.Column.Details))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Details, aliasOrganisationEvent));
|
||||
if (columns.HasId(SaxOrganisationEvent.Column.PublishedAt_Date) || columns.HasId(SaxOrganisationEvent.Column.PublishedAt_DateTime))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_PublishedAt, aliasOrganisationEvent));
|
||||
if (columns.HasId(SaxOrganisationEvent.Column.ExpiresAt_Date) || columns.HasId(SaxOrganisationEvent.Column.ExpiresAt_DateTime))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_ExpiresAt, aliasOrganisationEvent));
|
||||
// Common properties.
|
||||
if (columns.HasId(SaxOrganisationEvent.Column.Notes))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Notes, aliasOrganisationEvent));
|
||||
if (columns.HasId(SaxOrganisationEvent.Column.Flags))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Flags, aliasOrganisationEvent));
|
||||
if (columns.HasId(SaxOrganisationEvent.Column.Status) || columns.HasId(SaxOrganisationEvent.Column.Status_Desc) || columns.HasId(SaxOrganisationEvent.Column.Status_Ind))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_Status, aliasOrganisationEvent));
|
||||
if (columns.HasId(SaxOrganisationEvent.Column.CreateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_CreateOn, aliasOrganisationEvent));
|
||||
if (columns.HasId(SaxOrganisationEvent.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_UpdateOn, aliasOrganisationEvent));
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Organisation.
|
||||
if (hasOrganisationCols)
|
||||
{
|
||||
DbQueryJoin joinOrganisation = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinOrganisation.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Organisation), aliasOrganisationEvent_Organisation);
|
||||
joinOrganisation.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_Id, aliasOrganisationEvent_Organisation) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_OrganisationId, aliasOrganisationEvent));
|
||||
query.Joins.Add(joinOrganisation);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.Organisation_Name);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasOrganisationEvent_Organisation), prefixOrganisationEvent_Organisation + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
prm.Alias_Organisation = aliasOrganisationEvent_Organisation;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Organisation Logo Image Count.
|
||||
if (columns.HasId(SaxOrganisationEvent.Column.Organisation_LogoCount))
|
||||
{
|
||||
String aliasLogoCount = "aImg_Logo";
|
||||
DbQuery queryLogoCount = new DbQuery(CoreDatabase.DbmsType);
|
||||
queryLogoCount.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ItemImage), aliasLogoCount);
|
||||
queryLogoCount.Columns.Add("Count(*)");
|
||||
queryLogoCount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_ItemType, aliasLogoCount) + "=" + (int)Sax.DataItemType.Organisation);
|
||||
queryLogoCount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_ItemId, aliasLogoCount) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_OrganisationId, aliasOrganisationEvent));
|
||||
queryLogoCount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_ImageType, aliasLogoCount) + "=" + (int)Sax.ImageType.OrganisationLogo);
|
||||
queryLogoCount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_Status, aliasLogoCount) + "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'");
|
||||
// Construct sub-query.
|
||||
query.Columns.Add("(" + queryLogoCount.BuildQuery() + ")", colOrganisationEvent_OrganisationOwner_LogoCount);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Primary Sport.
|
||||
if (hasSportCols)
|
||||
{
|
||||
DbQueryJoin joinSport = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinSport.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Sport), aliasOrganisationEvent_Sport);
|
||||
joinSport.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_Id, aliasOrganisationEvent_Sport) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_SportIdPrimary, aliasOrganisationEvent));
|
||||
query.Joins.Add(joinSport);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.Sport_Name);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasOrganisationEvent_Sport), prefixOrganisationEvent_Sport + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Primary Region.
|
||||
if (hasRegionCols)
|
||||
{
|
||||
DbQueryJoin joinRegion = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinRegion.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Region), aliasOrganisationEvent_Region);
|
||||
joinRegion.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_Id, aliasOrganisationEvent_Region) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationEvent_RegionIdCountry, aliasOrganisationEvent));
|
||||
query.Joins.Add(joinRegion);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.Region_Name);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasOrganisationEvent_Region), prefixOrganisationEvent_Region + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetOrganisationEventQueryFilter(prm));
|
||||
|
||||
if (prm.IdsIncluded.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetOrganisationEventSortColumns(prm))
|
||||
query.OrderBy.Add(sortColumn);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
//return new DbResultSet_DataTableReader(db, query.BuildQuery(prm.ResultsPaging));
|
||||
return DbResultSet_DataReader.ExecuteQuery(CoreDatabase, query.BuildQuery(prm.ResultsPaging));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
+714
@@ -0,0 +1,714 @@
|
||||
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;
|
||||
using Saxonite.Net.Standard.Dbas.Internal.Core;
|
||||
|
||||
namespace Saxonite.Net.Standard.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
partial class SaxActivityMgr_Dbas
|
||||
{
|
||||
//*******************************************************************
|
||||
// Activity Mgr - Organisation Opportunity
|
||||
//*******************************************************************
|
||||
// Utilities.
|
||||
private List<StringPair> GetLogProperties(SaxOrganisationOpportunity organisationOpportunity)
|
||||
{
|
||||
return new List<StringPair>()
|
||||
{
|
||||
new StringPair("Id", SysId.ToString(organisationOpportunity.Id)),
|
||||
new StringPair("OrganisationId", SysId.ToString(organisationOpportunity.OrganisationId)),
|
||||
new StringPair("Opportunity type", OpportunityTypeCodes.GetDescForType(organisationOpportunity.OpportunityType)),
|
||||
new StringPair("Position", StringUtil.Left(organisationOpportunity.Position,32)),
|
||||
new StringPair("Status", organisationOpportunity.StatusCode)
|
||||
};
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create item.
|
||||
public override SaxOrganisationOpportunity CreateOrganisationOpportunity(SysId userAccountIdJournalist)
|
||||
{
|
||||
ClearErrorState();
|
||||
return new SaxOrganisationOpportunity_Dbas(CoreDatabase, null, userAccountIdJournalist, 0);
|
||||
}
|
||||
private SaxOrganisationOpportunity_Dbas CreateOrganisationOpportunity(OrganisationOpportunity_Db dbOrganisationOpportunity)
|
||||
{
|
||||
ClearErrorState();
|
||||
SaxOrganisationOpportunity_Dbas organisationOpportunity = new SaxOrganisationOpportunity_Dbas(CoreDatabase, new SysId(dbOrganisationOpportunity._Id), new SysId(dbOrganisationOpportunity._OrganisationId), (UInt16)dbOrganisationOpportunity._Flags);
|
||||
PopulateFrom(dbOrganisationOpportunity, organisationOpportunity);
|
||||
return organisationOpportunity;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get item.
|
||||
public override SaxOrganisationOpportunity GetOrganisationOpportunity(SaxOrganisationOpportunity.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetOrganisationOpportunity(GetOrganisationOpportunityQueryFilter(prm).Concat(" And ", "(", ")"));
|
||||
}
|
||||
private SaxOrganisationOpportunity GetOrganisationOpportunity(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetOrganisationOpportunityCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple items found");
|
||||
return null;
|
||||
}
|
||||
SaxOrganisationOpportunity organisationOpportunity = null;
|
||||
// Query data.
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
OrganisationOpportunity_Db dbOrganisationOpportunity = new OrganisationOpportunity_Db(CoreDbInfo);
|
||||
dbOrganisationOpportunity.PopulateFrom(dbCommand, aliasOrganisationOpportunity, filter);
|
||||
organisationOpportunity = CreateOrganisationOpportunity(dbOrganisationOpportunity);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return organisationOpportunity;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate item.
|
||||
public override bool IsValidOrganisationOpportunityData(SaxOrganisationOpportunity.Data data, SaxOrganisationOpportunity.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidOrganisationOpportunityData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert item.
|
||||
public override bool InsertOrganisationOpportunity(SaxOrganisationOpportunity organisationOpportunity, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".InsertOrganisationOpportunity";
|
||||
ClearErrorState();
|
||||
if (!IsValidOrganisationOpportunity(organisationOpportunity)) return false;
|
||||
if (SysId.IsValid(organisationOpportunity.Id)) return SetErrorState(ErrorMessage.ValidItemId);
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
OrganisationOpportunity_Db dbOrganisationOpportunity = new OrganisationOpportunity_Db(CoreDbInfo);
|
||||
PopulateTo(dbOrganisationOpportunity, organisationOpportunity, dbUpdateInfo);
|
||||
if (OrganisationOpportunity_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
// ToDo dbOrganisationOpportunity._Id = CoreDatabase.GetNextIdFromTable("OrganisationOpportunity");
|
||||
}
|
||||
dbOrganisationOpportunity.ExecuteInsertCommand(dbCommand);
|
||||
organisationOpportunity.Id = new SysId(dbOrganisationOpportunity._Id);
|
||||
organisationOpportunity.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Inserted. " + GetLogProperties(organisationOpportunity).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update item.
|
||||
public override bool UpdateOrganisationOpportunity(SaxOrganisationOpportunity organisationOpportunity, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".UpdateOrganisationOpportunity";
|
||||
ClearErrorState();
|
||||
if (!IsValidOrganisationOpportunity(organisationOpportunity)) return false;
|
||||
if (!SysId.IsValid(organisationOpportunity.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!organisationOpportunity.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug(fn + " Data not changed. " + GetLogProperties(organisationOpportunity).Concat(": ").Concat("", "\n\t"));
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
OrganisationOpportunity_Db dbOrganisationOpportunity = new OrganisationOpportunity_Db(CoreDbInfo);
|
||||
dbOrganisationOpportunity.PopulateFrom(dbCommand, aliasOrganisationOpportunity, "Id=" + SysId.ToString(organisationOpportunity.Id));
|
||||
// ToDo SaxUpdateLogItemMonitor_OrganisationOpportunity updateLogMonitor = new SaxUpdateLogItemMonitor_OrganisationOpportunity(SessionContext, CreateOrganisationOpportunity(dbOrganisationOpportunity), dbUpdateInfo);
|
||||
// Update item.
|
||||
PopulateTo(dbOrganisationOpportunity, organisationOpportunity, dbUpdateInfo);
|
||||
dbOrganisationOpportunity.ExecuteUpdateCommand(dbCommand);
|
||||
organisationOpportunity.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Updated. " + GetLogProperties(organisationOpportunity).Concat(": ").Concat("", "\n\t"));
|
||||
// Record updates.
|
||||
// ToDo updateLogMonitor.RecordUpdatedValues(organisationOpportunity);
|
||||
// ToDo updateLogMonitor.LogUpdates();
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete item.
|
||||
public override bool OrganisationOpportunityCanBeDeleted(SaxOrganisationOpportunity organisationOpportunity)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.OrganisationOpportunityCanBeDeleted(organisationOpportunity)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteOrganisationOpportunity(SaxOrganisationOpportunity organisationOpportunity, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
String fn = GetType().Name + ".DeleteOrganisationOpportunity";
|
||||
ClearErrorState();
|
||||
if (!OrganisationOpportunityCanBeDeleted(organisationOpportunity)) return false;
|
||||
|
||||
// Organisation Opportunities are logically deleted by changing the status.
|
||||
organisationOpportunity.Status = SaStatus.Deleted;
|
||||
return UpdateOrganisationOpportunity(organisationOpportunity, dbUpdateInfo);
|
||||
|
||||
/*
|
||||
* Physical deletion.
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
OrganisationOpportunity_Db dbOrganisationOpportunity = new OrganisationOpportunity_Db(CoreDbInfo);
|
||||
dbOrganisationOpportunity.PopulateFrom(dbCommand, aliasOrganisationOpportunity, "Id=" + organisationOpportunity.Id.ToString());
|
||||
// Delete item.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.OrganisationOpportunity) + " WHERE Id=" + SysId.ToString(organisationOpportunity.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
organisationOpportunity.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug(fn + " Deleted. " + GetLogProperties(organisationOpportunity).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
*/
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(OrganisationOpportunity_Db dbOrganisationOpportunity, SaxOrganisationOpportunity organisationOpportunity, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbOrganisationOpportunity._Id = SysId.ToInt(organisationOpportunity.Id);
|
||||
dbOrganisationOpportunity._OrganisationId = SysId.ToInt(organisationOpportunity.OrganisationId);
|
||||
dbOrganisationOpportunity._SportIdPrimary = SysId.ToInt(organisationOpportunity.SportIdPrimary);
|
||||
dbOrganisationOpportunity._RegionIdPrimary = SysId.ToInt(organisationOpportunity.RegionIdPrimary);
|
||||
dbOrganisationOpportunity._OpportunityTypeCode = OpportunityTypeCodes.GetCodeForType(organisationOpportunity.OpportunityType);
|
||||
dbOrganisationOpportunity._Position = organisationOpportunity.Position;
|
||||
dbOrganisationOpportunity._Outline = organisationOpportunity.Outline;
|
||||
dbOrganisationOpportunity._OpportunityData = organisationOpportunity.OpportunityData;
|
||||
dbOrganisationOpportunity._PublishedAt = organisationOpportunity.PublishedAt;
|
||||
dbOrganisationOpportunity._ExpiresAt = organisationOpportunity.ExpiresAt;
|
||||
dbOrganisationOpportunity._Notes = organisationOpportunity.Notes;
|
||||
dbOrganisationOpportunity._Status = SacsSystem.GetStatusCode(organisationOpportunity.Status);
|
||||
dbOrganisationOpportunity._Flags = (short)organisationOpportunity.Flags;
|
||||
if (!SysId.IsValid(organisationOpportunity.Id))
|
||||
{
|
||||
dbOrganisationOpportunity._CreateOn = DateTime.Now;
|
||||
dbOrganisationOpportunity._CreateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbOrganisationOpportunity._CreateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
dbOrganisationOpportunity._UpdateOn = DateTime.Now;
|
||||
dbOrganisationOpportunity._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbOrganisationOpportunity._UpdateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
private void PopulateFrom(OrganisationOpportunity_Db dbOrganisationOpportunity, SaxOrganisationOpportunity organisationOpportunity)
|
||||
{
|
||||
//organisationOpportunity.Id = new SysId(dbOrganisationOpportunity._Id);
|
||||
//organisationOpportunity.OrganisationId = new SysId(dbOrganisationOpportunity._OrganisationId);
|
||||
organisationOpportunity.SportIdPrimary = new SysId(dbOrganisationOpportunity._SportIdPrimary);
|
||||
organisationOpportunity.RegionIdPrimary = new SysId(dbOrganisationOpportunity._RegionIdPrimary);
|
||||
organisationOpportunity.OpportunityType = (Sax.OpportunityType)OpportunityTypeCodes.GetTypeForCode(dbOrganisationOpportunity._OpportunityTypeCode);
|
||||
organisationOpportunity.Position = dbOrganisationOpportunity._Position;
|
||||
organisationOpportunity.Outline = dbOrganisationOpportunity._Outline;
|
||||
organisationOpportunity.OpportunityData = dbOrganisationOpportunity._OpportunityData;
|
||||
organisationOpportunity.PublishedAt = dbOrganisationOpportunity._PublishedAt;
|
||||
organisationOpportunity.ExpiresAt = dbOrganisationOpportunity._ExpiresAt;
|
||||
organisationOpportunity.Notes = dbOrganisationOpportunity._Notes;
|
||||
organisationOpportunity.Status = SacsSystem.GetStatusForCode(dbOrganisationOpportunity._Status);
|
||||
organisationOpportunity.SetCreateStamp(dbOrganisationOpportunity._CreateOn, new SysId(dbOrganisationOpportunity._CreateBy), dbOrganisationOpportunity._CreateHost);
|
||||
organisationOpportunity.SetUpdateStamp(dbOrganisationOpportunity._UpdateOn, new SysId(dbOrganisationOpportunity._UpdateBy), dbOrganisationOpportunity._UpdateHost);
|
||||
organisationOpportunity.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item column definitions.
|
||||
private static readonly String aliasOrganisationOpportunity = "OrgOpp";
|
||||
private static readonly String aliasOrganisationOpportunity_Organisation = "OrgOpp_Org";
|
||||
private static readonly String prefixOrganisationOpportunity_Organisation = aliasOrganisationOpportunity_Organisation + "_";
|
||||
private static readonly String colOrganisationOpportunity_OrganisationOwner_LogoCount = "OrgOpp_Org_LogoCount";
|
||||
private static readonly String aliasOrganisationOpportunity_Organisation_UserOrganisation = "OrgOpp_Org_UsrOrg";
|
||||
private static readonly String aliasOrganisationOpportunity_Sport = "OrgOpp_Spt";
|
||||
private static readonly String prefixOrganisationOpportunity_Sport = aliasOrganisationOpportunity_Sport + "_";
|
||||
private static readonly String aliasOrganisationOpportunity_Region = "OrgOpp_Rgn";
|
||||
private static readonly String prefixOrganisationOpportunity_Region = aliasOrganisationOpportunity_Region + "_";
|
||||
private void SetOrganisationOpportunityColDfn
|
||||
(ColumnDfn col, String caption, int width, SaxDbDfn_Core.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SaxDbDfn_Core.GetTableForColumn(dbCol) == SaxDbDfn_Core.TableIdx.OrganisationOpportunity)
|
||||
alias = aliasOrganisationOpportunity;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn_Core.GetColumnName(dbCol, false), SaxDbDfn_Core.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn_Core.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SaxDbDfn_Core.GetColTextLen(dbCol);
|
||||
}
|
||||
public override ColumnDfn GetOrganisationOpportunityColumnDfn(SaxOrganisationOpportunity.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
//-----------------------------------------------------------
|
||||
case SaxOrganisationOpportunity.Column.Pos:
|
||||
SetOrganisationOpportunityColDfn(columnDfn, "Pos", 60, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
case SaxOrganisationOpportunity.Column.Id:
|
||||
SetOrganisationOpportunityColDfn(columnDfn, "Id", 80, SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Organisation.
|
||||
case SaxOrganisationOpportunity.Column.OrganisationId:
|
||||
SetOrganisationOpportunityColDfn(columnDfn, "Organisation Id", 80, SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_OrganisationId, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxOrganisationOpportunity.Column.Organisation_Name:
|
||||
SetOrganisationOpportunityColDfn(columnDfn, "Organisation", 160, SaxDbDfn_Core.ColumnIdx.Organisation_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasOrganisationOpportunity_Organisation, prefixOrganisationOpportunity_Organisation);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxOrganisationOpportunity.Column.Organisation_LogoCount:
|
||||
SetActivityIndexColDfn(columnDfn, "Organisation Logos", 100, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.DataName = colOrganisationOpportunity_OrganisationOwner_LogoCount;
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Sport.
|
||||
case SaxOrganisationOpportunity.Column.SportIdPrimary:
|
||||
SetOrganisationOpportunityColDfn(columnDfn, "Sport Id", 80, SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_SportIdPrimary, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxOrganisationOpportunity.Column.Sport_Name:
|
||||
SetOrganisationOpportunityColDfn(columnDfn, "Sport", 100, SaxDbDfn_Core.ColumnIdx.Sport_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasOrganisationOpportunity_Sport, prefixOrganisationOpportunity_Sport);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Region.
|
||||
case SaxOrganisationOpportunity.Column.RegionIdPrimary:
|
||||
SetOrganisationOpportunityColDfn(columnDfn, "Region Id", 80, SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_RegionIdPrimary, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxOrganisationOpportunity.Column.Region_Name:
|
||||
SetOrganisationOpportunityColDfn(columnDfn, "Region", 100, SaxDbDfn_Core.ColumnIdx.Region_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasOrganisationOpportunity_Region, prefixOrganisationOpportunity_Region);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Opportunity.
|
||||
case SaxOrganisationOpportunity.Column.OpportunityTypeCode:
|
||||
SetOrganisationOpportunityColDfn(columnDfn, "Type", 90, SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_OpportunityTypeCode, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxOrganisationOpportunity.Column.OpportunityType_Desc:
|
||||
SetOrganisationOpportunityColDfn(columnDfn, "Type", 120, SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_OpportunityTypeCode, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxOrganisationOpportunity.Column.Position:
|
||||
SetOrganisationOpportunityColDfn(columnDfn, "Position", 200, SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Position);
|
||||
break;
|
||||
case SaxOrganisationOpportunity.Column.Outline:
|
||||
SetOrganisationOpportunityColDfn(columnDfn, "Outline", 200, SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Outline);
|
||||
break;
|
||||
case SaxOrganisationOpportunity.Column.PublishedAt_Date:
|
||||
SetOrganisationOpportunityColDfn(columnDfn, "Published", 80, SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_PublishedAt, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxOrganisationOpportunity.Column.PublishedAt_DateTime:
|
||||
SetOrganisationOpportunityColDfn(columnDfn, "Published", 100, SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_PublishedAt, ColumnAlignment.Center, DataValue.DataType.DateTime);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxOrganisationOpportunity.Column.ExpiresAt_Date:
|
||||
SetOrganisationOpportunityColDfn(columnDfn, "Expires", 80, SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_ExpiresAt, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxOrganisationOpportunity.Column.ExpiresAt_DateTime:
|
||||
SetOrganisationOpportunityColDfn(columnDfn, "Expires", 100, SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_ExpiresAt, ColumnAlignment.Center, DataValue.DataType.DateTime);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Derived properties.
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Common properties.
|
||||
case SaxOrganisationOpportunity.Column.Notes:
|
||||
SetOrganisationOpportunityColDfn(columnDfn, "Notes", 240, SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Notes);
|
||||
break;
|
||||
case SaxOrganisationOpportunity.Column.Flags:
|
||||
SetOrganisationOpportunityColDfn(columnDfn, "Flags", 60, SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxOrganisationOpportunity.Column.Status:
|
||||
SetOrganisationOpportunityColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxOrganisationOpportunity.Column.Status_Desc:
|
||||
SetOrganisationOpportunityColDfn(columnDfn, "Status", 90, SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxOrganisationOpportunity.Column.Status_Ind:
|
||||
SetOrganisationOpportunityColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SaxOrganisationOpportunity.Column.CreateOn_Date:
|
||||
SetOrganisationOpportunityColDfn(columnDfn, "Created", 80, SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxOrganisationOpportunity.Column.UpdateOn_Date:
|
||||
SetOrganisationOpportunityColDfn(columnDfn, "Updated", 80, SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_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> GetOrganisationOpportunityQueryFilter(SaxOrganisationOpportunity.Params prm)
|
||||
{
|
||||
List<String> filter = new List<String>();
|
||||
|
||||
// Item Ids.
|
||||
String idsIncluded = prm.IdsIncluded.Concat(",");
|
||||
if (!idsIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Id, aliasOrganisationOpportunity) + " IN (" + idsIncluded + ")");
|
||||
String idsExcluded = prm.IdsExcluded.Concat(",");
|
||||
if (!idsExcluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Id, aliasOrganisationOpportunity) + " NOT IN (" + idsExcluded + ")");
|
||||
|
||||
// User Account Ids.
|
||||
String userAccountIdsIncluded = prm.UserAccountIdsIncluded.Concat(",");
|
||||
if (!userAccountIdsIncluded.IsEmpty())
|
||||
{
|
||||
// User Organisation.
|
||||
if (!StringUtil.IsEmpty(prm.Alias_UserOrganisation))
|
||||
{
|
||||
// Filter directly on the joined User Organisation table.
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_UserAccountId, prm.Alias_UserOrganisation) + " IN (" + userAccountIdsIncluded + ")");
|
||||
}
|
||||
else
|
||||
{
|
||||
// User Organisation query.
|
||||
String alias_UserOrganisation = aliasOrganisationOpportunity_Organisation_UserOrganisation;
|
||||
DbQuery queryUserOrganisation = new DbQuery(CoreDatabase.DbmsType);
|
||||
queryUserOrganisation.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserOrganisation), alias_UserOrganisation);
|
||||
queryUserOrganisation.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_UserAccountId, alias_UserOrganisation) + " IN (" + userAccountIdsIncluded + ")");
|
||||
|
||||
// Filter Organisation directly against the Organisation Opportunity.
|
||||
queryUserOrganisation.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserOrganisation_OrganisationId, alias_UserOrganisation));
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_OrganisationId, aliasOrganisationOpportunity) + " IN (" + queryUserOrganisation.BuildQuery() + ")");
|
||||
}
|
||||
}
|
||||
|
||||
// Organisation Ids.
|
||||
String organisationIdsIncluded = prm.OrganisationIdsIncluded.Concat(",");
|
||||
if (!organisationIdsIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_OrganisationId, aliasOrganisationOpportunity) + " IN (" + organisationIdsIncluded + ")");
|
||||
|
||||
// Sport Ids.
|
||||
String sportIdsIncluded = prm.SportIdsIncluded.Concat(",");
|
||||
if (!sportIdsIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_SportIdPrimary, aliasOrganisationOpportunity) + " IN (" + sportIdsIncluded + ")");
|
||||
|
||||
// Region Ids.
|
||||
String regionIdsIncluded = prm.RegionIdsIncluded.Concat(",");
|
||||
if (!regionIdsIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_RegionIdPrimary, aliasOrganisationOpportunity) + " IN (" + regionIdsIncluded + ")");
|
||||
|
||||
// Position.
|
||||
if (!StringUtil.IsEmpty(prm.PositionPartial))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Position, aliasOrganisationOpportunity) + " Like '%" + DbQuery.FormatForLike(prm.PositionPartial, true) + "%'");
|
||||
|
||||
// Outline.
|
||||
if (!StringUtil.IsEmpty(prm.OutlinePartial))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Outline, aliasOrganisationOpportunity) + " Like '%" + DbQuery.FormatForLike(prm.OutlinePartial, true) + "%'");
|
||||
|
||||
// Article.
|
||||
if (!StringUtil.IsEmpty(prm.OpportunityFilter))
|
||||
{
|
||||
// Split filter into words.
|
||||
List<String> filterWords = prm.OpportunityFilter.Split((char[])null).ToList();
|
||||
filterWords.RemoveDuplicatesCI();
|
||||
filterWords.RemoveBlanks();
|
||||
foreach (String filterWord in filterWords)
|
||||
{
|
||||
List<String> articleFilter = new List<String>();
|
||||
articleFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Position, aliasOrganisationOpportunity) + " Like '%" + DbQuery.FormatForLike(filterWord, true) + "%'");
|
||||
articleFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Outline, aliasOrganisationOpportunity) + " Like '%" + DbQuery.FormatForLike(filterWord, true) + "%'");
|
||||
filter.Add(articleFilter.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
}
|
||||
|
||||
// Notes.
|
||||
if (!StringUtil.IsEmpty(prm.NotesPartial))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Notes, aliasOrganisationOpportunity) + " LIKE '%" + DbQuery.FormatForLike(prm.NotesPartial) + "%'");
|
||||
|
||||
// Status.
|
||||
if (prm.StatusCat != SaxOrganisationOpportunity.StatusCat.Any)
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Status, aliasOrganisationOpportunity) + GetOrganisationOpportunityStatusCatFilterCondition(prm.StatusCat));
|
||||
|
||||
if (filter.Count < 1) filter.Add("1=1");
|
||||
return filter;
|
||||
}
|
||||
internal static String GetOrganisationOpportunityStatusCatFilterCondition(SaxOrganisationOpportunity.StatusCat statusCat)
|
||||
{
|
||||
if (statusCat == SaxOrganisationOpportunity.StatusCat.ActiveOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'";
|
||||
if (statusCat == SaxOrganisationOpportunity.StatusCat.InactiveOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Inactive) + "'";
|
||||
if (statusCat == SaxOrganisationOpportunity.StatusCat.NotDeleted)
|
||||
return "!='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
if (statusCat == SaxOrganisationOpportunity.StatusCat.DeletedOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
return "";
|
||||
}
|
||||
// Item sort columns.
|
||||
public List<String> GetOrganisationOpportunitySortColumns(SaxOrganisationOpportunity.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
List<String> sortColumnNames = new List<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for OrganisationOpportunity columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SaxDbDfn_Core.GetTableForColumn((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn_Core.TableIdx.OrganisationOpportunity)
|
||||
{
|
||||
sortCol = SaxDbDfn_Core.GetColumnNameQual((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn, aliasOrganisationOpportunity);
|
||||
}
|
||||
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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Id, aliasOrganisationOpportunity) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item count.
|
||||
private long GetOrganisationOpportunityCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return CoreDatabase.GetRowCount(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.OrganisationOpportunity) + " As " + aliasOrganisationOpportunity, filter);
|
||||
}
|
||||
public override long GetOrganisationOpportunityCount(SaxOrganisationOpportunity.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetOrganisationOpportunityCount(GetOrganisationOpportunityQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item list.
|
||||
public override List<SaxOrganisationOpportunity> GetOrganisationOpportunityList(SaxOrganisationOpportunity.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<SaxOrganisationOpportunity> userActivitys = new List<SaxOrganisationOpportunity>();
|
||||
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.OrganisationOpportunity), aliasOrganisationOpportunity);
|
||||
OrganisationOpportunity_Db dbOrganisationOpportunity = new OrganisationOpportunity_Db(CoreDbInfo);
|
||||
qry.Columns.AddRange(dbOrganisationOpportunity.ExistingColumnNames);
|
||||
qry.Filters.AddRange(GetOrganisationOpportunityQueryFilter(prm));
|
||||
qry.OrderBy.AddRange(GetOrganisationOpportunitySortColumns(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())
|
||||
{
|
||||
dbOrganisationOpportunity = new OrganisationOpportunity_Db(CoreDbInfo);
|
||||
dbOrganisationOpportunity.PopulateFrom(dbDataReader);
|
||||
userActivitys.Add(CreateOrganisationOpportunity(dbOrganisationOpportunity));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return userActivitys;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item query execution.
|
||||
public override DbResultSet ExecuteOrganisationOpportunityQuery(List<ColumnDfn> columns, SaxOrganisationOpportunity.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(CoreDatabase.DbmsType);
|
||||
query.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.OrganisationOpportunity), aliasOrganisationOpportunity);
|
||||
|
||||
// Add columns as defined in query list.
|
||||
if (columns.HasId(SaxOrganisationOpportunity.Column.Id))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Id, aliasOrganisationOpportunity));
|
||||
bool hasOrganisationCols = (columns.HasId(SaxOrganisationOpportunity.Column.Organisation_Name));
|
||||
if (columns.HasId(SaxOrganisationOpportunity.Column.OrganisationId) || hasOrganisationCols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_OrganisationId, aliasOrganisationOpportunity));
|
||||
bool hasSportCols = (columns.HasId(SaxOrganisationOpportunity.Column.Sport_Name));
|
||||
if (columns.HasId(SaxOrganisationOpportunity.Column.SportIdPrimary) || hasSportCols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_SportIdPrimary, aliasOrganisationOpportunity));
|
||||
bool hasRegionCols = (columns.HasId(SaxOrganisationOpportunity.Column.Region_Name));
|
||||
if (columns.HasId(SaxOrganisationOpportunity.Column.RegionIdPrimary) || hasRegionCols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_RegionIdPrimary, aliasOrganisationOpportunity));
|
||||
if (columns.HasId(SaxOrganisationOpportunity.Column.OpportunityTypeCode) || columns.HasId(SaxOrganisationOpportunity.Column.OpportunityType_Desc))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_OpportunityTypeCode, aliasOrganisationOpportunity));
|
||||
if (columns.HasId(SaxOrganisationOpportunity.Column.Position))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Position, aliasOrganisationOpportunity));
|
||||
if (columns.HasId(SaxOrganisationOpportunity.Column.Outline))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Outline, aliasOrganisationOpportunity));
|
||||
if (columns.HasId(SaxOrganisationOpportunity.Column.PublishedAt_Date) || columns.HasId(SaxOrganisationOpportunity.Column.PublishedAt_DateTime))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_PublishedAt, aliasOrganisationOpportunity));
|
||||
if (columns.HasId(SaxOrganisationOpportunity.Column.ExpiresAt_Date) || columns.HasId(SaxOrganisationOpportunity.Column.ExpiresAt_DateTime))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_ExpiresAt, aliasOrganisationOpportunity));
|
||||
// Common properties.
|
||||
if (columns.HasId(SaxOrganisationOpportunity.Column.Notes))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Notes, aliasOrganisationOpportunity));
|
||||
if (columns.HasId(SaxOrganisationOpportunity.Column.Flags))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Flags, aliasOrganisationOpportunity));
|
||||
if (columns.HasId(SaxOrganisationOpportunity.Column.Status) || columns.HasId(SaxOrganisationOpportunity.Column.Status_Desc) || columns.HasId(SaxOrganisationOpportunity.Column.Status_Ind))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_Status, aliasOrganisationOpportunity));
|
||||
if (columns.HasId(SaxOrganisationOpportunity.Column.CreateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_CreateOn, aliasOrganisationOpportunity));
|
||||
if (columns.HasId(SaxOrganisationOpportunity.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_UpdateOn, aliasOrganisationOpportunity));
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Organisation.
|
||||
if (hasOrganisationCols)
|
||||
{
|
||||
DbQueryJoin joinOrganisation = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinOrganisation.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Organisation), aliasOrganisationOpportunity_Organisation);
|
||||
joinOrganisation.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_Id, aliasOrganisationOpportunity_Organisation) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_OrganisationId, aliasOrganisationOpportunity));
|
||||
query.Joins.Add(joinOrganisation);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.Organisation_Name);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasOrganisationOpportunity_Organisation), prefixOrganisationOpportunity_Organisation + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
prm.Alias_Organisation = aliasOrganisationOpportunity_Organisation;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Organisation Logo Image Count.
|
||||
if (columns.HasId(SaxOrganisationOpportunity.Column.Organisation_LogoCount))
|
||||
{
|
||||
String aliasLogoCount = "aImg_Logo";
|
||||
DbQuery queryLogoCount = new DbQuery(CoreDatabase.DbmsType);
|
||||
queryLogoCount.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ItemImage), aliasLogoCount);
|
||||
queryLogoCount.Columns.Add("Count(*)");
|
||||
queryLogoCount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_ItemType, aliasLogoCount) + "=" + (int)Sax.DataItemType.Organisation);
|
||||
queryLogoCount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_ItemId, aliasLogoCount) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_OrganisationId, aliasOrganisationOpportunity));
|
||||
queryLogoCount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_ImageType, aliasLogoCount) + "=" + (int)Sax.ImageType.OrganisationLogo);
|
||||
queryLogoCount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_Status, aliasLogoCount) + "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'");
|
||||
// Construct sub-query.
|
||||
query.Columns.Add("(" + queryLogoCount.BuildQuery() + ")", colOrganisationOpportunity_OrganisationOwner_LogoCount);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Primary Sport.
|
||||
if (hasSportCols)
|
||||
{
|
||||
DbQueryJoin joinSport = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinSport.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Sport), aliasOrganisationOpportunity_Sport);
|
||||
joinSport.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_Id, aliasOrganisationOpportunity_Sport) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_SportIdPrimary, aliasOrganisationOpportunity));
|
||||
query.Joins.Add(joinSport);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.Sport_Name);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasOrganisationOpportunity_Sport), prefixOrganisationOpportunity_Sport + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Primary Region.
|
||||
if (hasRegionCols)
|
||||
{
|
||||
DbQueryJoin joinRegion = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinRegion.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Region), aliasOrganisationOpportunity_Region);
|
||||
joinRegion.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_Id, aliasOrganisationOpportunity_Region) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.OrganisationOpportunity_RegionIdPrimary, aliasOrganisationOpportunity));
|
||||
query.Joins.Add(joinRegion);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.Region_Name);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasOrganisationOpportunity_Region), prefixOrganisationOpportunity_Region + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetOrganisationOpportunityQueryFilter(prm));
|
||||
|
||||
if (prm.IdsIncluded.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetOrganisationOpportunitySortColumns(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,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;
|
||||
using Saxonite.Net.Standard.Dbas.Internal.Core;
|
||||
|
||||
namespace Saxonite.Net.Standard.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
partial class SaxActivityMgr_Dbas
|
||||
{
|
||||
//*******************************************************************
|
||||
// Activity Mgr - UserActivity
|
||||
//*******************************************************************
|
||||
// Utilities.
|
||||
private List<StringPair> GetLogProperties(SaxUserActivity userActivity)
|
||||
{
|
||||
return new List<StringPair>()
|
||||
{
|
||||
new StringPair("UserAccount",SysId.ToString(userActivity.UserAccountId)),
|
||||
new StringPair("ItemId",ItemId.ToString(userActivity.ItemId)),
|
||||
new StringPair("Status",SacsSystem.GetStatusDesc(userActivity.Status)),
|
||||
};
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create item.
|
||||
public override SaxUserActivity CreateUserActivity(SysId userAccountId, ItemId itemId)
|
||||
{
|
||||
ClearErrorState();
|
||||
return new SaxUserActivity_Dbas(CoreDatabase, null, userAccountId, itemId, 0);
|
||||
}
|
||||
private SaxUserActivity_Dbas CreateUserActivity(UserActivity_Db dbUserActivity)
|
||||
{
|
||||
ClearErrorState();
|
||||
ItemId itemId = new ItemId(dbUserActivity._ItemType, new SysId(dbUserActivity._ItemId));
|
||||
SaxUserActivity_Dbas userActivity = new SaxUserActivity_Dbas(CoreDatabase, new SysId(dbUserActivity._Id), new SysId(dbUserActivity._UserAccountId), itemId, (UInt16)dbUserActivity._Flags);
|
||||
PopulateFrom(dbUserActivity, userActivity);
|
||||
return userActivity;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get item.
|
||||
public override SaxUserActivity GetUserActivity(SaxUserActivity.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetUserActivity(GetUserActivityQueryFilter(prm).Concat(" And ", "(", ")"));
|
||||
}
|
||||
private SaxUserActivity GetUserActivity(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetUserActivityCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple items found");
|
||||
return null;
|
||||
}
|
||||
SaxUserActivity userActivity = null;
|
||||
// Query data.
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
UserActivity_Db dbUserActivity = new UserActivity_Db(CoreDbInfo);
|
||||
dbUserActivity.PopulateFrom(dbCommand, aliasUserActivity, filter);
|
||||
userActivity = CreateUserActivity(dbUserActivity);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return userActivity;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate item.
|
||||
public override bool IsValidUserActivityData(SaxUserActivity.Data data, SaxUserActivity.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidUserActivityData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert item.
|
||||
public override bool InsertUserActivity(SaxUserActivity userActivity, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidUserActivity(userActivity)) return false;
|
||||
if (SysId.IsValid(userActivity.Id)) return SetErrorState(ErrorMessage.ValidItemId);
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
UserActivity_Db dbUserActivity = new UserActivity_Db(CoreDbInfo);
|
||||
PopulateTo(dbUserActivity, userActivity, dbUpdateInfo);
|
||||
if (UserActivity_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
// ToDo dbUserActivity._Id = CoreDatabase.GetNextIdFromTable("UserActivity");
|
||||
}
|
||||
dbUserActivity.ExecuteInsertCommand(dbCommand);
|
||||
userActivity.Id = new SysId(dbUserActivity._Id);
|
||||
userActivity.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Inserted. {GetLogProperties(userActivity).Concat(": ").Concat("", "\n\t")}");
|
||||
UpdateActivityFeedback(userActivity, null, dbUpdateInfo);
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update item.
|
||||
public override bool UpdateUserActivity(SaxUserActivity userActivity, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidUserActivity(userActivity)) return false;
|
||||
if (!SysId.IsValid(userActivity.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!userActivity.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Data not changed. {GetLogProperties(userActivity).Concat(": ").Concat("", "\n\t")}");
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
UserActivity_Db dbUserActivity = new UserActivity_Db(CoreDbInfo);
|
||||
dbUserActivity.PopulateFrom(dbCommand, aliasUserActivity, $"Id={SysId.ToString(userActivity.Id)}");
|
||||
// Snapshot item.
|
||||
SaxUserActivity userActivity_Snapshot = CreateUserActivity(dbUserActivity);
|
||||
// ToDo SaxUpdateLogItemMonitor_UserActivity updateLogMonitor = new SaxUpdateLogItemMonitor_UserActivity(SessionContext, CreateUserActivity(dbUserActivity), dbUpdateInfo);
|
||||
// Update item.
|
||||
PopulateTo(dbUserActivity, userActivity, dbUpdateInfo);
|
||||
dbUserActivity.ExecuteUpdateCommand(dbCommand);
|
||||
userActivity.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Updated. {GetLogProperties(userActivity).Concat(": ").Concat("", "\n\t")}");
|
||||
// Record updates.
|
||||
// ToDo updateLogMonitor.RecordUpdatedValues(userActivity);
|
||||
// ToDo updateLogMonitor.LogUpdates();
|
||||
// Update activity feedback.
|
||||
UpdateActivityFeedback(userActivity, userActivity_Snapshot, dbUpdateInfo);
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
private bool UpdateActivityFeedback(SaxUserActivity userActivity, SaxUserActivity userActivity_Previous, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
// Calculate changes in feedback for this user activity compared to the previous instance.
|
||||
// User activity status - deleted are ignored.
|
||||
bool deletedPreviously = userActivity_Previous?.IsStatusDeleted ?? true;
|
||||
bool deletedCurrently = userActivity.IsStatusDeleted;
|
||||
// Activity viewing.
|
||||
bool viewedPreviously = userActivity_Previous?.ViewedAtFirst.IsValid() ?? false && !deletedPreviously;
|
||||
bool viewedCurrently = userActivity.ViewedAtFirst.IsValid() && !deletedCurrently;
|
||||
int viewCountIncrement = viewedCurrently == viewedPreviously ? 0 : viewedCurrently ? 1 : -1;
|
||||
// Activity feaction.
|
||||
int feedbackPreviously = Math.Max(0, (!deletedPreviously && userActivity_Previous != null) ? (int)userActivity_Previous.Reaction : 0);
|
||||
int feedbackCurrently = Math.Max(0, !deletedCurrently ? (int)userActivity.Reaction : 0);
|
||||
bool reactedPreviously = (userActivity_Previous?.ReactedAtFirst.IsValid() ?? false) && (feedbackPreviously > 0) && !deletedPreviously;
|
||||
bool reactedCurrently = (userActivity.ReactedAtFirst.IsValid() && feedbackCurrently > 0 && !deletedCurrently);
|
||||
int feedbackCountIncrement = reactedCurrently == reactedPreviously ? 0 : reactedCurrently ? 1 : -1;
|
||||
int feedbackTotalIncrement = feedbackCurrently - feedbackPreviously;
|
||||
// Update the Activity feedback.
|
||||
return ActivityMgr.UpdateActivityFeedback(userActivity.ItemId, viewCountIncrement, feedbackCountIncrement, feedbackTotalIncrement, dbUpdateInfo);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete item.
|
||||
public override bool UserActivityCanBeDeleted(SaxUserActivity userActivity)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.UserActivityCanBeDeleted(userActivity)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteUserActivity(SaxUserActivity userActivity, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!UserActivityCanBeDeleted(userActivity)) return false;
|
||||
|
||||
// User Activities are logically deleted by changing the status.
|
||||
userActivity.Status = SaStatus.Deleted;
|
||||
return UpdateUserActivity(userActivity, dbUpdateInfo);
|
||||
|
||||
/*
|
||||
* Physical deletion.
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
UserActivity_Db dbUserActivity = new UserActivity_Db(CoreDbInfo);
|
||||
dbUserActivity.PopulateFrom(dbCommand, aliasUserActivity, "Id=" + SysId.ToLong(userActivity.Id));
|
||||
// Delete item.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE " + aliasUserActivity + " FROM " + SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserActivity) + " As " + aliasUserActivity + " WHERE Id=" + SysId.ToLong(userActivity.Id) + "; ";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
userActivity.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Deleted. " + GetLogProperties(userActivity).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
*/
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(UserActivity_Db dbUserActivity, SaxUserActivity userActivity, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbUserActivity._Id = SysId.ToInt(userActivity.Id);
|
||||
dbUserActivity._UserAccountId = SysId.ToInt(userActivity.UserAccountId);
|
||||
dbUserActivity._ItemType = userActivity.ItemId.Type;
|
||||
dbUserActivity._ItemId = SysId.ToInt(userActivity.ItemId.Id);
|
||||
dbUserActivity._CurrentlyListed = userActivity.CurrentlyListed;
|
||||
dbUserActivity._ListedAtFirst = userActivity.ListedAtFirst;
|
||||
dbUserActivity._ListedAtLast = userActivity.ListedAtLast;
|
||||
dbUserActivity._ViewedAtFirst = userActivity.ViewedAtFirst;
|
||||
dbUserActivity._ViewedAtLast = userActivity.ViewedAtLast;
|
||||
dbUserActivity._Reaction = (short)userActivity.Reaction;
|
||||
dbUserActivity._ReactedAtFirst = userActivity.ReactedAtFirst;
|
||||
dbUserActivity._ReactedAtLast = userActivity.ReactedAtLast;
|
||||
dbUserActivity._UserActivityData = userActivity.UserActivityData;
|
||||
dbUserActivity._Notes = userActivity.Notes;
|
||||
dbUserActivity._Status = SacsSystem.GetStatusCode(userActivity.Status);
|
||||
dbUserActivity._Flags = (short)userActivity.Flags;
|
||||
if (!DateUtil.IsValid(dbUserActivity._CreateOn))
|
||||
{
|
||||
dbUserActivity._CreateOn = DateTime.Now;
|
||||
dbUserActivity._CreateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbUserActivity._CreateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
dbUserActivity._UpdateOn = DateTime.Now;
|
||||
dbUserActivity._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbUserActivity._UpdateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
private void PopulateFrom(UserActivity_Db dbUserActivity, SaxUserActivity userActivity)
|
||||
{
|
||||
//userActivity.Id = new SysId(dbUserActivity._Id);
|
||||
//userActivity.UserAccountId = new SysId(dbUserActivity._UserAccountId);
|
||||
//userActivity.ItemId = new ItemId(dbUserActivity._ItemType, new SysId(dbUserActivity._ItemId);
|
||||
userActivity.CurrentlyListed = dbUserActivity._CurrentlyListed;
|
||||
userActivity.ListedAtFirst = dbUserActivity._ListedAtFirst;
|
||||
userActivity.ListedAtLast = dbUserActivity._ListedAtLast;
|
||||
userActivity.ViewedAtFirst = dbUserActivity._ViewedAtFirst;
|
||||
userActivity.ViewedAtLast = dbUserActivity._ViewedAtLast;
|
||||
userActivity.Reaction = (Sax.ActivityReaction)dbUserActivity._Reaction;
|
||||
userActivity.ReactedAtFirst = dbUserActivity._ReactedAtFirst;
|
||||
userActivity.ReactedAtLast = dbUserActivity._ReactedAtLast;
|
||||
userActivity.UserActivityData = dbUserActivity._UserActivityData;
|
||||
userActivity.Notes = dbUserActivity._Notes;
|
||||
userActivity.Status = SacsSystem.GetStatusForCode(dbUserActivity._Status);
|
||||
userActivity.SetCreateStamp(dbUserActivity._CreateOn, new SysId(dbUserActivity._CreateBy), dbUserActivity._CreateHost);
|
||||
userActivity.SetUpdateStamp(dbUserActivity._UpdateOn, new SysId(dbUserActivity._UpdateBy), dbUserActivity._UpdateHost);
|
||||
userActivity.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item column definitions.
|
||||
private static readonly String aliasUserActivity = "UsrAct";
|
||||
private static readonly String aliasUserActivity_UserAccount = "UsrAct_UsrAct";
|
||||
private static readonly String prefixUserActivity_UserAccount = "UsrAct_UsrAct_";
|
||||
//private static readonly String aliasUserActivity_Article = "UsrAct_JrnArt";
|
||||
//private static readonly String prefixUserActivity_Article = "UsrAct_JrnArt_";
|
||||
//private static readonly String aliasUserActivity_Opportunity = "UsrAct_OrgOpp";
|
||||
//private static readonly String prefixUserActivity_Opportunity = "UsrAct_OrgOpp_";
|
||||
private void SetUserActivityColDfn
|
||||
(ColumnDfn col, String caption, int width, SaxDbDfn_Core.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SaxDbDfn_Core.GetTableForColumn(dbCol) == SaxDbDfn_Core.TableIdx.UserActivity)
|
||||
alias = aliasUserActivity;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn_Core.GetColumnName(dbCol, false), SaxDbDfn_Core.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn_Core.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SaxDbDfn_Core.GetColTextLen(dbCol);
|
||||
}
|
||||
public override ColumnDfn GetUserActivityColumnDfn(SaxUserActivity.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
//-----------------------------------------------------------
|
||||
case SaxUserActivity.Column.Pos:
|
||||
SetUserActivityColDfn(columnDfn, "Pos", 60, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
case SaxUserActivity.Column.Id:
|
||||
SetUserActivityColDfn(columnDfn, "Id", 80, SaxDbDfn_Core.ColumnIdx.UserActivity_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-------------------------------------------------------
|
||||
// User.
|
||||
case SaxUserActivity.Column.UserAccountId:
|
||||
SetUserActivityColDfn(columnDfn, "User Id", 80, SaxDbDfn_Core.ColumnIdx.UserActivity_UserAccountId, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserActivity.Column.User_EmailAddress:
|
||||
SetUserActivityColDfn(columnDfn, "Email address", 160, SaxDbDfn_Core.ColumnIdx.UserAccount_EmailAddress, ColumnAlignment.Left, DataValue.DataType.String, aliasUserActivity_UserAccount, prefixUserActivity_UserAccount);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserActivity.Column.User_DisplayName:
|
||||
SetUserActivityColDfn(columnDfn, "User", 160, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Left, DataValue.DataType.String);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserActivity.Column.User_Title:
|
||||
SetUserActivityColDfn(columnDfn, "Title", 80, SaxDbDfn_Core.ColumnIdx.UserAccount_Title, ColumnAlignment.Left, DataValue.DataType.String, aliasUserActivity_UserAccount, prefixUserActivity_UserAccount);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserActivity.Column.User_FirstName:
|
||||
SetUserActivityColDfn(columnDfn, "First name", 120, SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName, ColumnAlignment.Left, DataValue.DataType.String, aliasUserActivity_UserAccount, prefixUserActivity_UserAccount);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserActivity.Column.User_LastName:
|
||||
SetUserActivityColDfn(columnDfn, "Last name", 120, SaxDbDfn_Core.ColumnIdx.UserAccount_LastName, ColumnAlignment.Left, DataValue.DataType.String, aliasUserActivity_UserAccount, prefixUserActivity_UserAccount);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-------------------------------------------------------
|
||||
// Item.
|
||||
case SaxUserActivity.Column.ItemType:
|
||||
SetUserActivityColDfn(columnDfn, "Item type", 80, SaxDbDfn_Core.ColumnIdx.UserActivity_ItemType, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserActivity.Column.ItemType_Code:
|
||||
SetUserActivityColDfn(columnDfn, "Item type", 80, SaxDbDfn_Core.ColumnIdx.UserActivity_ItemType, ColumnAlignment.Center, DataValue.DataType.String);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserActivity.Column.ItemType_Desc:
|
||||
SetUserActivityColDfn(columnDfn, "Item type", 100, SaxDbDfn_Core.ColumnIdx.UserActivity_ItemType, ColumnAlignment.Center, DataValue.DataType.String);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserActivity.Column.ItemId:
|
||||
SetUserActivityColDfn(columnDfn, "Item #", 80, SaxDbDfn_Core.ColumnIdx.UserActivity_ItemId, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Properties.
|
||||
case SaxUserActivity.Column.FirstListedAt:
|
||||
SetUserActivityColDfn(columnDfn, "First listed", 80, SaxDbDfn_Core.ColumnIdx.UserActivity_ListedAtFirst, ColumnAlignment.Center, DataValue.DataType.DateTime);
|
||||
break;
|
||||
case SaxUserActivity.Column.LastListedAt:
|
||||
SetUserActivityColDfn(columnDfn, "Last listed", 80, SaxDbDfn_Core.ColumnIdx.UserActivity_ListedAtLast, ColumnAlignment.Center, DataValue.DataType.DateTime);
|
||||
break;
|
||||
case SaxUserActivity.Column.FirstViewedAt:
|
||||
SetUserActivityColDfn(columnDfn, "First viewed", 80, SaxDbDfn_Core.ColumnIdx.UserActivity_ViewedAtFirst, ColumnAlignment.Center, DataValue.DataType.DateTime);
|
||||
break;
|
||||
case SaxUserActivity.Column.LastViewedAt:
|
||||
SetUserActivityColDfn(columnDfn, "Last viewed", 80, SaxDbDfn_Core.ColumnIdx.UserActivity_ViewedAtLast, ColumnAlignment.Center, DataValue.DataType.DateTime);
|
||||
break;
|
||||
case SaxUserActivity.Column.Reaction:
|
||||
SetUserActivityColDfn(columnDfn, "Reaction", 80, SaxDbDfn_Core.ColumnIdx.UserActivity_Reaction, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxUserActivity.Column.FirstReactedAt:
|
||||
SetUserActivityColDfn(columnDfn, "First reacted", 80, SaxDbDfn_Core.ColumnIdx.UserActivity_ReactedAtFirst, ColumnAlignment.Center, DataValue.DataType.DateTime);
|
||||
break;
|
||||
case SaxUserActivity.Column.LastReactedAt:
|
||||
SetUserActivityColDfn(columnDfn, "Last reacted", 80, SaxDbDfn_Core.ColumnIdx.UserActivity_ReactedAtLast, ColumnAlignment.Center, DataValue.DataType.DateTime);
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Derived properties.
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Common properties.
|
||||
case SaxUserActivity.Column.Notes:
|
||||
SetUserActivityColDfn(columnDfn, "Notes", 240, SaxDbDfn_Core.ColumnIdx.UserActivity_Notes);
|
||||
break;
|
||||
case SaxUserActivity.Column.Flags:
|
||||
SetUserActivityColDfn(columnDfn, "Flags", 60, SaxDbDfn_Core.ColumnIdx.UserActivity_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxUserActivity.Column.Status:
|
||||
SetUserActivityColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.UserActivity_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxUserActivity.Column.Status_Desc:
|
||||
SetUserActivityColDfn(columnDfn, "Status", 90, SaxDbDfn_Core.ColumnIdx.UserActivity_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxUserActivity.Column.Status_Ind:
|
||||
SetUserActivityColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.UserActivity_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SaxUserActivity.Column.CreateOn_Date:
|
||||
SetUserActivityColDfn(columnDfn, "Created", 80, SaxDbDfn_Core.ColumnIdx.UserActivity_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserActivity.Column.UpdateOn_Date:
|
||||
SetUserActivityColDfn(columnDfn, "Updated", 80, SaxDbDfn_Core.ColumnIdx.UserActivity_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> GetUserActivityQueryFilter(SaxUserActivity.Params prm)
|
||||
{
|
||||
List<String> filter = new List<String>();
|
||||
String aliasUserActivity = StringUtil.OnEmpty(prm.Alias_UserActivity, SaxActivityMgr_Dbas.aliasUserActivity);
|
||||
|
||||
// Ids.
|
||||
if (prm.IdsIncluded.HasValidIds())
|
||||
filter.Add($"{SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_Id, aliasUserActivity)} IN ({prm.IdsIncluded.Concat(", ")})");
|
||||
if (prm.IdsExcluded.HasValidIds())
|
||||
filter.Add($"{SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_Id, aliasUserActivity)} NOT IN ({prm.IdsExcluded.Concat(",")})");
|
||||
|
||||
// User accounts.
|
||||
String userAccountIdsIncluded = prm.UserAccountIdsIncluded.Concat(",");
|
||||
if (!userAccountIdsIncluded.IsEmpty())
|
||||
filter.Add($"{SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserSport_UserAccountId, aliasUserActivity)} IN ({userAccountIdsIncluded})");
|
||||
|
||||
// Item Ids.
|
||||
if (!prm.ItemIdsIncluded.IsEmpty())
|
||||
{
|
||||
List<String> itemIdFilters = new List<string>();
|
||||
foreach (ItemId itemId in prm.ItemIdsIncluded)
|
||||
{
|
||||
if (!ItemId.IsValid(itemId)) continue;
|
||||
String itemIdFilter =
|
||||
$"{SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserActivity_ItemType, aliasUserActivity)}={itemId.Type}" +
|
||||
$" AND {SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserActivity_ItemId, aliasUserActivity)}={SysId.ToInt(itemId.Id)}";
|
||||
itemIdFilters.Add(itemIdFilter);
|
||||
}
|
||||
if (!itemIdFilters.IsEmpty())
|
||||
filter.Add(itemIdFilters.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
|
||||
if (filter.Count < 1) filter.Add("1=1");
|
||||
return filter;
|
||||
}
|
||||
// Item sort columns.
|
||||
public List<String> GetUserActivitySortColumns(SaxUserActivity.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
List<String> sortColumnNames = new List<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for UserActivity columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SaxDbDfn_Core.GetTableForColumn((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn_Core.TableIdx.UserActivity)
|
||||
{
|
||||
sortCol = SaxDbDfn_Core.GetColumnNameQual((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn, aliasUserActivity);
|
||||
}
|
||||
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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserActivity_UserAccountId, aliasUserActivity) + " ASC");
|
||||
sortColumnNames.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserActivity_ItemType, aliasUserActivity) + " ASC");
|
||||
sortColumnNames.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserActivity_ItemId, aliasUserActivity) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item count.
|
||||
private long GetUserActivityCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return CoreDatabase.GetRowCount($"{SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserActivity)} As {aliasUserActivity}", filter);
|
||||
}
|
||||
public override long GetUserActivityCount(SaxUserActivity.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetUserActivityCount(GetUserActivityQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item list.
|
||||
public override List<SaxUserActivity> GetUserActivityList(SaxUserActivity.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<SaxUserActivity> userActivitys = new List<SaxUserActivity>();
|
||||
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserActivity), aliasUserActivity);
|
||||
UserActivity_Db dbUserActivity = new UserActivity_Db(CoreDbInfo);
|
||||
qry.Columns.AddRange(dbUserActivity.ExistingColumnNames);
|
||||
qry.Filters.AddRange(GetUserActivityQueryFilter(prm));
|
||||
qry.OrderBy.AddRange(GetUserActivitySortColumns(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())
|
||||
{
|
||||
dbUserActivity = new UserActivity_Db(CoreDbInfo);
|
||||
dbUserActivity.PopulateFrom(dbDataReader);
|
||||
userActivitys.Add(CreateUserActivity(dbUserActivity));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return userActivitys;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item query execution.
|
||||
public override DbResultSet ExecuteUserActivityQuery(List<ColumnDfn> columns, SaxUserActivity.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(CoreDatabase.DbmsType);
|
||||
query.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserActivity), aliasUserActivity);
|
||||
|
||||
// Add columns as defined in query list.
|
||||
if (columns.HasId(SaxUserActivity.Column.Id))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserActivity_Id, aliasUserActivity));
|
||||
bool hasUserAccountCols = (columns.HasId(SaxUserActivity.Column.User_EmailAddress) || columns.HasId(SaxUserActivity.Column.User_DisplayName) || columns.HasId(SaxUserActivity.Column.User_Title) || columns.HasId(SaxUserActivity.Column.User_FirstName) || columns.HasId(SaxUserActivity.Column.User_LastName));
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserActivity_UserAccountId, aliasUserActivity));
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserActivity_ItemType, aliasUserActivity));
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserActivity_ItemId, aliasUserActivity));
|
||||
if (columns.HasId(SaxUserActivity.Column.FirstListedAt))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserActivity_ListedAtFirst, aliasUserActivity));
|
||||
if (columns.HasId(SaxUserActivity.Column.LastListedAt))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserActivity_ListedAtLast, aliasUserActivity));
|
||||
if (columns.HasId(SaxUserActivity.Column.FirstViewedAt))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserActivity_ViewedAtFirst, aliasUserActivity));
|
||||
if (columns.HasId(SaxUserActivity.Column.LastViewedAt))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserActivity_ViewedAtLast, aliasUserActivity));
|
||||
if (columns.HasId(SaxUserActivity.Column.Reaction))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserActivity_Reaction, aliasUserActivity));
|
||||
if (columns.HasId(SaxUserActivity.Column.FirstReactedAt))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserActivity_ReactedAtFirst, aliasUserActivity));
|
||||
if (columns.HasId(SaxUserActivity.Column.LastReactedAt))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserActivity_ReactedAtLast, aliasUserActivity));
|
||||
// Common properties.
|
||||
if (columns.HasId(SaxUserActivity.Column.Notes))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserActivity_Notes, aliasUserActivity));
|
||||
if (columns.HasId(SaxUserActivity.Column.Flags))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserActivity_Flags, aliasUserActivity));
|
||||
if (columns.HasId(SaxUserActivity.Column.Status) || columns.HasId(SaxUserActivity.Column.Status_Desc) || columns.HasId(SaxUserActivity.Column.Status_Ind))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserActivity_Status, aliasUserActivity));
|
||||
if (columns.HasId(SaxUserActivity.Column.CreateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserActivity_CreateOn, aliasUserActivity));
|
||||
if (columns.HasId(SaxUserActivity.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserActivity_UpdateOn, aliasUserActivity));
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// User Account.
|
||||
if (hasUserAccountCols)
|
||||
{
|
||||
DbQueryJoin joinUserAccount = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinUserAccount.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.UserAccount), aliasUserActivity_UserAccount);
|
||||
joinUserAccount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserAccount_Id, aliasUserActivity_UserAccount) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.UserActivity_UserAccountId, aliasUserActivity));
|
||||
query.Joins.Add(joinUserAccount);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_EmailAddress);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_Title);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_FirstName);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.UserAccount_LastName);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasUserActivity_UserAccount), prefixUserActivity_UserAccount + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetUserActivityQueryFilter(prm));
|
||||
|
||||
if (prm.IdsIncluded.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetUserActivitySortColumns(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,30 @@
|
||||
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, SaxInternals internals) :
|
||||
base(sessionContext, internals)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,645 @@
|
||||
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;
|
||||
using System.Linq;
|
||||
using Saxonite.Net.Standard.Dbas.Internal.Core;
|
||||
|
||||
namespace Saxonite.Net.Standard.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
partial class SaxItemDataMgr_Dbas
|
||||
{
|
||||
//*******************************************************************
|
||||
// Item Data Mgr - Item Address
|
||||
//*******************************************************************
|
||||
// Utilities.
|
||||
private List<StringPair> GetLogProperties(SaxItemAddress itemAddress)
|
||||
{
|
||||
return new List<StringPair>()
|
||||
{
|
||||
new StringPair("Id",SysId.ToString(itemAddress.Id)),
|
||||
new StringPair("ItemId", (Sax.DataItemType)itemAddress.ItemId.Type + ": " + itemAddress.ItemId.Id),
|
||||
new StringPair("Town",itemAddress.Town),
|
||||
new StringPair("PostalCode",itemAddress.PostalCode),
|
||||
new StringPair("Status",itemAddress.StatusCode)
|
||||
};
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create item.
|
||||
public override SaxItemAddress CreateItemAddress(ItemId itemId, Sax.AddressType addressType)
|
||||
{
|
||||
ClearErrorState();
|
||||
return new SaxItemAddress_Dbas(CoreDatabase, null, itemId, addressType, 0);
|
||||
}
|
||||
private SaxItemAddress_Dbas CreateItemAddress(ItemAddress_Db dbItemAddress)
|
||||
{
|
||||
ClearErrorState();
|
||||
ItemId itemId = new ItemId(dbItemAddress._ItemType, new SysId(dbItemAddress._ItemId));
|
||||
SaxItemAddress_Dbas itemAddress = new SaxItemAddress_Dbas(CoreDatabase, new SysId(dbItemAddress._Id), itemId, (Sax.AddressType)dbItemAddress._AddressType, (ushort)dbItemAddress._Flags);
|
||||
PopulateFrom(dbItemAddress, itemAddress);
|
||||
return itemAddress;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get item.
|
||||
public override SaxItemAddress GetItemAddress(SaxItemAddress.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetItemAddress(GetItemAddressQueryFilter(prm).Concat(" And ", "(", ")"));
|
||||
}
|
||||
private SaxItemAddress GetItemAddress(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetItemAddressCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple items found");
|
||||
return null;
|
||||
}
|
||||
SaxItemAddress itemAddress = null;
|
||||
// Query data.
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
ItemAddress_Db dbItemAddress = new ItemAddress_Db(CoreDbInfo);
|
||||
dbItemAddress.PopulateFrom(dbCommand, aliasItemAddress, filter);
|
||||
itemAddress = CreateItemAddress(dbItemAddress);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return itemAddress;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate item.
|
||||
public override bool IsValidItemAddressData(SaxItemAddress.Data data, SaxItemAddress.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidItemAddressData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert item.
|
||||
public override bool InsertItemAddress(SaxItemAddress itemAddress, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidItemAddress(itemAddress)) return false;
|
||||
if (SysId.IsValid(itemAddress.Id)) return SetErrorState(ErrorMessage.ValidItemId);
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
ItemAddress_Db dbItemAddress = new ItemAddress_Db(CoreDbInfo);
|
||||
PopulateTo(dbItemAddress, itemAddress, dbUpdateInfo);
|
||||
if (ItemAddress_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
dbItemAddress._Id = CoreDatabase.GetNextIdFromTable("ItemAddress");
|
||||
}
|
||||
dbItemAddress.ExecuteInsertCommand(dbCommand);
|
||||
itemAddress.Id = new SysId(dbItemAddress._Id);
|
||||
itemAddress.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Inserted.{GetLogProperties(itemAddress).Concat(": ").Concat("", "\n\t")}");
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update item.
|
||||
public override bool UpdateItemAddress(SaxItemAddress itemAddress, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidItemAddress(itemAddress)) return false;
|
||||
if (!SysId.IsValid(itemAddress.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!itemAddress.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Data not changed.{GetLogProperties(itemAddress).Concat(": ").Concat("", "\n\t")}");
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
ItemAddress_Db dbItemAddress = new ItemAddress_Db(CoreDbInfo);
|
||||
dbItemAddress.PopulateFrom(dbCommand, aliasItemAddress, "Id=" + SysId.ToString(itemAddress.Id));
|
||||
// ToDo SaxUpdateLogItemMonitor_ItemAddress updateLogMonitor = new SaxUpdateLogItemMonitor_ItemAddress(SessionContext, CreateItemAddress(dbItemAddress), dbUpdateInfo);
|
||||
// Update item.
|
||||
PopulateTo(dbItemAddress, itemAddress, dbUpdateInfo);
|
||||
dbItemAddress.ExecuteUpdateCommand(dbCommand);
|
||||
itemAddress.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Updated.{GetLogProperties(itemAddress).Concat(": ").Concat("", "\n\t")}");
|
||||
// Record updates.
|
||||
// ToDo updateLogMonitor.RecordUpdatedValues(itemAddress);
|
||||
// ToDo updateLogMonitor.LogUpdates();
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete item.
|
||||
public override bool ItemAddressCanBeDeleted(SaxItemAddress itemAddress)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.ItemAddressCanBeDeleted(itemAddress)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteItemAddress(SaxItemAddress itemAddress, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!ItemAddressCanBeDeleted(itemAddress)) return false;
|
||||
|
||||
// Item Addresses are logically deleted by changing the status.
|
||||
itemAddress.Status = SaStatus.Deleted;
|
||||
return UpdateItemAddress(itemAddress, dbUpdateInfo);
|
||||
|
||||
/*
|
||||
* Physical deletion.
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
ItemAddress_Db dbItemAddress = new ItemAddress_Db(CoreDbInfo);
|
||||
dbItemAddress.PopulateFrom(dbCommand, aliasItemAddress, "Id=" + itemAddress.Id.ToString());
|
||||
// Delete item.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ItemAddress) + " WHERE Id=" + SysId.ToString(itemAddress.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
itemAddress.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Deleted.{GetLogProperties(itemAddress).Concat(": ").Concat("", "\n\t")}");
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
*/
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(ItemAddress_Db dbItemAddress, SaxItemAddress itemAddress, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbItemAddress._Id = SysId.ToLong(itemAddress.Id);
|
||||
dbItemAddress._ItemType = itemAddress.ItemId.Type;
|
||||
dbItemAddress._ItemId = SysId.ToInt(itemAddress.ItemId.Id);
|
||||
dbItemAddress._AddressType = (short)itemAddress.AddressType;
|
||||
dbItemAddress._Caption = StringUtil.EmptyOnNull(itemAddress.Caption);
|
||||
dbItemAddress._Line1 = StringUtil.EmptyOnNull(itemAddress.Line1);
|
||||
dbItemAddress._Line2 = StringUtil.EmptyOnNull(itemAddress.Line2);
|
||||
dbItemAddress._Line3 = StringUtil.EmptyOnNull(itemAddress.Line3);
|
||||
dbItemAddress._Town = StringUtil.EmptyOnNull(itemAddress.Town);
|
||||
dbItemAddress._Province = StringUtil.EmptyOnNull(itemAddress.Province);
|
||||
dbItemAddress._RegionIdProvince = SysId.ToInt(itemAddress.RegionIdProvince);
|
||||
dbItemAddress._Country = StringUtil.EmptyOnNull(itemAddress.Country);
|
||||
dbItemAddress._RegionIdCountry = SysId.ToInt(itemAddress.RegionIdCountry);
|
||||
dbItemAddress._PostalCode = StringUtil.EmptyOnNull(itemAddress.PostalCode);
|
||||
// Location.
|
||||
dbItemAddress._LocationSource = StringUtil.EmptyOnNull(itemAddress.LocationSource);
|
||||
dbItemAddress._LocationStoredAt = itemAddress.LocationStoredAt;
|
||||
dbItemAddress._LocationUpdateRequired = itemAddress.LocationUpdateRequired;
|
||||
dbItemAddress._LocationData = StringUtil.EmptyOnNull(itemAddress.LocationData);
|
||||
dbItemAddress._LocationFormattedAddress = StringUtil.EmptyOnNull(itemAddress.LocationFormattedAddress);
|
||||
dbItemAddress._LocationLatitude = itemAddress.LocationLatitude;
|
||||
dbItemAddress._LocationLongitude = itemAddress.LocationLongitude;
|
||||
dbItemAddress._LocationAltitude = itemAddress.LocationAltitude;
|
||||
// Common.
|
||||
dbItemAddress._Notes = StringUtil.EmptyOnNull(itemAddress.Notes);
|
||||
dbItemAddress._Status = SacsSystem.GetStatusCode(itemAddress.Status);
|
||||
dbItemAddress._Flags = (short)itemAddress.Flags;
|
||||
if (!SysId.IsValid(itemAddress.Id))
|
||||
{
|
||||
dbItemAddress._CreateOn = DateTime.Now;
|
||||
dbItemAddress._CreateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbItemAddress._CreateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
dbItemAddress._UpdateOn = DateTime.Now;
|
||||
dbItemAddress._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbItemAddress._UpdateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
private void PopulateFrom(ItemAddress_Db dbItemAddress, SaxItemAddress itemAddress)
|
||||
{
|
||||
//itemAddress.Id = new SysId(dbItemAddress._Id);
|
||||
//itemAddress.ItemId = new ItemId(dbItemAddress._ItemType, new SysId(dbItemAddress._ItemId));
|
||||
itemAddress.AddressType = (Sax.AddressType)dbItemAddress._AddressType;
|
||||
itemAddress.Caption = dbItemAddress._Caption;
|
||||
itemAddress.Line1 = dbItemAddress._Line1;
|
||||
itemAddress.Line2 = dbItemAddress._Line2;
|
||||
itemAddress.Line3 = dbItemAddress._Line3;
|
||||
itemAddress.Town = dbItemAddress._Town;
|
||||
itemAddress.Province = dbItemAddress._Province;
|
||||
itemAddress.RegionIdProvince = new SysId(dbItemAddress._RegionIdProvince);
|
||||
itemAddress.Country = dbItemAddress._Country;
|
||||
itemAddress.RegionIdCountry = new SysId(dbItemAddress._RegionIdCountry);
|
||||
itemAddress.PostalCode = dbItemAddress._PostalCode;
|
||||
// Location.
|
||||
itemAddress.LocationSource = dbItemAddress._LocationSource;
|
||||
itemAddress.LocationStoredAt = dbItemAddress._LocationStoredAt;
|
||||
itemAddress.LocationUpdateRequired = dbItemAddress._LocationUpdateRequired;
|
||||
itemAddress.LocationData = dbItemAddress._LocationData;
|
||||
itemAddress.LocationFormattedAddress = dbItemAddress._LocationFormattedAddress;
|
||||
itemAddress.LocationLatitude = dbItemAddress._LocationLatitude;
|
||||
itemAddress.LocationLongitude = dbItemAddress._LocationLongitude;
|
||||
itemAddress.LocationAltitude = dbItemAddress._LocationAltitude;
|
||||
// Common.
|
||||
itemAddress.Notes = dbItemAddress._Notes;
|
||||
itemAddress.Status = SacsSystem.GetStatusForCode(dbItemAddress._Status);
|
||||
itemAddress.SetCreateStamp(dbItemAddress._CreateOn, new SysId(dbItemAddress._CreateBy), dbItemAddress._CreateHost);
|
||||
itemAddress.SetUpdateStamp(dbItemAddress._UpdateOn, new SysId(dbItemAddress._UpdateBy), dbItemAddress._UpdateHost);
|
||||
itemAddress.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item column definitions.
|
||||
private static readonly String aliasItemAddress = "ItmSpt";
|
||||
private void SetItemAddressColDfn
|
||||
(ColumnDfn col, String caption, int width, SaxDbDfn_Core.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SaxDbDfn_Core.GetTableForColumn(dbCol) == SaxDbDfn_Core.TableIdx.ItemAddress)
|
||||
alias = aliasItemAddress;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn_Core.GetColumnName(dbCol, false), SaxDbDfn_Core.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn_Core.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SaxDbDfn_Core.GetColTextLen(dbCol);
|
||||
}
|
||||
public override ColumnDfn GetItemAddressColumnDfn(SaxItemAddress.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
//-----------------------------------------------------------
|
||||
case SaxItemAddress.Column.Pos:
|
||||
SetItemAddressColDfn(columnDfn, "Pos", 60, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
case SaxItemAddress.Column.Id:
|
||||
SetItemAddressColDfn(columnDfn, "Id", 80, SaxDbDfn_Core.ColumnIdx.ItemAddress_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemAddress.Column.ItemType:
|
||||
SetItemAddressColDfn(columnDfn, "Item type", 80, SaxDbDfn_Core.ColumnIdx.ItemAddress_ItemType, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemAddress.Column.ItemType_Code:
|
||||
SetItemAddressColDfn(columnDfn, "Item type", 80, SaxDbDfn_Core.ColumnIdx.ItemAddress_ItemType, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemAddress.Column.ItemType_Desc:
|
||||
SetItemAddressColDfn(columnDfn, "Item type", 80, SaxDbDfn_Core.ColumnIdx.ItemAddress_ItemType, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemAddress.Column.ItemId:
|
||||
SetItemAddressColDfn(columnDfn, "Item Id", 80, SaxDbDfn_Core.ColumnIdx.ItemAddress_ItemId, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Address properties.
|
||||
case SaxItemAddress.Column.Caption:
|
||||
SetItemAddressColDfn(columnDfn, "Caption", 120, SaxDbDfn_Core.ColumnIdx.ItemAddress_Caption, ColumnAlignment.Left, DataValue.DataType.String);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemAddress.Column.Line1:
|
||||
SetItemAddressColDfn(columnDfn, "Line1", 120, SaxDbDfn_Core.ColumnIdx.ItemAddress_Line1, ColumnAlignment.Left, DataValue.DataType.String);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemAddress.Column.Line2:
|
||||
SetItemAddressColDfn(columnDfn, "Line2", 120, SaxDbDfn_Core.ColumnIdx.ItemAddress_Line2, ColumnAlignment.Left, DataValue.DataType.String);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemAddress.Column.Line3:
|
||||
SetItemAddressColDfn(columnDfn, "Line3", 120, SaxDbDfn_Core.ColumnIdx.ItemAddress_Line3, ColumnAlignment.Left, DataValue.DataType.String);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemAddress.Column.Town:
|
||||
SetItemAddressColDfn(columnDfn, "Town", 100, SaxDbDfn_Core.ColumnIdx.ItemAddress_Town, ColumnAlignment.Left, DataValue.DataType.String);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemAddress.Column.Province:
|
||||
SetItemAddressColDfn(columnDfn, "Province", 100, SaxDbDfn_Core.ColumnIdx.ItemAddress_Province, ColumnAlignment.Left, DataValue.DataType.String);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemAddress.Column.Country:
|
||||
SetItemAddressColDfn(columnDfn, "Country", 100, SaxDbDfn_Core.ColumnIdx.ItemAddress_Country, ColumnAlignment.Left, DataValue.DataType.String);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemAddress.Column.PostalCode:
|
||||
SetItemAddressColDfn(columnDfn, "PostalCode", 80, SaxDbDfn_Core.ColumnIdx.ItemAddress_PostalCode, ColumnAlignment.Left, DataValue.DataType.String);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemAddress.Column.PhoneMain:
|
||||
SetItemAddressColDfn(columnDfn, "PhoneMain", 100, SaxDbDfn_Core.ColumnIdx.ItemAddress_PhoneMain, ColumnAlignment.Left, DataValue.DataType.String);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Location.
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Derived properties.
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Common properties.
|
||||
case SaxItemAddress.Column.Notes:
|
||||
SetItemAddressColDfn(columnDfn, "Notes", 240, SaxDbDfn_Core.ColumnIdx.ItemAddress_Notes);
|
||||
break;
|
||||
case SaxItemAddress.Column.Flags:
|
||||
SetItemAddressColDfn(columnDfn, "Flags", 60, SaxDbDfn_Core.ColumnIdx.ItemAddress_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxItemAddress.Column.Status:
|
||||
SetItemAddressColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.ItemAddress_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxItemAddress.Column.Status_Desc:
|
||||
SetItemAddressColDfn(columnDfn, "Status", 90, SaxDbDfn_Core.ColumnIdx.ItemAddress_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxItemAddress.Column.Status_Ind:
|
||||
SetItemAddressColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.ItemAddress_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SaxItemAddress.Column.CreateOn_Date:
|
||||
SetItemAddressColDfn(columnDfn, "Created", 80, SaxDbDfn_Core.ColumnIdx.ItemAddress_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemAddress.Column.UpdateOn_Date:
|
||||
SetItemAddressColDfn(columnDfn, "Updated", 80, SaxDbDfn_Core.ColumnIdx.ItemAddress_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> GetItemAddressQueryFilter(SaxItemAddress.Params prm)
|
||||
{
|
||||
List<String> filter = new List<String>();
|
||||
|
||||
// Item Ids.
|
||||
String idsIncluded = prm.IdsIncluded.Concat(",");
|
||||
if (!idsIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAddress_Id, aliasItemAddress) + " IN (" + idsIncluded + ")");
|
||||
String idsExcluded = prm.IdsExcluded.Concat(",");
|
||||
if (!idsExcluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAddress_Id, aliasItemAddress) + " NOT IN (" + idsExcluded + ")");
|
||||
|
||||
// Address type.
|
||||
if (prm.AddressType > 0)
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAddress_AddressType, aliasItemAddress) + "=" + ((int)prm.AddressType).ToString());
|
||||
|
||||
// Item Ids.
|
||||
if (!prm.ItemIdsIncluded.IsEmpty())
|
||||
{
|
||||
List<String> itemIdFilters = new List<string>();
|
||||
foreach (ItemId itemId in prm.ItemIdsIncluded)
|
||||
{
|
||||
if (!ItemId.IsValid(itemId)) continue;
|
||||
String itemIdFilter =
|
||||
SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAddress_ItemType, aliasItemAddress) + "=" + itemId.Type +
|
||||
" AND " + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAddress_ItemId, aliasItemAddress) + "=" + SysId.ToInt(itemId.Id);
|
||||
itemIdFilters.Add(itemIdFilter);
|
||||
}
|
||||
if (!itemIdFilters.IsEmpty())
|
||||
filter.Add(itemIdFilters.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
|
||||
// Address search.
|
||||
if (!StringUtil.IsEmpty(prm.AddressSearch))
|
||||
{
|
||||
// Split filter into words.
|
||||
List<String> searchFilter = new List<String>();
|
||||
List<String> filterWords = prm.AddressSearch.Split((char[])null, StringSplitOptions.RemoveEmptyEntries).ToList();
|
||||
filterWords.RemoveDuplicatesCI();
|
||||
filterWords.RemoveBlanks();
|
||||
foreach (String filterWord in filterWords)
|
||||
{
|
||||
List<String> organisationFilter = new List<String>();
|
||||
organisationFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAddress_Line1, aliasItemAddress) + " LIKE '%" + DbQuery.FormatForLike(filterWord) + "%'");
|
||||
organisationFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAddress_Line2, aliasItemAddress) + " LIKE '%" + DbQuery.FormatForLike(filterWord) + "%'");
|
||||
organisationFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAddress_Line3, aliasItemAddress) + " LIKE '%" + DbQuery.FormatForLike(filterWord) + "%'");
|
||||
organisationFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAddress_Town, aliasItemAddress) + " LIKE '%" + DbQuery.FormatForLike(filterWord) + "%'");
|
||||
organisationFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAddress_Province, aliasItemAddress) + " LIKE '%" + DbQuery.FormatForLike(filterWord) + "%'");
|
||||
organisationFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAddress_PostalCode, aliasItemAddress) + " LIKE '%" + DbQuery.FormatForLike(filterWord) + "%'");
|
||||
searchFilter.Add(organisationFilter.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
filter.Add(searchFilter.Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
// Notes.
|
||||
if (!StringUtil.IsEmpty(prm.NotesPartial))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAddress_Notes, aliasItemAddress) + " LIKE '%" + DbQuery.FormatForLike(prm.NotesPartial) + "%'");
|
||||
|
||||
// Status.
|
||||
if (prm.StatusCat != SaxItemAddress.StatusCat.Any)
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAddress_Status, aliasItemAddress) + GetItemAddressStatusCatFilterCondition(prm.StatusCat));
|
||||
|
||||
if (filter.Count < 1) filter.Add("1=1");
|
||||
return filter;
|
||||
}
|
||||
internal static String GetItemAddressStatusCatFilterCondition(SaxItemAddress.StatusCat statusCat)
|
||||
{
|
||||
if (statusCat == SaxItemAddress.StatusCat.ActiveOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'";
|
||||
if (statusCat == SaxItemAddress.StatusCat.InactiveOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Inactive) + "'";
|
||||
if (statusCat == SaxItemAddress.StatusCat.NotDeleted)
|
||||
return "!='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
if (statusCat == SaxItemAddress.StatusCat.DeletedOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
return "";
|
||||
}
|
||||
// Item sort columns.
|
||||
public List<String> GetItemAddressSortColumns(SaxItemAddress.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
List<String> sortColumnNames = new List<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for ItemAddress columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SaxDbDfn_Core.GetTableForColumn((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn_Core.TableIdx.ItemAddress)
|
||||
{
|
||||
sortCol = SaxDbDfn_Core.GetColumnNameQual((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn, aliasItemAddress);
|
||||
}
|
||||
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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAddress_Id, aliasItemAddress) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item count.
|
||||
private long GetItemAddressCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return CoreDatabase.GetRowCount(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ItemAddress) + " As " + aliasItemAddress, filter);
|
||||
}
|
||||
public override long GetItemAddressCount(SaxItemAddress.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetItemAddressCount(GetItemAddressQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item list.
|
||||
public override List<SaxItemAddress> GetItemAddressList(SaxItemAddress.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<SaxItemAddress> itemAddresss = new List<SaxItemAddress>();
|
||||
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ItemAddress), aliasItemAddress);
|
||||
ItemAddress_Db dbItemAddress = new ItemAddress_Db(CoreDbInfo);
|
||||
qry.Columns.AddRange(dbItemAddress.ExistingColumnNames);
|
||||
qry.Filters.AddRange(GetItemAddressQueryFilter(prm));
|
||||
qry.OrderBy.AddRange(GetItemAddressSortColumns(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())
|
||||
{
|
||||
dbItemAddress = new ItemAddress_Db(CoreDbInfo);
|
||||
dbItemAddress.PopulateFrom(dbDataReader);
|
||||
itemAddresss.Add(CreateItemAddress(dbItemAddress));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return itemAddresss;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item query execution.
|
||||
public override DbResultSet ExecuteItemAddressQuery(List<ColumnDfn> columns, SaxItemAddress.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(CoreDatabase.DbmsType);
|
||||
query.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ItemAddress), aliasItemAddress);
|
||||
|
||||
// Add columns as defined in query list.
|
||||
if (columns.HasId(SaxItemAddress.Column.Id))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAddress_Id, aliasItemAddress));
|
||||
if (columns.HasId(SaxItemAddress.Column.ItemType) || columns.HasId(SaxItemAddress.Column.ItemType_Code) || columns.HasId(SaxItemAddress.Column.ItemType_Desc))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAddress_ItemType, aliasItemAddress));
|
||||
if (columns.HasId(SaxItemAddress.Column.ItemId))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAddress_ItemId, aliasItemAddress));
|
||||
if (columns.HasId(SaxItemAddress.Column.AddressType) || columns.HasId(SaxItemAddress.Column.AddressType_Code) || columns.HasId(SaxItemAddress.Column.AddressType_Desc))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAddress_AddressType, aliasItemAddress));
|
||||
if (columns.HasId(SaxItemAddress.Column.Caption))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAddress_Caption, aliasItemAddress));
|
||||
if (columns.HasId(SaxItemAddress.Column.Line1))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAddress_Line1, aliasItemAddress));
|
||||
if (columns.HasId(SaxItemAddress.Column.Line2))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAddress_Line2, aliasItemAddress));
|
||||
if (columns.HasId(SaxItemAddress.Column.Line3))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAddress_Line3, aliasItemAddress));
|
||||
if (columns.HasId(SaxItemAddress.Column.Town))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAddress_Town, aliasItemAddress));
|
||||
if (columns.HasId(SaxItemAddress.Column.Province))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAddress_Province, aliasItemAddress));
|
||||
if (columns.HasId(SaxItemAddress.Column.Country))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAddress_Country, aliasItemAddress));
|
||||
if (columns.HasId(SaxItemAddress.Column.PostalCode))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAddress_PostalCode, aliasItemAddress));
|
||||
if (columns.HasId(SaxItemAddress.Column.PhoneMain))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAddress_PhoneMain, aliasItemAddress));
|
||||
// ToDo Address Location columns.
|
||||
// Common properties.
|
||||
if (columns.HasId(SaxItemAddress.Column.Notes))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAddress_Notes, aliasItemAddress));
|
||||
if (columns.HasId(SaxItemAddress.Column.Flags))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAddress_Flags, aliasItemAddress));
|
||||
if (columns.HasId(SaxItemAddress.Column.Status) || columns.HasId(SaxItemAddress.Column.Status_Desc) || columns.HasId(SaxItemAddress.Column.Status_Ind))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAddress_Status, aliasItemAddress));
|
||||
if (columns.HasId(SaxItemAddress.Column.CreateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAddress_CreateOn, aliasItemAddress));
|
||||
if (columns.HasId(SaxItemAddress.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAddress_UpdateOn, aliasItemAddress));
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetItemAddressQueryFilter(prm));
|
||||
|
||||
if (prm.IdsIncluded.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetItemAddressSortColumns(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,667 @@
|
||||
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;
|
||||
using System.Linq;
|
||||
using Saxonite.Net.Standard.Dbas.Internal.Core;
|
||||
|
||||
namespace Saxonite.Net.Standard.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
partial class SaxItemDataMgr_Dbas
|
||||
{
|
||||
//*******************************************************************
|
||||
// Item Data Mgr - Item Sport
|
||||
//*******************************************************************
|
||||
// Utilities.
|
||||
private List<StringPair> GetLogProperties(SaxItemAssociation itemAssociation)
|
||||
{
|
||||
return new List<StringPair>()
|
||||
{
|
||||
new StringPair("ItemIdFrom", (Sax.DataItemType)itemAssociation.ItemIdFrom.Type + ": " + itemAssociation.ItemIdFrom.Id),
|
||||
new StringPair("ItemIdTo", (Sax.DataItemType)itemAssociation.ItemIdTo.Type + ": " + itemAssociation.ItemIdTo.Id),
|
||||
new StringPair("AssociationType",itemAssociation.AssociationType.ToString()),
|
||||
new StringPair("Status",itemAssociation.StatusCode)
|
||||
};
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create item.
|
||||
public override SaxItemAssociation CreateItemAssociation(ItemId itemIdFrom, ItemId itemIdTo, Sax.AssociationType associationType)
|
||||
{
|
||||
ClearErrorState();
|
||||
return new SaxItemAssociation_Dbas(CoreDatabase, null, itemIdFrom, itemIdTo, associationType, 0);
|
||||
}
|
||||
private SaxItemAssociation_Dbas CreateItemAssociation(ItemAssociation_Db dbItemAssociation)
|
||||
{
|
||||
ClearErrorState();
|
||||
ItemId itemIdFrom = new ItemId(dbItemAssociation._ItemTypeFrom, new SysId(dbItemAssociation._ItemIdFrom));
|
||||
ItemId itemIdTo = new ItemId(dbItemAssociation._ItemTypeTo, new SysId(dbItemAssociation._ItemIdTo));
|
||||
SaxItemAssociation_Dbas itemAssociation = new SaxItemAssociation_Dbas(CoreDatabase, new SysId(dbItemAssociation._Id), itemIdFrom, itemIdTo, (Sax.AssociationType)dbItemAssociation._AssociationType, (ushort)dbItemAssociation._Flags);
|
||||
PopulateFrom(dbItemAssociation, itemAssociation);
|
||||
return itemAssociation;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get item.
|
||||
public override SaxItemAssociation GetItemAssociation(SaxItemAssociation.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetItemAssociation(GetItemAssociationQueryFilter(prm).Concat(" And ", "(", ")"));
|
||||
}
|
||||
private SaxItemAssociation GetItemAssociation(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetItemAssociationCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple items found");
|
||||
return null;
|
||||
}
|
||||
SaxItemAssociation itemAssociation = null;
|
||||
// Query data.
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
ItemAssociation_Db dbItemAssociation = new ItemAssociation_Db(CoreDbInfo);
|
||||
dbItemAssociation.PopulateFrom(dbCommand, aliasItemAssociation, filter);
|
||||
itemAssociation = CreateItemAssociation(dbItemAssociation);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return itemAssociation;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate item.
|
||||
public override bool IsValidItemAssociationData(SaxItemAssociation.Data data, SaxItemAssociation.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidItemAssociationData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert item.
|
||||
public override bool InsertItemAssociation(SaxItemAssociation itemAssociation, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidItemAssociation(itemAssociation)) return false;
|
||||
if (SysId.IsValid(itemAssociation.Id)) return SetErrorState(ErrorMessage.ValidItemId);
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
ItemAssociation_Db dbItemAssociation = new ItemAssociation_Db(CoreDbInfo);
|
||||
PopulateTo(dbItemAssociation, itemAssociation, dbUpdateInfo);
|
||||
if (ItemAssociation_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
dbItemAssociation._Id = CoreDatabase.GetNextIdFromTable("ItemAssociation");
|
||||
}
|
||||
dbItemAssociation.ExecuteInsertCommand(dbCommand);
|
||||
itemAssociation.Id = new SysId(dbItemAssociation._Id);
|
||||
itemAssociation.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Inserted.{GetLogProperties(itemAssociation).Concat(": ").Concat("", "\n\t")}");
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update item.
|
||||
public override bool UpdateItemAssociation(SaxItemAssociation itemAssociation, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidItemAssociation(itemAssociation)) return false;
|
||||
if (!SysId.IsValid(itemAssociation.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!itemAssociation.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Data not changed.{GetLogProperties(itemAssociation).Concat(": ").Concat("", "\n\t")}");
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
ItemAssociation_Db dbItemAssociation = new ItemAssociation_Db(CoreDbInfo);
|
||||
dbItemAssociation.PopulateFrom(dbCommand, aliasItemAssociation, "Id=" + SysId.ToString(itemAssociation.Id));
|
||||
// ToDo SaxUpdateLogItemMonitor_ItemAssociation updateLogMonitor = new SaxUpdateLogItemMonitor_ItemAssociation(SessionContext, CreateItemAssociation(dbItemAssociation), dbUpdateInfo);
|
||||
// Update item.
|
||||
PopulateTo(dbItemAssociation, itemAssociation, dbUpdateInfo);
|
||||
dbItemAssociation.ExecuteUpdateCommand(dbCommand);
|
||||
itemAssociation.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Updated.{GetLogProperties(itemAssociation).Concat(": ").Concat("", "\n\t")}");
|
||||
// Record updates.
|
||||
// ToDo updateLogMonitor.RecordUpdatedValues(itemAssociation);
|
||||
// ToDo updateLogMonitor.LogUpdates();
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete item.
|
||||
public override bool ItemAssociationCanBeDeleted(SaxItemAssociation itemAssociation)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.ItemAssociationCanBeDeleted(itemAssociation)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteItemAssociation(SaxItemAssociation itemAssociation, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!ItemAssociationCanBeDeleted(itemAssociation)) return false;
|
||||
|
||||
// Item Sports are logically deleted by changing the status.
|
||||
itemAssociation.Status = SaStatus.Deleted;
|
||||
return UpdateItemAssociation(itemAssociation, dbUpdateInfo);
|
||||
|
||||
/*
|
||||
* Physical deletion.
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
ItemAssociation_Db dbItemAssociation = new ItemAssociation_Db(CoreDbInfo);
|
||||
dbItemAssociation.PopulateFrom(dbCommand, aliasItemAssociation, "Id=" + itemAssociation.Id.ToString());
|
||||
// Delete item.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ItemAssociation) + " WHERE Id=" + SysId.ToString(itemAssociation.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
itemAssociation.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Deleted.{GetLogProperties(itemAssociation).Concat(": ").Concat("", "\n\t")}");
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
*/
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(ItemAssociation_Db dbItemAssociation, SaxItemAssociation itemAssociation, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbItemAssociation._Id = SysId.ToInt(itemAssociation.Id);
|
||||
dbItemAssociation._ItemTypeFrom = itemAssociation.ItemIdFrom.Type;
|
||||
dbItemAssociation._ItemIdFrom = SysId.ToInt(itemAssociation.ItemIdFrom.Id);
|
||||
dbItemAssociation._ItemTypeTo = itemAssociation.ItemIdTo.Type;
|
||||
dbItemAssociation._ItemIdTo = SysId.ToInt(itemAssociation.ItemIdTo.Id);
|
||||
dbItemAssociation._AssociationType = (short)itemAssociation.AssociationType;
|
||||
// Common.
|
||||
dbItemAssociation._Notes = itemAssociation.Notes;
|
||||
dbItemAssociation._Status = SacsSystem.GetStatusCode(itemAssociation.Status);
|
||||
dbItemAssociation._Flags = (short)itemAssociation.Flags;
|
||||
if (!SysId.IsValid(itemAssociation.Id))
|
||||
{
|
||||
dbItemAssociation._CreateOn = DateTime.Now;
|
||||
dbItemAssociation._CreateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbItemAssociation._CreateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
dbItemAssociation._UpdateOn = DateTime.Now;
|
||||
dbItemAssociation._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbItemAssociation._UpdateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
private void PopulateFrom(ItemAssociation_Db dbItemAssociation, SaxItemAssociation itemAssociation)
|
||||
{
|
||||
//itemAssociation.Id = new SysId(dbItemAssociation._Id);
|
||||
//itemAssociation.ItemIdFrom = new ItemId(dbItemAssociation._ItemTypeFrom, new SysId(dbItemAssociation._ItemIdFrom);
|
||||
//itemAssociation.ItemIdTo = new ItemId(dbItemAssociation._ItemTypeTo, new SysId(dbItemAssociation._ItemIdTo);
|
||||
//itemAssociation.AssociationType = (Sax.AssociationType)dbItemAssociation._AssociationType;
|
||||
// Common.
|
||||
itemAssociation.Notes = dbItemAssociation._Notes;
|
||||
itemAssociation.Status = SacsSystem.GetStatusForCode(dbItemAssociation._Status);
|
||||
itemAssociation.SetCreateStamp(dbItemAssociation._CreateOn, new SysId(dbItemAssociation._CreateBy), dbItemAssociation._CreateHost);
|
||||
itemAssociation.SetUpdateStamp(dbItemAssociation._UpdateOn, new SysId(dbItemAssociation._UpdateBy), dbItemAssociation._UpdateHost);
|
||||
itemAssociation.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item column definitions.
|
||||
private static readonly String aliasItemAssociation = "ItmAss";
|
||||
private static readonly String aliasItemAssociation_OrganisationFrom = "ItmAss_OrgFr";
|
||||
private static readonly String prefixItemAssociation_OrganisationFrom = aliasItemAssociation_OrganisationFrom + "_";
|
||||
private static readonly String aliasItemAssociation_OrganisationTo = "ItmAss_OrgTo";
|
||||
private static readonly String prefixItemAssociation_OrganisationTo = aliasItemAssociation_OrganisationTo + "_";
|
||||
private void SetItemAssociationColDfn
|
||||
(ColumnDfn col, String caption, int width, SaxDbDfn_Core.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SaxDbDfn_Core.GetTableForColumn(dbCol) == SaxDbDfn_Core.TableIdx.ItemAssociation)
|
||||
alias = aliasItemAssociation;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn_Core.GetColumnName(dbCol, false), SaxDbDfn_Core.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn_Core.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SaxDbDfn_Core.GetColTextLen(dbCol);
|
||||
}
|
||||
public override ColumnDfn GetItemAssociationColumnDfn(SaxItemAssociation.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
//-----------------------------------------------------------
|
||||
case SaxItemAssociation.Column.Pos:
|
||||
SetItemAssociationColDfn(columnDfn, "Pos", 60, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
case SaxItemAssociation.Column.Id:
|
||||
SetItemAssociationColDfn(columnDfn, "Id", 80, SaxDbDfn_Core.ColumnIdx.ItemAssociation_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// 'From' Item Id.
|
||||
case SaxItemAssociation.Column.ItemTypeFrom:
|
||||
SetItemAssociationColDfn(columnDfn, "From item type", 80, SaxDbDfn_Core.ColumnIdx.ItemAssociation_ItemTypeFrom, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemAssociation.Column.ItemTypeFrom_Code:
|
||||
SetItemAssociationColDfn(columnDfn, "From item type", 80, SaxDbDfn_Core.ColumnIdx.ItemAssociation_ItemTypeFrom, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemAssociation.Column.ItemTypeFrom_Desc:
|
||||
SetItemAssociationColDfn(columnDfn, "From item type", 80, SaxDbDfn_Core.ColumnIdx.ItemAssociation_ItemTypeFrom, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemAssociation.Column.ItemIdFrom:
|
||||
SetItemAssociationColDfn(columnDfn, "From item Id", 80, SaxDbDfn_Core.ColumnIdx.ItemAssociation_ItemIdFrom, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// 'To' Item Id.
|
||||
case SaxItemAssociation.Column.ItemTypeTo:
|
||||
SetItemAssociationColDfn(columnDfn, "To item type", 80, SaxDbDfn_Core.ColumnIdx.ItemAssociation_ItemTypeTo, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemAssociation.Column.ItemTypeTo_Code:
|
||||
SetItemAssociationColDfn(columnDfn, "To item type", 80, SaxDbDfn_Core.ColumnIdx.ItemAssociation_ItemTypeTo, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemAssociation.Column.ItemTypeTo_Desc:
|
||||
SetItemAssociationColDfn(columnDfn, "To item type", 80, SaxDbDfn_Core.ColumnIdx.ItemAssociation_ItemTypeTo, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemAssociation.Column.ItemIdTo:
|
||||
SetItemAssociationColDfn(columnDfn, "To item Id", 80, SaxDbDfn_Core.ColumnIdx.ItemAssociation_ItemIdTo, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Specific item properties.
|
||||
case SaxItemAssociation.Column.OrganisationFrom_Name:
|
||||
SetItemAssociationColDfn(columnDfn, "From organisation", 120, SaxDbDfn_Core.ColumnIdx.Organisation_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasItemAssociation_OrganisationFrom, prefixItemAssociation_OrganisationFrom);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemAssociation.Column.OrganisationFrom_SportIdPrimary:
|
||||
SetItemAssociationColDfn(columnDfn, "From org sport #", 80, SaxDbDfn_Core.ColumnIdx.Organisation_SportIdPrimary, ColumnAlignment.Right, DataValue.DataType.Long, aliasItemAssociation_OrganisationFrom, prefixItemAssociation_OrganisationFrom);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemAssociation.Column.OrganisationFrom_RegionIdPrimary:
|
||||
SetItemAssociationColDfn(columnDfn, "From org region #", 80, SaxDbDfn_Core.ColumnIdx.Organisation_RegionIdPrimary, ColumnAlignment.Right, DataValue.DataType.Long, aliasItemAssociation_OrganisationFrom, prefixItemAssociation_OrganisationFrom);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemAssociation.Column.OrganisationTo_Name:
|
||||
SetItemAssociationColDfn(columnDfn, "To organisation", 120, SaxDbDfn_Core.ColumnIdx.Organisation_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasItemAssociation_OrganisationTo, prefixItemAssociation_OrganisationTo);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemAssociation.Column.OrganisationTo_SportIdPrimary:
|
||||
SetItemAssociationColDfn(columnDfn, "To org sport #", 80, SaxDbDfn_Core.ColumnIdx.Organisation_SportIdPrimary, ColumnAlignment.Right, DataValue.DataType.Long, aliasItemAssociation_OrganisationTo, prefixItemAssociation_OrganisationTo);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemAssociation.Column.OrganisationTo_RegionIdPrimary:
|
||||
SetItemAssociationColDfn(columnDfn, "To org region #", 80, SaxDbDfn_Core.ColumnIdx.Organisation_RegionIdPrimary, ColumnAlignment.Right, DataValue.DataType.Long, aliasItemAssociation_OrganisationTo, prefixItemAssociation_OrganisationTo);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Association type.
|
||||
case SaxItemAssociation.Column.AssociationType:
|
||||
SetItemAssociationColDfn(columnDfn, "Type", 80, SaxDbDfn_Core.ColumnIdx.ItemAssociation_AssociationType, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemAssociation.Column.AssociationType_Code:
|
||||
SetItemAssociationColDfn(columnDfn, "Type", 100, SaxDbDfn_Core.ColumnIdx.ItemAssociation_AssociationType, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemAssociation.Column.AssociationType_Desc:
|
||||
SetItemAssociationColDfn(columnDfn, "Type", 120, SaxDbDfn_Core.ColumnIdx.ItemAssociation_AssociationType, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Derived properties.
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Common properties.
|
||||
case SaxItemAssociation.Column.Notes:
|
||||
SetItemAssociationColDfn(columnDfn, "Notes", 240, SaxDbDfn_Core.ColumnIdx.ItemAssociation_Notes);
|
||||
break;
|
||||
case SaxItemAssociation.Column.Flags:
|
||||
SetItemAssociationColDfn(columnDfn, "Flags", 60, SaxDbDfn_Core.ColumnIdx.ItemAssociation_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxItemAssociation.Column.Status:
|
||||
SetItemAssociationColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.ItemAssociation_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxItemAssociation.Column.Status_Desc:
|
||||
SetItemAssociationColDfn(columnDfn, "Status", 90, SaxDbDfn_Core.ColumnIdx.ItemAssociation_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxItemAssociation.Column.Status_Ind:
|
||||
SetItemAssociationColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.ItemAssociation_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SaxItemAssociation.Column.CreateOn_Date:
|
||||
SetItemAssociationColDfn(columnDfn, "Created", 80, SaxDbDfn_Core.ColumnIdx.ItemAssociation_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemAssociation.Column.UpdateOn_Date:
|
||||
SetItemAssociationColDfn(columnDfn, "Updated", 80, SaxDbDfn_Core.ColumnIdx.ItemAssociation_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> GetItemAssociationQueryFilter(SaxItemAssociation.Params prm)
|
||||
{
|
||||
List<String> filter = new List<String>();
|
||||
|
||||
// Item Ids.
|
||||
String idsIncluded = prm.IdsIncluded.Concat(",");
|
||||
if (!idsIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAssociation_Id, aliasItemAssociation) + " IN (" + idsIncluded + ")");
|
||||
String idsExcluded = prm.IdsExcluded.Concat(",");
|
||||
if (!idsExcluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAssociation_Id, aliasItemAssociation) + " NOT IN (" + idsExcluded + ")");
|
||||
|
||||
// Item Ids - can be either 'From' or 'To'.
|
||||
if (!prm.ItemIdsIncluded.IsEmpty())
|
||||
{
|
||||
List<String> itemIdFilters = new List<string>();
|
||||
foreach (ItemId itemId in prm.ItemIdsIncluded)
|
||||
{
|
||||
if (!ItemId.IsValid(itemId)) continue;
|
||||
String itemIdFilter =
|
||||
SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAssociation_ItemTypeFrom, aliasItemAssociation) + "=" + itemId.Type +
|
||||
" AND " + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAssociation_ItemIdFrom, aliasItemAssociation) + "=" + SysId.ToInt(itemId.Id);
|
||||
itemIdFilters.Add(itemIdFilter);
|
||||
itemIdFilter =
|
||||
SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAssociation_ItemTypeTo, aliasItemAssociation) + "=" + itemId.Type +
|
||||
" AND " + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAssociation_ItemIdTo, aliasItemAssociation) + "=" + SysId.ToInt(itemId.Id);
|
||||
itemIdFilters.Add(itemIdFilter);
|
||||
}
|
||||
if (!itemIdFilters.IsEmpty())
|
||||
filter.Add(itemIdFilters.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
|
||||
// 'From' Item Ids.
|
||||
if (!prm.ItemIdsFromIncluded.IsEmpty())
|
||||
{
|
||||
List<String> itemIdFilters = new List<string>();
|
||||
foreach (ItemId itemId in prm.ItemIdsFromIncluded)
|
||||
{
|
||||
if (!ItemId.IsValid(itemId)) continue;
|
||||
String itemIdFilter =
|
||||
SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAssociation_ItemTypeFrom, aliasItemAssociation) + "=" + itemId.Type +
|
||||
" AND " + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAssociation_ItemIdFrom, aliasItemAssociation) + "=" + SysId.ToInt(itemId.Id);
|
||||
itemIdFilters.Add(itemIdFilter);
|
||||
}
|
||||
if (!itemIdFilters.IsEmpty())
|
||||
filter.Add(itemIdFilters.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
|
||||
// 'To' Item Ids.
|
||||
if (!prm.ItemIdsToIncluded.IsEmpty())
|
||||
{
|
||||
List<String> itemIdFilters = new List<string>();
|
||||
foreach (ItemId itemId in prm.ItemIdsToIncluded)
|
||||
{
|
||||
if (!ItemId.IsValid(itemId)) continue;
|
||||
String itemIdFilter =
|
||||
SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAssociation_ItemTypeTo, aliasItemAssociation) + "=" + itemId.Type +
|
||||
" AND " + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAssociation_ItemIdTo, aliasItemAssociation) + "=" + SysId.ToInt(itemId.Id);
|
||||
itemIdFilters.Add(itemIdFilter);
|
||||
}
|
||||
if (!itemIdFilters.IsEmpty())
|
||||
filter.Add(itemIdFilters.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
|
||||
// Association types.
|
||||
if (!prm.AssociationTypesIncluded.IsEmpty())
|
||||
{
|
||||
String associationTypes = prm.AssociationTypesIncluded.Select(ItemAddressCanBeDeleted => ((int)ItemAddressCanBeDeleted).ToString()).ToList().Concat(",");
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAssociation_AssociationType, aliasItemAssociation) + " IN (" + associationTypes + ")");
|
||||
}
|
||||
|
||||
// Status.
|
||||
if (prm.StatusCat != SaxItemAssociation.StatusCat.Any)
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAssociation_Status, aliasItemAssociation) + GetItemAssociationStatusCatFilterCondition(prm.StatusCat));
|
||||
|
||||
if (filter.Count < 1) filter.Add("1=1");
|
||||
return filter;
|
||||
}
|
||||
internal static String GetItemAssociationStatusCatFilterCondition(SaxItemAssociation.StatusCat statusCat)
|
||||
{
|
||||
if (statusCat == SaxItemAssociation.StatusCat.ActiveOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'";
|
||||
if (statusCat == SaxItemAssociation.StatusCat.InactiveOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Inactive) + "'";
|
||||
if (statusCat == SaxItemAssociation.StatusCat.NotDeleted)
|
||||
return "!='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
if (statusCat == SaxItemAssociation.StatusCat.DeletedOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
return "";
|
||||
}
|
||||
// Item sort columns.
|
||||
public List<String> GetItemAssociationSortColumns(SaxItemAssociation.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
List<String> sortColumnNames = new List<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for ItemAssociation columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SaxDbDfn_Core.GetTableForColumn((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn_Core.TableIdx.ItemAssociation)
|
||||
{
|
||||
sortCol = SaxDbDfn_Core.GetColumnNameQual((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn, aliasItemAssociation);
|
||||
}
|
||||
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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAssociation_Id, aliasItemAssociation) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item count.
|
||||
private long GetItemAssociationCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return CoreDatabase.GetRowCount(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ItemAssociation) + " As " + aliasItemAssociation, filter);
|
||||
}
|
||||
public override long GetItemAssociationCount(SaxItemAssociation.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetItemAssociationCount(GetItemAssociationQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item list.
|
||||
public override List<SaxItemAssociation> GetItemAssociationList(SaxItemAssociation.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<SaxItemAssociation> itemAssociations = new List<SaxItemAssociation>();
|
||||
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ItemAssociation), aliasItemAssociation);
|
||||
ItemAssociation_Db dbItemAssociation = new ItemAssociation_Db(CoreDbInfo);
|
||||
qry.Columns.AddRange(dbItemAssociation.ExistingColumnNames);
|
||||
qry.Filters.AddRange(GetItemAssociationQueryFilter(prm));
|
||||
qry.OrderBy.AddRange(GetItemAssociationSortColumns(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())
|
||||
{
|
||||
dbItemAssociation = new ItemAssociation_Db(CoreDbInfo);
|
||||
dbItemAssociation.PopulateFrom(dbDataReader);
|
||||
itemAssociations.Add(CreateItemAssociation(dbItemAssociation));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return itemAssociations;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item query execution.
|
||||
public override DbResultSet ExecuteItemAssociationQuery(List<ColumnDfn> columns, SaxItemAssociation.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(CoreDatabase.DbmsType);
|
||||
query.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ItemAssociation), aliasItemAssociation);
|
||||
|
||||
// Add columns as defined in query list.
|
||||
if (columns.HasId(SaxItemAssociation.Column.Id))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAssociation_Id, aliasItemAssociation));
|
||||
if (columns.HasId(SaxItemAssociation.Column.ItemTypeFrom) || columns.HasId(SaxItemAssociation.Column.ItemTypeFrom_Code) || columns.HasId(SaxItemAssociation.Column.ItemTypeFrom_Desc))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAssociation_ItemTypeFrom, aliasItemAssociation));
|
||||
if (columns.HasId(SaxItemAssociation.Column.ItemIdFrom))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAssociation_ItemIdFrom, aliasItemAssociation));
|
||||
if (columns.HasId(SaxItemAssociation.Column.ItemTypeTo) || columns.HasId(SaxItemAssociation.Column.ItemTypeTo_Code) || columns.HasId(SaxItemAssociation.Column.ItemTypeTo_Desc))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAssociation_ItemTypeTo, aliasItemAssociation));
|
||||
if (columns.HasId(SaxItemAssociation.Column.ItemIdTo))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAssociation_ItemIdTo, aliasItemAssociation));
|
||||
if (columns.HasId(SaxItemAssociation.Column.AssociationType) || columns.HasId(SaxItemAssociation.Column.AssociationType_Code) || columns.HasId(SaxItemAssociation.Column.AssociationType_Desc))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAssociation_AssociationType, aliasItemAssociation));
|
||||
// Common properties.
|
||||
if (columns.HasId(SaxItemAssociation.Column.Notes))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAssociation_Notes, aliasItemAssociation));
|
||||
if (columns.HasId(SaxItemAssociation.Column.Flags))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAssociation_Flags, aliasItemAssociation));
|
||||
if (columns.HasId(SaxItemAssociation.Column.Status) || columns.HasId(SaxItemAssociation.Column.Status_Desc) || columns.HasId(SaxItemAssociation.Column.Status_Ind))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAssociation_Status, aliasItemAssociation));
|
||||
if (columns.HasId(SaxItemAssociation.Column.CreateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAssociation_CreateOn, aliasItemAssociation));
|
||||
if (columns.HasId(SaxItemAssociation.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAssociation_UpdateOn, aliasItemAssociation));
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
//
|
||||
if (columns.HasId(SaxItemAssociation.Column.OrganisationFrom_Name))
|
||||
{
|
||||
// Organisation join.
|
||||
DbQueryJoin joinOrganisation = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinOrganisation.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Organisation), aliasItemAssociation_OrganisationFrom);
|
||||
joinOrganisation.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAssociation_ItemTypeFrom, aliasItemAssociation) + "=" + (int)Sax.DataItemType.Organisation);
|
||||
joinOrganisation.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_Id, aliasItemAssociation_OrganisationFrom) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAssociation_ItemIdFrom, aliasItemAssociation));
|
||||
query.Joins.Add(joinOrganisation);
|
||||
List<SaxDbDfn_Core.ColumnIdx> OrganisationCols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
OrganisationCols.Add(SaxDbDfn_Core.ColumnIdx.Organisation_Name);
|
||||
OrganisationCols.Add(SaxDbDfn_Core.ColumnIdx.Organisation_RegionIdPrimary);
|
||||
OrganisationCols.Add(SaxDbDfn_Core.ColumnIdx.Organisation_SportIdPrimary);
|
||||
foreach (var col in OrganisationCols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasItemAssociation_OrganisationFrom), prefixItemAssociation_OrganisationFrom + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
if (columns.HasId(SaxItemAssociation.Column.OrganisationTo_Name))
|
||||
{
|
||||
// Organisation join.
|
||||
DbQueryJoin joinOrganisation = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinOrganisation.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Organisation), aliasItemAssociation_OrganisationTo);
|
||||
joinOrganisation.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAssociation_ItemTypeTo, aliasItemAssociation) + "=" + (int)Sax.DataItemType.Organisation);
|
||||
joinOrganisation.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Organisation_Id, aliasItemAssociation_OrganisationTo) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemAssociation_ItemIdTo, aliasItemAssociation));
|
||||
query.Joins.Add(joinOrganisation);
|
||||
List<SaxDbDfn_Core.ColumnIdx> OrganisationCols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
OrganisationCols.Add(SaxDbDfn_Core.ColumnIdx.Organisation_Name);
|
||||
OrganisationCols.Add(SaxDbDfn_Core.ColumnIdx.Organisation_RegionIdPrimary);
|
||||
OrganisationCols.Add(SaxDbDfn_Core.ColumnIdx.Organisation_SportIdPrimary);
|
||||
foreach (var col in OrganisationCols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasItemAssociation_OrganisationTo), prefixItemAssociation_OrganisationTo + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetItemAssociationQueryFilter(prm));
|
||||
|
||||
if (prm.IdsIncluded.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetItemAssociationSortColumns(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,590 @@
|
||||
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;
|
||||
using System.Linq;
|
||||
using Saxonite.Net.Standard.Dbas.Internal.Core;
|
||||
|
||||
namespace Saxonite.Net.Standard.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
partial class SaxItemDataMgr_Dbas
|
||||
{
|
||||
//*******************************************************************
|
||||
// Item Data Mgr - Item Image
|
||||
//*******************************************************************
|
||||
// Utilities.
|
||||
private List<StringPair> GetLogProperties(SaxItemImage itemImage)
|
||||
{
|
||||
return new List<StringPair>()
|
||||
{
|
||||
new StringPair("Id", SysId.ToString(itemImage.Id)),
|
||||
new StringPair("ItemId", (Sax.DataItemType)itemImage.ItemId.Type + ": " + itemImage.ItemId.Id),
|
||||
new StringPair("ImageType", itemImage.ImageType.ToString()),
|
||||
new StringPair("Status", itemImage.StatusCode)
|
||||
};
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create item.
|
||||
public override SaxItemImage CreateItemImage(ItemId itemId, Sax.ImageType imageType)
|
||||
{
|
||||
ClearErrorState();
|
||||
return new SaxItemImage_Dbas(CoreDatabase, null, itemId, imageType, 0);
|
||||
}
|
||||
private SaxItemImage_Dbas CreateItemImage(ItemImage_Db dbItemImage)
|
||||
{
|
||||
ClearErrorState();
|
||||
ItemId itemId = new ItemId(dbItemImage._ItemType, new SysId(dbItemImage._ItemId));
|
||||
SaxItemImage_Dbas itemImage = new SaxItemImage_Dbas(CoreDatabase, new SysId(dbItemImage._Id), itemId, (Sax.ImageType)dbItemImage._ImageType, (ushort)dbItemImage._Flags);
|
||||
PopulateFrom(dbItemImage, itemImage);
|
||||
return itemImage;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get item.
|
||||
public override SaxItemImage GetItemImage(SaxItemImage.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetItemImage(GetItemImageQueryFilter(prm).Concat(" And ", "(", ")"));
|
||||
}
|
||||
private SaxItemImage GetItemImage(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetItemImageCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple items found");
|
||||
return null;
|
||||
}
|
||||
SaxItemImage itemImage = null;
|
||||
// Query data.
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
ItemImage_Db dbItemImage = new ItemImage_Db(CoreDbInfo);
|
||||
dbItemImage.PopulateFrom(dbCommand, aliasItemImage, filter);
|
||||
itemImage = CreateItemImage(dbItemImage);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return itemImage;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate item.
|
||||
public override bool IsValidItemImageData(SaxItemImage.Data data, SaxItemImage.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidItemImageData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert item.
|
||||
public override bool InsertItemImage(SaxItemImage itemImage, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidItemImage(itemImage)) return false;
|
||||
if (SysId.IsValid(itemImage.Id)) return SetErrorState(ErrorMessage.ValidItemId);
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
ItemImage_Db dbItemImage = new ItemImage_Db(CoreDbInfo);
|
||||
PopulateTo(dbItemImage, itemImage, dbUpdateInfo);
|
||||
if (ItemImage_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
dbItemImage._Id = CoreDatabase.GetNextIdFromTable("ItemImage");
|
||||
}
|
||||
dbItemImage.ExecuteInsertCommand(dbCommand);
|
||||
itemImage.Id = new SysId(dbItemImage._Id);
|
||||
itemImage.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Inserted.{GetLogProperties(itemImage).Concat(": ").Concat("", "\n\t")}");
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update item.
|
||||
public override bool UpdateItemImage(SaxItemImage itemImage, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidItemImage(itemImage)) return false;
|
||||
if (!SysId.IsValid(itemImage.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!itemImage.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Data not changed.{GetLogProperties(itemImage).Concat(": ").Concat("", "\n\t")}");
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
ItemImage_Db dbItemImage = new ItemImage_Db(CoreDbInfo);
|
||||
dbItemImage.PopulateFrom(dbCommand, aliasItemImage, "Id=" + SysId.ToString(itemImage.Id));
|
||||
// ToDo SaxUpdateLogItemMonitor_ItemImage updateLogMonitor = new SaxUpdateLogItemMonitor_ItemImage(SessionContext, CreateItemImage(dbItemImage), dbUpdateInfo);
|
||||
// Update item.
|
||||
PopulateTo(dbItemImage, itemImage, dbUpdateInfo);
|
||||
dbItemImage.ExecuteUpdateCommand(dbCommand);
|
||||
itemImage.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Updated.{GetLogProperties(itemImage).Concat(": ").Concat("", "\n\t")}");
|
||||
// Record updates.
|
||||
// ToDo updateLogMonitor.RecordUpdatedValues(itemImage);
|
||||
// ToDo updateLogMonitor.LogUpdates();
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete item.
|
||||
public override bool ItemImageCanBeDeleted(SaxItemImage itemImage)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.ItemImageCanBeDeleted(itemImage)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteItemImage(SaxItemImage itemImage, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!ItemImageCanBeDeleted(itemImage)) return false;
|
||||
bool logicalDelete = true;
|
||||
|
||||
if (logicalDelete)
|
||||
{
|
||||
// Logical deletion.
|
||||
itemImage.Status = SaStatus.Deleted;
|
||||
return UpdateItemImage(itemImage, dbUpdateInfo);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Physical deletion.
|
||||
using (var dbConnection = CoreDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
ItemImage_Db dbItemImage = new ItemImage_Db(CoreDbInfo);
|
||||
dbItemImage.PopulateFrom(dbCommand, aliasItemImage, "Id=" + itemImage.Id.ToString());
|
||||
// Delete item.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ItemImage) + " WHERE Id=" + SysId.ToString(itemImage.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
itemImage.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Deleted.{GetLogProperties(itemImage).Concat(": ").Concat("", "\n\t")}");
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(ItemImage_Db dbItemImage, SaxItemImage itemImage, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbItemImage._Id = SysId.ToInt(itemImage.Id);
|
||||
dbItemImage._ItemType = itemImage.ItemId.Type;
|
||||
dbItemImage._ItemId = SysId.ToInt(itemImage.ItemId.Id);
|
||||
dbItemImage._ImageType = (short)itemImage.ImageType;
|
||||
dbItemImage._ImageSeq = itemImage.ImageSeq;
|
||||
dbItemImage._SessionUid = itemImage.SessionUid;
|
||||
dbItemImage._ImageUid = itemImage.ImageUid;
|
||||
dbItemImage._Filename = itemImage.Filename;
|
||||
dbItemImage._Mime = itemImage.Mime;
|
||||
dbItemImage._ContentType = itemImage.ContentType;
|
||||
dbItemImage._Width = itemImage.Width;
|
||||
dbItemImage._Height = itemImage.Height;
|
||||
dbItemImage._ImageData = itemImage.ImageData;
|
||||
// Common.
|
||||
dbItemImage._Notes = itemImage.Notes;
|
||||
dbItemImage._Status = SacsSystem.GetStatusCode(itemImage.Status);
|
||||
dbItemImage._Flags = (short)itemImage.Flags;
|
||||
if (!SysId.IsValid(itemImage.Id))
|
||||
{
|
||||
dbItemImage._CreateOn = DateTime.Now;
|
||||
dbItemImage._CreateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbItemImage._CreateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
dbItemImage._UpdateOn = DateTime.Now;
|
||||
dbItemImage._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbItemImage._UpdateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
private void PopulateFrom(ItemImage_Db dbItemImage, SaxItemImage itemImage)
|
||||
{
|
||||
itemImage.Id = new SysId(dbItemImage._Id);
|
||||
//itemImage.ItemId = new ItemId(dbItemImage._ItemType, new SysId(dbItemImage._ItemId);
|
||||
//itemImage.ImageType = (Sax.ImageType)dbItemImage._ImageType;
|
||||
itemImage.ImageSeq = dbItemImage._ImageSeq;
|
||||
itemImage.SessionUid = dbItemImage._SessionUid;
|
||||
itemImage.ImageUid = dbItemImage._ImageUid;
|
||||
itemImage.Filename = dbItemImage._Filename;
|
||||
itemImage.Mime = dbItemImage._Mime;
|
||||
itemImage.ContentType = dbItemImage._ContentType;
|
||||
itemImage.Width = dbItemImage._Width;
|
||||
itemImage.Height = dbItemImage._Height;
|
||||
itemImage.ImageData = dbItemImage._ImageData;
|
||||
// Common.
|
||||
itemImage.Notes = dbItemImage._Notes;
|
||||
itemImage.Status = SacsSystem.GetStatusForCode(dbItemImage._Status);
|
||||
itemImage.SetCreateStamp(dbItemImage._CreateOn, new SysId(dbItemImage._CreateBy), dbItemImage._CreateHost);
|
||||
itemImage.SetUpdateStamp(dbItemImage._UpdateOn, new SysId(dbItemImage._UpdateBy), dbItemImage._UpdateHost);
|
||||
itemImage.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item column definitions.
|
||||
private static readonly String aliasItemImage = "ItmSpt";
|
||||
private void SetItemImageColDfn
|
||||
(ColumnDfn col, String caption, int width, SaxDbDfn_Core.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SaxDbDfn_Core.GetTableForColumn(dbCol) == SaxDbDfn_Core.TableIdx.ItemImage)
|
||||
alias = aliasItemImage;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn_Core.GetColumnName(dbCol, false), SaxDbDfn_Core.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn_Core.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SaxDbDfn_Core.GetColTextLen(dbCol);
|
||||
}
|
||||
public override ColumnDfn GetItemImageColumnDfn(SaxItemImage.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
//-----------------------------------------------------------
|
||||
case SaxItemImage.Column.Pos:
|
||||
SetItemImageColDfn(columnDfn, "Pos", 60, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
case SaxItemImage.Column.Id:
|
||||
SetItemImageColDfn(columnDfn, "Id", 80, SaxDbDfn_Core.ColumnIdx.ItemImage_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemImage.Column.ItemType:
|
||||
SetItemImageColDfn(columnDfn, "Item type", 80, SaxDbDfn_Core.ColumnIdx.ItemImage_ItemType, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemImage.Column.ItemType_Code:
|
||||
SetItemImageColDfn(columnDfn, "Item type", 80, SaxDbDfn_Core.ColumnIdx.ItemImage_ItemType, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemImage.Column.ItemType_Desc:
|
||||
SetItemImageColDfn(columnDfn, "Item type", 80, SaxDbDfn_Core.ColumnIdx.ItemImage_ItemType, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemImage.Column.ItemId:
|
||||
SetItemImageColDfn(columnDfn, "Item Id", 80, SaxDbDfn_Core.ColumnIdx.ItemImage_ItemId, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
// Image type.
|
||||
case SaxItemImage.Column.ImageType:
|
||||
SetItemImageColDfn(columnDfn, "Image type", 80, SaxDbDfn_Core.ColumnIdx.ItemImage_ImageType, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemImage.Column.ImageType_Code:
|
||||
SetItemImageColDfn(columnDfn, "Image type", 100, SaxDbDfn_Core.ColumnIdx.ItemImage_ImageType, ColumnAlignment.Center, DataValue.DataType.String);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemImage.Column.ImageType_Desc:
|
||||
SetItemImageColDfn(columnDfn, "Image type", 120, SaxDbDfn_Core.ColumnIdx.ItemImage_ImageType, ColumnAlignment.Center, DataValue.DataType.String);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
// Image properties.
|
||||
case SaxItemImage.Column.ImageSeq:
|
||||
SetItemImageColDfn(columnDfn, "Seq", 60, SaxDbDfn_Core.ColumnIdx.ItemImage_ImageSeq, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemImage.Column.Filename:
|
||||
SetItemImageColDfn(columnDfn, "Filename", 160, SaxDbDfn_Core.ColumnIdx.ItemImage_Filename);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemImage.Column.Mime:
|
||||
SetItemImageColDfn(columnDfn, "Mime", 100, SaxDbDfn_Core.ColumnIdx.ItemImage_Mime);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemImage.Column.ContentType:
|
||||
SetItemImageColDfn(columnDfn, "Content Type", 120, SaxDbDfn_Core.ColumnIdx.ItemImage_ContentType);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Derived properties.
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Common properties.
|
||||
case SaxItemImage.Column.Notes:
|
||||
SetItemImageColDfn(columnDfn, "Notes", 240, SaxDbDfn_Core.ColumnIdx.ItemImage_Notes);
|
||||
break;
|
||||
case SaxItemImage.Column.Flags:
|
||||
SetItemImageColDfn(columnDfn, "Flags", 60, SaxDbDfn_Core.ColumnIdx.ItemImage_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxItemImage.Column.Status:
|
||||
SetItemImageColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.ItemImage_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxItemImage.Column.Status_Desc:
|
||||
SetItemImageColDfn(columnDfn, "Status", 90, SaxDbDfn_Core.ColumnIdx.ItemImage_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxItemImage.Column.Status_Ind:
|
||||
SetItemImageColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.ItemImage_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SaxItemImage.Column.CreateOn_Date:
|
||||
SetItemImageColDfn(columnDfn, "Created", 80, SaxDbDfn_Core.ColumnIdx.ItemImage_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemImage.Column.UpdateOn_Date:
|
||||
SetItemImageColDfn(columnDfn, "Updated", 80, SaxDbDfn_Core.ColumnIdx.ItemImage_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> GetItemImageQueryFilter(SaxItemImage.Params prm)
|
||||
{
|
||||
List<String> filter = new List<String>();
|
||||
|
||||
// Item Ids.
|
||||
String idsIncluded = prm.IdsIncluded.Concat(",");
|
||||
if (!idsIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_Id, aliasItemImage) + " IN (" + idsIncluded + ")");
|
||||
String idsExcluded = prm.IdsExcluded.Concat(",");
|
||||
if (!idsExcluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_Id, aliasItemImage) + " 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;
|
||||
String itemIdFilter =
|
||||
SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_ItemType, aliasItemImage) + "=" + itemId.Type +
|
||||
" AND " + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_ItemId, aliasItemImage) + "=" + SysId.ToInt(itemId.Id);
|
||||
itemIdFilters.Add(itemIdFilter);
|
||||
}
|
||||
if (!itemIdFilters.IsEmpty())
|
||||
filter.Add(itemIdFilters.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
|
||||
// Image Type.
|
||||
if (!prm.ImageTypesIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_ImageType, aliasItemImage) + " IN (" + prm.ImageTypesIncluded.Select(item => ((int)item).ToString()).Concat(",") + ")");
|
||||
|
||||
// Notes.
|
||||
if (!StringUtil.IsEmpty(prm.NotesPartial))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_Notes, aliasItemImage) + " LIKE '%" + DbQuery.FormatForLike(prm.NotesPartial) + "%'");
|
||||
|
||||
// Status.
|
||||
if (prm.StatusCat != SaxItemImage.StatusCat.Any)
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_Status, aliasItemImage) + GetItemImageStatusCatFilterCondition(prm.StatusCat));
|
||||
|
||||
if (filter.Count < 1) filter.Add("1=1");
|
||||
return filter;
|
||||
}
|
||||
internal static String GetItemImageStatusCatFilterCondition(SaxItemImage.StatusCat statusCat)
|
||||
{
|
||||
if (statusCat == SaxItemImage.StatusCat.ActiveOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'";
|
||||
if (statusCat == SaxItemImage.StatusCat.InactiveOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Inactive) + "'";
|
||||
if (statusCat == SaxItemImage.StatusCat.NotDeleted)
|
||||
return "!='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
if (statusCat == SaxItemImage.StatusCat.DeletedOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
return "";
|
||||
}
|
||||
// Item sort columns.
|
||||
public List<String> GetItemImageSortColumns(SaxItemImage.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
List<String> sortColumnNames = new List<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for ItemImage columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SaxDbDfn_Core.GetTableForColumn((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn_Core.TableIdx.ItemImage)
|
||||
{
|
||||
sortCol = SaxDbDfn_Core.GetColumnNameQual((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn, aliasItemImage);
|
||||
}
|
||||
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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_ItemType, aliasItemImage) + " ASC");
|
||||
sortColumnNames.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_ItemId, aliasItemImage) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item count.
|
||||
private long GetItemImageCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return CoreDatabase.GetRowCount(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ItemImage) + " As " + aliasItemImage, filter);
|
||||
}
|
||||
public override long GetItemImageCount(SaxItemImage.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetItemImageCount(GetItemImageQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item list.
|
||||
public override List<SaxItemImage> GetItemImageList(SaxItemImage.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<SaxItemImage> itemImages = new List<SaxItemImage>();
|
||||
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ItemImage), aliasItemImage);
|
||||
ItemImage_Db dbItemImage = new ItemImage_Db(CoreDbInfo);
|
||||
qry.Columns.AddRange(dbItemImage.ExistingColumnNames);
|
||||
qry.Filters.AddRange(GetItemImageQueryFilter(prm));
|
||||
qry.OrderBy.AddRange(GetItemImageSortColumns(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())
|
||||
{
|
||||
dbItemImage = new ItemImage_Db(CoreDbInfo);
|
||||
dbItemImage.PopulateFrom(dbDataReader);
|
||||
itemImages.Add(CreateItemImage(dbItemImage));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return itemImages;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item query execution.
|
||||
public override DbResultSet ExecuteItemImageQuery(List<ColumnDfn> columns, SaxItemImage.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(CoreDatabase.DbmsType);
|
||||
query.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ItemImage), aliasItemImage);
|
||||
|
||||
// Add columns as defined in query list.
|
||||
if (columns.HasId(SaxItemImage.Column.Id))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_Id, aliasItemImage));
|
||||
if (columns.HasId(SaxItemImage.Column.ItemType) || columns.HasId(SaxItemImage.Column.ItemType_Code) || columns.HasId(SaxItemImage.Column.ItemType_Desc))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_ItemType, aliasItemImage));
|
||||
if (columns.HasId(SaxItemImage.Column.ItemId))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_ItemId, aliasItemImage));
|
||||
if (columns.HasId(SaxItemImage.Column.ImageType))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_ImageType, aliasItemImage));
|
||||
if (columns.HasId(SaxItemImage.Column.ImageSeq))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_ImageSeq, aliasItemImage));
|
||||
if (columns.HasId(SaxItemImage.Column.Filename))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_Filename, aliasItemImage));
|
||||
if (columns.HasId(SaxItemImage.Column.Mime))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_Mime, aliasItemImage));
|
||||
if (columns.HasId(SaxItemImage.Column.ContentType))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_ContentType, aliasItemImage));
|
||||
if (columns.HasId(SaxItemImage.Column.Width))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_Width, aliasItemImage));
|
||||
if (columns.HasId(SaxItemImage.Column.Height))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_Height, aliasItemImage));
|
||||
// Common properties.
|
||||
if (columns.HasId(SaxItemImage.Column.Notes))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_Notes, aliasItemImage));
|
||||
if (columns.HasId(SaxItemImage.Column.Flags))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_Flags, aliasItemImage));
|
||||
if (columns.HasId(SaxItemImage.Column.Status) || columns.HasId(SaxItemImage.Column.Status_Desc) || columns.HasId(SaxItemImage.Column.Status_Ind))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_Status, aliasItemImage));
|
||||
if (columns.HasId(SaxItemImage.Column.CreateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_CreateOn, aliasItemImage));
|
||||
if (columns.HasId(SaxItemImage.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemImage_UpdateOn, aliasItemImage));
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetItemImageQueryFilter(prm));
|
||||
|
||||
if (prm.IdsIncluded.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetItemImageSortColumns(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,553 @@
|
||||
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;
|
||||
using Saxonite.Net.Standard.Dbas.Internal.Core;
|
||||
|
||||
namespace Saxonite.Net.Standard.Dbas.Mgr
|
||||
{
|
||||
//=======================================================================
|
||||
partial class SaxItemDataMgr_Dbas
|
||||
{
|
||||
//*******************************************************************
|
||||
// Item Data Mgr - Item Sport
|
||||
//*******************************************************************
|
||||
// Utilities.
|
||||
private List<StringPair> GetLogProperties(SaxItemProcess itemSport)
|
||||
{
|
||||
return new List<StringPair>()
|
||||
{
|
||||
new StringPair("Id",SysId.ToString(itemSport.Id)),
|
||||
new StringPair("ItemId", (Sax.DataItemType)itemSport.ItemId.Type + ": " + itemSport.ItemId.Id),
|
||||
new StringPair("Sport",SysId.ToString(itemSport.SportId)),
|
||||
new StringPair("Status",itemSport.StatusCode)
|
||||
};
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create item.
|
||||
public override SaxItemProcess CreateItemSport()
|
||||
{
|
||||
ClearErrorState();
|
||||
return new SaxItemSport_Dbas(CoreDatabase, null, null, null, 0);
|
||||
}
|
||||
private SaxItemSport_Dbas CreateItemSport(ItemSport_Db dbItemSport)
|
||||
{
|
||||
ClearErrorState();
|
||||
ItemId itemId = new ItemId(dbItemSport._ItemType, new SysId(dbItemSport._ItemId));
|
||||
SaxItemSport_Dbas itemSport = new SaxItemSport_Dbas(CoreDatabase, new SysId(dbItemSport._Id), itemId, new SysId(dbItemSport._SportId), (ushort)dbItemSport._Flags);
|
||||
PopulateFrom(dbItemSport, itemSport);
|
||||
return itemSport;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get item.
|
||||
public override SaxItemProcess GetItemSport(SaxItemProcess.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetItemSport(GetItemSportQueryFilter(prm).Concat(" And ", "(", ")"));
|
||||
}
|
||||
private SaxItemProcess GetItemSport(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetItemSportCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple items found");
|
||||
return null;
|
||||
}
|
||||
SaxItemProcess 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($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return itemSport;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate item.
|
||||
public override bool IsValidItemSportData(SaxItemProcess.Data data, SaxItemProcess.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidItemSportData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert item.
|
||||
public override bool InsertItemSport(SaxItemProcess itemSport, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
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($"{SysUtil.Fn} Inserted.{GetLogProperties(itemSport).Concat(": ").Concat("", "\n\t")}");
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update item.
|
||||
public override bool UpdateItemSport(SaxItemProcess itemSport, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidItemSport(itemSport)) return false;
|
||||
if (!SysId.IsValid(itemSport.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!itemSport.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.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 item.
|
||||
PopulateTo(dbItemSport, itemSport, dbUpdateInfo);
|
||||
dbItemSport.ExecuteUpdateCommand(dbCommand);
|
||||
itemSport.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.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(SaxItemProcess itemSport)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.ItemSportCanBeDeleted(itemSport)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteItemSport(SaxItemProcess itemSport, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!ItemSportCanBeDeleted(itemSport)) return false;
|
||||
|
||||
// Item Sports are logically deleted by changing the status.
|
||||
itemSport.Status = SaStatus.Deleted;
|
||||
return UpdateItemSport(itemSport, dbUpdateInfo);
|
||||
|
||||
/*
|
||||
* Physical deletion.
|
||||
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=" + itemSport.Id.ToString());
|
||||
// Delete item.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ItemSport) + " WHERE Id=" + SysId.ToString(itemSport.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
itemSport.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.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, SaxItemProcess 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, SaxItemProcess 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_Core.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SaxDbDfn_Core.GetTableForColumn(dbCol) == SaxDbDfn_Core.TableIdx.ItemSport)
|
||||
alias = aliasItemSport;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn_Core.GetColumnName(dbCol, false), SaxDbDfn_Core.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn_Core.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SaxDbDfn_Core.GetColTextLen(dbCol);
|
||||
}
|
||||
public override ColumnDfn GetItemSportColumnDfn(SaxItemProcess.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
//-----------------------------------------------------------
|
||||
case SaxItemProcess.Column.Pos:
|
||||
SetItemSportColDfn(columnDfn, "Pos", 60, SaxDbDfn_Core.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
case SaxItemProcess.Column.Id:
|
||||
SetItemSportColDfn(columnDfn, "Id", 80, SaxDbDfn_Core.ColumnIdx.ItemSport_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemProcess.Column.ItemType:
|
||||
SetItemSportColDfn(columnDfn, "Item type", 80, SaxDbDfn_Core.ColumnIdx.ItemSport_ItemType, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemProcess.Column.ItemType_Code:
|
||||
SetItemSportColDfn(columnDfn, "Item type", 80, SaxDbDfn_Core.ColumnIdx.ItemSport_ItemType, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemProcess.Column.ItemType_Desc:
|
||||
SetItemSportColDfn(columnDfn, "Item type", 80, SaxDbDfn_Core.ColumnIdx.ItemSport_ItemType, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemProcess.Column.ItemId:
|
||||
SetItemSportColDfn(columnDfn, "Item Id", 80, SaxDbDfn_Core.ColumnIdx.ItemSport_ItemId, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemProcess.Column.SportId:
|
||||
SetItemSportColDfn(columnDfn, "Sport Id", 80, SaxDbDfn_Core.ColumnIdx.ItemSport_SportId, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Sport properties.
|
||||
case SaxItemProcess.Column.Sport_Name:
|
||||
SetItemSportColDfn(columnDfn, "Sport", 120, SaxDbDfn_Core.ColumnIdx.Sport_Name, ColumnAlignment.Left, DataValue.DataType.String, aliasItemSport_Sport, prefixItemSport_Sport);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Derived properties.
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Common properties.
|
||||
case SaxItemProcess.Column.Notes:
|
||||
SetItemSportColDfn(columnDfn, "Notes", 240, SaxDbDfn_Core.ColumnIdx.ItemSport_Notes);
|
||||
break;
|
||||
case SaxItemProcess.Column.Flags:
|
||||
SetItemSportColDfn(columnDfn, "Flags", 60, SaxDbDfn_Core.ColumnIdx.ItemSport_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxItemProcess.Column.Status:
|
||||
SetItemSportColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.ItemSport_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxItemProcess.Column.Status_Desc:
|
||||
SetItemSportColDfn(columnDfn, "Status", 90, SaxDbDfn_Core.ColumnIdx.ItemSport_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxItemProcess.Column.Status_Ind:
|
||||
SetItemSportColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.ItemSport_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SaxItemProcess.Column.CreateOn_Date:
|
||||
SetItemSportColDfn(columnDfn, "Created", 80, SaxDbDfn_Core.ColumnIdx.ItemSport_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxItemProcess.Column.UpdateOn_Date:
|
||||
SetItemSportColDfn(columnDfn, "Updated", 80, SaxDbDfn_Core.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(SaxItemProcess.Params prm)
|
||||
{
|
||||
List<String> filter = new List<String>();
|
||||
|
||||
// Item Ids.
|
||||
String idsIncluded = prm.IdsIncluded.Concat(",");
|
||||
if (!idsIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemSport_Id, aliasItemSport) + " IN (" + idsIncluded + ")");
|
||||
String idsExcluded = prm.IdsExcluded.Concat(",");
|
||||
if (!idsExcluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.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;
|
||||
String itemIdFilter =
|
||||
SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemSport_ItemType, aliasItemSport) + "=" + itemId.Type +
|
||||
" AND " + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemSport_ItemId, aliasItemSport) + "=" + SysId.ToInt(itemId.Id);
|
||||
itemIdFilters.Add(itemIdFilter);
|
||||
}
|
||||
if (!itemIdFilters.IsEmpty())
|
||||
filter.Add(itemIdFilters.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
|
||||
// Sport Ids.
|
||||
String sportIdsIncluded = prm.SportIdsIncluded.Concat(",");
|
||||
if (!sportIdsIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemSport_SportId, aliasItemSport) + " IN (" + sportIdsIncluded + ")");
|
||||
|
||||
// Notes.
|
||||
if (!StringUtil.IsEmpty(prm.NotesPartial))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemSport_Notes, aliasItemSport) + " LIKE '%" + DbQuery.FormatForLike(prm.NotesPartial) + "%'");
|
||||
|
||||
// Status.
|
||||
if (prm.StatusCat != SaxItemProcess.StatusCat.Any)
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemSport_Status, aliasItemSport) + GetItemSportStatusCatFilterCondition(prm.StatusCat));
|
||||
|
||||
if (filter.Count < 1) filter.Add("1=1");
|
||||
return filter;
|
||||
}
|
||||
internal static String GetItemSportStatusCatFilterCondition(SaxItemProcess.StatusCat statusCat)
|
||||
{
|
||||
if (statusCat == SaxItemProcess.StatusCat.ActiveOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'";
|
||||
if (statusCat == SaxItemProcess.StatusCat.InactiveOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Inactive) + "'";
|
||||
if (statusCat == SaxItemProcess.StatusCat.NotDeleted)
|
||||
return "!='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
if (statusCat == SaxItemProcess.StatusCat.DeletedOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
return "";
|
||||
}
|
||||
// Item sort columns.
|
||||
public List<String> GetItemSportSortColumns(SaxItemProcess.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_Core.GetTableForColumn((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn_Core.TableIdx.ItemSport)
|
||||
{
|
||||
sortCol = SaxDbDfn_Core.GetColumnNameQual((SaxDbDfn_Core.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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemSport_Id, aliasItemSport) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item count.
|
||||
private long GetItemSportCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return CoreDatabase.GetRowCount(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ItemSport) + " As " + aliasItemSport, filter);
|
||||
}
|
||||
public override long GetItemSportCount(SaxItemProcess.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetItemSportCount(GetItemSportQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item list.
|
||||
public override List<SaxItemProcess> GetItemSportList(SaxItemProcess.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<SaxItemProcess> itemSports = new List<SaxItemProcess>();
|
||||
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.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)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return itemSports;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item query execution.
|
||||
public override DbResultSet ExecuteItemSportQuery(List<ColumnDfn> columns, SaxItemProcess.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(CoreDatabase.DbmsType);
|
||||
query.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.ItemSport), aliasItemSport);
|
||||
|
||||
// Add columns as defined in query list.
|
||||
if (columns.HasId(SaxItemProcess.Column.Id))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemSport_Id, aliasItemSport));
|
||||
if (columns.HasId(SaxItemProcess.Column.ItemType) || columns.HasId(SaxItemProcess.Column.ItemType_Code) || columns.HasId(SaxItemProcess.Column.ItemType_Desc))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemSport_ItemType, aliasItemSport));
|
||||
if (columns.HasId(SaxItemProcess.Column.ItemId))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemSport_ItemId, aliasItemSport));
|
||||
bool hasSportCols = (columns.HasId(SaxItemProcess.Column.Sport_Name));
|
||||
if (columns.HasId(SaxItemProcess.Column.SportId) || hasSportCols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemSport_SportId, aliasItemSport));
|
||||
// Common properties.
|
||||
if (columns.HasId(SaxItemProcess.Column.Notes))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemSport_Notes, aliasItemSport));
|
||||
if (columns.HasId(SaxItemProcess.Column.Flags))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemSport_Flags, aliasItemSport));
|
||||
if (columns.HasId(SaxItemProcess.Column.Status) || columns.HasId(SaxItemProcess.Column.Status_Desc) || columns.HasId(SaxItemProcess.Column.Status_Ind))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemSport_Status, aliasItemSport));
|
||||
if (columns.HasId(SaxItemProcess.Column.CreateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemSport_CreateOn, aliasItemSport));
|
||||
if (columns.HasId(SaxItemProcess.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemSport_UpdateOn, aliasItemSport));
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Sport.
|
||||
if (hasSportCols)
|
||||
{
|
||||
DbQueryJoin joinSport = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinSport.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Sport), aliasItemSport_Sport);
|
||||
joinSport.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_Id, aliasItemSport_Sport) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.ItemSport_SportId, aliasItemSport));
|
||||
query.Joins.Add(joinSport);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.Sport_Name);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasItemSport_Sport), prefixItemSport_Sport + SaxDbDfn_Core.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,28 @@
|
||||
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, SaxInternals internals) :
|
||||
base(sessionContext, internals)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,596 @@
|
||||
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;
|
||||
using Saxonite.Net.Standard.Dbas.Internal.Core;
|
||||
|
||||
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($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
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)
|
||||
{
|
||||
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($"{SysUtil.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)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidRegion(region)) return false;
|
||||
if (!SysId.IsValid(region.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!region.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.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 item.
|
||||
PopulateTo(dbRegion, region, dbUpdateInfo);
|
||||
dbRegion.ExecuteUpdateCommand(dbCommand);
|
||||
region.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.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)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!RegionCanBeDeleted(region)) return false;
|
||||
|
||||
// Regions are logically deleted by changing the status.
|
||||
region.Status = SaStatus.Deleted;
|
||||
return UpdateRegion(region, dbUpdateInfo);
|
||||
|
||||
/*
|
||||
* Physical deletion.
|
||||
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=" + region.Id.ToString());
|
||||
// Delete item.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Region) + " WHERE Id=" + SysId.ToString(region.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
region.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.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_Core.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SaxDbDfn_Core.GetTableForColumn(dbCol) == SaxDbDfn_Core.TableIdx.Region)
|
||||
alias = aliasRegion;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn_Core.GetColumnName(dbCol, false), SaxDbDfn_Core.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn_Core.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SaxDbDfn_Core.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_Core.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_Core.ColumnIdx.Region_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxRegion.Column.RegionType:
|
||||
SetRegionColDfn(columnDfn, "Type", 80, SaxDbDfn_Core.ColumnIdx.Region_RegionType, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxRegion.Column.RegionType_Desc:
|
||||
SetRegionColDfn(columnDfn, "Type", 100, SaxDbDfn_Core.ColumnIdx.Region_RegionType, ColumnAlignment.Center, DataValue.DataType.String);
|
||||
break;
|
||||
case SaxRegion.Column.CountryIso2Code:
|
||||
SetRegionColDfn(columnDfn, "ISO2", 60, SaxDbDfn_Core.ColumnIdx.Region_CountryIso2Code, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxRegion.Column.Name:
|
||||
SetRegionColDfn(columnDfn, "Name", 120, SaxDbDfn_Core.ColumnIdx.Region_Name);
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Parent Region.
|
||||
case SaxRegion.Column.RegionIdParent:
|
||||
SetRegionColDfn(columnDfn, "Parent Id", 80, SaxDbDfn_Core.ColumnIdx.Region_RegionIdParent, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxRegion.Column.Parent_RegionType:
|
||||
SetRegionColDfn(columnDfn, "Parent type", 80, SaxDbDfn_Core.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_Core.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_Core.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_Core.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_Core.ColumnIdx.Region_Notes);
|
||||
break;
|
||||
case SaxRegion.Column.Flags:
|
||||
SetRegionColDfn(columnDfn, "Flags", 60, SaxDbDfn_Core.ColumnIdx.Region_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxRegion.Column.Status:
|
||||
SetRegionColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.Region_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxRegion.Column.Status_Desc:
|
||||
SetRegionColDfn(columnDfn, "Status", 90, SaxDbDfn_Core.ColumnIdx.Region_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxRegion.Column.Status_Ind:
|
||||
SetRegionColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.Region_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SaxRegion.Column.CreateOn_Date:
|
||||
SetRegionColDfn(columnDfn, "Created", 80, SaxDbDfn_Core.ColumnIdx.Region_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxRegion.Column.UpdateOn_Date:
|
||||
SetRegionColDfn(columnDfn, "Updated", 80, SaxDbDfn_Core.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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_Id, aliasRegion) + " IN (" + idsIncluded + ")");
|
||||
String idsExcluded = prm.IdsExcluded.Concat(",");
|
||||
if (!idsExcluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_Id, aliasRegion) + " NOT IN (" + idsExcluded + ")");
|
||||
|
||||
// Parent Region Ids.
|
||||
String includedParentRegionIds = prm.ParentRegionIdsIncluded.Concat(",");
|
||||
if (!includedParentRegionIds.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_RegionIdParent, aliasRegion) + " IN (" + includedParentRegionIds + ")");
|
||||
|
||||
// Region type.
|
||||
if ((int)prm.RegionType > 0)
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_RegionType, aliasRegion) + "=" + (int)prm.RegionType);
|
||||
|
||||
// ISO 2 codes.
|
||||
if (!prm.CountryIso2CodesIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_CountryIso2Code, aliasRegion) + " IN (" + DbQuery.FormatForIn(prm.CountryIso2CodesIncluded, true, false) + ")");
|
||||
if (!prm.CountryIso2CodesExcluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_CountryIso2Code, aliasRegion) + " Like '%" + DbQuery.FormatForLike(filterWord, true) + "%'");
|
||||
regionFilter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_Name, aliasRegion) + " Like '%" + DbQuery.FormatForLike(filterWord, true) + "%'");
|
||||
filter.Add(regionFilter.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
}
|
||||
|
||||
// Name.
|
||||
if (!StringUtil.IsEmpty(prm.NameFull))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_Name, aliasRegion) + "='" + DbQuery.FormatForCondition(prm.NameFull) + "'");
|
||||
if (!StringUtil.IsEmpty(prm.NamePartial))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_Name, aliasRegion) + " Like '%" + DbQuery.FormatForLike(prm.NamePartial, true) + "%'");
|
||||
|
||||
// Notes.
|
||||
if (!StringUtil.IsEmpty(prm.NotesPartial))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_Notes, aliasRegion) + " LIKE '%" + DbQuery.FormatForLike(prm.NotesPartial) + "%'");
|
||||
|
||||
// Status.
|
||||
if (prm.StatusCat != SaxRegion.StatusCat.Any)
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_Status, aliasRegion) + GetRegionStatusCatFilterCondition(prm.StatusCat));
|
||||
|
||||
if (filter.Count < 1) filter.Add("1=1");
|
||||
return filter;
|
||||
}
|
||||
internal static String GetRegionStatusCatFilterCondition(SaxRegion.StatusCat statusCat)
|
||||
{
|
||||
if (statusCat == SaxRegion.StatusCat.ActiveOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'";
|
||||
if (statusCat == SaxRegion.StatusCat.InactiveOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Inactive) + "'";
|
||||
if (statusCat == SaxRegion.StatusCat.NotDeleted)
|
||||
return "!='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
if (statusCat == SaxRegion.StatusCat.DeletedOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
return "";
|
||||
}
|
||||
// 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_Core.GetTableForColumn((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn_Core.TableIdx.Region)
|
||||
{
|
||||
sortCol = SaxDbDfn_Core.GetColumnNameQual((SaxDbDfn_Core.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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_Id, aliasRegion) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item count.
|
||||
private long GetRegionCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return CoreDatabase.GetRowCount(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.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)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<SaxRegion> userReferences = new List<SaxRegion>();
|
||||
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.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)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
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_Core.GetTableName(SaxDbDfn_Core.TableIdx.Region), aliasRegion);
|
||||
|
||||
// Add columns as defined in query list.
|
||||
if (columns.HasId(SaxRegion.Column.Id))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_Id, aliasRegion));
|
||||
if (columns.HasId(SaxRegion.Column.RegionType) || columns.HasId(SaxRegion.Column.RegionType_Desc))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_RegionType, aliasRegion));
|
||||
if (columns.HasId(SaxRegion.Column.CountryIso2Code))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_CountryIso2Code, aliasRegion));
|
||||
if (columns.HasId(SaxRegion.Column.Name))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_RegionIdParent, aliasRegion));
|
||||
// Common properties.
|
||||
if (columns.HasId(SaxRegion.Column.Notes))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_Notes, aliasRegion));
|
||||
if (columns.HasId(SaxRegion.Column.Flags))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_Status, aliasRegion));
|
||||
if (columns.HasId(SaxRegion.Column.CreateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_CreateOn, aliasRegion));
|
||||
if (columns.HasId(SaxRegion.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_UpdateOn, aliasRegion));
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Parent Region.
|
||||
if (hasParentRegionCols)
|
||||
{
|
||||
DbQueryJoin joinParentRegion = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinParentRegion.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Region), aliasRegion_Parent);
|
||||
joinParentRegion.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_Id, aliasRegion_Parent) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_RegionIdParent, aliasRegion));
|
||||
query.Joins.Add(joinParentRegion);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.Region_RegionType);
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.Region_Name);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasRegion_Parent), prefixRegion_Parent + SaxDbDfn_Core.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_Core.GetTableName(SaxDbDfn_Core.TableIdx.Region), aliasCount);
|
||||
queryCount.Columns.Add("Count(*)");
|
||||
queryCount.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Region_RegionIdParent, aliasCount) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.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,574 @@
|
||||
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;
|
||||
using Saxonite.Net.Standard.Dbas.Internal.Core;
|
||||
|
||||
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($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
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)
|
||||
{
|
||||
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($"{SysUtil.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)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidSport(sport)) return false;
|
||||
if (!SysId.IsValid(sport.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!sport.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.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 item.
|
||||
PopulateTo(dbSport, sport, dbUpdateInfo);
|
||||
dbSport.ExecuteUpdateCommand(dbCommand);
|
||||
sport.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.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)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!SportCanBeDeleted(sport)) return false;
|
||||
|
||||
// Sports are logically deleted by changing the status.
|
||||
sport.Status = SaStatus.Deleted;
|
||||
return UpdateSport(sport, dbUpdateInfo);
|
||||
|
||||
/*
|
||||
* Physical deletion.
|
||||
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=" + sport.Id.ToString());
|
||||
// Delete item.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Sport) + " WHERE Id=" + SysId.ToString(sport.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
sport.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.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._Grouping = (short)sport.Grouping;
|
||||
dbSport._SportIdParent = SysId.ToInt(sport.SportIdParent);
|
||||
dbSport._Name = sport.Name;
|
||||
dbSport._SpecialityLabel = (short)sport.SpecialityLabel;
|
||||
// Common properties.
|
||||
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.Grouping = (Sax.SportGrouping)(dbSport._Grouping ?? (int)Sax.SportGrouping.Specific);
|
||||
sport.SportIdParent = new SysId(dbSport._SportIdParent ?? 0);
|
||||
sport.Name = dbSport._Name;
|
||||
sport.SpecialityLabel = (Sax.SportSpecialityLabel)(dbSport._SpecialityLabel ?? 0);
|
||||
// Common properties.
|
||||
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 = "Spt";
|
||||
private static readonly String aliasSport_Parent = "Spt_Prt";
|
||||
private static readonly String prefixSport_Parent = aliasSport_Parent + "_";
|
||||
//private static readonly String colSport_AssociatedData_Count = "UsrAct_AD_Count";
|
||||
private void SetSportColDfn
|
||||
(ColumnDfn col, String caption, int width, SaxDbDfn_Core.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SaxDbDfn_Core.GetTableForColumn(dbCol) == SaxDbDfn_Core.TableIdx.Sport)
|
||||
alias = aliasSport;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn_Core.GetColumnName(dbCol, false), SaxDbDfn_Core.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn_Core.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SaxDbDfn_Core.GetColTextLen(dbCol);
|
||||
}
|
||||
public override ColumnDfn GetSportColumnDfn(SaxSport.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
//-----------------------------------------------------------
|
||||
// Identification.
|
||||
case SaxSport.Column.Pos:
|
||||
SetSportColDfn(columnDfn, "Pos", 60, SaxDbDfn_Core.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_Core.ColumnIdx.Sport_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Properties.
|
||||
case SaxSport.Column.Grouping:
|
||||
SetSportColDfn(columnDfn, "Grouping", 80, SaxDbDfn_Core.ColumnIdx.Sport_Grouping, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxSport.Column.Grouping_Desc:
|
||||
SetSportColDfn(columnDfn, "Grouping", 100, SaxDbDfn_Core.ColumnIdx.Sport_Grouping, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxSport.Column.SportIdParent:
|
||||
SetSportColDfn(columnDfn, "Parent #", 60, SaxDbDfn_Core.ColumnIdx.Sport_SportIdParent, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxSport.Column.ParentSport_Name:
|
||||
SetSportColDfn(columnDfn, "Parent", 120, SaxDbDfn_Core.ColumnIdx.Sport_Name, ColumnAlignment.Center, DataValue.DataType.String, aliasSport_Parent, prefixSport_Parent);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxSport.Column.Name:
|
||||
SetSportColDfn(columnDfn, "Name", 120, SaxDbDfn_Core.ColumnIdx.Sport_Name);
|
||||
break;
|
||||
case SaxSport.Column.SpecialityLabel:
|
||||
SetSportColDfn(columnDfn, "Speciality label", 80, SaxDbDfn_Core.ColumnIdx.Sport_SpecialityLabel, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxSport.Column.SpecialityLabel_Desc:
|
||||
SetSportColDfn(columnDfn, "Speciality label", 100, SaxDbDfn_Core.ColumnIdx.Sport_SpecialityLabel, ColumnAlignment.Center);
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Derived properties.
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Common properties.
|
||||
case SaxSport.Column.Notes:
|
||||
SetSportColDfn(columnDfn, "Notes", 240, SaxDbDfn_Core.ColumnIdx.Sport_Notes);
|
||||
break;
|
||||
case SaxSport.Column.Flags:
|
||||
SetSportColDfn(columnDfn, "Flags", 60, SaxDbDfn_Core.ColumnIdx.Sport_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxSport.Column.Status:
|
||||
SetSportColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.Sport_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxSport.Column.Status_Desc:
|
||||
SetSportColDfn(columnDfn, "Status", 90, SaxDbDfn_Core.ColumnIdx.Sport_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxSport.Column.Status_Ind:
|
||||
SetSportColDfn(columnDfn, "Status", 80, SaxDbDfn_Core.ColumnIdx.Sport_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SaxSport.Column.CreateOn_Date:
|
||||
SetSportColDfn(columnDfn, "Created", 80, SaxDbDfn_Core.ColumnIdx.Sport_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxSport.Column.UpdateOn_Date:
|
||||
SetSportColDfn(columnDfn, "Updated", 80, SaxDbDfn_Core.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>();
|
||||
String colId = SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_Id, aliasSport);
|
||||
|
||||
// Item Ids.
|
||||
if (prm.IdsIncluded.HasValidIds())
|
||||
filter.Add($"{colId} IN ({prm.IdsIncluded.Concat(",")})");
|
||||
if (prm.IdsExcluded.HasValidIds())
|
||||
filter.Add($"{colId} NOT IN ({prm.IdsExcluded.Concat(",")})");
|
||||
|
||||
// Grouping.
|
||||
if (prm.SportGroupingCat != SaxSport.SportGroupingCat.Any)
|
||||
{
|
||||
String colGrouping = SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_Grouping, aliasSport);
|
||||
String isNullGrouping = $"IsNull({colGrouping},{(int)Sax.SportGrouping.Specific})";
|
||||
if (prm.SportGroupingCat == SaxSport.SportGroupingCat.Specific)
|
||||
filter.Add($"{isNullGrouping} IN ({(int)Sax.SportGrouping.Specific})");
|
||||
else if (prm.SportGroupingCat == SaxSport.SportGroupingCat.Banner)
|
||||
filter.Add($"{isNullGrouping} IN ({(int)Sax.SportGrouping.Banner})");
|
||||
else if (prm.SportGroupingCat == SaxSport.SportGroupingCat.BannerOrSpecific)
|
||||
filter.Add($"{isNullGrouping} IN ({(int)Sax.SportGrouping.Specific},{(int)Sax.SportGrouping.Banner})");
|
||||
else if (prm.SportGroupingCat == SaxSport.SportGroupingCat.Group)
|
||||
filter.Add($"{isNullGrouping} IN ({(int)Sax.SportGrouping.Group})");
|
||||
}
|
||||
|
||||
// Parent Sport.
|
||||
if (SysId.IsValid(prm.SportIdParent))
|
||||
filter.Add($"{SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_SportIdParent, aliasSport)}={prm.SportIdParent.ToLong()}");
|
||||
|
||||
// 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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_Name, aliasSport) + " Like '%" + DbQuery.FormatForLike(filterWord, true) + "%'");
|
||||
filter.Add(sportFilter.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
}
|
||||
|
||||
// Name.
|
||||
if (!StringUtil.IsEmpty(prm.NameFull))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_Name, aliasSport) + "='" + DbQuery.FormatForCondition(prm.NameFull) + "'");
|
||||
if (!StringUtil.IsEmpty(prm.NamePartial))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_Name, aliasSport) + " Like '%" + DbQuery.FormatForLike(prm.NamePartial, true) + "%'");
|
||||
|
||||
// Notes.
|
||||
if (!StringUtil.IsEmpty(prm.NotesPartial))
|
||||
filter.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_Notes, aliasSport) + " LIKE '%" + DbQuery.FormatForLike(prm.NotesPartial) + "%'");
|
||||
|
||||
// Status.
|
||||
if (prm.StatusCat != SaxSport.StatusCat.Any)
|
||||
filter.Add($"{SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_Status, aliasSport)} {GetSportStatusCatFilterCondition(prm.StatusCat)}");
|
||||
|
||||
if (filter.Count < 1) filter.Add("1=1");
|
||||
return filter;
|
||||
}
|
||||
internal static String GetSportStatusCatFilterCondition(SaxSport.StatusCat statusCat)
|
||||
{
|
||||
if (statusCat == SaxSport.StatusCat.ActiveOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Active) + "'";
|
||||
if (statusCat == SaxSport.StatusCat.InactiveOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Inactive) + "'";
|
||||
if (statusCat == SaxSport.StatusCat.NotDeleted)
|
||||
return "!='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
if (statusCat == SaxSport.StatusCat.DeletedOnly)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
return "";
|
||||
}
|
||||
// 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_Core.GetTableForColumn((SaxDbDfn_Core.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn_Core.TableIdx.Sport)
|
||||
{
|
||||
sortCol = SaxDbDfn_Core.GetColumnNameQual((SaxDbDfn_Core.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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_Id, aliasSport) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item count.
|
||||
private long GetSportCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return CoreDatabase.GetRowCount(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.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)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<SaxSport> userReferences = new List<SaxSport>();
|
||||
DbQuery qry = new DbQuery(CoreDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.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)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
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_Core.GetTableName(SaxDbDfn_Core.TableIdx.Sport), aliasSport);
|
||||
|
||||
// Add columns as defined in query list.
|
||||
if (columns.HasId(SaxSport.Column.Id))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_Id, aliasSport));
|
||||
if (columns.HasId(SaxSport.Column.Grouping) || columns.HasId(SaxSport.Column.Grouping_Desc))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_Grouping, aliasSport));
|
||||
if (columns.HasId(SaxSport.Column.SportIdParent))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_SportIdParent, aliasSport));
|
||||
if (columns.HasId(SaxSport.Column.Name))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_Name, aliasSport));
|
||||
if (columns.HasId(SaxSport.Column.SpecialityLabel) || columns.HasId(SaxSport.Column.SpecialityLabel_Desc))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_SpecialityLabel, aliasSport));
|
||||
// Common properties.
|
||||
if (columns.HasId(SaxSport.Column.Notes))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_Notes, aliasSport));
|
||||
if (columns.HasId(SaxSport.Column.Flags))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.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_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_Status, aliasSport));
|
||||
if (columns.HasId(SaxSport.Column.CreateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_CreateOn, aliasSport));
|
||||
if (columns.HasId(SaxSport.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_UpdateOn, aliasSport));
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Parent Sport.
|
||||
if (columns.HasId(SaxSport.Column.ParentSport_Name))
|
||||
{
|
||||
DbQueryJoin joinSport = new DbQueryJoin(DbJoinType.LeftOuter);
|
||||
joinSport.Table = new StringPair(SaxDbDfn_Core.GetTableName(SaxDbDfn_Core.TableIdx.Sport), aliasSport_Parent);
|
||||
joinSport.Filters.Add(SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_Id, aliasSport_Parent) + "=" + SaxDbDfn_Core.GetColumnNameQual(SaxDbDfn_Core.ColumnIdx.Sport_SportIdParent, aliasSport));
|
||||
query.Joins.Add(joinSport);
|
||||
List<SaxDbDfn_Core.ColumnIdx> cols = new List<SaxDbDfn_Core.ColumnIdx>();
|
||||
cols.Add(SaxDbDfn_Core.ColumnIdx.Sport_Name);
|
||||
foreach (var col in cols)
|
||||
query.Columns.Add(SaxDbDfn_Core.GetColumnNameQual(col, aliasSport_Parent), prefixSport_Parent + SaxDbDfn_Core.GetColumnName(col, false));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetSportQueryFilter(prm));
|
||||
|
||||
if (prm.IdsIncluded.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,30 @@
|
||||
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, SaxInternals internals) :
|
||||
base (sessionContext, internals)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,562 @@
|
||||
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 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;
|
||||
using Saxonite.Net.Standard.Dbas.Internal.Core;
|
||||
using Saxonite.Net.Standard.Base.Bus.Support;
|
||||
using Saxonite.Net.Standard.Dbas.Bus.Support;
|
||||
using Saxonite.Net.Standard.Dbas.Internal.Support;
|
||||
|
||||
namespace Saxonite.Net.Standard.Dbas.Mgr.Support
|
||||
{
|
||||
//=======================================================================
|
||||
partial class SaxSupportMgr_Dbas
|
||||
{
|
||||
//*******************************************************************
|
||||
// Support Mgr - User Report
|
||||
//*******************************************************************
|
||||
// Utilities.
|
||||
private List<StringPair> GetLogProperties(SaxUserReport userReport)
|
||||
{
|
||||
return new List<StringPair>()
|
||||
{
|
||||
new StringPair("Id",SysId.ToString(userReport.Id)),
|
||||
new StringPair("UserAccountId",SysId.ToString(userReport.UserAccountId)),
|
||||
new StringPair("ReportType",userReport.ReportType.ToString()),
|
||||
new StringPair("Status",userReport.StatusCode)
|
||||
};
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create item.
|
||||
public override SaxUserReport CreateUserReport(SysId userAccountId)
|
||||
{
|
||||
ClearErrorState();
|
||||
return new SaxUserReport_Dbas(SupportDatabase, null, userAccountId, 0);
|
||||
}
|
||||
private SaxUserReport_Dbas CreateUserReport(UserReport_Db dbUserReport)
|
||||
{
|
||||
ClearErrorState();
|
||||
SaxUserReport_Dbas userReport = new SaxUserReport_Dbas(SupportDatabase, new SysId(dbUserReport._Id), new SysId(dbUserReport._UserAccountId), (ushort)dbUserReport._Flags);
|
||||
PopulateFrom(dbUserReport, userReport);
|
||||
return userReport;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Get item.
|
||||
public override SaxUserReport GetUserReport(SaxUserReport.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetUserReport(GetUserReportQueryFilter(prm).Concat(" And ", "(", ")"));
|
||||
}
|
||||
private SaxUserReport GetUserReport(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
long count = GetUserReportCount(filter);
|
||||
if (count == 0) return null;
|
||||
if (count != 1)
|
||||
{
|
||||
SetErrorState("Multiple items found");
|
||||
return null;
|
||||
}
|
||||
SaxUserReport userReport = null;
|
||||
// Query data.
|
||||
using (var dbConnection = SupportDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
UserReport_Db dbUserReport = new UserReport_Db(SupportDbInfo);
|
||||
dbUserReport.PopulateFrom(dbCommand, aliasUserReport, filter);
|
||||
userReport = CreateUserReport(dbUserReport);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return userReport;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate item.
|
||||
public override bool IsValidUserReportData(SaxUserReport.Data data, SaxUserReport.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.IsValidUserReportData(data, errField)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Insert item.
|
||||
public override bool InsertUserReport(SaxUserReport userReport, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidUserReport(userReport)) return false;
|
||||
if (SysId.IsValid(userReport.Id)) return SetErrorState(ErrorMessage.ValidItemId);
|
||||
using (var dbConnection = SupportDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
UserReport_Db dbUserReport = new UserReport_Db(SupportDbInfo);
|
||||
PopulateTo(dbUserReport, userReport, dbUpdateInfo);
|
||||
if (UserReport_Db.FieldsNonId.Contains("Id"))
|
||||
{
|
||||
// Generate next Id.
|
||||
dbUserReport._Id = SupportDatabase.GetNextIdFromTable("UserReport");
|
||||
}
|
||||
dbUserReport.ExecuteInsertCommand(dbCommand);
|
||||
userReport.Id = new SysId(dbUserReport._Id);
|
||||
userReport.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Inserted.{GetLogProperties(userReport).Concat(": ").Concat("", "\n\t")}");
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update item.
|
||||
public override bool UpdateUserReport(SaxUserReport userReport, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!IsValidUserReport(userReport)) return false;
|
||||
if (!SysId.IsValid(userReport.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
|
||||
if (!userReport.Changed)
|
||||
{
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Data not changed.{GetLogProperties(userReport).Concat(": ").Concat("", "\n\t")}");
|
||||
return true;
|
||||
}
|
||||
using (var dbConnection = SupportDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
UserReport_Db dbUserReport = new UserReport_Db(SupportDbInfo);
|
||||
dbUserReport.PopulateFrom(dbCommand, aliasUserReport, "Id=" + SysId.ToString(userReport.Id));
|
||||
// ToDo SaxUpdateLogItemMonitor_UserReport updateLogMonitor = new SaxUpdateLogItemMonitor_UserReport(SessionContext, CreateUserReport(dbUserReport), dbUpdateInfo);
|
||||
// Update item.
|
||||
PopulateTo(dbUserReport, userReport, dbUpdateInfo);
|
||||
dbUserReport.ExecuteUpdateCommand(dbCommand);
|
||||
userReport.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Updated.{GetLogProperties(userReport).Concat(": ").Concat("", "\n\t")}");
|
||||
// Record updates.
|
||||
// ToDo updateLogMonitor.RecordUpdatedValues(userReport);
|
||||
// ToDo updateLogMonitor.LogUpdates();
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete item.
|
||||
public override bool UserReportCanBeDeleted(SaxUserReport userReport)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!base.UserReportCanBeDeleted(userReport)) return false;
|
||||
return true;
|
||||
}
|
||||
public override bool DeleteUserReport(SaxUserReport userReport, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (!UserReportCanBeDeleted(userReport)) return false;
|
||||
|
||||
// User Roles are logically deleted by changing the status.
|
||||
userReport.Status = SaStatus.Deleted;
|
||||
return UpdateUserReport(userReport, dbUpdateInfo);
|
||||
|
||||
/*
|
||||
* Physical deletion.
|
||||
using (var dbConnection = SupportDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve item.
|
||||
dbConnection.Open();
|
||||
UserReport_Db dbUserReport = new UserReport_Db(SupportDbInfo);
|
||||
dbUserReport.PopulateFrom(dbCommand, aliasUserReport, "Id=" + userReport.Id.ToString());
|
||||
// Delete item.
|
||||
dbCommand.CommandType = System.Data.CommandType.Text;
|
||||
dbCommand.CommandText = "DELETE FROM " + SaxDbDfn_Support.GetTableName(SaxDbDfn_Support.TableIdx.UserReport) + " WHERE Id=" + SysId.ToString(userReport.Id) + ";";
|
||||
dbCommand.ExecuteNonQuery();
|
||||
userReport.Changed = false;
|
||||
if (DebugMode) SaLogger.Debug($"{SysUtil.Fn} Deleted. " + GetLogProperties(userReport).Concat(": ").Concat("", "\n\t"));
|
||||
}
|
||||
catch (Exception exc) { SetErrorState(exc.Message); }
|
||||
}
|
||||
return !HasErrorState();
|
||||
*/
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Copy data properties to and from database.
|
||||
private void PopulateTo(UserReport_Db dbUserReport, SaxUserReport userReport, DbUpdateInfo dbUpdateInfo)
|
||||
{
|
||||
dbUserReport._Id = SysId.ToLong(userReport.Id);
|
||||
dbUserReport._UserAccountId = SysId.ToInt(userReport.UserAccountId);
|
||||
dbUserReport._ReportType = (short)userReport.ReportType;
|
||||
dbUserReport._Title = userReport.Title;
|
||||
dbUserReport._Report = userReport.Report;
|
||||
dbUserReport._ReportData = userReport.ReportData;
|
||||
dbUserReport._RecordedOn = userReport.RecordedOn;
|
||||
// Common.
|
||||
dbUserReport._Notes = userReport.Notes;
|
||||
dbUserReport._Status = SacsSystem.GetStatusCode(userReport.Status);
|
||||
dbUserReport._Flags = (short)userReport.Flags;
|
||||
if (!SysId.IsValid(userReport.Id))
|
||||
{
|
||||
dbUserReport._CreateOn = DateTime.Now;
|
||||
dbUserReport._CreateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbUserReport._CreateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
dbUserReport._UpdateOn = DateTime.Now;
|
||||
dbUserReport._UpdateBy = dbUpdateInfo.UserId.ToInt();
|
||||
dbUserReport._UpdateHost = dbUpdateInfo.Host;
|
||||
}
|
||||
private void PopulateFrom(UserReport_Db dbUserReport, SaxUserReport userReport)
|
||||
{
|
||||
//userReport.Id = new SysId(dbUserReport._Id);
|
||||
//userReport.UserAccountId = new SysId(dbUserReport._UserAccountId);
|
||||
userReport.ReportType = (Sax.UserReportType)dbUserReport._ReportType;
|
||||
userReport.Title = dbUserReport._Title;
|
||||
userReport.Report = dbUserReport._Report;
|
||||
userReport.ReportData = dbUserReport._ReportData;
|
||||
userReport.RecordedOn = dbUserReport._RecordedOn;
|
||||
// Common.
|
||||
userReport.Notes = dbUserReport._Notes;
|
||||
userReport.Status = SacsSystem.GetStatusForCode(dbUserReport._Status);
|
||||
userReport.SetCreateStamp(dbUserReport._CreateOn, new SysId(dbUserReport._CreateBy), dbUserReport._CreateHost);
|
||||
userReport.SetUpdateStamp(dbUserReport._UpdateOn, new SysId(dbUserReport._UpdateBy), dbUserReport._UpdateHost);
|
||||
userReport.AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item column definitions.
|
||||
private static readonly String aliasUserReport = "UsrRpt";
|
||||
private static readonly String aliasUserReport_UserAccount = "UsrRpt_Usr";
|
||||
private static readonly String prefixUserReport_UserAccount = aliasUserReport_UserAccount + "_";
|
||||
private void SetUserReportColDfn
|
||||
(ColumnDfn col, String caption, int width, SaxDbDfn_Support.ColumnIdx dbCol,
|
||||
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
|
||||
String alias = "", String prefix = "")
|
||||
{
|
||||
if (String.IsNullOrEmpty(alias) && SaxDbDfn_Support.GetTableForColumn(dbCol) == SaxDbDfn_Support.TableIdx.UserReport)
|
||||
alias = aliasUserReport;
|
||||
col.Set(caption, width, (int)dbCol, prefix + SaxDbDfn_Support.GetColumnName(dbCol, false), SaxDbDfn_Support.GetColumnNameQual(dbCol, alias), dataType, align);
|
||||
if (dataType == DataValue.DataType.String && dbCol != SaxDbDfn_Support.ColumnIdx.Unknown)
|
||||
col.MaxLength = (int)SaxDbDfn_Support.GetColTextLen(dbCol);
|
||||
}
|
||||
public override ColumnDfn GetUserReportColumnDfn(SaxUserReport.Column columnId, string caption = "", int width = 0)
|
||||
{
|
||||
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
|
||||
switch (columnId)
|
||||
{
|
||||
//-----------------------------------------------------------
|
||||
case SaxUserReport.Column.Pos:
|
||||
SetUserReportColDfn(columnDfn, "Pos", 60, SaxDbDfn_Support.ColumnIdx.Unknown, ColumnAlignment.Right);
|
||||
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
|
||||
columnDfn.ReadOnly = true;
|
||||
columnDfn.Resizable = false;
|
||||
break;
|
||||
case SaxUserReport.Column.UserAccountId:
|
||||
SetUserReportColDfn(columnDfn, "User Id", 80, SaxDbDfn_Support.ColumnIdx.UserReport_UserAccountId, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserReport.Column.Id:
|
||||
SetUserReportColDfn(columnDfn, "Id", 80, SaxDbDfn_Support.ColumnIdx.UserReport_Id, ColumnAlignment.Right, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-------------------------------------------------------
|
||||
case SaxUserReport.Column.ReportType:
|
||||
SetUserReportColDfn(columnDfn, "Type", 80, SaxDbDfn_Support.ColumnIdx.UserReport_ReportType, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserReport.Column.ReportType_Desc:
|
||||
SetUserReportColDfn(columnDfn, "Type", 120, SaxDbDfn_Support.ColumnIdx.UserReport_ReportType, ColumnAlignment.Center);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserReport.Column.Title:
|
||||
SetUserReportColDfn(columnDfn, "Title", 120, SaxDbDfn_Support.ColumnIdx.UserReport_Title);
|
||||
break;
|
||||
case SaxUserReport.Column.Report:
|
||||
SetUserReportColDfn(columnDfn, "Report", 120, SaxDbDfn_Support.ColumnIdx.UserReport_Report);
|
||||
break;
|
||||
case SaxUserReport.Column.RecordedOn:
|
||||
SetUserReportColDfn(columnDfn, "Recorded", 100, SaxDbDfn_Support.ColumnIdx.UserReport_RecordedOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Derived properties.
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Common properties.
|
||||
case SaxUserReport.Column.Notes:
|
||||
SetUserReportColDfn(columnDfn, "Notes", 240, SaxDbDfn_Support.ColumnIdx.UserReport_Notes);
|
||||
break;
|
||||
case SaxUserReport.Column.Flags:
|
||||
SetUserReportColDfn(columnDfn, "Flags", 60, SaxDbDfn_Support.ColumnIdx.UserReport_Flags, ColumnAlignment.Center, DataValue.DataType.Long);
|
||||
break;
|
||||
case SaxUserReport.Column.Status:
|
||||
SetUserReportColDfn(columnDfn, "Status", 80, SaxDbDfn_Support.ColumnIdx.UserReport_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxUserReport.Column.Status_Desc:
|
||||
SetUserReportColDfn(columnDfn, "Status", 90, SaxDbDfn_Support.ColumnIdx.UserReport_Status, ColumnAlignment.Center);
|
||||
break;
|
||||
case SaxUserReport.Column.Status_Ind:
|
||||
SetUserReportColDfn(columnDfn, "Status", 80, SaxDbDfn_Support.ColumnIdx.UserReport_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
|
||||
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
|
||||
break;
|
||||
case SaxUserReport.Column.CreateOn_Date:
|
||||
SetUserReportColDfn(columnDfn, "Created", 80, SaxDbDfn_Support.ColumnIdx.UserReport_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
|
||||
columnDfn.ReadOnly = true;
|
||||
break;
|
||||
case SaxUserReport.Column.UpdateOn_Date:
|
||||
SetUserReportColDfn(columnDfn, "Updated", 80, SaxDbDfn_Support.ColumnIdx.UserReport_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> GetUserReportQueryFilter(SaxUserReport.Params prm)
|
||||
{
|
||||
List<String> filter = new List<String>();
|
||||
|
||||
// Item Ids.
|
||||
String idsIncluded = prm.IdsIncluded.Concat(",");
|
||||
if (!idsIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Support.GetColumnNameQual(SaxDbDfn_Support.ColumnIdx.UserReport_Id, aliasUserReport) + " IN (" + idsIncluded + ")");
|
||||
String idsExcluded = prm.IdsExcluded.Concat(",");
|
||||
if (!idsExcluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Support.GetColumnNameQual(SaxDbDfn_Support.ColumnIdx.UserReport_Id, aliasUserReport) + " NOT IN (" + idsExcluded + ")");
|
||||
|
||||
// User accounts.
|
||||
String userAccountIdsIncluded = prm.UserAccountIdsIncluded.Concat(",");
|
||||
if (!userAccountIdsIncluded.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Support.GetColumnNameQual(SaxDbDfn_Support.ColumnIdx.UserReport_UserAccountId, aliasUserReport) + " IN (" + userAccountIdsIncluded + ")");
|
||||
|
||||
// Report Types.
|
||||
String reportTypes = prm.ReportTypesIncluded.Select(item => ((int)item).ToString()).Concat(",", "'", "'", true, true);
|
||||
if (!reportTypes.IsEmpty())
|
||||
filter.Add(SaxDbDfn_Support.GetColumnNameQual(SaxDbDfn_Support.ColumnIdx.UserReport_ReportType, aliasUserReport) + " IN (" + reportTypes + ")");
|
||||
|
||||
if (!StringUtil.IsBlank(prm.UserReportFilter))
|
||||
{
|
||||
// Split filter into words.
|
||||
List<String> filterWords = prm.UserReportFilter.Split((char[])null).ToList();
|
||||
filterWords.RemoveDuplicatesCI();
|
||||
filterWords.RemoveBlanks();
|
||||
foreach (String filterWord in filterWords)
|
||||
{
|
||||
List<String> articleFilter = new List<String>();
|
||||
articleFilter.Add(SaxDbDfn_Support.GetColumnNameQual(SaxDbDfn_Support.ColumnIdx.UserReport_Title, aliasUserReport) + " Like '%" + DbQuery.FormatForLike(filterWord, true) + "%'");
|
||||
articleFilter.Add(SaxDbDfn_Support.GetColumnNameQual(SaxDbDfn_Support.ColumnIdx.UserReport_Report, aliasUserReport) + " Like '%" + DbQuery.FormatForLike(filterWord, true) + "%'");
|
||||
filter.Add(articleFilter.Concat(" OR ", "(", ")"));
|
||||
}
|
||||
}
|
||||
|
||||
// Title.
|
||||
if (!StringUtil.IsEmpty(prm.TitlePartial))
|
||||
filter.Add(SaxDbDfn_Support.GetColumnNameQual(SaxDbDfn_Support.ColumnIdx.UserReport_Title, aliasUserReport) + " LIKE '%" + DbQuery.FormatForLike(prm.TitlePartial) + "%'");
|
||||
|
||||
// Report.
|
||||
if (!StringUtil.IsEmpty(prm.ReportPartial))
|
||||
filter.Add(SaxDbDfn_Support.GetColumnNameQual(SaxDbDfn_Support.ColumnIdx.UserReport_Report, aliasUserReport) + " LIKE '%" + DbQuery.FormatForLike(prm.ReportPartial) + "%'");
|
||||
|
||||
// Notes.
|
||||
if (!StringUtil.IsEmpty(prm.NotesPartial))
|
||||
filter.Add(SaxDbDfn_Support.GetColumnNameQual(SaxDbDfn_Support.ColumnIdx.UserReport_Notes, aliasUserReport) + " LIKE '%" + DbQuery.FormatForLike(prm.NotesPartial) + "%'");
|
||||
|
||||
// Status.
|
||||
if (prm.StatusCat != SaxUserReport.StatusCat.Any)
|
||||
filter.Add(SaxDbDfn_Support.GetColumnNameQual(SaxDbDfn_Support.ColumnIdx.UserReport_Status, aliasUserReport) + GetUserReportStatusCatFilterCondition(prm.StatusCat));
|
||||
|
||||
if (filter.Count < 1) filter.Add("1=1");
|
||||
return filter;
|
||||
}
|
||||
internal static String GetUserReportStatusCatFilterCondition(SaxUserReport.StatusCat statusCat)
|
||||
{
|
||||
if (statusCat == SaxUserReport.StatusCat.Preparation)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Preparation) + "'";
|
||||
if (statusCat == SaxUserReport.StatusCat.Open)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.InProgress) + "'";
|
||||
if (statusCat == SaxUserReport.StatusCat.Completed)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Completed) + "'";
|
||||
if (statusCat == SaxUserReport.StatusCat.Cancelled)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Cancelled) + "'";
|
||||
if (statusCat == SaxUserReport.StatusCat.Closed)
|
||||
return " IN ('" + SacsSystem.GetStatusCode(SaStatus.Completed) + "','" + SacsSystem.GetStatusCode(SaStatus.Cancelled) + "')";
|
||||
if (statusCat == SaxUserReport.StatusCat.NotDeleted)
|
||||
return "!='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
if (statusCat == SaxUserReport.StatusCat.Deleted)
|
||||
return "='" + SacsSystem.GetStatusCode(SaStatus.Deleted) + "'";
|
||||
return "";
|
||||
}
|
||||
// Item sort columns.
|
||||
public List<String> GetUserReportSortColumns(SaxUserReport.Params prm)
|
||||
{
|
||||
// Sort sequence:
|
||||
List<String> sortColumnNames = new List<String>();
|
||||
foreach (var columnDfn in prm.SortColumns)
|
||||
{
|
||||
// Need to ensure correct alias used for UserReport columns in case of conflict.
|
||||
String sortCol = String.Empty;
|
||||
if (SaxDbDfn_Support.GetTableForColumn((SaxDbDfn_Support.ColumnIdx)columnDfn.DbColumn) == SaxDbDfn_Support.TableIdx.UserReport)
|
||||
{
|
||||
sortCol = SaxDbDfn_Support.GetColumnNameQual((SaxDbDfn_Support.ColumnIdx)columnDfn.DbColumn, aliasUserReport);
|
||||
}
|
||||
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_Support.GetColumnNameQual(SaxDbDfn_Support.ColumnIdx.UserReport_Id, aliasUserReport) + " ASC");
|
||||
}
|
||||
return sortColumnNames;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item count.
|
||||
private long GetUserReportCount(String filter)
|
||||
{
|
||||
ClearErrorState();
|
||||
return SupportDatabase.GetRowCount(SaxDbDfn_Support.GetTableName(SaxDbDfn_Support.TableIdx.UserReport) + " As " + aliasUserReport, filter);
|
||||
}
|
||||
public override long GetUserReportCount(SaxUserReport.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
return GetUserReportCount(GetUserReportQueryFilter(prm).Concat(" AND ", "(", ")"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item list.
|
||||
public override List<SaxUserReport> GetUserReportList(SaxUserReport.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
List<SaxUserReport> userRoles = new List<SaxUserReport>();
|
||||
DbQuery qry = new DbQuery(SupportDatabase.DbmsType);
|
||||
qry.Tables.Add(SaxDbDfn_Support.GetTableName(SaxDbDfn_Support.TableIdx.UserReport), aliasUserReport);
|
||||
UserReport_Db dbUserReport = new UserReport_Db(SupportDbInfo);
|
||||
qry.Columns.AddRange(dbUserReport.ExistingColumnNames);
|
||||
qry.Filters.AddRange(GetUserReportQueryFilter(prm));
|
||||
qry.OrderBy.AddRange(GetUserReportSortColumns(prm));
|
||||
// Query data.
|
||||
using (var dbConnection = SupportDatabase.CreateConnection())
|
||||
using (var dbCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
dbConnection.Open();
|
||||
dbCommand.CommandText = qry.BuildQuery(prm.ResultsPaging);
|
||||
using (DbDataReader dbDataReader = dbCommand.ExecuteReader())
|
||||
{
|
||||
while (dbDataReader.Read())
|
||||
{
|
||||
dbUserReport = new UserReport_Db(SupportDbInfo);
|
||||
dbUserReport.PopulateFrom(dbDataReader);
|
||||
userRoles.Add(CreateUserReport(dbUserReport));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
SetErrorState("Database query exception");
|
||||
SaLogger.Warn($"{SysUtil.Fn}\n\tQuery: {dbCommand.CommandText}\n\t{ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||
}
|
||||
}
|
||||
return userRoles;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item query execution.
|
||||
public override DbResultSet ExecuteUserReportQuery(List<ColumnDfn> columns, SaxUserReport.Params prm)
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Construct query.
|
||||
DbQuery query = new DbQuery(SupportDatabase.DbmsType);
|
||||
query.Tables.Add(SaxDbDfn_Support.GetTableName(SaxDbDfn_Support.TableIdx.UserReport), aliasUserReport);
|
||||
|
||||
// Add columns as defined in query list.
|
||||
if (columns.HasId(SaxUserReport.Column.Id))
|
||||
query.Columns.Add(SaxDbDfn_Support.GetColumnNameQual(SaxDbDfn_Support.ColumnIdx.UserReport_Id, aliasUserReport));
|
||||
if (columns.HasId(SaxUserReport.Column.UserAccountId))
|
||||
query.Columns.Add(SaxDbDfn_Support.GetColumnNameQual(SaxDbDfn_Support.ColumnIdx.UserReport_UserAccountId, aliasUserReport));
|
||||
if (columns.HasId(SaxUserReport.Column.ReportType) || columns.HasId(SaxUserReport.Column.ReportType_Desc))
|
||||
query.Columns.Add(SaxDbDfn_Support.GetColumnNameQual(SaxDbDfn_Support.ColumnIdx.UserReport_ReportType, aliasUserReport));
|
||||
if (columns.HasId(SaxUserReport.Column.Title))
|
||||
query.Columns.Add(SaxDbDfn_Support.GetColumnNameQual(SaxDbDfn_Support.ColumnIdx.UserReport_Title, aliasUserReport));
|
||||
if (columns.HasId(SaxUserReport.Column.Report))
|
||||
query.Columns.Add(SaxDbDfn_Support.GetColumnNameQual(SaxDbDfn_Support.ColumnIdx.UserReport_Report, aliasUserReport));
|
||||
if (columns.HasId(SaxUserReport.Column.RecordedOn))
|
||||
query.Columns.Add(SaxDbDfn_Support.GetColumnNameQual(SaxDbDfn_Support.ColumnIdx.UserReport_RecordedOn, aliasUserReport));
|
||||
// Common properties.
|
||||
if (columns.HasId(SaxUserReport.Column.Notes))
|
||||
query.Columns.Add(SaxDbDfn_Support.GetColumnNameQual(SaxDbDfn_Support.ColumnIdx.UserReport_Notes, aliasUserReport));
|
||||
if (columns.HasId(SaxUserReport.Column.Flags))
|
||||
query.Columns.Add(SaxDbDfn_Support.GetColumnNameQual(SaxDbDfn_Support.ColumnIdx.UserReport_Flags, aliasUserReport));
|
||||
if (columns.HasId(SaxUserReport.Column.Status) || columns.HasId(SaxUserReport.Column.Status_Desc) || columns.HasId(SaxUserReport.Column.Status_Ind))
|
||||
query.Columns.Add(SaxDbDfn_Support.GetColumnNameQual(SaxDbDfn_Support.ColumnIdx.UserReport_Status, aliasUserReport));
|
||||
if (columns.HasId(SaxUserReport.Column.CreateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Support.GetColumnNameQual(SaxDbDfn_Support.ColumnIdx.UserReport_CreateOn, aliasUserReport));
|
||||
if (columns.HasId(SaxUserReport.Column.UpdateOn_Date))
|
||||
query.Columns.Add(SaxDbDfn_Support.GetColumnNameQual(SaxDbDfn_Support.ColumnIdx.UserReport_UpdateOn, aliasUserReport));
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// Populate filter.
|
||||
query.Filters.AddRange(GetUserReportQueryFilter(prm));
|
||||
|
||||
if (prm.IdsIncluded.Count != 1)
|
||||
{
|
||||
// Configure sort sequence.
|
||||
foreach (String sortColumn in GetUserReportSortColumns(prm))
|
||||
query.OrderBy.Add(sortColumn);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
//return new DbResultSet_DataTableReader(db, query.BuildQuery(prm.ResultsPaging));
|
||||
return DbResultSet_DataReader.ExecuteQuery(SupportDatabase, query.BuildQuery(prm.ResultsPaging));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
using Saxonite.Net.Standard.Base.App;
|
||||
using Saxonite.Net.Standard.Base.Mgr.Support;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Saxonite.Net.Standard.Dbas.Mgr.Support
|
||||
{
|
||||
//=======================================================================
|
||||
public partial class SaxSupportMgr_Dbas : SaxSupportMgr
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SaxSupportMgr_Dbas(SaxSessionContext sessionContext, SaxInternals internals) :
|
||||
base (sessionContext, internals)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
Reference in New Issue
Block a user