/// <summary> /// Remove list of modules from user requirments. Order of modules is not important /// (it will be sort automaticaly with considering of dependencies) /// </summary> public void RemoveModules(string userId, IEnumerable <ModuleIdentity> modules) { var ordered = ModulesHelper.OrderModules(modules.Select(x => _modules.GetModule(x).ModuleInfo)).Reverse(); foreach (var moduleInfo in ordered) { RemoveModule(userId, moduleInfo.ModuleIdentity); } }
/// <summary> /// Unregister list of modules. /// This method will try to unregister modules in right order. /// </summary> public virtual void UnregisterModules(IEnumerable <ModuleIdentity> moduleIdentities) { var identities = moduleIdentities as ModuleIdentity[] ?? moduleIdentities.ToArray(); var infos = identities.Select(x => GetModule(x).ModuleInfo); var orderedModules = ModulesHelper.OrderModules(infos).Reverse(); foreach (var m in orderedModules) { UnregisterModule(m.ModuleIdentity); } }
/// <summary> /// Register list of modules. /// This method will try to register modules in right order. /// </summary> public virtual void RegisterModules(IEnumerable <IModule> modules) { var enumerable = modules as IModule[] ?? modules.ToArray(); var identityToModule = enumerable.ToDictionary(x => x.ModuleInfo.ModuleIdentity, x => x); // Just for get IModule by ModuleIdentity var orderedModules = ModulesHelper.OrderModules(enumerable.Select(x => x.ModuleInfo)); foreach (var m in orderedModules) { RegisterModule(identityToModule[m.ModuleIdentity]); } }