using GB5Shared.Deployment; using GB5Shared.DTO.Framework.Login; using Microsoft.Extensions.Configuration; namespace DXPDAL.Common; public class DXPSystemContext : IDXPSystemContext { private readonly string _databaseName; private readonly byte _databaseType; // _databaseName resolves through IGB5Environment so Dev/QC/Live each hit a separate // physical DXPDb-{Dev,QC} / DXPDb (Live, unsuffixed) database — see // Docs/SqlWorkbench-DB-Settings-Guide.md and the environment-tiering plan. public DXPSystemContext(IConfiguration configuration, IGB5Environment env) { var baseDatabaseName = configuration["DXPSystemDatabase:DatabaseName"] ?? throw new InvalidOperationException( "DXPSystemDatabase:DatabaseName is not configured in appsettings.json."); _databaseName = env.Resolve(baseDatabaseName); _databaseType = byte.Parse(configuration["DXPSystemDatabase:DatabaseType"] ?? "0"); } public LoginDTO GetSystemLogin(int userId = -1) => new() { ClientId = 0, DatabaseName = _databaseName, DatabaseType = _databaseType, UserId = userId }; public LoginDTO GetTenantLogin(int tenantId, string databaseName, byte databaseType, int localPartyId, int actingUserId) => new() { ClientId = tenantId, DatabaseName = databaseName, DatabaseType = databaseType, WorkPartyId = localPartyId, UserId = actingUserId }; }