/// <summary> /// Получить отчет по событиям устройства /// </summary> public string GetEventsReport(DSRouterEventsReportSettings reportSettings) { string result = null; try { string reportName = "Отчет " + DateTime.Now.ToShortDateString(); if (SaveEventsReport(DEFAULT_PATH_TO_DIRECTORY_TO_SHARE_FILES, reportName, reportSettings) == null) return null; result = DEFAULT_URL_TO_DIRECTORY_TO_SHARE_FILES + reportName + reportSettings.ReportExtension; } catch (Exception ex) { Log.WriteErrorMessage("DSRouterService.GetEventsReport() : Исключение : " + ex.Message); } return result; }
/// <summary> /// Получить отчет по событиям устройства /// </summary> public byte[] GetEventsReportAsByteArray(DSRouterEventsReportSettings reportSettings) { byte[] result = null; try { string reportName = "Отчет " + DateTime.Now.ToShortDateString(); var pathToReport = SaveEventsReport(Path.GetTempPath(), reportName, reportSettings); if (pathToReport == null) return null; using (var stream = File.Open(pathToReport, FileMode.Open)) { result = new byte[stream.Length]; stream.Read(result, 0, result.Length); stream.Close(); } } catch (Exception ex) { Log.WriteErrorMessage("DSRouterService.GetEventsReportAsByteArray() : Исключение : " + ex.Message); } return result; }
/// <summary> /// Собирает данные и сохраняет отчет в указанное место /// </summary> private string SaveEventsReport(string pathToSave, string reportName, DSRouterEventsReportSettings reportSettings) { string result = null; #region Получение данных var dsGuid = reportSettings.DsGuid; var deviceGuid = reportSettings.DeviceGuid; var events = (this as IDSRouter).GetEvents(reportSettings.StartDateTime, reportSettings.EndDateTime, false, false, true, new List<Tuple<ushort, uint>> { new Tuple<ushort, uint>(dsGuid, deviceGuid) }); if (events == null) return null; #endregion #region Подготовка данных var dataSource = FillDataSet(events, null, null); #endregion #region Формирование отчета string reportTemplateName = String.IsNullOrWhiteSpace(reportSettings.ReportTamplateName) ? "EventsReport" : reportSettings.ReportTamplateName; var report = new Report(reportTemplateName); report.SetDataSource(dataSource); report.SaveReportFile(pathToSave, reportName, reportSettings.ReportExtension.ToString()); result = Path.Combine(pathToSave, reportName + "." + reportSettings.ReportExtension.ToString()); #endregion return result; }