Files
BusinessMgr-2019/SaBusinessMgrCoreWebControl/Control/Consoles/SbmCoreInstanceConsole_Control.cs
T

95 lines
3.5 KiB
C#

using Sarand.BusinessMgr.Net.Core.Web.App;
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
using Sarand.BusinessMgr.Net.Standard.Base.Consoles;
using Sarand.BusinessMgr.Web.Control.App;
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.Security;
using Sarand.Net.Standard.Base.Utils;
using Sarand.Net.Standard.Dbas.Base;
using System;
using System.Collections.Generic;
using System.Linq;
namespace Sarand.BusinessMgr.Web.Control.Consoles
{
//=======================================================================
public class SbmCoreInstanceConsole_Control : SbmCoreInstanceConsole_Base
{
//-------------------------------------------------------------------
// Definitions.
//-------------------------------------------------------------------
// Data members.
private readonly SacsDatabase coreDatabase;
private readonly SysId organisationId;
private readonly SysId repositoryId;
private SbmInternals internals;
//-------------------------------------------------------------------
// Construction.
public SbmCoreInstanceConsole_Control(SbmcRepository repository)
{
organisationId = repository.OwnerId;
repositoryId = repository.Id;
// Repository connection.
SacsDatabaseConsole.OdbcConfig config = GetRepositoryOdbcConfig(repository);
coreDatabase = SacsDatabaseConsole.OpenOdbcDatabase(config);
if (coreDatabase.HasErrorState())
SetErrorState(coreDatabase.ErrorStateMessage);
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
}
base.Dispose(disposing);
}
//-------------------------------------------------------------------
// Properties.
public SbmApplication_Control App { get { return SbmApplication_Control.Instance; } }
public override ISacsDatabase Database_Core { get { return coreDatabase; } }
public override SbmInternals Internals_Core { get { if (internals == null) { internals = CreateCoreInternals(); } return internals; } }
public override DbUpdateInfo DbUpdateInfo_Core { get { return Internals_Core.DbUpdateInfo; } }
//-------------------------------------------------------------------
// Utilities.
public static SacsDatabaseConsole.OdbcConfig GetRepositoryOdbcConfig(SbmcRepository repository)
{
SacsDatabaseConsole.OdbcConfig config = new SacsDatabaseConsole.OdbcConfig();
config.Location = $"MsSql:{repository.ServerName}\\{repository.InstanceName}.{repository.DatabaseName}";
config.User = repository.UserName;
config.Password = repository.Password;
return config;
}
/// <summary>Core internals for accessing core managers etc.</summary>
public SbmInternals CreateCoreInternals()
{
ushort sessionIndex = App.GetCoreSessionIndexForControlRepository(organisationId, repositoryId);
SbmSessionContext sessionContext = new SbmSessionContext_Web(sessionIndex, Sbm.Application.WebControl);
SbmUserContext userContext = new SbmUserContext_Web(sessionContext);
return new SbmInternals(userContext);
}
/// <summary>
/// Create core security console.
/// </summary>
/// <returns></returns>
public override SaSecurityConsole CreateSecurityConsole()
{
return App.CreateSecurityConsole(internals.UserContext);
}
//-------------------------------------------------------------------
}
//=======================================================================
}