Exemplo n.º 1
0
        private SsrsFolderInfo _GetParentFolder(ref List <SsrsFolderInfo> folders, SSRS_SOAP.CatalogItem item)
        {
            SsrsFolderInfo folder     = null;
            var            parentPath = item.Path.Substring(0, item.Path.LastIndexOf(item.Name));

            parentPath = parentPath.TrimEnd('/');

            if (parentPath.Length < 1)
            {
                return(null);
            }
            else
            {
                var strings = parentPath.IndexOf('/') == 0 ? parentPath.Substring(1).Split('/') : parentPath.Split('/');

                foreach (var str in strings)
                {
                    SsrsFolderInfo tmpF = null;

                    if (folder == null)
                    {
                        tmpF = folders.FirstOrDefault(f => f.FolderName == str);
                    }
                    else
                    {
                        tmpF = folder.SubFolders.FirstOrDefault(f => f.FolderName == str);
                    }

                    if (tmpF != null)
                    {
                        folder = tmpF;
                    }
                    else
                    {
                        return(null);
                    }
                }
            }

            return(folder);
        }
Exemplo n.º 2
0
        public Response <SsrsFolderInfo> GetAllReports()
        {
            var rootFolder = ConfigurationManager.AppSettings.Get("SSRS_RootDir");

            try
            {
                var dbRepRes = GetReportsByType("ReportingServices");
                if (dbRepRes == null || dbRepRes.DataItems == null || dbRepRes.DataItems.Count < 1)
                {
                    throw new Exception("Error while loading reports or no reports in database.");
                }

                var response = new Response <SsrsFolderInfo>();
                var folders  = new List <SsrsFolderInfo>();
                var items    = _rs_Svc_2010.ListChildren(rootFolder, true);

                if (rootFolder.Length > 1)
                {
                    folders.Add(new SsrsFolderInfo()
                    {
                        FolderName      = rootFolder.Substring(1),
                        Path            = rootFolder,
                        HiddenSpecified = false
                    });
                }

                SsrsReportInfo         report;
                ReportingServicesModel dbReport;
                foreach (SSRS_SOAP.CatalogItem ci in items)
                {
                    SsrsFolderInfo folder = null;

                    if (folders.Count > 0)
                    {
                        folder = _GetParentFolder(ref folders, ci);
                    }

                    switch (ci.TypeName.ToLower())
                    {
                    case "report":
                        if (folder == null)
                        {
                            continue;
                        }

                        dbReport = dbRepRes.DataItems
                                   .FirstOrDefault(r => r.ReportName == ci.Name);

                        report = new SsrsReportInfo()
                        {
                            ID              = ci.ID,
                            ReportName      = ci.Name,
                            Description     = ci.Description,
                            Path            = ci.Path,
                            Size            = ci.Size,
                            VirtualPath     = ci.VirtualPath,
                            CreatedBy       = ci.CreatedBy,
                            ModifiedBy      = ci.ModifiedBy,
                            CreationDate    = ci.CreationDate,
                            ModifiedDate    = ci.ModifiedDate,
                            HiddenSpecified = ci.HiddenSpecified
                        };

                        if (dbReport != null)
                        {
                            report.ReportID      = dbReport.ReportID;
                            report.ReportGroupID = dbReport.ReportGroupID;
                            report.ReportGroup   = dbReport.ReportGroup;
                        }

                        folder.Reports.Add(report);
                        break;

                    case "folder":
                        if (folder == null)
                        {
                            folders.Add(new SsrsFolderInfo()
                            {
                                ID              = ci.ID,
                                FolderName      = ci.Name,
                                Description     = ci.Description,
                                Path            = ci.Path,
                                VirtualPath     = ci.VirtualPath,
                                CreatedBy       = ci.CreatedBy,
                                ModifiedBy      = ci.ModifiedBy,
                                CreationDate    = ci.CreationDate,
                                ModifiedDate    = ci.ModifiedDate,
                                HiddenSpecified = ci.HiddenSpecified
                            });
                        }
                        else
                        {
                            folder.SubFolders.Add(new SsrsFolderInfo()
                            {
                                ID              = ci.ID,
                                FolderName      = ci.Name,
                                Description     = ci.Description,
                                Path            = ci.Path,
                                VirtualPath     = ci.VirtualPath,
                                CreatedBy       = ci.CreatedBy,
                                ModifiedBy      = ci.ModifiedBy,
                                CreationDate    = ci.CreationDate,
                                ModifiedDate    = ci.ModifiedDate,
                                HiddenSpecified = ci.HiddenSpecified
                            });
                        }
                        break;
                    }
                }

                response.DataItems = folders;

                return(response);
            }
            catch (Exception ex)
            {
                _Logger.LogException(new ExceptionModel()
                {
                    Message = ex.ToString(),
                    Source  = "Axis.Service.Reporting.ReportingService.GetAllReports"
                });
                throw ex;
            }
        }