Files
Disco/Disco.Web/App_Start/AppConfig.cs
T
Gary Sharp a819d2722a Feature #49: Active Directory Managed Groups
Document Template Attachments, Device Batches, Device Profiles and User
Flags can be associated with an Active Directory group. This AD group is
then automatically synchronized with relevant User/Machine accounts.
Contains various other UI tweaks and configuration enhancements.
2014-06-16 22:21:31 +10:00

114 lines
4.6 KiB
C#

using Disco.Data.Repository;
using System;
using System.Linq;
using System.Web;
namespace Disco.Web
{
public static class AppConfig
{
public static bool InitializeDatabase()
{
// Modified Connection Factory
System.Data.Entity.Database.DefaultConnectionFactory = new DiscoDatabaseConnectionFactory(System.Data.Entity.Database.DefaultConnectionFactory);
if (Disco.Data.Repository.DiscoDatabaseConnectionFactory.DiscoDataContextConnectionString == null)
{
// Database Connection String not configured - Trigger 'Install'
return false;
}
// Migrate Database
Disco.Data.Migrations.DiscoDataMigrator.MigrateLatest(true);
return true;
}
public static void InitalizeCoreEnvironment(DiscoDataContext Database)
{
// Initialize Logging
Disco.Services.Logging.LogContext.Initalize(Database, DiscoApplication.SchedulerFactory);
// Initialize Active Directory Interop
Disco.Services.Interop.ActiveDirectory.ActiveDirectory.Initialize(Database);
// Load Organisation Name
DiscoApplication.OrganisationName = Database.DiscoConfiguration.OrganisationName;
DiscoApplication.MultiSiteMode = Database.DiscoConfiguration.MultiSiteMode;
// Setup Global Proxy
DiscoApplication.SetGlobalProxy(Database.DiscoConfiguration.ProxyAddress,
Database.DiscoConfiguration.ProxyPort,
Database.DiscoConfiguration.ProxyUsername,
Database.DiscoConfiguration.ProxyPassword);
// Initialize User Service Interop
Disco.Services.Users.UserService.Initialize(Database);
}
public static void InitalizeNormalEnvironment(DiscoDataContext Database)
{
InitalizeCoreEnvironment(Database);
// Initialize Expressions
BI.Expressions.Expression.InitializeExpressions();
// Initialize Job Queues
Disco.Services.Jobs.JobQueues.JobQueueService.Initialize(Database);
// Initialize User Flags
Disco.Services.Users.UserFlags.UserFlagService.Initialize(Database);
// Initialize Satellite Managed Groups (which don't belong to any other component)
Disco.Services.Devices.ManagedGroups.DeviceManagedGroups.Initialize(Database);
Disco.BI.DocumentTemplateBI.ManagedGroups.DocumentTemplateManagedGroups.Initialize(Database);
// Initialize Plugins
Disco.Services.Plugins.Plugins.InitalizePlugins(Database);
// Initialize Scheduled Tasks
Disco.Services.Tasks.ScheduledTasks.InitalizeScheduledTasks(Database, DiscoApplication.SchedulerFactory, true);
// Schedule Immediate Check for Update (if never updated, or last updated over 2 days ago)
if (Database.DiscoConfiguration.UpdateLastCheck == null ||
Database.DiscoConfiguration.UpdateLastCheck.ResponseTimestamp < DateTime.Now.AddDays(-2))
{
Disco.BI.Interop.Community.UpdateCheckTask.ScheduleNow();
}
// Setup Attachment Monitor
DiscoApplication.DocumentDropBoxMonitor = new BI.DocumentTemplateBI.Importer.DocumentDropBoxMonitor(Database, DiscoApplication.SchedulerFactory, HttpContext.Current.Cache);
DiscoApplication.DocumentDropBoxMonitor.StartWatching();
DiscoApplication.DocumentDropBoxMonitor.ScheduleCurrentFiles(10);
}
public static void InitializeUpdateEnvironment(DiscoDataContext Database, Version PreviousVersion)
{
InitalizeCoreEnvironment(Database);
// Initialize Scheduled Tasks
Disco.Services.Tasks.ScheduledTasks.InitalizeScheduledTasks(Database, DiscoApplication.SchedulerFactory, true);
// Import MAC Address Migration
if (PreviousVersion != null && PreviousVersion < new Version(1, 2, 910, 0))
Disco.BI.DeviceBI.Migration.LogMacAddressImporting.SetRequired(Database);
}
public static void DisposeEnvironment()
{
if (DiscoApplication.DocumentDropBoxMonitor != null)
DiscoApplication.DocumentDropBoxMonitor.Dispose();
if (DiscoApplication.SchedulerFactory != null)
{
foreach (var item in DiscoApplication.SchedulerFactory.AllSchedulers.ToArray())
{
item.Shutdown(false);
}
}
Disco.Services.Logging.SystemLog.LogUninitialized();
}
}
}