Exemplo n.º 1
0
        public List <IModule> RegisterModules(IMvcBuilder mvcBuilder, IServiceCollection services, IServiceProvider serviceProvider)
        {
            foreach (var module in modules)
            {
                try
                {
                    var moduleInitializerType = module.Assembly.GetTypes().Where(x => typeof(IModule).IsAssignableFrom(x)).FirstOrDefault();

                    if (moduleInitializerType != null && moduleInitializerType != typeof(IModule))
                    {
                        var moduleInstance = (IModule)Activator.CreateInstance(moduleInitializerType);
                        LoadModuleInfo(moduleInstance, module);

                        NccModule.NccModuleStatus moduleStatus = VerifyModuleInstallation(moduleInstance, serviceProvider);
                        moduleInstance.ModuleStatus = (int)moduleStatus;

                        if (moduleStatus == NccModule.NccModuleStatus.Active)
                        {
                            // Register controller from modules
                            mvcBuilder.AddApplicationPart(module.Assembly);
                        }
                        else if (moduleStatus == NccModule.NccModuleStatus.Duplicate)
                        {
                            //TODO: Raise duplicate error message
                            continue;
                        }

                        // Register dependency in modules
                        moduleInstance.Init(services);
                        RegisterWidgets(moduleInstance, services, serviceProvider);
                        instantiatedModuleList.Add(moduleInstance);
                    }
                }
                catch (Exception ex)
                {
                    //RAISE GLOBAL ERROR
                }
            }

            services.Configure <RazorViewEngineOptions>(options =>
            {
                options.ViewLocationExpanders.Add(new ModuleViewLocationExpendar());
            });

            mvcBuilder.AddRazorOptions(o =>
            {
                foreach (var module in modules)
                {
                    o.AdditionalCompilationReferences.Add(MetadataReference.CreateFromFile(module.Assembly.Location));
                }
            });

            return(instantiatedModuleList);
        }
Exemplo n.º 2
0
        private NccModule UpdateModuleStatus(string id, NccModule.NccModuleStatus status)
        {
            var nId    = long.Parse(id);
            var module = _moduleService.Get(nId);

            if (module != null)
            {
                module.ModuleStatus = status;
                _moduleService.Update(module);
            }
            return(module);
        }
Exemplo n.º 3
0
        private NccModule UpdateModuleStatus(string id, NccModule.NccModuleStatus status)
        {
            var nId    = long.Parse(id);
            var module = _moduleService.Get(nId);

            if (module != null)
            {
                module.ModuleStatus = status;
                _moduleService.Update(module);
                var loadedModule = GlobalContext.Modules.Where(x => x.ModuleId == module.ModuleId).FirstOrDefault();
                if (loadedModule != null)
                {
                    loadedModule.ModuleStatus = (int)status;
                }
            }
            return(module);
        }
Exemplo n.º 4
0
 public List <NccModule> LoadByModuleStatus(NccModule.NccModuleStatus active)
 {
     return(_entityRepository.LoadByModuleStatus(active));
 }
Exemplo n.º 5
0
 internal List <NccModule> LoadByModuleStatus(NccModule.NccModuleStatus active)
 {
     return(Query().Where(x => x.ModuleStatus == active).ToList());
 }
Exemplo n.º 6
0
        public List <IModule> AddModulesAsApplicationPart(IMvcBuilder mvcBuilder, IServiceCollection services, IServiceProvider serviceProvider)
        {
            var nccSettingsService = serviceProvider.GetService <INccSettingsService>();

            foreach (var module in modules)
            {
                try
                {
                    var moduleInitializerType = module.Assembly.GetTypes().Where(x => typeof(IModule).IsAssignableFrom(x)).FirstOrDefault();

                    if (moduleInitializerType != null && moduleInitializerType != typeof(IModule))
                    {
                        var moduleInstance = (IModule)Activator.CreateInstance(moduleInitializerType);
                        LoadModuleInfo(moduleInstance, module);

                        NccModule.NccModuleStatus moduleStatus = VerifyModuleInstallation(moduleInstance, serviceProvider);
                        moduleInstance.ModuleStatus = (int)moduleStatus;

                        if (moduleStatus == NccModule.NccModuleStatus.Active)
                        {
                            // Register controller from modules
                            mvcBuilder.AddApplicationPart(module.Assembly);
                            // Register dependency in modules
                            LoadModuleDependencies(module.Path, module.Folder);
                            moduleInstance.Init(services, nccSettingsService);
                        }
                        else if (moduleStatus == NccModule.NccModuleStatus.Duplicate)
                        {
                            //TODO: Raise duplicate error message
                            GlobalMessageRegistry.RegisterMessage(
                                new GlobalMessage()
                            {
                                For         = GlobalMessage.MessageFor.Admin,
                                Registrater = "AddModulesAsApplicationPart",
                                Text        = $"Duplicate module {module.ModuleTitle}",
                                Type        = GlobalMessage.MessageType.Error
                            },
                                new TimeSpan(0, 0, 30)
                                );
                            continue;
                        }

                        instantiatedModuleList.Add(moduleInstance);
                        GlobalContext.Modules.Add(moduleInstance);
                    }
                }
                catch (ReflectionTypeLoadException rtle)
                {
                }
                catch (Exception ex)
                {
                    GlobalMessageRegistry.RegisterMessage(
                        new GlobalMessage()
                    {
                        For         = GlobalMessage.MessageFor.Admin,
                        Registrater = "AddModulesAsApplicationPart",
                        Text        = ex.Message,
                        Type        = GlobalMessage.MessageType.Error
                    },
                        new TimeSpan(0, 0, 60)
                        );
                }
            }

            GlobalContext.SetModuleDependencies(_moduleDependencies);

            services.Configure <RazorViewEngineOptions>(options =>
            {
                options.ViewLocationExpanders.Add(new ModuleViewLocationExpendar());
            });

            mvcBuilder.AddRazorOptions(o =>
            {
                foreach (var module in instantiatedModuleList.Where(x => x.ModuleStatus == (int)NccModule.NccModuleStatus.Active).ToList())
                {
                    o.AdditionalCompilationReferences.Add(MetadataReference.CreateFromFile(module.Assembly.Location));
                }
            });

            return(instantiatedModuleList);
        }