Associations

This commit is contained in:
Andy Howard
2024-12-04 15:30:59 +00:00
parent c8b5df5909
commit 30d0352f48
140 changed files with 5109 additions and 2879 deletions
@@ -46,7 +46,7 @@ namespace Sarand.BusinessMgr.Web.Control.App
SessionContext = sessionContext;
}
public SbmSessionContext_Web SessionContext { get; }
public HashSet<string> DbIdentifiers { get; } = new HashSet<string>();
public HashSet<string> RepositoryContexts { get; } = new HashSet<string>();
public ISacsDatabase BusMgrDatabase { get; set; }
}
private readonly Dictionary<ushort, SessionContextData> sessionContexts = new Dictionary<ushort, SessionContextData>();
@@ -79,10 +79,14 @@ namespace Sarand.BusinessMgr.Web.Control.App
{
return sessionContexts.Values.Select(item => item.SessionContext.Index).ToList();
}
public override SbmSessionContext GetSessionContext(ushort index)
public override SbmSessionContext GetSessionContextByIndex(ushort index)
{
return sessionContexts.GetValue(index, null)?.SessionContext ?? null;
}
public override List<SbmSessionContext> GetSessionContexts()
{
return new List<SbmSessionContext>(sessionContexts.Values.Select(item => item.SessionContext));
}
// Databases.
public override ISacsDatabase GetControlDatabase()
{
@@ -92,9 +96,9 @@ namespace Sarand.BusinessMgr.Web.Control.App
{
return templateDatabase;
}
public override HashSet<string> GetDbIdentifiers(SbmSessionContext sessionContext)
public override HashSet<string> GetRepositoryContexts(SbmSessionContext sessionContext)
{
return sessionContexts.GetValue(sessionContext.Index, null)?.DbIdentifiers ?? new HashSet<string>();
return sessionContexts.GetValue(sessionContext.Index, null)?.RepositoryContexts ?? new HashSet<string>();
}
public override ISacsDatabase GetBusMgrDatabase(SbmSessionContext sessionContext)
{
@@ -195,18 +199,18 @@ namespace Sarand.BusinessMgr.Web.Control.App
odbcConfig.location = dbConfig.Location;
odbcConfig.user = dbConfig.User;
odbcConfig.pword = dbConfig.Password;
SacsDatabase busMgrDatabase = SacsDatabaseConsole.OpenOdbcDatabase(odbcConfig);
SacsDatabase busMgrDatabase = SacsDatabaseConsole.OpenOdbcDatabase(odbcConfig);
if (busMgrDatabase.HasErrorState())
SaLogger.Warn($"{SysUtil.Fn} BusMgr Database: " + busMgrDatabase.DatabaseName + ". Initialisation error: " + busMgrDatabase.ErrorStateMessage);
SaLogger.Warn($"{SysUtil.Fn} BusMgr Database: " + busMgrDatabase.DatabaseName + ". Initialisation error: " + busMgrDatabase.ErrorStateMessage);
// Session context.
ushort sessionContextIdx = sessionContextIdx_Next++;
if (sessionContextIdx_Control < 1)
sessionContextIdx_Control = sessionContextIdx;
SessionContextData sessionContextData = new SessionContextData(new SbmSessionContext_Web(sessionContextIdx, Sbm.Application.WebControl));
sessionContextData.DbIdentifiers.UnionWith(dbConfig.Identifiers);
sessionContextIdx_Control = sessionContextIdx;
SessionContextData sessionContextData = new SessionContextData(new SbmSessionContext_Web(sessionContextIdx, Sbm.Application.WebControl));
sessionContextData.RepositoryContexts.UnionWith(dbConfig.Identifiers);
sessionContextData.BusMgrDatabase = busMgrDatabase;
sessionContexts.Add(sessionContextData.SessionContext.Index, sessionContextData);
sessionContexts.Add(sessionContextData.SessionContext.Index, sessionContextData);
}
}
catch (Exception exc)