Files
BusinessMgr-2019/SaBusMgrStandardBase/Base/App/SbmApplication.cs
T

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);
//-------------------------------------------------------------------
}
//=======================================================================
}