private static void SendByTenant(DateTime now, IGrouping <int, ReportTemplate> tGrouped) { var tenant = CoreContext.TenantManager.GetTenant(tGrouped.Key); if (tenant == null || tenant.Status != TenantStatus.Active || CoreContext.PaymentManager.GetTariff(tenant.TenantId).State >= TariffState.NotPaid) { return; } CoreContext.TenantManager.SetCurrentTenant(tenant); DocbuilderReportsUtility.Terminate(ReportOrigin.ProjectsAuto); var timeZone = CoreContext.TenantManager.GetCurrentTenant().TimeZone; foreach (var t in tGrouped) { try { SendReport(now, timeZone, t); } catch (System.Security.SecurityException se) { logger.Error("SendAutoReports", se); } catch (Exception ex) { logger.ErrorFormat("TemplateId: {0}, Temaplate: {1}\r\n{2}", t.Id, t.Filter.ToXml(), ex); } } }
public void Terminate() { if (!Global.CanCreateReports) { throw CRMSecurity.CreateSecurityException(); } DocbuilderReportsUtility.Terminate(ReportOrigin.CRM); }
public ReportState GetStatus() { if (!Global.CanCreateReports) { throw CRMSecurity.CreateSecurityException(); } return(DocbuilderReportsUtility.Status(ReportOrigin.CRM)); }
public static bool TryCreateReportFromTemplate(ReportTemplate template, Action <ReportState, string> callback, object obj, out ReportState state, bool auto = false) { var report = CreateNewReport(template.ReportType, template.Filter); template.Name = report.FileName; var data = report.GetDocbuilderData(template.Id); var dataJson = JsonConvert.SerializeObject(data); var columnsJson = JsonConvert.SerializeObject(report.ExtendedReportType.ColumnsName); var filterJson = JsonConvert.SerializeObject(template.Filter); var userCulture = CoreContext.UserManager.GetUsers(template.CreateBy).GetCulture(); var timeInterval = GetIntervarl(template.Filter); var reportInfoJson = JsonConvert.SerializeObject(new Dictionary <string, object> { { "Title", report.ReportInfo.Title }, { "CreatedText", ReportResource.ReportCreated }, { "CreatedAt", TenantUtil.DateTimeNow().ToString("M/d/yyyy", CultureInfo.InvariantCulture) }, { "CreatedBy", ProjectsFilterResource.By + " " + CoreContext.UserManager.GetUsers(template.CreateBy).DisplayUserName(false) }, { "DateFormat", userCulture.DateTimeFormat.ShortDatePattern }, { "TimeInterval", timeInterval } }); var tmpFileName = DocbuilderReportsUtility.TmpFileName; var script = GetDocbuilderMasterTemplate .Replace("${outputFilePath}", tmpFileName) .Replace("${reportData}", dataJson) .Replace("${reportColumn}", columnsJson) .Replace("${reportFilter}", filterJson) .Replace("${reportInfo}", reportInfoJson.Replace("\"", "\\\"")) .Replace("${templateBody}", GetDocbuilderTemplate(report.ReportType.ToString(), report.Filter.ViewType)); state = new ReportState(report.FileName, tmpFileName, script, (int)template.ReportType, auto ? ReportOrigin.ProjectsAuto : ReportOrigin.Projects, callback, obj); if (data.Count == 0) { state.Exception = ReportResource.ErrorEmptyData; state.Status = ReportStatus.Failed; return(false); } DocbuilderReportsUtility.Enqueue(state); return(true); }
public static ReportState RunGenareteReport(ReportType reportType, ReportTimePeriod timePeriod, Guid[] managers) { var reportData = GetReportData(reportType, timePeriod, managers); if (reportData == null) { throw new Exception(CRMReportResource.ErrorNullReportData); } var tmpFileName = DocbuilderReportsUtility.TmpFileName; var script = GetReportScript(reportData, reportType, tmpFileName); if (string.IsNullOrEmpty(script)) { throw new Exception(CRMReportResource.ErrorNullReportScript); } var state = new ReportState(GetFileName(reportType), tmpFileName, script, (int)reportType, ReportOrigin.CRM, SaveReportFile, null); DocbuilderReportsUtility.Enqueue(state); return(state); }
public void TerminateReport() { ChechDocBuilder(); DocbuilderReportsUtility.Terminate(ReportOrigin.Projects); }
public ReportState GetReportStatus() { ChechDocBuilder(); return(DocbuilderReportsUtility.Status(ReportOrigin.Projects)); }