| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 | using System;using System.Collections.Generic;using System.Runtime.Serialization;using System.ServiceModel;using System.Text;using System.IO;using System.Configuration;using System.Collections;using FastReport;using FastReport.Utils;using System.ServiceModel.Web;namespace FastReport.Service{    public partial class ReportService : IFastReportService    {                public List<ReportItem> GetReportsList()        {            return GetReportsListByPath("");        }        public List<ReportItem> GetReportsListXml()        {            return GetReportsListByPath("");        }        public List<ReportItem> GetReportsListByPathXml(string path)        {            return GetReportsListByPath(path);        }        public List<ReportItem> GetReportsListByPath(string path)        {            string reportsRoot = GetReportsPath();             List<ReportItem> list = new List<ReportItem>();            if (Directory.Exists(Path.Combine(reportsRoot, path)))            {                if (string.IsNullOrEmpty(path))                    path = "";                List<string> reports = GetReportFiles(Path.Combine(reportsRoot, path));                Report report = new Report();                try                {                    foreach (string s in reports)                    {                        ReportItem item = new ReportItem();                        item.Path = s.Replace(reportsRoot + Path.DirectorySeparatorChar, "");                        item.ID = Crypter.ComputeHash(item.Path);                        report.Load(s);                        item.Name = !string.IsNullOrEmpty(report.ReportInfo.Name) ? report.ReportInfo.Name : Path.GetFileNameWithoutExtension(s);                        item.Description = report.ReportInfo.Description;                        list.Add(item);                    }                }                catch (Exception e)                {                    throw new WebFaultException<ErrorHandler>(new ErrorHandler { Cause = e.Message, ErrorCode = 105 },                        System.Net.HttpStatusCode.InternalServerError);                }            }            else                throw new WebFaultException<ErrorHandler>(new ErrorHandler { Cause = "Reports directory not found", ErrorCode = 104 },                    System.Net.HttpStatusCode.NotFound);            return list;        }        private List<string> GetReportFiles(string path)        {            List<string> list = new List<string>();            if (Directory.Exists(path))            {                string[] reports = Directory.GetFiles(path, "*.frx");                list.AddRange(reports);                list.Sort();                string[] dirs = Directory.GetDirectories(path);                foreach (string dir in dirs)                {                    List<string> folders = GetReportFiles(Path.Combine(path, dir));                    folders.Sort();                    list.AddRange(folders);                }            }            return list;        }    }}
 |