Files
BusinessMgr-2019/SaBusMgrStandardBase/Base/App/SbmApplication.cs
T
2025-01-22 08:01:51 +00:00

91 lines
3.5 KiB
C#

using Sarand.BusinessMgr.Net.Standard.Base.Consoles;
using Sarand.BusinessMgr.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.CodeTypes;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using Sarand.Net.Standard.Base.Diary;
using Sarand.Net.Standard.Base.Interfaces;
using Sarand.Net.Standard.Base.ItemData;
using Sarand.Net.Standard.Base.ItemDocs;
using Sarand.Net.Standard.Base.ItemOptions;
using Sarand.Net.Standard.Base.ReferenceData;
using Sarand.Net.Standard.Base.Security;
using Sarand.Net.Standard.Base.UpdateLog;
using System;
using System.Collections.Generic;
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 GetBusMgrDatabase(SbmSessionContext sessionContext);
public IDatabaseInfo CreateBusMgrDbInfo(SbmSessionContext sessionContext)
{
return GetBusMgrDatabase(sessionContext).CreateDbInfo();
}
// 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 IDatabaseInfo CreateDbInfo(ISacsDatabase db)
{
return db?.CreateDbInfo() ?? null;
}
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; }
//-------------------------------------------------------------------
}
//=======================================================================
}