using Autofac;
using GreenTree.Nachtragsmanagement.Core;
using GreenTree.Nachtragsmanagement.Core.Domain.User;
using GreenTree.Nachtragsmanagement.Services.User;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace GreenTree.Nachtragsmanagement.Plugin.MonitionList.App_Start
{
public class FunctionConfig
{
///
/// Registers all plugin functions provided by the plugin system
///
public static void RegisterFunctions()
{
var userService = Singleton.Instance.Resolve();
var pluginFunctions = AllPluginFunctions();
foreach (var function in pluginFunctions)
{
var existingFunction = userService.GetFunctionByName(function.Name);
if (existingFunction != null)
{
var equals =
existingFunction.Description == function.Description &&
existingFunction.ImageUrl == function.ImageUrl &&
existingFunction.GroupName == function.GroupName &&
existingFunction.RouteName == function.RouteName &&
existingFunction.IsMenuMember == function.IsMenuMember &&
existingFunction.Plugin == function.Plugin &&
existingFunction.BaseWidth == function.BaseWidth &&
existingFunction.MinWidth == function.MinWidth &&
existingFunction.BaseHeight == function.BaseHeight &&
existingFunction.MinHeight == function.MinHeight &&
existingFunction.AllowMaximize == function.AllowMaximize;
if (!equals)
{
existingFunction.Description = function.Description;
existingFunction.ImageUrl = function.ImageUrl;
existingFunction.GroupName = function.GroupName;
existingFunction.RouteName = function.RouteName;
existingFunction.IsMenuMember = function.IsMenuMember;
existingFunction.Plugin = function.Plugin;
existingFunction.BaseWidth = function.BaseWidth;
existingFunction.MinWidth = function.MinWidth;
existingFunction.BaseHeight = function.BaseHeight;
existingFunction.MinHeight = function.MinHeight;
existingFunction.AllowMaximize = function.AllowMaximize;
userService.UpdateFunction(existingFunction);
}
}
else
userService.InsertFunction(function);
}
}
private static Function[] AllPluginFunctions()
{
return new[]
{
new Function
{
Name = "MonotionList",
Description = "Mahnlisten",
ImageUrl = "~/Plugins/Misc.MonotionList/Content/Images/function-MonotionList-32.png",
IsMenuMember = true,
Plugin = "GreenTree.Nachtragsmanagement.Plugin.MonitionList"
},
new Function
{
Name = "MonotionList-Deviations",
Description = "VA-Mahnliste",
ImageUrl = "~/Plugins/Misc.MonotionList/Content/Images/function-MonitionList-Deviations-32.png",
GroupName = "MonotionList",
RouteName = "GreenTree.Nachtragsmanagement.Plugin.MonitionList.Deviations",
IsMenuMember = true,
Plugin = "GreenTree.Nachtragsmanagement.Plugin.MonitionList",
BaseWidth = 900,
MinWidth = 600,
BaseHeight = 600,
MinHeight = 400,
AllowMaximize = true,
MaximizedOnStart = true
},
new Function
{
Name = "MonotionList-Appendices",
Description = "NT-Mahnliste",
ImageUrl = "~/Plugins/Misc.MonotionList/Content/Images/function-MonitionList-Appendices-32.png",
GroupName = "MonotionList",
RouteName = "GreenTree.Nachtragsmanagement.Plugin.MonitionList.Appendices",
IsMenuMember = true,
Plugin = "GreenTree.Nachtragsmanagement.Plugin.MonitionList",
BaseWidth = 900,
MinWidth = 600,
BaseHeight = 600,
MinHeight = 400,
AllowMaximize = true,
MaximizedOnStart = true
}
};
}
}
}