public static PromptModuleInfo FromDnnModuleInfo(ModuleInfo dnnModule, bool?deleted = null) { var mim = new PromptModuleInfo { ModuleId = dnnModule.ModuleID, Title = dnnModule.ModuleTitle, FriendlyName = dnnModule.DesktopModule.FriendlyName, ModuleName = dnnModule.DesktopModule.ModuleName, TabModuleId = dnnModule.TabModuleID, ModuleDefId = dnnModule.ModuleDefID }; // assign command links mim.__ModuleId = $"get-module {mim.ModuleId}"; mim.__ModuleName = $"list-modules --name '{mim.ModuleName}' --all"; // get a list of all pages this module is added to var addedTo = ModuleController.Instance.GetTabModulesByModule(mim.ModuleId); if (deleted.HasValue) { addedTo = addedTo.Where(x => x.IsDeleted == deleted.Value).ToList(); } var sbAddedTo = new StringBuilder(); foreach (var modInfo in addedTo) { if (sbAddedTo.Length > 0) { sbAddedTo.Append(", "); } sbAddedTo.Append(modInfo.TabID); } mim.AddedToPages = sbAddedTo.ToString(); return(mim); }
/// <inheritdoc/> public override IConsoleResultModel Run() { var max = this.Max <= 0 ? 10 : (this.Max > 500 ? 500 : this.Max); int total; var portalDesktopModules = DesktopModuleController.GetPortalDesktopModules(this.PortalId); var pageIndex = (this.Page > 0 ? this.Page - 1 : 0); pageIndex = pageIndex < 0 ? 0 : pageIndex; var pageSize = this.Max; pageSize = pageSize > 0 && pageSize <= 100 ? pageSize : 10; this.ModuleName = this.ModuleName?.Replace("*", ""); this.ModuleTitle = this.ModuleTitle?.Replace("*", ""); var modules = ModuleController.Instance.GetModules(this.PortalSettings.PortalId) .Cast <ModuleInfo>().Where(ModulePermissionController.CanViewModule); if (!string.IsNullOrEmpty(this.ModuleName)) { modules = modules.Where(module => module.DesktopModule.ModuleName.IndexOf(this.ModuleName, StringComparison.OrdinalIgnoreCase) >= 0); } if (!string.IsNullOrEmpty(this.ModuleTitle)) { modules = modules.Where(module => module.ModuleTitle.IndexOf(this.ModuleTitle, StringComparison.OrdinalIgnoreCase) >= 0); } // Return only deleted modules with matching criteria. if (this.PageId.HasValue && this.PageId.Value > 0) { modules = modules.Where(x => x.TabID == this.PageId.Value); } if (this.Deleted.HasValue) { modules = modules.Where(module => module.IsDeleted == this.Deleted); } // Get distincts. modules = modules.GroupBy(x => x.ModuleID).Select(group => group.First()).OrderBy(x => x.ModuleID); var moduleInfos = modules as IList <ModuleInfo> ?? modules.ToList(); total = moduleInfos.Count; modules = moduleInfos.Skip(pageIndex * pageSize).Take(pageSize) .Where(m => { var moduleDefinition = ModuleDefinitionController.GetModuleDefinitionByID(m.ModuleDefID); return(portalDesktopModules.Any(kvp => kvp.Value.DesktopModuleID == moduleDefinition?.DesktopModuleID)); }); var results = modules.Select(x => PromptModuleInfo.FromDnnModuleInfo(x, this.Deleted)); var totalPages = total / max + (total % max == 0 ? 0 : 1); var pageNo = this.Page > 0 ? this.Page : 1; return(new ConsoleResultModel { Data = results, PagingInfo = new PagingInfo { PageNo = pageNo, TotalPages = totalPages, TotalRecords = total, PageSize = max, }, Records = results.Count(), Output = results.Count() == 0 ? this.LocalizeString("Prompt_NoModules") : "", }); }