2023-10-31 11:47:27 -04:00

89 lines
2.7 KiB
C#
Executable File

using System;
using System.Web;
using System.Web.UI;
using MBS.Web;
using Mocha.Core;
using Mocha.OMS;
namespace Mocha.Web.MasterPages
{
public partial class Blank : MasterPage
{
public bool AutoConnectOMS { get; set; } = true;
public bool OMSAvailable { get; set; } = false;
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
string ThemeName = System.Configuration.ConfigurationManager.AppSettings["Tenant.Default.Theme"] ?? "Slate";
this.RegisterScript(String.Format("~/Themes/{0}/Theme.js", ThemeName));
this.RegisterStyleSheet(String.Format("~/Themes/{0}/Theme.css", ThemeName));
this.RegisterStyleSheet("~/StyleSheets/mcx.css");
this.RegisterScript("~/Scripts/Mocha.js");
this.RegisterScript("~/Scripts/Instance.js");
this.RegisterScript("~/Scripts/InstanceKey.js");
this.RegisterScript("~/Scripts/InstanceBrowser.js");
this.RegisterScript("~/Scripts/Page.js");
this.RegisterScript("~/Scripts/PageBuilder.js");
this.RegisterScript("~/Scripts/SummaryPageComponent.js");
// can we connect to the OMS?
if (AutoConnectOMS)
{
SessionContext sess = (this.GetTenantedVariable("SessionContext") as SessionContext);
if (sess == null)
{
sess = new SessionContext();
sess.TenantName = this.GetCurrentTenantName();
sess.ApplicationPath = Request.ApplicationPath;
this.SetTenantedVariable("SessionContext", sess);
}
Oms oms = sess.GetOms();
if (oms != null && oms.IsConnected)
{
oms.TenantName = this.GetCurrentTenantName();
oms.Environment.StorageProvider.DefaultTenantName = oms.TenantName;
}
this.SetTenantedVariable("OMS", oms);
OMSAvailable = (oms != null && oms.IsConnected);
if (OMSAvailable)
{
aspcContent.Visible = true;
Instance instTenant = oms.GetTenantInstance();
if (instTenant != null)
{
Instance instTenantIconImage = oms.GetRelatedInstance(instTenant, KnownRelationshipGuids.Tenant__has_icon_image__File);
if (instTenantIconImage != null)
{
System.Web.UI.HtmlControls.HtmlLink link = new System.Web.UI.HtmlControls.HtmlLink();
link.Attributes.Add("rel", "shortcut icon");
link.Attributes.Add("href", sess.GetAttachmentUrl(instTenantIconImage, this.Page.GetOmsAttachmentEntropy()));
Page.Header.Controls.Add(link);
}
}
}
else
{
if (Request.Url.Segments.Length > 2 && Request.Url.Segments[2] == "inst/")
{
Response.Clear();
Response.Status = "503 Service Unavailable";
Response.ContentType = "application/json";
Response.Write("{ \"code\": 503, \"title\": \"Service Unavailable\", \"description\": \"OMS service is not running\" }");
Response.End();
}
aspcContent.Visible = false;
}
}
}
}
}