Files
Saxonite/SaxoniteCoreWeb/Base/App/SaxApplication_Web.cs
T
2024-02-27 15:45:47 +00:00

122 lines
5.1 KiB
C#

using Microsoft.Extensions.Configuration;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using Sarand.Net.Standard.Base.Email;
using Sarand.Net.Standard.Base.IO;
using Sarand.Net.Standard.Base.Utils;
using Sarand.Net.Standard.Dbas.Data;
using Saxonite.Net.Core.Web.Base.Consoles;
using Saxonite.Net.Standard.Base.App;
using Saxonite.Net.Standard.Base.Consoles;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Saxonite.Net.Core.Web.Base.App
{
//=======================================================================
public abstract class SaxApplication_Web : SaxApplication_Base
{
//-------------------------------------------------------------------
// Data members.
protected Sax.InstanceType instanceType;
protected String environmentName = "";
// Session context.
protected class SessionContextData_Web
{
public SessionContextData_Web(SaxSessionContext_Web sessionContext)
{
SessionContext = sessionContext;
}
public SaxSessionContext_Web SessionContext { get; }
public Dictionary<Sax.Database, ISacsDatabase> Databases { get; } = new Dictionary<Sax.Database, ISacsDatabase>();
public ISacsDatabase CoreDatabase { get { return Databases.GetValue(Sax.Database.Core, null); } }
public ISacsDatabase SupportDatabase { get { return Databases.GetValue(Sax.Database.Support, null); } }
}
//-------------------------------------------------------------------
// Protected construction.
protected SaxApplication_Web()
{
WebApp = this;
System_Web = new SaxSystem_Web();
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
WebApp = null;
System_Web = null;
}
base.Dispose(disposing);
}
//-------------------------------------------------------------------
// Globals.
public static SaxApplication_Web WebApp { get; private set; }
public override SaxSystem System { get { return System_Web; } }
public SaxSystem_Web System_Web { get; private set; }
// Application instance.
public override Sax.InstanceType InstanceType { get { return instanceType; } }
public override String EnvironmentName { get { return environmentName; } }
public bool Development { get; protected set; }
public String LoggingRootFolder { get; protected set; } = "";
// Application components.
public abstract String SessionCookieName { get; }
public virtual SaxSessionContext SessionContext { get; protected set; }
public abstract SaxAppConfig AppConfig { get; }
public SaxConsoleHelper_Web ConsoleHelper_Web { get; protected set; }
public override IDatabaseInfo CreateDbInfo(SaxSessionContext sessionContext, Sax.Database databaseType) { return new DbDataItem.DatabaseInfo(GetDatabase(sessionContext, databaseType)); }
// Configuration.
public IConfiguration Configuration { get; protected set; }
public IConfiguration SaxConfiguration { get; protected set; }
//-------------------------------------------------------------------
// Logging.
protected void LogApplicationStart(String fn)
{
// Log application start.
List<StringPair> applicationParams = new List<StringPair>();
applicationParams.Add("Host", SaxSystem.ComputerName);
applicationParams.Add("Version", Sax.Version.GetFullVersion());
applicationParams.Add("Instance", InstanceType.ToString() + (!StringUtil.IsEmpty(AppConfig.Instance) ? " [" + AppConfig.Instance + "]" : ""));
applicationParams.Add("Configuration", SaxSystem.DebugMode ? "Debug" : "Release");
applicationParams.Add("Environment", EnvironmentName);
if (!StringUtil.IsBlank(AppConfig.Databases.Core.Location))
applicationParams.Add("Database - Core", AppConfig.Databases.Core.Location);
if (!StringUtil.IsBlank(AppConfig.Databases.Support.Location))
applicationParams.Add("Database - Support", AppConfig.Databases.Support.Location);
applicationParams.Add("Application root", SaxSystem.ApplicationFolder);
if (!StringUtil.IsEmpty(AppConfig.Documents.RootFolder))
applicationParams.Add("Documents root", AppConfig.Documents.RootFolder);
applicationParams.Add("Email context", AppConfig.Email.Context + (!StringUtil.IsEmpty(EmailConfig.SMTP.Server) ? " [" + EmailConfig.SMTP.Server + "]" : ""));
SaLogger.Info(fn + " Application start." + applicationParams.Select(item => StringUtil.PadRight(item.Item1 + ":", 20, ' ') + item.Item2).Concat("", "\n\t"), true);
if (StringUtil.IsEmpty(EmailConfig.SMTP.Server) || StringUtil.IsEmpty(EmailConfig.Message.AddressFrom))
SaLogger.Warn(fn + " Incomplete email configuration.", true);
}
//-------------------------------------------------------------------
protected void InitialiseTemporaryLoggingFolder()
{
// Default logging folder - in case of startup failure.
try
{
foreach (String folder in new String[] { @"D:\Sarand\Projects\User\AHoward\VS2017\Saxonite\Logs" })
{
if (DirectoryUtil.DirectoryExists(folder))
{
SaLogger.LogFolder = folder;
break;
}
}
}
catch (Exception) { }
}
//-------------------------------------------------------------------
}
//=======================================================================
}