79 lines
3.0 KiB
C#
79 lines
3.0 KiB
C#
using Sarand.BusinessMgr.Net.Standard.Base.Consoles;
|
|
using Sarand.BusinessMgr.Net.Standard.Base.Core;
|
|
using Sarand.Net.Standard.Base.Core;
|
|
using Sarand.Net.Standard.Base.Dbas;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Threading;
|
|
|
|
namespace Sarand.BusinessMgr.Net.Standard.Base.App
|
|
{
|
|
//=======================================================================
|
|
public abstract class SbmApplication : SacsDisposable
|
|
{
|
|
//-------------------------------------------------------------------
|
|
// Data members.
|
|
private readonly PropertySet properties;
|
|
|
|
//-------------------------------------------------------------------
|
|
// Construction.
|
|
protected SbmApplication(PropertySet properties)
|
|
{
|
|
SbmGlobals.Application = this;
|
|
this.properties = properties;
|
|
}
|
|
protected override void Dispose(bool disposing)
|
|
{
|
|
if (disposing)
|
|
{
|
|
}
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Application configuration.
|
|
[Obsolete("Deprecated - properties need to be session context specific.")]
|
|
public String GetPropertyValue(String section, String name)
|
|
{
|
|
return properties.GetPropertyValue(section, name);
|
|
}
|
|
|
|
// --- Properties ---
|
|
|
|
public abstract SbmSystem System { get; }
|
|
// Control & Template Databases.
|
|
public abstract ISacsDatabase GetControlDatabase();
|
|
public abstract ISacsDatabase GetTemplateDatabase();
|
|
// Business Mgr Database.
|
|
public abstract HashSet<string> GetRepositoryContexts(SbmSessionContext sessionContext);
|
|
public abstract ISacsDatabase CreateBusMgrDatabase(SbmSessionContext sessionContext);
|
|
// Instance and Organisation profiles.
|
|
public abstract SbmInstanceConfig GetInstanceConfig(SbmSessionContext sessionContext);
|
|
public abstract SbmInstanceDataCache GetInstanceDataCache(SbmSessionContext sessionContext);
|
|
public abstract SbmOrganisationConfig GetOrganisationConfig(ISbmUserOrganisationContext userContext);
|
|
// Database utilities.
|
|
public bool DbTableExists(ISacsDatabase db, SbmDbDfn.TableIdx tableIdx)
|
|
{
|
|
return db?.TableExists(SbmDbDfn.GetTableName(tableIdx)) ?? false;
|
|
}
|
|
public bool DbColumnExists(ISacsDatabase db, SbmDbDfn.ColumnIdx columnIdx)
|
|
{
|
|
return db?.ColumnExists(SbmDbDfn.GetTableName(SbmDbDfn.GetTableForColumn(columnIdx)), SbmDbDfn.GetColumnName(columnIdx, false)) ?? false;
|
|
}
|
|
// Application instance.
|
|
public abstract Sbm.InstanceType InstanceType { get; }
|
|
public bool IsLiveHost() { return InstanceType == Sbm.InstanceType.Production; }
|
|
public bool IsTestHost() { return InstanceType != Sbm.InstanceType.Production; }
|
|
public bool IsDevHost() { return InstanceType == Sbm.InstanceType.Dev; }
|
|
public abstract String EnvironmentName { get; }
|
|
// Email configuration.
|
|
public abstract SbmEmailConfig EmailConfig { get; }
|
|
|
|
// --- Utilities ---
|
|
|
|
public abstract void DoHousekeeping(CancellationToken ct);
|
|
|
|
//-------------------------------------------------------------------
|
|
}
|
|
//=======================================================================
|
|
}
|