// TODO: Pass parameters via specific node, remove it after processing? public List <MenuNode> ManipulateNodes(List <MenuNode> nodes, PortalSettings portalSettings) { try { var config = NewsConfig.GetInstance(portalSettings.PortalId).NodeManipulator; var parentNode = FindNodeByTabId(nodes, config.ParentNodeTabId); if (parentNode != null) { var streamModule = ModuleController.Instance.GetModule(config.StreamModuleId, config.StreamModuleTabId, false); if (streamModule != null) { var settingsRepository = new StreamSettingsRepository(); var settings = settingsRepository.GetSettings(streamModule); var newsEntries = GetNewsEntries(settings, settings.PageSize, portalSettings.PortalId); foreach (var newsEntry in newsEntries) { parentNode.Children.Add(CreateMenuNode(newsEntry, parentNode, streamModule)); } } else { LogAdminAlert($"Could not find Stream module with ModuleID={config.StreamModuleId} on page with TabID={config.StreamModuleTabId}.", portalSettings.PortalId); } } else { LogAdminAlert($"Could not find parent node with TabID={config.ParentNodeTabId}.", portalSettings.PortalId); } } catch (Exception ex) { Exceptions.LogException(ex); } return(nodes); }
// REVIEW: Move to business logic layer protected IEnumerable <StreamModuleViewModel> GetStreamModules( int thematicWeight, int structuralWeight, IList <Term> terms) { var moduleController = new ModuleController(); var settingsRepository = new StreamSettingsRepository(); return(moduleController.GetModulesByDefinition(PortalId, Const.StreamModuleDefinitionName) .Cast <ModuleInfo> () .Where(m => !m.IsDeleted) .Where(m => StreamModuleViewModel.IsNewsEntryWillBePassedByModule(settingsRepository.GetSettings(m), thematicWeight, structuralWeight, terms)) .Select(m => new StreamModuleViewModel( m, settingsRepository.GetSettings(m), ViewModelContext, thematicWeight, structuralWeight, terms)) .OrderBy(m => m.ModuleTitle)); }